123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- <template>
- <div class="page">
- <el-form :inline="true" v-if="searchVisible" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
- <!-- 搜索框-->
- <el-form-item label="维护车辆" prop="driveNumber">
- <el-input size="default" v-model="searchForm.driveNumber" placeholder="维护车辆" clearable></el-input>
- </el-form-item>
- <el-form-item label="维护类型" prop="driveMaintainType">
- <el-select size="default" v-model="searchForm.driveMaintainType" placeholder="维护类型" clearable>
- <el-option
- v-for="item in $dictUtils.getDictList('jy_drive_maintain_type')"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="维护时间" prop="dates">
- <el-date-picker
- v-model="searchForm.dates"
- type="daterange"
- start-placeholder="请选择开始时间"
- end-placeholder="请选择结束时间"
- value-format="YYYY-MM-DD">
- </el-date-picker>
- </el-form-item>
- <el-form-item>
- <!--<el-button type="default" @click="showHide" :icon="showHideIcon">{{showHideName}}</el-button>-->
- <el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
- <el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
- </el-form-item>
- </el-form>
- <div class="jp-table top" style="">
- <vxe-toolbar ref="toolbarRef" :refresh="{query: refreshList}" export custom>
- <template #buttons>
- <el-button v-if="hasPermission('drive:info:add')" :disabled="isAdmin" type="primary" icon="el-icon-plus" @click="add()">新建</el-button>
- </template>
- <template #tools>
- <vxe-button
- text
- type="primary"
- :title="searchVisible ? '收起检索' : '展开检索'"
- icon="vxe-icon-search"
- class="tool-btn"
- @click="searchVisible = !searchVisible"
- ></vxe-button>
- </template>
- </vxe-toolbar>
- <div style="height: calc(100% - 90px)">
- <vxe-table
- border="inner"
- auto-resize
- resizable
- height="auto"
- :loading="loading"
- ref="driveMaintainTable"
- show-header-overflow
- show-overflow
- highlight-hover-row
- :menu-config="{}"
- :export-config="{
- remote: true,
- filename: `嘉溢车辆维护数据${moment(new Date()).format('YYYY-MM-DD')}`,
- sheetName: `嘉溢车辆维护数据${moment(new Date()).format('YYYY-MM-DD')}`,
- exportMethod: exportMethod,
- types: ['xls'],
- modes: ['current', 'selected', 'all']
- }"
- @sort-change="sortChangeHandle"
- :sort-config="{remote:true}"
- :data="dataList"
- :checkbox-config="{}">
- <vxe-column type="seq" width="60" title="序号"></vxe-column>
- <vxe-column min-width="160" align="center" title="维护车辆" field="driveNumber">
- <template #default="scope">
- <el-link type="primary" :underline="false" @click="view(scope.row)">{{scope.row.driveNumber}}</el-link>
- </template>
- </vxe-column>
- <vxe-column min-width="160" align="center" title="维护类型" field="driveMaintainType">
- <template #default="scope">
- {{ $dictUtils.getDictLabel("jy_drive_maintain_type", scope.row.driveMaintainType, '-') }}
- </template>
- </vxe-column>
- <vxe-column min-width="160" align="center" title="维护开始时间" field="startTime"></vxe-column>
- <vxe-column min-width="160" align="center" title="维护结束时间" field="endTime"></vxe-column>
- <vxe-column min-width="160" align="center" title="申请人" field="createName"></vxe-column>
- <vxe-column min-width="160" align="center" title="申请时间" field="createTime"></vxe-column>
- <vxe-column min-width="150px" align="center" title="申请状态" field="status" fixed="right">
- <template #default="scope">
- <el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.status, '')" effect="dark" >{{$dictUtils.getDictLabel("program_project_list_info_status", scope.row.status, '未登记')}} </el-button>
- </template>
- </vxe-column>
- <vxe-column title="操作" width="150px" fixed="right" align="center">
- <template #default="scope">
- <div v-if="isJyAdmin">
- <el-button size="small" text type="primary" v-if="hasPermission('admin:edit') && isJyAdmin" @click="adminEdit(scope.row)">修改</el-button>
- <el-button text type="primary" size="small" v-if="hasPermission('admin:del') && isJyAdmin" @click="del(scope.row.id)">删除</el-button>
- </div>
- <div v-else>
- <el-button v-if="hasPermission('drive:info:add')&&(scope.row.status === '0'||scope.row.status === '1'|| scope.row.status === '3') &&scope.row.createById === $store.state.user.id" size="small" text type="primary" @click="edit(scope.row)">修改</el-button>
- <el-button text type="primary" size="small" v-if="hasPermission('drive:info:del')&&(scope.row.status==='0' || scope.row.status==='1'|| scope.row.status==='3') &&scope.row.createById === $store.state.user.id" @click="del(scope.row.id)">删除</el-button>
- <!-- 当前申请人撤回-->
- <el-button v-if="hasPermission('drive:info:add')&&scope.row.createById === $store.state.user.id && scope.row.status==='2'" text type="primary" size="small" @click="reback(scope.row)">撤回</el-button>
- <el-button v-if="hasPermission('drive:info:add')&&scope.row.status==='2' && checkIsAudit(scope.row)" text type="primary" size="small" @click="examine(scope.row)">审核</el-button>
- <el-button v-if="hasPermission('drive:info:add')&&scope.row.status === '4'&&scope.row.createById === $store.state.user.id" text type="primary" size="small" @click="adjust(scope.row)">驳回调整</el-button>
- </div>
- </template>
- </vxe-column>
- </vxe-table>
- <vxe-pager
- background
- :current-page="tablePage.currentPage"
- :page-size="tablePage.pageSize"
- :total="tablePage.total"
- :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
- :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
- @page-change="currentChangeHandle">
- </vxe-pager>
- </div>
- </div>
- <DriveMaintainDia ref="driveMaintainDia" @refreshList="refreshList"></DriveMaintainDia>
- </div>
- </template>
- <script>
- import DriveMaintainService from '@/api/jy/DriveMaintainService'
- import taskService from '@/api/flowable/taskService'
- import processService from '@/api/flowable/processService'
- import userService from '@/api/sys/userService'
- import pick from 'lodash.pick'
- import DriveMaintainDia from './DriveMaintainDia'
- export default {
- data () {
- return {
- dialogTableVisible:false,
- searchVisible: true,
- showHideItem: false,
- showHideIcon: 'el-icon-arrow-down',
- showHideName: '展示',
- num: 0,
- searchForm: {
- driveNumber: '',
- driveMaintainType: '',
- dates:[]
- },
- dataList: [],
- tablePage: {
- total: 0,
- currentPage: 1,
- pageSize: 10,
- orders: []
- },
- tableKey: '',
- loading: false,
- processDefinitionId: '',
- processDefinitionIdAccount:'',
- procDefKey: '',
- procDefKeyAccount: '',
- isAdmin: false,
- create: '',
- gridData:[],
- typeData:[],
- isJyAdmin:false
- }
- },
- DriveMaintainService:null,
- created () {
- this.driveMaintainService=new DriveMaintainService()
- },
- components: {
- DriveMaintainDia
- },
- computed: {
- userName () {
- return this.$store.state.user.name
- },
- user () {
- this.createName = this.$store.state.user.name
- return this.$store.state.user
- }
- },
- mounted () {
- this.$nextTick(() => {
- // 将表格和工具栏进行关联
- const $table = this.$refs.driveMaintainTable;
- const $toolbar = this.$refs.toolbarRef;
- $table.connect($toolbar);
- });
- this.refreshList()
- },
- activated () {
- this.refreshList()
- },
- methods: {
- showHide () {
- if (this.showHideItem === false) {
- this.showHideItem = true
- this.showHideIcon = 'el-icon-arrow-up'
- this.showHideName = '隐藏'
- } else {
- this.showHideItem = false
- this.showHideIcon = 'el-icon-arrow-down'
- this.showHideName = '展示'
- }
- },
- // 新增
- add () {
- // 读取流程表单
- let tabTitle = `发起流程【嘉溢-车辆维护】`
- let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [嘉溢-车辆维护]`
- taskService.getTaskDef({ procDefId: this.processDefinitionId,
- status: 'startAndHold'}).then((data) => {
- this.$router.push({
- path: '/flowable/task/TaskForm',
- query: {
- ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
- procDefId: this.processDefinitionId,
- procDefKey: this.procDefKey,
- status: 'startAndHold',
- title: tabTitle,
- formType: data.formType,
- formUrl: data.formUrl,
- formTitle: processTitle,
- businessId: 'false',
- isShow: false,
- routePath: '/jy/driveMaintain/DriveMaintain'
- }
- })
- })
- },
- // 修改
- edit (row) {
- let tabTitle = `发起流程【嘉溢-车辆维护】`
- let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [嘉溢-车辆维护]`
- taskService.getTaskDef({ procDefId: this.processDefinitionId,
- businessId: row.id,
- businessTable: 'jy_drive_maintain',
- status: 'startAndHold'}).then((data) => {
- this.$router.push({
- path: '/flowable/task/TaskForm',
- query: {
- ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
- procDefId: this.processDefinitionId,
- procDefKey: this.procDefKey,
- status: 'startAndHold',
- title: tabTitle,
- formType: data.formType,
- formUrl: data.formUrl,
- formTitle: processTitle,
- businessId: row.id,
- businessTable: 'jy_drive_maintain',
- isShow: false,
- routePath: '/jy/driveMaintain/DriveMaintain'
- }
- })
- })
- },
- // 查看
- view (row) {
- this.$refs.driveMaintainDia.init('view',row.id);
- },
- // 查询当前用户是否是管理员用户
- checkIsAdmin () {
- userService.is().then((data) => {
- this.isAdmin = data
- })
- },
- // 获取数据列表
- refreshList () {
- this.loading = true
- this.driveMaintainService.list({
- 'current': this.tablePage.currentPage,
- 'size': this.tablePage.pageSize,
- 'orders': this.tablePage.orders,
- ...this.searchForm
- }).then((data) => {
- console.log('x',data.records)
- this.dataList = data.records
- this.tablePage.total = data.total
- this.tableKey = Math.random()
- this.loading = false
- })
- this.checkIsAdmin()
- this.checkIsJyAdmin()
- processService.getByName('嘉溢-车辆维护').then((data) => {
- if (!this.commonJS.isEmpty(data.id)) {
- this.processDefinitionId = data.id
- this.procDefKey = data.key
- }
- })
- },
- //判断当前登陆人是否是admin
- checkIsJyAdmin(){
- userService.checkIsJyAdmin().then((data)=>{
- this.isJyAdmin = data
- })
- },
- // 当前页
- currentChangeHandle ({ currentPage, pageSize }) {
- this.tablePage.currentPage = currentPage
- this.tablePage.pageSize = pageSize
- this.refreshList()
- },
- // 排序
- sortChangeHandle (column) {
- this.tablePage.orders = []
- if (column.order != null) {
- this.tablePage.orders.push({column: this.$utils.toLine(column.property), asc: column.order === 'asc'})
- }
- this.refreshList()
- },
- // 删除
- del (id) {
- let ids = id || this.$refs.clientTable.getCheckboxRecords().map(item => {
- return item.id
- }).join(',')
- this.$confirm(`确定删除所选项吗?`, '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.loading = true
- this.driveMaintainService.delete(ids).then((data) => {
- this.$message.success(data)
- this.refreshList()
- this.loading = false
- })
- })
- },
- resetSearch () {
- this.$refs.searchForm.resetFields()
- this.searchForm.driveInfoId = '' // 重置时清空项目id
- this.refreshList()
- },
- // 查看修改流程结果
- detail (row) {
- if (row.status !== '0' && row.status !== '1') {
- this.driveMaintainService.queryById(row.id).then((da)=>{
- // eslint-disable-next-line eqeqeq
- taskService.getTaskDef({
- procInsId: row.procInsId,
- procDefId: this.processDefinitionId
- }).then((data) => {
- this.$router.push({
- path: '/flowable/task/TaskFormDetail',
- query: {
- ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
- isShow: 'false',
- readOnly: true,
- title: '车辆维护' + '流程详情',
- formTitle: '车辆维护' + '流程详情',
- businessId: row.id,
- status: 'reback',
- method: 'view'
- }
- })
- })
- })
- }
- },
- // 撤回入库修改
- reback (row) {
- this.$confirm(`确定要撤回该申请吗?`, '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.driveMaintainService.queryById(row.id).then((data) => {
- if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
- this.$message.error('数据已发生改变或不存在,请刷新数据')
- this.refreshList()
- } else {
- processService.revokeProcIns(row.procInsId).then((data) => {
- let form = {status: '3', id: row.id}
- this.driveMaintainService.updateStatusById(form)
- this.$message.success(data)
- this.refreshList()
- })
- }
- })
- })
- },
- // 驳回后调整
- adjust (row) {
- this.driveMaintainService.queryById(row.id).then((data) => {
- if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
- this.$message.error('数据已发生改变或不存在,请刷新数据')
- this.refreshList()
- } else {
- this.todo(row)
- }
- })
- },
- // 审核
- examine (row) {
- this.driveMaintainService.queryById(row.id).then((data) => {
- if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
- this.$message.error('数据已发生改变或不存在,请刷新数据')
- this.refreshList()
- } else {
- this.todo(row)
- }
- })
- },
- // 审核或重新调整跳转
- todo (row) {
- let cUser = false
- taskService.getTaskDefInfo({
- taskId: row.taskId
- }).then((data) => {
- this.$router.push({
- path: '/flowable/task/TaskForm',
- query: {
- ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title', 'businessId'),
- isShow: false,
- formReadOnly: true,
- formTitle: `${data.taskName}`,
- cUser: cUser,
- title: `审批【${data.taskName || ''}】`,
- routePath: '/jy/driveMaintain/DriveMaintain', // 数据处理后需要跳转的页面路径
- }
- })
- })
- },
- // 查询当前登录人是否是数据的审核人
- checkIsAudit (row) {
- let loginUserId = this.$store.state.user.id // 获取当前登录用户id
- if (this.commonJS.isNotEmpty(row.auditUserIds)) {
- for (const userId of row.auditUserIds) {
- if (userId === loginUserId) { // 当数据的审核人中包含当前登录人id时,返回true
- return true
- }
- }
- }
- return false
- },
- adminEdit(row){
- this.$refs.driveMaintainDia.init('edit',row.id);
- },
- // 自定义服务端导出
- exportMethod ({ options }) {
- // 传给服务端的参数
- const params = {
- 'current': this.tablePage.currentPage,
- 'size': this.tablePage.pageSize,
- 'orders': this.tablePage.orders,
- ...this.searchForm,
- filename: options.filename,
- sheetName: options.sheetName,
- isHeader: options.isHeader,
- original: options.original,
- mode: options.mode,
- selectIds: options.mode === 'selected' ? options.map(item => item.id) : [],
- exportFields: options.columns.map(column => column.property)
- }
- return this.driveMaintainService.exportFile(params).then((res) => {
- // 将二进制流文件写入excel表,以下为重要步骤
- this.$utils.downloadExcel(res, options.filename+ ".xls")
- }).catch(function (err) {
- if (err.response) {
- console.log(err.response)
- }
- })
- },
- }
- }
- </script>
|