| | |
| | | "vuex": "^3.1.0", |
| | | "vxe-table": "2.9.13", |
| | | "vxe-table-plugin-antd": "1.8.10", |
| | | "workflow-bpmn-modeler": "^0.2.8", |
| | | "xe-utils": "2.4.8" |
| | | }, |
| | | "devDependencies": { |
| | |
| | | //表åéªè¯ |
| | | import { rules } from '@/utils/rules' |
| | | import * as echarts from 'echarts' |
| | | import qs from 'qs' |
| | | // import VCalendar from 'v-calendar'; // å¼å
¥æ¥åæä»¶ |
| | | // |
| | | // Vue.use(VCalendar, { |
| | | // componentPrefix: 'vc', |
| | | // }); |
| | | |
| | | //注å
¥å
¨å±å±æ§$message |
| | | import { message, notification } from 'ant-design-vue' |
| | | Vue.prototype.$message = message |
| | | Vue.prototype.$notification = notification |
| | | message.config({ |
| | | }) |
| | | notification.config({ |
| | | bottom: '20px', |
| | | right: '100px' |
| | | }) |
| | | |
| | | import ElementUI from 'element-ui'; |
| | | import 'element-ui/lib/theme-chalk/index.css'; |
| | | // å°èªå¨æ³¨åææç»ä»¶ä¸ºå
¨å±ç»ä»¶ |
| | | import dataV from '@jiaminghi/data-view' |
| | | Vue.use(dataV) |
| | |
| | | import VueDragResize from "vue-drag-resize" |
| | | Vue.component('vue-drag-resize', VueDragResize) |
| | | |
| | | // import 'echarts-liquidfill' |
| | | Vue.prototype.$echarts = echarts |
| | | Vue.prototype.$qs = qs |
| | | Vue.prototype.rules = rules |
| | | Vue.config.productionTip = false |
| | | Vue.use(Storage, config.storageOptions) |
| | | Vue.use(Antd) |
| | | Vue.use(VueAxios, router) |
| | | Vue.use(Viser) |
| | | Vue.use(hasPermission) |
| | | Vue.use(JDictSelectTag) |
| | | Vue.use(Print) |
| | | Vue.use(ElementUI); |
| | | Vue.use(Antd) |
| | | Vue.use(preview) |
| | | Vue.use(vueBus); |
| | | Vue.use(JeecgComponents); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import {axios as request} from '@/utils/request' |
| | | |
| | | // æ¥è¯¢æµç¨å®ä¹å表 |
| | | export function listDefinition(query) { |
| | | return request({ |
| | | url: '/flowable/definition/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // é¨ç½²æµç¨å®ä¾ |
| | | export function definitionStartByDefId(procDefId,data) { |
| | | return request({ |
| | | url: '/flowable/definition/startByProcDefId/' + procDefId, |
| | | method: 'post', |
| | | data: JSON.stringify(data) |
| | | }) |
| | | } |
| | | // é¨ç½²æµç¨å®ä¾ |
| | | export function definitionStartByDefKey(procDefKey,data) { |
| | | return request({ |
| | | url: '/flowable/definition/startByProcDefKey/' + procDefKey, |
| | | method: 'post', |
| | | data: JSON.stringify(data) |
| | | }) |
| | | } |
| | | // é¨ç½²æµç¨å®ä¾ |
| | | export function definitionStartByDataId(dataId,data) { |
| | | return request({ |
| | | url: '/flowable/definition/startByDataId/' + dataId, |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // è·åæµç¨åé |
| | | export function getProcessVariables(taskId) { |
| | | return request({ |
| | | url: '/flowable/task/processVariables/' + taskId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | // æ¿æ´»/æèµ·æµç¨ |
| | | export function updateState(params) { |
| | | return request({ |
| | | url: '/flowable/definition/updateState', |
| | | method: 'put', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | // æå®æµç¨åç人åå表 |
| | | export function userList(query) { |
| | | return request({ |
| | | url: '/flowable/definition/userList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // æå®æµç¨åçç»å表 |
| | | export function roleList(query) { |
| | | return request({ |
| | | url: '/flowable/definition/roleList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æå®æµç¨åç±»å表 |
| | | export function categoryList(query) { |
| | | return request({ |
| | | url: '/flowable/definition/categoryList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // 读åxmlæä»¶ |
| | | export function readXml(deployId) { |
| | | return request({ |
| | | url: '/flowable/definition/readXml/' + deployId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // 读åxmlæä»¶ |
| | | export function readXmlByDataId(dataId) { |
| | | return request({ |
| | | url: '/flowable/definition/readXmlByDataId/' + dataId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // 读åimageæä»¶ |
| | | export function readImage(deployId) { |
| | | return request({ |
| | | url: '/flowable/definition/readImage/' + deployId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | // 读åimageæä»¶ |
| | | export function getFlowViewer(procInsId) { |
| | | return request({ |
| | | url: '/flowable/task/flowViewer/' + procInsId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // 读åimageæä»¶ |
| | | export function getFlowViewerByDataId(dataId) { |
| | | return request({ |
| | | url: '/flowable/task/flowViewerByDataId/' + dataId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | // 读åxmlæä»¶ |
| | | export function saveXml(data) { |
| | | return request({ |
| | | url: '/flowable/definition/save', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // å 餿µç¨å®ä¹ |
| | | export function delDeployment(query) { |
| | | return request({ |
| | | url: '/flowable/definition/delete/', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import {axios as request} from '@/utils/request' |
| | | |
| | | // æ¥è¯¢å·²åä»»å¡å表 |
| | | export function finishedList(query) { |
| | | return request({ |
| | | url: '/flowable/task/finishedList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // 任塿µè½¬è®°å½ |
| | | export function flowRecord(query) { |
| | | return request({ |
| | | url: '/flowable/task/flowRecord', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // æ¤åä»»å¡ |
| | | export function revokeProcess(data) { |
| | | return request({ |
| | | url: '/flowable/task/revokeProcess', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // é¨ç½²æµç¨å®ä¾ |
| | | export function deployStart(deployId) { |
| | | return request({ |
| | | url: '/flowable/process/startFlow/' + deployId, |
| | | method: 'get', |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import {axios as request} from '@/utils/request' |
| | | |
| | | // æçåèµ·çæµç¨ |
| | | export function myProcessList(query) { |
| | | return request({ |
| | | url: '/flowable/task/myProcess', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | |
| | | // åæ¶ç³è¯· |
| | | export function deleteByDataId(dataId,deleteReason) { |
| | | const data = { |
| | | dataId:dataId, |
| | | deleteReason:deleteReason |
| | | } |
| | | return request({ |
| | | url: '/flowable/instance/deleteByDataId', |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
| | | |
| | | |
| | | // é¨ç½²æµç¨å®ä¾ |
| | | export function deployStart(deployId) { |
| | | return request({ |
| | | url: '/flowable/process/startFlow/' + deployId, |
| | | method: 'get', |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import {axios as request} from '@/utils/request' |
| | | |
| | | // æ¥è¯¢å¾
åä»»å¡å表 |
| | | export function todoList(query) { |
| | | return request({ |
| | | url: '/flowable/task/todoList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // å®æä»»å¡ |
| | | export function completeTask(data) { |
| | | return request({ |
| | | url: '/flowable/task/completeByDateId', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // å§æ´¾ä»»å¡ |
| | | export function delegate(data) { |
| | | return request({ |
| | | url: '/flowable/task/delegate', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // éåä»»å¡ |
| | | export function returnTask(data) { |
| | | return request({ |
| | | url: '/flowable/task/taskReturnByDataId', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // 驳åä»»å¡ |
| | | export function rejectTask(data) { |
| | | return request({ |
| | | url: '/flowable/task/taskRejectByDataId', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // å¯éåä»»å¡å表 |
| | | export function returnList(data) { |
| | | return request({ |
| | | url: '/flowable/task/findReturnTaskListByDataId', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // ä¸ä¸èç¹ todo ç®åç´æ¥èªå¨åé
å°åé人ï¼ä¸ç¨ä¸»å¨é人ï¼å¦æéè¦åå¼å |
| | | export function getNextFlowNode(data) { |
| | | return request({ |
| | | url: '/flowable/task/nextFlowNode', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <style lang="less"> |
| | | </style> |
| | | <template> |
| | | <span> |
| | | <a-button :loading="submitLoading" :type="btnType" @click="applySubmit()" >{{text}}</a-button> |
| | | </span> |
| | | </template> |
| | | |
| | | <script> |
| | | import {definitionStartByDataId} from "@views/flowable/api/definition"; |
| | | |
| | | export default { |
| | | name: 'ActApplyBtn', |
| | | components: {}, |
| | | props: { |
| | | btnType: { type: String, default: 'link', required: false }, |
| | | /**/ |
| | | dataId: { |
| | | type: String, |
| | | default: '', |
| | | required: true |
| | | }, |
| | | variables:{ |
| | | type: Object, |
| | | default: {}, |
| | | }, |
| | | text: { |
| | | type: String, |
| | | default: 'æäº¤ç³è¯·', |
| | | required: false |
| | | } |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | modalVisible: false, |
| | | submitLoading: false, |
| | | form: { |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | }, |
| | | watch: { |
| | | }, |
| | | methods: { |
| | | applySubmit() { |
| | | if (this.dataId && this.dataId.length < 1) { |
| | | this.error = 'å¿
é¡»ä¼ å
¥åæ°dataId'; |
| | | this.$message.error(this.error); |
| | | return; |
| | | } else { |
| | | this.error = ''; |
| | | } |
| | | this.submitLoading = true; |
| | | var params = Object.assign({ |
| | | dataId: this.dataId |
| | | }, this.variables); |
| | | definitionStartByDataId(this.dataId, params) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('æä½æå'); |
| | | this.$emit('success'); |
| | | } else { |
| | | this.$message.error(res.message); |
| | | } |
| | | }) |
| | | .finally(() => (this.submitLoading = false)); |
| | | } |
| | | } |
| | | |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <style lang="less"> |
| | | </style> |
| | | <template> |
| | | <span> |
| | | <a-button :type="btnType" @click="cancel()" >{{text}}</a-button> |
| | | <a-modal title="确认æ¤å" v-model="modalCancelVisible" :mask-closable="false" :width="500"> |
| | | <a-form ref="delForm" v-model="cancelForm" :label-width="70" v-if="modalCancelVisible"> |
| | | <a-form-item label="æ¤ååå " prop="reason"> |
| | | <a-input type="textarea" v-model="cancelForm.reason" :rows="4" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | <div slot="footer"> |
| | | <a-button type="text" @click="modalCancelVisible = false">åæ¶</a-button> |
| | | <a-button type="primary" :disabled="submitLoading" @click="handelSubmitCancel">æäº¤</a-button> |
| | | </div> |
| | | </a-modal> |
| | | </span> |
| | | </template> |
| | | |
| | | <script> |
| | | import {deleteByDataId} from "@views/flowable/api/process"; |
| | | |
| | | export default { |
| | | name: 'ActCancelBtn', |
| | | components: {}, |
| | | props: { |
| | | btnType: { type: String, default: 'link', required: false }, |
| | | /**/ |
| | | dataId: { |
| | | type: String, |
| | | default: '', |
| | | required: true |
| | | }, |
| | | text: { |
| | | type: String, |
| | | default: 'æ¤å', |
| | | required: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | modalCancelVisible: false, |
| | | cancelForm: { |
| | | reason: '' |
| | | }, |
| | | submitLoading: false, |
| | | }; |
| | | }, |
| | | created() { |
| | | }, |
| | | watch: { |
| | | }, |
| | | methods: { |
| | | cancel() { |
| | | this.modalCancelVisible = true; |
| | | }, |
| | | handelSubmitCancel() { |
| | | this.submitLoading = true; |
| | | deleteByDataId(this.dataId, this.cancelForm.reason) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('æä½æå'); |
| | | this.modalCancelVisible = false; |
| | | this.$emit('success'); |
| | | } else { |
| | | this.$message.error(res.message); |
| | | } |
| | | }) |
| | | .finally(() => (this.submitLoading = false)); |
| | | } |
| | | } |
| | | |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <style lang="less"> |
| | | </style> |
| | | <template> |
| | | <span> |
| | | <a-button :type="btnType" @click="handle()" >{{text}}</a-button> |
| | | <a-modal :title="modalTaskTitle" v-model="modalTaskVisible" :mask-closable="false" :width="500"> |
| | | |
| | | <div v-if="modalTaskVisible"> |
| | | <div v-if="type==handleType.reApply"> |
| | | 确认æ è¯¯å¹¶éæ°æäº¤ï¼ |
| | | </div> |
| | | <a-form ref="form" :model="form" :label-width="85" > |
| | | <a-form-item v-if="type!==handleType.reApply" label="å¤çæè§" prop="reason"> |
| | | <a-input type="textarea" v-model="form.comment" :rows="4" /> |
| | | </a-form-item> |
| | | <div v-show="type==2"> |
| | | <a-form-item label="éåèç¹" prop="targetKey" v-if="returnTaskList.length"> |
| | | <a-radio-group v-model="form.targetKey" @change="targetKeyChange"> |
| | | <a-radio-button |
| | | v-for="item in returnTaskList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | >{{item.name}}</a-radio-button> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <span v-else>æ å¯éåèç¹ï¼</span> |
| | | </div> |
| | | <div v-if="form.targetKey !== 'start' && candidateUsers.length"> |
| | | <a-form-item label="ä¸ä¸ªèç¹å®¡æ¹åé人"> |
| | | <a-select |
| | | mode="multiple" |
| | | v-model="candidateUsersSelecteds" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©ä¸ä¸ªèç¹å®¡æ¹åé人" |
| | | > |
| | | <a-select-option v-for="user in candidateUsers" :key="user.username" :value="user.username"> |
| | | {{user.realname}} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </div> |
| | | </a-form> |
| | | </div> |
| | | <div slot="footer"> |
| | | <a-button type="text" @click="modalTaskVisible=false">åæ¶</a-button> |
| | | <a-button type="primary" :loading="submitLoading" @click="handelSubmit">æäº¤</a-button> |
| | | </div> |
| | | </a-modal> |
| | | </span> |
| | | </template> |
| | | |
| | | <script> |
| | | import {completeTask, rejectTask, returnList, returnTask} from "@views/flowable/api/todo"; |
| | | |
| | | export default { |
| | | name: 'ActHandleBtn', |
| | | components: {}, |
| | | props: { |
| | | btnType: { type: String, default: 'link', required: false }, |
| | | /* handleType 0éè¿ 1驳å 2éå */ |
| | | type: { |
| | | type: String|Number, |
| | | default: '0', |
| | | required: true |
| | | }, |
| | | dataId: { |
| | | type: String, |
| | | default: '', |
| | | required: true |
| | | }, |
| | | /*æµç¨åé*/ |
| | | variables:{ |
| | | type: Object, |
| | | default: ()=>{}, |
| | | }, |
| | | candidateUsers:{ |
| | | type: Array, |
| | | default: ()=>[], |
| | | }, |
| | | text: { |
| | | type: String, |
| | | default: 'å¤ç', |
| | | required: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | handleType:{ |
| | | // éè¿ |
| | | pass: 0, |
| | | // 驳å |
| | | back: 1, |
| | | // éå |
| | | return: 2, |
| | | // éæ°æäº¤ |
| | | reApply: 3 |
| | | }, |
| | | returnTaskList: [], |
| | | candidateUsersSelecteds:[], |
| | | modalTaskVisible: false, |
| | | submitLoading: false, |
| | | form: { |
| | | comment:'', |
| | | targetKey:'' |
| | | }, |
| | | modalTaskTitle: '', |
| | | |
| | | }; |
| | | }, |
| | | created() { |
| | | }, |
| | | watch: { |
| | | }, |
| | | methods: { |
| | | handle() { |
| | | this.form.comment = '' |
| | | this.candidateUsersSelecteds = [] |
| | | if (this.type === this.handleType.delegate) { |
| | | // this.delegateTask(); |
| | | } else if (this.type === this.handleType.pass) { |
| | | this.passTask(); |
| | | } else if (this.type === this.handleType.back) { |
| | | this.backTask(); |
| | | } else if(this.type === this.handleType.return){ |
| | | this.returnTask(); |
| | | } else if(this.type === this.handleType.reApply){ |
| | | this.reApply(); |
| | | } |
| | | else { |
| | | this.$message.warn('æªç¥ç±»åtypeï¼åè§ handleType'); |
| | | } |
| | | }, |
| | | reApply() { |
| | | const v = this; |
| | | this.modalTaskTitle = 'ç¡®è®¤éæ°æäº¤'; |
| | | this.modalTaskVisible = true; |
| | | }, |
| | | passTask() { |
| | | const v = this; |
| | | this.modalTaskTitle = '审æ¹éè¿'; |
| | | this.modalTaskVisible = true; |
| | | }, |
| | | backTask() { |
| | | const v = this; |
| | | this.modalTaskTitle = '审æ¹é©³å'; |
| | | this.modalTaskVisible = true; |
| | | }, |
| | | returnTask() { |
| | | const v = this; |
| | | this.modalTaskTitle = '审æ¹éå'; |
| | | this.modalTaskVisible = true; |
| | | returnList({dataId:this.dataId}).then(res => { |
| | | this.returnTaskList = res.result||[]; |
| | | // console.log(this.returnTaskList) |
| | | }) |
| | | }, |
| | | |
| | | handelSubmit() { |
| | | console.log('æäº¤'); |
| | | this.submitLoading = true; |
| | | var formData = Object.assign({ |
| | | dataId:this.dataId, |
| | | candidateUsers:this.candidateUsersSelecteds, |
| | | values:Object.assign({dataId:this.dataId},this.variables) |
| | | }, this.form); |
| | | if (this.type==this.handleType.reApply){ |
| | | formData.comment = 'éæ°æäº¤' |
| | | } |
| | | if (!formData.comment){ |
| | | this.$message.error('请è¾å
¥å®¡æ¹æè§ï¼'); |
| | | this.submitLoading=false |
| | | return; |
| | | } |
| | | // æä¸ä¸ªèç¹å®¡æ¹äººéæ©ï¼ä½æ¯æªé |
| | | if (this.candidateUsers.length && |
| | | this.candidateUsersSelecteds.length==0 && |
| | | this.form.targetKey !== 'start' |
| | | ){ |
| | | this.$message.error('è¯·éæ©ä¸ä¸ªèç¹å®¡æ¹äººï¼'); |
| | | this.submitLoading=false |
| | | return; |
| | | } |
| | | if (this.type == this.handleType.reApply || this.type == this.handleType.pass) { |
| | | // éè¿ |
| | | completeTask(formData).then(res => { |
| | | this.submitLoading = false; |
| | | if (res.success) { |
| | | this.$message.success('æä½æå'); |
| | | this.modalTaskVisible = false; |
| | | this.$emit('success'); |
| | | } else { |
| | | this.$message.error('æä½å¤±è´¥'); |
| | | } |
| | | }).finally(()=>{this.submitLoading=false}); |
| | | } else if (this.type == this.handleType.back) { |
| | | // 驳å |
| | | rejectTask(formData).then(res => { |
| | | this.submitLoading = false; |
| | | if (res.success) { |
| | | this.$message.success('æä½æå'); |
| | | this.modalTaskVisible = false; |
| | | this.$emit('success'); |
| | | } else { |
| | | this.$message.error('æä½å¤±è´¥'); |
| | | } |
| | | }).finally(()=>{this.submitLoading=false}); |
| | | |
| | | } else if (this.type == this.handleType.return){ |
| | | if (!formData.targetKey){ |
| | | this.$message.error('è¯·éæ©éåèç¹ï¼'); |
| | | this.submitLoading=false |
| | | return; |
| | | } |
| | | //éå |
| | | returnTask(formData).then(res => { |
| | | this.submitLoading = false; |
| | | if (res.success) { |
| | | this.$message.success('æä½æå'); |
| | | this.modalTaskVisible = false; |
| | | this.$emit('success'); |
| | | } else { |
| | | this.$message.error('æä½å¤±è´¥'); |
| | | } |
| | | }).finally(()=>{this.submitLoading=false}); |
| | | } |
| | | }, |
| | | |
| | | targetKeyChange() { |
| | | this.candidateUsersSelecteds = [] |
| | | this.$emit('targetKeyChange',this.form.targetKey) |
| | | } |
| | | } |
| | | |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <style lang="less"> |
| | | </style> |
| | | <template> |
| | | <span> |
| | | <a-button :type="btnType" @click="history()" >{{text}}</a-button> |
| | | <a-modal title="审æ¹åå²" v-model="modalLsVisible" :mask-closable="true" :width="'80%'" :footer="null"> |
| | | <div v-if="modalLsVisible"> |
| | | <HistoricDetail ref="historicDetail" :data-id="dataId"></HistoricDetail> |
| | | </div> |
| | | </a-modal> |
| | | </span> |
| | | </template> |
| | | |
| | | <script> |
| | | import HistoricDetail from './HistoricDetail'; |
| | | export default { |
| | | name: 'ActHistoricDetailBtn', |
| | | components: { HistoricDetail }, |
| | | props: { |
| | | btnType: { type: String, default: 'link', required: false }, |
| | | /**/ |
| | | dataId: { |
| | | type: String, |
| | | default: '', |
| | | required: true |
| | | }, |
| | | text: { |
| | | type: String, |
| | | default: '审æ¹åå²', |
| | | required: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | modalLsVisible: false |
| | | }; |
| | | }, |
| | | created() { |
| | | }, |
| | | watch: { |
| | | }, |
| | | methods: { |
| | | history() { |
| | | if (!this.dataId) { |
| | | this.$message.error('æµç¨å®ä¾IDä¸åå¨'); |
| | | return; |
| | | } |
| | | this.modalLsVisible = true; |
| | | } |
| | | } |
| | | |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <style lang="less"> |
| | | </style> |
| | | <template> |
| | | <div class="search"> |
| | | <a-card> |
| | | <p slot="title"> |
| | | <span>æµç¨å¾</span> |
| | | </p> |
| | | <div :style="{height: svgHeight}" v-if="svgShow"> |
| | | <bpmnModeler class="svg" ref="bpm" :xml="xmlData" :is-view="true"></bpmnModeler> |
| | | </div> |
| | | </a-card> |
| | | <a-card style="margin-top:10px;"> |
| | | <p slot="title"> |
| | | <span>æµç¨å®¡æ¹è¿åº¦åå²</span> |
| | | </p> |
| | | <a-row style="position:relative"> |
| | | <div class="block"> |
| | | <a-timeline> |
| | | <a-timeline-item |
| | | v-for="(item,index ) in flowRecordList" |
| | | :key="index" |
| | | :color="setColor(item.finishTime)" |
| | | > |
| | | <p style="font-weight: 700;">{{item.taskName}} |
| | | <i v-if="!item.finishTime" style="color: orange">(å¾
åä¸ããã)</i> |
| | | </p> |
| | | |
| | | <a-card :body-style="{ padding: '10px' }"> |
| | | <label v-if="item.assigneeName&&item.finishTime" style="font-weight: normal;margin-right: 30px;">å®é
åçäººï¼ {{item.assigneeName}} <a-tag type="info" size="mini">{{item.deptName}}</a-tag></label> |
| | | <label v-if="item.candidate" style="font-weight: normal;margin-right: 30px;">åéåçäººï¼ {{item.candidate}}</label> |
| | | <label style="font-weight: normal">æ¥æ¶æ¶é´ï¼ </label><label style="color:#8a909c;font-weight: normal">{{item.createTime}}</label> |
| | | <label v-if="item.finishTime" style="margin-left: 30px;font-weight: normal">åç»æ¶é´ï¼ </label><label style="color:#8a909c;font-weight: normal">{{item.finishTime}}</label> |
| | | <label v-if="item.duration" style="margin-left: 30px;font-weight: normal">èæ¶ï¼ </label><label style="color:#8a909c;font-weight: normal">{{item.duration}}</label> |
| | | |
| | | <p v-if="item.comment"> |
| | | <!-- 1 æ£å¸¸æè§ 2 éåæè§ 3 驳åæè§ --> |
| | | <a-tag color="green" v-if="item.comment.type === '1'"> |
| | | <span v-if="item.comment.comment!='éæ°æäº¤'">éè¿ï¼</span> |
| | | {{item.comment.comment}} |
| | | </a-tag> |
| | | <a-tag color="orange" v-if="item.comment.type === '2'">éåï¼ {{item.comment.comment}}</a-tag> |
| | | <a-tag color="red" v-if="item.comment.type === '3'">驳åï¼ {{item.comment.comment}}</a-tag> |
| | | </p> |
| | | </a-card> |
| | | </a-timeline-item> |
| | | </a-timeline> |
| | | </div> |
| | | </a-row> |
| | | </a-card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {flowRecord} from "@views/flowable/api/finished"; |
| | | import {getFlowViewerByDataId, readXmlByDataId} from "@views/flowable/api/definition"; |
| | | import bpmnModeler from "workflow-bpmn-modeler"; |
| | | |
| | | export default { |
| | | name: 'HistoricDetail', |
| | | components: { |
| | | bpmnModeler, |
| | | }, |
| | | props: { |
| | | /**/ |
| | | dataId: { |
| | | type: String, |
| | | default: '', |
| | | required: true |
| | | }, |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | taskList:[], |
| | | flowRecordList: [], // æµç¨æµè½¬æ°æ® |
| | | formData:{}, |
| | | xmlData:'', |
| | | type: 0, |
| | | loading: false, // 表åå è½½ç¶æ |
| | | loadingImg: false, |
| | | data: [], |
| | | id: '', |
| | | imgUrl: '', |
| | | backRoute: '', |
| | | svgHeight:'', |
| | | svgShow: true |
| | | }; |
| | | }, |
| | | created() { |
| | | this.init(); |
| | | }, |
| | | watch: { |
| | | dataId: function(newval, oldName) { |
| | | this.init(); |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | init() { |
| | | this.getFlowRecordList() |
| | | this.getModelDetail() |
| | | }, |
| | | /** xml æä»¶ */ |
| | | getModelDetail() { |
| | | // åé请æ±ï¼è·åxml |
| | | readXmlByDataId(this.dataId).then(res => { |
| | | this.xmlData = res.result |
| | | this.getFlowViewer() |
| | | setTimeout(()=>{ |
| | | this.fitViewport() |
| | | }) |
| | | }) |
| | | }, |
| | | // æµç¨è¿è¡æ
åµ |
| | | getFlowViewer() { |
| | | getFlowViewerByDataId(this.dataId).then(res => { |
| | | this.taskList = res.result || [] |
| | | this.fillColor(); |
| | | }) |
| | | }, |
| | | /** æµç¨æµè½¬è®°å½ */ |
| | | getFlowRecordList() { |
| | | const params = {dataId: this.dataId} |
| | | flowRecord(params).then(res => { |
| | | // console.log(res) |
| | | this.flowRecordList = res.result.flowList; |
| | | this.finishOrder() |
| | | // æµç¨è¿ç¨ä¸ä¸åå¨åå§å表å ç´æ¥è¯»åçæµç¨åéä¸åå¨ç表åå¼ |
| | | if (res.result.formData) { |
| | | this.formData = res.result.formData; |
| | | } |
| | | }).catch(res => { |
| | | console.log(res) |
| | | }) |
| | | }, |
| | | //æ´ç顺åºï¼æå¾
åæ¾æä¸é¢ï¼å¹¶ä¸åªçä¸ä¸ªï¼ä¸ç¶ä¼ç¾æ¶ä¼ä¹±ï¼ |
| | | finishOrder(){ |
| | | const list = [] |
| | | let noFinish = null |
| | | for (const flow of this.flowRecordList) { |
| | | if (flow.finishTime){ |
| | | // åç»çèç¹åæ¶åæå®é
åç人çï¼å 为ä¼ç¾ä¼å°ææçå¤å®ä¾é½è¿åï¼éè¦è¿æ»¤ |
| | | if (flow.assigneeId){ |
| | | list.push(flow) |
| | | } |
| | | } else { |
| | | noFinish = flow |
| | | } |
| | | } |
| | | if (noFinish){ |
| | | const find = list.find(obj=>obj.taskDefKey == noFinish.taskDefKey); |
| | | if (find){ |
| | | noFinish.taskName = 'ãä¼ç¾ä¸ã'+noFinish.taskName |
| | | } |
| | | this.flowRecordList = [noFinish,...list]; |
| | | } else { |
| | | this.flowRecordList = list; |
| | | } |
| | | |
| | | }, |
| | | setColor(val) { |
| | | if (val) { |
| | | return "#2bc418"; |
| | | } else { |
| | | return "#b3bdbb"; |
| | | } |
| | | }, |
| | | fillColor() { |
| | | const modeler = this.$refs.bpm.modeler; |
| | | const canvas = modeler.get('canvas') |
| | | modeler._definitions.rootElements[0].flowElements.forEach(n => { |
| | | const completeTask = this.taskList.find(m => m.key === n.id) |
| | | const todoTask = this.taskList.find(m => !m.completed) |
| | | const endTask = this.taskList[this.taskList.length - 1] |
| | | //ç¨æ·ä»»å¡ |
| | | if (n.$type === 'bpmn:UserTask') { |
| | | if (completeTask) { |
| | | canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo') |
| | | canvas.addMarker(n.id, completeTask.back ? 'highlight-back' : 'highlight-noback') |
| | | n.outgoing.forEach(nn => { |
| | | const targetTask = this.taskList.find(m => m.key === nn.targetRef.id) |
| | | if (targetTask) { |
| | | if (todoTask && completeTask.key === todoTask.key && !todoTask.completed){ |
| | | canvas.addMarker(nn.id, todoTask.completed ? 'highlight' : 'highlight-todo') |
| | | canvas.addMarker(nn.targetRef.id, todoTask.completed ? 'highlight' : 'highlight-todo') |
| | | }else { |
| | | canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | // æä»ç½å
³ |
| | | else if (n.$type === 'bpmn:ExclusiveGateway') { |
| | | if (completeTask) { |
| | | canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo') |
| | | n.outgoing.forEach(nn => { |
| | | const targetTask = this.taskList.find(m => m.key === nn.targetRef.id) |
| | | if (targetTask) { |
| | | |
| | | canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | } |
| | | |
| | | }) |
| | | } |
| | | |
| | | } |
| | | // å¹¶è¡ç½å
³ |
| | | else if (n.$type === 'bpmn:ParallelGateway') { |
| | | if (completeTask) { |
| | | canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo') |
| | | n.outgoing.forEach(nn => { |
| | | debugger |
| | | const targetTask = this.taskList.find(m => m.key === nn.targetRef.id) |
| | | if (targetTask) { |
| | | canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo') |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | else if (n.$type === 'bpmn:StartEvent') { |
| | | n.outgoing.forEach(nn => { |
| | | const completeTask = this.taskList.find(m => m.key === nn.targetRef.id) |
| | | if (completeTask) { |
| | | canvas.addMarker(nn.id, 'highlight') |
| | | canvas.addMarker(n.id, 'highlight') |
| | | return |
| | | } |
| | | }) |
| | | } |
| | | else if (n.$type === 'bpmn:EndEvent') { |
| | | if (endTask.key === n.id && endTask.completed) { |
| | | canvas.addMarker(n.id, 'highlight') |
| | | return |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 让å¾è½èªéåºå±å¹ |
| | | fitViewport() { |
| | | const modeler = this.$refs.bpm.modeler; |
| | | const canvas = modeler.get('canvas') |
| | | // this.zoom = this.modeler.get('canvas').zoom('fit-viewport') |
| | | if (this.svgHeight){ |
| | | document.querySelector('.canvas').style.height = this.svgHeight; |
| | | } |
| | | const bbox = document.querySelector('.flow-containers .viewport').getBBox() |
| | | const currentViewbox = modeler.get('canvas').viewbox() |
| | | if (!this.svgHeight){ |
| | | this.svgHeight = currentViewbox.inner.height + 'px' |
| | | this.svgShow = false |
| | | this.$nextTick(()=>{ |
| | | this.svgShow = true |
| | | }) |
| | | // this.fitViewport() |
| | | setTimeout(()=>{ |
| | | this.fitViewport() |
| | | }) |
| | | } |
| | | |
| | | const elementMid = { |
| | | x: bbox.x + bbox.width / 2 - 65, |
| | | y: bbox.y + bbox.height / 2 |
| | | } |
| | | // è°èä½ç½® |
| | | modeler.get('canvas').viewbox({ |
| | | x: elementMid.x - currentViewbox.width / 2 + 70, |
| | | y: elementMid.y - currentViewbox.height/2, |
| | | width: currentViewbox.width, |
| | | height: currentViewbox.height |
| | | }) |
| | | // è°è大å°ç¼©æ¾ |
| | | const zoom = currentViewbox.outer.width /(currentViewbox.inner.width+200) |
| | | console.log('********',zoom,elementMid,currentViewbox.inner,currentViewbox.outer) |
| | | // modeler.get('canvas').zoom(zoom) |
| | | |
| | | |
| | | }, |
| | | } |
| | | |
| | | }; |
| | | </script> |
| | | <style lang="less"> |
| | | .highlight.djs-shape .djs-visual > :nth-child(1) { |
| | | fill: green !important; |
| | | stroke: green !important; |
| | | fill-opacity: 0.2 !important; |
| | | } |
| | | .highlight.djs-shape .djs-visual > :nth-child(2) { |
| | | fill: green !important; |
| | | } |
| | | .highlight.djs-shape .djs-visual > path { |
| | | fill: green !important; |
| | | fill-opacity: 0.2 !important; |
| | | stroke: green !important; |
| | | } |
| | | .highlight.djs-connection > .djs-visual > path { |
| | | stroke: green !important; |
| | | } |
| | | // .djs-connection > .djs-visual > path { |
| | | // stroke: orange !important; |
| | | // stroke-dasharray: 4px !important; |
| | | // fill-opacity: 0.2 !important; |
| | | // } |
| | | // .djs-shape .djs-visual > :nth-child(1) { |
| | | // fill: orange !important; |
| | | // stroke: orange !important; |
| | | // stroke-dasharray: 4px !important; |
| | | // fill-opacity: 0.2 !important; |
| | | // } |
| | | .highlight-todo.djs-connection > .djs-visual > path { |
| | | stroke: orange !important; |
| | | stroke-dasharray: 4px !important; |
| | | fill-opacity: 0.2 !important; |
| | | } |
| | | .highlight-todo.djs-shape .djs-visual > :nth-child(1) { |
| | | fill: orange !important; |
| | | stroke: orange !important; |
| | | stroke-dasharray: 4px !important; |
| | | fill-opacity: 0.2 !important; |
| | | } |
| | | .highlight-back.djs-connection > .djs-visual > path { |
| | | stroke: red !important; |
| | | stroke-dasharray: 4px !important; |
| | | fill-opacity: 0.2 !important; |
| | | } |
| | | .highlight-back.djs-shape .djs-visual > :nth-child(1) { |
| | | fill: red !important; |
| | | stroke: red !important; |
| | | stroke-dasharray: 4px !important; |
| | | fill-opacity: 0.2 !important; |
| | | } |
| | | .overlays-div { |
| | | font-size: 10px; |
| | | color: red; |
| | | width: 100px; |
| | | top: -20px !important; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from "vue"; |
| | | import {USER_INFO} from "@/store/mutation-types"; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | |
| | | export const FlowableMixin = { |
| | | data(){ |
| | | return { |
| | | loginUser:{} |
| | | } |
| | | }, |
| | | created() { |
| | | this.loginUser = Vue.ls.get(USER_INFO); |
| | | }, |
| | | methods:{ |
| | | // å½åæ°æ®æ¯å¦å¯æäº¤ |
| | | isCanApply(row){ |
| | | // æ²¡ææµç¨å®ä¾çå³å¯æäº¤ |
| | | return !Boolean(row.processInstanceId); |
| | | }, |
| | | // å½åæ°æ®æ¯å¦å¯æ¤å |
| | | isCanRecall(row){ |
| | | // è¿è¡ä¸çæµç¨&&å½åèç¹ä¸æ¯å¼å§èç¹&&ç¶æä¸æ¯éè¿ |
| | | return Boolean(row.processInstanceId)&&row.taskNameId!=='start'&&row.actStatus!=='审æ¹éè¿'; |
| | | }, |
| | | // éæ°æäº¤æé® |
| | | isCanReApply(row){ |
| | | return row.taskNameId=='start'&&this.isTodoUsers(row); |
| | | }, |
| | | // éè¿æé® |
| | | isCanPass(row){ |
| | | return row.taskNameId!=='start'&& this.isTodoUsers(row); |
| | | }, |
| | | // 驳åéåæé® |
| | | isCanBacke(row){ |
| | | // 䏿¯startèç¹&&å¨å¯æä½äººåå表 |
| | | return row.taskNameId!=='start'&&this.isTodoUsers(row); |
| | | }, |
| | | // æ¥ç审æ¹åå²æé® |
| | | isCanHistoric(row){ |
| | | // æå®ä¾idå°±è½æ¥ç |
| | | return Boolean(row.processInstanceId); |
| | | }, |
| | | // å½åç»å½äººæ¯å¦å¨å¤ç人å表 |
| | | isTodoUsers(row){ |
| | | const todoUsers = row.todoUsers; |
| | | if (todoUsers&&todoUsers.length){ |
| | | const parse = JSON.parse(todoUsers)||[]; |
| | | return parse.includes(this.loginUser.username); |
| | | }else { |
| | | return false; |
| | | } |
| | | }, |
| | | // å½åç»å½äººæ¯å¦æ¯å¤çè¿ç人å表 |
| | | isDoneUsers(row){ |
| | | const doneUsers = row.doneUsers; |
| | | if (doneUsers&&doneUsers.length){ |
| | | const parse = JSON.parse(doneUsers)||[]; |
| | | return parse.includes(this.loginUser.username); |
| | | }else { |
| | | return false; |
| | | } |
| | | }, |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <!-- ==================æµç¨å®ä¹å表=============== --> |
| | | <a-card v-if="!xmlFrame.open||xmlView"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> |
| | | <el-form-item label="æµç¨åç§°" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.name" |
| | | placeholder="请è¾å
¥åç§°" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="æµç¨åç±»" prop="category"> |
| | | <el-select @change="handleQuery" v-model="queryParams.category" placeholder="è¯·éæ©æµç¨åç±»" clearable prop="category"> |
| | | <el-option label="è¯·éæ©" value="" /> |
| | | <el-option v-for="category in categorys" :key="category.id" :label="category.name" :value="category.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¿æ´»" prop="active"> |
| | | <el-switch |
| | | v-model="queryParams.active" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | @change="handleQuery" |
| | | > |
| | | </el-switch> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <el-form-item style="float:right"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-plus" |
| | | size="mini" |
| | | @click="handleLoadXml" |
| | | >æ°å¢æµç¨å®ä¹</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-table |
| | | v-loading="loading" fit |
| | | :data="definitionList" |
| | | row-key="id" |
| | | border |
| | | lazy |
| | | :load="load" |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
| | | <el-table-column label="æµç¨å®ä¹id" align="center" prop="id" /> |
| | | <el-table-column label="æµç¨æ è¯Key" align="center" prop="key" /> |
| | | <el-table-column label="æµç¨åç±»" align="center" > |
| | | <template slot-scope="scope"> |
| | | <span>{{ getCategoryName(scope.row.category) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æµç¨åç§°" align="center" :show-overflow-tooltip="true"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="handleReadImage(scope.row.deploymentId)"> |
| | | <span>{{ scope.row.name }}</span> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æµç¨çæ¬" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-tag size="medium" >v{{ scope.row.version }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç¶æ" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="success" v-if="scope.row.suspensionState === 1">æ¿æ´»</el-tag> |
| | | <el-tag type="warning" v-if="scope.row.suspensionState === 2">æèµ·</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="é¨ç½²æ¶é´" align="center" prop="deploymentTime" width="180"/> |
| | | <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> |
| | | <template slot-scope="scope"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | æ´å¤æä½<i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item icon="el-icon-edit-outline" @click.native="handleLoadXml(scope.row)"> |
| | | ç¼è¾ |
| | | </el-dropdown-item> |
| | | <!-- <el-dropdown-item icon="el-icon-connection" @click.native="handleAddForm(scope.row)" v-if="scope.row.formId == null"> |
| | | é
置表å |
| | | </el-dropdown-item>--> |
| | | <el-dropdown-item icon="el-icon-video-pause" @click.native="handleUpdateSuspensionState(scope.row)" v-if="scope.row.suspensionState === 1"> |
| | | æèµ· |
| | | </el-dropdown-item> |
| | | <el-dropdown-item icon="el-icon-video-play" @click.native="handleUpdateSuspensionState(scope.row)" v-if="scope.row.suspensionState === 2"> |
| | | æ¿æ´» |
| | | </el-dropdown-item> |
| | | <el-dropdown-item icon="el-icon-delete" @click.native="handleDelete(scope.row)" > |
| | | å é¤ |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :current-page.sync="queryParams.pageNum" |
| | | :page-size.sync="queryParams.pageSize" |
| | | @size-change="getList" |
| | | @current-change="getList" |
| | | /> |
| | | </a-card> |
| | | <!-- æµç¨å¾ --> |
| | | <a-card v-if="xmlFrame.open&&!xmlView" :title="xmlFrame.title"> |
| | | <a slot="extra" href="#" @click="()=>{xmlFrame.open=false}">è¿å</a> |
| | | <bpmn-modeler |
| | | v-if="xmlShow" |
| | | ref="refNode" |
| | | :xml="xmlData" |
| | | :users="users" |
| | | :groups="groups" |
| | | :categorys="categorys" |
| | | :is-view="xmlView" |
| | | @save="save" |
| | | /> |
| | | </a-card> |
| | | <!-- å¼¹çªé¢è§ --> |
| | | <a-modal :title="xmlFrame.title" :visible.sync="xmlView&&xmlFrame.open" :width="xmlFrame.width" |
| | | :footer="null" closable @cancel="()=>{xmlView=false,xmlFrame.open=false}" |
| | | > |
| | | <bpmn-modeler |
| | | v-if="xmlShow" |
| | | ref="refNode" |
| | | :xml="xmlData" |
| | | :users="users" |
| | | :groups="groups" |
| | | :categorys="categorys" |
| | | :is-view="xmlView" |
| | | @save="save" |
| | | /> |
| | | </a-modal> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import bpmnModeler from "workflow-bpmn-modeler"; |
| | | import { |
| | | categoryList, |
| | | delDeployment, |
| | | listDefinition, |
| | | readXml, |
| | | roleList, |
| | | saveXml, |
| | | updateState, |
| | | userList |
| | | } from "@views/flowable/api/definition"; |
| | | |
| | | export default { |
| | | components: { |
| | | bpmnModeler, |
| | | }, |
| | | data() { |
| | | return { |
| | | /*===================设计å¨å±æ§======================*/ |
| | | users: [], |
| | | groups: [], |
| | | categorys: [], |
| | | /*=================页é¢å±æ§===================*/ |
| | | loading: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // æµç¨å®ä¹è¡¨æ ¼æ°æ® |
| | | definitionList: [], |
| | | allDefinitionList: [], |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | name: null, |
| | | category: null, |
| | | key: null, |
| | | tenantId: null, |
| | | deployTime: null, |
| | | derivedFrom: null, |
| | | derivedFromRoot: null, |
| | | parentDeploymentId: null, |
| | | engineVersion: null |
| | | }, |
| | | xmlFrame:{ |
| | | width:'70%', |
| | | title:'æµç¨å¾', |
| | | open: false, |
| | | src: "", |
| | | }, |
| | | // xml |
| | | xmlData:"", |
| | | xmlShow: true, |
| | | xmlView: false, |
| | | |
| | | }; |
| | | }, |
| | | created() { |
| | | this.initUserAndRole(); |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | /*===============设计å¨===============*/ |
| | | initUserAndRole(){ |
| | | userList({}).then(res=>{ |
| | | this.users = res.result||[] |
| | | this.users.map(o=>{ |
| | | o.id = o.username |
| | | o.name = o.realname |
| | | }) |
| | | }) |
| | | roleList({}).then(res=>{ |
| | | this.groups = res.result||[] |
| | | this.groups.map(o=>{ |
| | | o.name = o.roleName |
| | | }) |
| | | }) |
| | | categoryList({}).then(res=>{ |
| | | this.categorys = res.result||[] |
| | | }) |
| | | }, |
| | | getModelDetail(deployId) { |
| | | // åé请æ±ï¼è·åxml |
| | | readXml(deployId).then(res =>{ |
| | | this.xmlData = res.result; |
| | | }) |
| | | }, |
| | | getCategoryName(category){ |
| | | let find = this.categorys.find(o=>o.id==category); |
| | | if (find){ |
| | | return find.name |
| | | } |
| | | return '' |
| | | }, |
| | | /*ä¿åæµç¨å®ä¹*/ |
| | | save(data) { |
| | | console.log(data); // { process: {...}, xml: '...', svg: '...' } |
| | | const params = { |
| | | name: data.process.name, |
| | | category: data.process.category, |
| | | xml: data.xml |
| | | } |
| | | saveXml(params).then(res => { |
| | | this.$message.success(res.message) |
| | | // å
³éå½åæ ç¾é¡µå¹¶è¿åä¸ä¸ªé¡µé¢ |
| | | this.getList() |
| | | this.xmlFrame.open = false |
| | | }) |
| | | }, |
| | | /*================页é¢===============*/ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.queryParams.suspensionState = this.queryParams.active?1:0; |
| | | this.getList(); |
| | | }, |
| | | /** æ¥è¯¢æµç¨å®ä¹å表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | // ææ°çæ¬ |
| | | const param1 = Object.assign({ |
| | | isLastVersion:1, |
| | | },this.queryParams) |
| | | listDefinition(param1).then(response => { |
| | | this.definitionList = response.result.records; |
| | | this.total = response.result.total; |
| | | this.loading = false; |
| | | for (const definition of this.definitionList) { |
| | | definition.hasChildren = true |
| | | } |
| | | }); |
| | | // // ææ |
| | | // const param2 = Object.assign({ |
| | | // isLastVersion:0 |
| | | // },this.queryParams,{ |
| | | // pageSize: 9999, |
| | | // pageNum:1 |
| | | // }) |
| | | // listDefinition(param2).then(response => { |
| | | // console.log(response) |
| | | // this.allDefinitionList = response.result.records; |
| | | // }); |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.resetForm("queryForm"); |
| | | this.handleQuery(); |
| | | }, |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields() |
| | | }, |
| | | /** æå¼æµç¨è®¾è®¡å¼¹çªé¡µé¢ */ |
| | | handleLoadXml(row){ |
| | | if (row&&row.deploymentId){ |
| | | console.log(row.deploymentId) |
| | | this.handleReadImage(row.deploymentId) |
| | | this.xmlView = false |
| | | this.xmlFrame.title = "ç¼è¾æµç¨å¾"; |
| | | } else { |
| | | //æ°å¢ |
| | | this.xmlData = '' |
| | | this.xmlView = false |
| | | this.xmlFrame.open = true |
| | | this.xmlFrame.title = 'æ°å¢æµç¨' |
| | | this.xmlShow = false |
| | | this.$nextTick(()=>{ |
| | | this.xmlShow = true |
| | | }) |
| | | } |
| | | this.xmlFrame.width = '90%' |
| | | }, |
| | | /** æµç¨å¾æ¥ç */ |
| | | handleReadImage(deploymentId){ |
| | | this.xmlFrame.title = "æµç¨å¾"; |
| | | this.xmlFrame.open = true; |
| | | this.xmlFrame.width = '70%'; |
| | | // this.xmlFrame.src = process.env.VUE_APP_BASE_API + "/flowable/definition/xmlFrame/" + deploymentId; |
| | | // åé请æ±ï¼è·åxml |
| | | this.xmlView = true |
| | | readXml(deploymentId).then(res =>{ |
| | | if (res.success){ |
| | | this.xmlData = res.result |
| | | /*this.xmlShow = false |
| | | this.$nextTick(()=>{ |
| | | this.xmlShow = true |
| | | })*/ |
| | | } else { |
| | | this.$message.error("è·åæµç¨å¾å¤±è´¥ï¼") |
| | | } |
| | | }) |
| | | }, |
| | | // æå¼ä¸å¡è¡¨å |
| | | handleForm() { |
| | | }, |
| | | // é
ç½®ä¸å¡è¡¨å |
| | | handleAddForm(row) { |
| | | }, |
| | | /** æèµ·/æ¿æ´»æµç¨ */ |
| | | handleUpdateSuspensionState(row){ |
| | | let state = 1; |
| | | if (row.suspensionState === 1) { |
| | | state = 2 |
| | | } |
| | | const params = { |
| | | deployId: row.deploymentId, |
| | | state: state |
| | | } |
| | | updateState(params).then(res => { |
| | | this.$message.success(res.message); |
| | | this.getList(); |
| | | }); |
| | | }, |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | // const ids = row.deploymentId || this.ids; |
| | | const params = { |
| | | deployId: row.deploymentId |
| | | } |
| | | this.$confirm({ |
| | | title:"è¦å", |
| | | content:'æ¯å¦ç¡®è®¤å 餿µç¨å®ä¹ç¼å·ä¸º"' + params.deployId + '"çæ°æ®é¡¹?', |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | onOk:()=>{ |
| | | delDeployment(params).then(res=>{ |
| | | this.getList(); |
| | | if (res.success){ |
| | | this.$message.success('å 餿å'); |
| | | } else { |
| | | this.$message.success('å é¤å¤±è´¥'); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | load(tree, treeNode, resolve) { |
| | | const key = tree.key; |
| | | const childrens = [] |
| | | for (const one of this.allDefinitionList) { |
| | | if (one.key==key&&one.id!=tree.id){ |
| | | childrens.push(one) |
| | | } |
| | | } |
| | | console.log(tree, treeNode,this.allDefinitionList,childrens) |
| | | resolve(childrens) |
| | | } |
| | | }, |
| | | computed: { |
| | | getContainer() { |
| | | return document.querySelector('#app') |
| | | } |
| | | } |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | Description: 工使µ-æçå·²å List |
| | | Author: ä½è
liuyh |
| | | Date: 2025-02-27 |
| | | --> |
| | | <template> |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æµç¨åç±»"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©æµç¨åç±»" v-model="queryParam.category" |
| | | dictCode="flow_type"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="10" :lg="11" :md="12" :sm="24"> |
| | | <a-form-item label="æä½æ¶é´"> |
| | | <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="è¯·éæ©å¼å§æ¶é´" |
| | | class="query-group-cust" |
| | | v-model="queryParam.startTime"></j-date> |
| | | <span class="query-group-split-cust"></span> |
| | | <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="è¯·éæ©ç»ææ¶é´" |
| | | class="query-group-cust" |
| | | v-model="queryParam.endTime"></j-date> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | :scroll="{x:true}" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handelDetial(record,text)">详æ
</a> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' |
| | | export default { |
| | | name: 'NcDeviceCharactersList', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: { |
| | | JDictSelectTag, |
| | | }, |
| | | data() { |
| | | return { |
| | | description: '工使µ-å·²å', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: 'åºå·', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 200, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | { |
| | | title: 'æµç¨åç±»', |
| | | align: 'center', |
| | | dataIndex: 'category_dictText', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'æµç¨åç§°', |
| | | align: 'center', |
| | | dataIndex: 'procDefName', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'æµç¨ä¸å¡ç®è¦æè¿°', |
| | | align: 'center', |
| | | dataIndex: 'description', |
| | | width: 300 |
| | | }, |
| | | { |
| | | title: 'æµç¨å起人åç§°', |
| | | align: 'center', |
| | | dataIndex: 'startUserName', |
| | | width: 250 |
| | | }, |
| | | { |
| | | title: 'ä»»å¡åç§°', |
| | | align: 'center', |
| | | dataIndex: 'taskName', |
| | | width: 250 |
| | | }, |
| | | { |
| | | title: 'æä½æ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'finishTime', |
| | | width: 300 |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' }, |
| | | align: 'center', |
| | | width: 200, |
| | | fixed: 'right' |
| | | } |
| | | ], |
| | | url: { |
| | | list: '/assign/flow/finishedList' |
| | | }, |
| | | dictOptions: {}, |
| | | selectShenpiData: {}, |
| | | selectDispatchFileXqData: {}, |
| | | selectWeekMaintenanceData: {}, |
| | | selectInspectionOrderXqData: {}, |
| | | selectRepairOrderData: {}, |
| | | selectOutBoundOrderData: {}, |
| | | selectLossBoundOrderData: {}, |
| | | selectStocktakingBoundOrderData: {} |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function() { |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
| | | } |
| | | }, |
| | | methods: { |
| | | handelDetial(item, index) { |
| | | console.log('ç¹å»äºè¯¦æ
') |
| | | console.log('item----->', item) |
| | | console.log('index----->', index) |
| | | let approcesstype = this.splitAprocessType(item.category) |
| | | console.log('approcesstype--->', approcesstype) |
| | | switch (approcesstype) { |
| | | case 'drApproval': |
| | | this.handDrDetial(item) |
| | | break |
| | | case 'ggApproval': |
| | | this.handDispatchFileDetial(item) |
| | | break |
| | | case 'sbdjApproval': |
| | | this.handInspectionOrder(item) |
| | | break |
| | | case 'WEEK_MAINTENANCE': |
| | | this.handleWeekMaintenance(item) |
| | | break |
| | | case 'eam_repair': |
| | | this.handleRepairOrder(item) |
| | | break |
| | | case 'toolOutStorageApproval': |
| | | this.handleToolOutStorageApproval(item) |
| | | break |
| | | case 'toolsStocktakingBound': |
| | | this.handleToolStocktakingApproval(item) |
| | | break |
| | | case 'toolsLossApproval': |
| | | this.handleToolLossApproval(item) |
| | | break |
| | | default: |
| | | alert('没æ¾å°è¯¥æµç¨') |
| | | } |
| | | }, |
| | | |
| | | splitAprocessType(title) { |
| | | let parts = title.split('ï¼') // 注æåå·æ¯å
¨è§å符ï¼ä½¿ç¨å¯¹åºçåè¿è¡åå² |
| | | let result = parts[0] |
| | | return result |
| | | }, |
| | | handDrDetial(item) { |
| | | this.selectShenpiData = item |
| | | this.selectShenpiData.assignee_dictText = item.todoUsers_dictText |
| | | this.selectShenpiData.procInstId = item.procInsId |
| | | this.selectShenpiData.title = item.description |
| | | this.$refs.modalFormApproval.clearTableSource() |
| | | this.$refs.modalFormApproval.getAllApproveData(item) |
| | | }, |
| | | handDispatchFileDetial(item) { |
| | | console.log('item----->', item) |
| | | this.selectDispatchFileXqData = item |
| | | this.selectDispatchFileXqData.assignee_dictText = item.todoUsers_dictText |
| | | this.selectDispatchFileXqData.procInstId = item.procInsId |
| | | this.selectDispatchFileXqData.processInstanceId = item.procInsId |
| | | this.selectDispatchFileXqData.title = item.description |
| | | this.$refs.modalFormDispatchFileXq.clearTableSource() |
| | | this.$refs.modalFormDispatchFileXq.getAllApproveData(item) |
| | | }, |
| | | handleWeekMaintenance(record) { |
| | | this.selectWeekMaintenanceData = Object.assign({}, record) |
| | | this.$refs.weekMaintenanceApprovalModal.handleDetail(record) |
| | | this.$refs.weekMaintenanceApprovalModal.title = '详æ
' |
| | | this.$refs.weekMaintenanceApprovalModal.disableSubmit = true |
| | | }, |
| | | |
| | | handInspectionOrder(record) { |
| | | console.log('record----->', record) |
| | | this.selectInspectionOrderXqData = Object.assign({}, record) |
| | | const { todoUsers_dictText, procInsId, description, taskName } = this.selectInspectionOrderXqData |
| | | this.selectInspectionOrderXqData.assignee_dictText = todoUsers_dictText |
| | | this.selectInspectionOrderXqData.procInstId = procInsId |
| | | this.selectInspectionOrderXqData.processInstanceId = procInsId |
| | | this.selectInspectionOrderXqData.title = description |
| | | this.$refs.modalFormInspectionOrderXq.visible = true |
| | | this.$refs.modalFormInspectionOrderXq.title = taskName |
| | | this.$refs.modalFormInspectionOrderXq.disableSubmit = true |
| | | this.$refs.modalFormInspectionOrderXq.getAllApproveData({ |
| | | ...record, |
| | | procInstId: procInsId, |
| | | processInstanceId: procInsId |
| | | }) |
| | | this.$refs.modalFormInspectionOrderXq.getBasicInformation(record) |
| | | }, |
| | | |
| | | /** |
| | | * ç¹å»è®¾å¤ç»´ä¿®åç±»æµç¨è¯¦æ
æ¶è§¦å |
| | | * @param record |
| | | */ |
| | | handleRepairOrder(record) { |
| | | this.selectRepairOrderData = Object.assign({}, record) |
| | | const { procInsId, taskName } = this.selectRepairOrderData |
| | | this.$refs.repairOrderApprovalModal.visible = true |
| | | this.$refs.repairOrderApprovalModal.disableSubmit = true |
| | | this.$refs.repairOrderApprovalModal.title = taskName |
| | | this.$refs.modalFormInspectionOrderXq.getAllApproveData({ |
| | | ...record, |
| | | procInstId: procInsId, |
| | | processInstanceId: procInsId |
| | | }) |
| | | this.$refs.repairOrderApprovalModal.getBasicInformation(record) |
| | | }, |
| | | |
| | | handleToolOutStorageApproval(item) { |
| | | this.selectOutBoundOrderData = Object.assign({}, item) |
| | | item.procInstId = item.procInsId |
| | | item.processInstanceId = item.procInsId |
| | | this.selectOutBoundOrderData.assignee_dictText = item.todoUsers_dictText |
| | | this.$refs.outBoundOrderHandle.auditVisible = false |
| | | this.$refs.outBoundOrderHandle.clearTableSource() |
| | | this.$refs.outBoundOrderHandle.getAllApproveData(item) |
| | | }, |
| | | |
| | | handleToolStocktakingApproval(item) { |
| | | |
| | | this.selectStocktakingBoundOrderData = Object.assign({}, item) |
| | | item.procInstId = item.procInsId |
| | | item.processInstanceId = item.procInsId |
| | | this.selectStocktakingBoundOrderData.assignee_dictText = item.todoUsers_dictText |
| | | this.$refs.stocktakingBoundHandle.auditVisible = false |
| | | this.$refs.stocktakingBoundHandle.disableSubmit = true |
| | | this.$refs.stocktakingBoundHandle.clearTableSource() |
| | | this.$refs.stocktakingBoundHandle.getAllApproveData(item) |
| | | |
| | | }, |
| | | handleToolLossApproval(item) { |
| | | this.selectLossBoundOrderData = Object.assign({}, item) |
| | | item.procInstId = item.procInsId |
| | | item.processInstanceId = item.procInsId |
| | | this.selectStocktakingBoundOrderData.assignee_dictText = item.todoUsers_dictText |
| | | this.$refs.lossBoundHandle.auditVisible = false |
| | | this.$refs.lossBoundHandle.disableSubmit = true |
| | | this.$refs.lossBoundHandle.clearTableSource() |
| | | this.$refs.lossBoundHandle.getAllApproveData(item) |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | Description: 工使µ-æ»å°è´¦ List |
| | | Author: ä½è
liuyh |
| | | Date: 2025-02-27 |
| | | --> |
| | | <template> |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æµç¨åç±»"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©æµç¨åç±»" v-model="queryParam.category" |
| | | dictCode="flow_type"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æµç¨åç§°"> |
| | | <a-input placeholder="请è¾å
¥æµç¨åç§°" v-model="queryParam.flowName"></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç®è¦æè¿°"> |
| | | <a-input placeholder="请è¾å
¥ç®è¦æè¿°" v-model="queryParam.title"></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="10" :lg="11" :md="12" :sm="24"> |
| | | <a-form-item label="æä½æ¶é´"> |
| | | <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="è¯·éæ©å¼å§æ¶é´" class="query-group-cust" |
| | | v-model="queryParam.startTime"></j-date> |
| | | <span class="query-group-split-cust"></span> |
| | | <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="è¯·éæ©ç»ææ¶é´" class="query-group-cust" |
| | | v-model="queryParam.endTime"></j-date> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | :scroll="{x:true}" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handelDetail(record,text)">详æ
</a> |
| | | </span> |
| | | </a-table> |
| | | </div> |
| | | |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' |
| | | |
| | | export default { |
| | | name: 'FlowLedger', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: { |
| | | JDictSelectTag |
| | | }, |
| | | data() { |
| | | return { |
| | | description: 'æµç¨ç®¡ç', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: 'åºå·', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | { |
| | | title: 'æµç¨åç±»', |
| | | align: 'center', |
| | | dataIndex: 'category_dictText', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'æµç¨åç§°', |
| | | align: 'center', |
| | | dataIndex: 'flowName' |
| | | }, |
| | | { |
| | | title: 'æµç¨ä¸å¡ç®è¦æè¿°', |
| | | align: 'center', |
| | | dataIndex: 'description', |
| | | }, |
| | | { |
| | | title: 'ç³è¯·äºº', |
| | | align: 'center', |
| | | dataIndex: 'proposer_dictText' |
| | | }, |
| | | { |
| | | title: 'å驱èç¹', |
| | | align: 'center', |
| | | dataIndex: 'preNode' |
| | | }, |
| | | { |
| | | title: 'å½åèç¹', |
| | | align: 'center', |
| | | dataIndex: 'taskName' |
| | | }, |
| | | { |
| | | title: 'æµç¨å¼å§æ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'startTime' |
| | | }, |
| | | { |
| | | title: 'æµç¨ç»ææ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'endTime' |
| | | }, |
| | | { |
| | | title: 'å¤çæ¶é¿', |
| | | align: 'center', |
| | | dataIndex: 'duration' |
| | | }, |
| | | { |
| | | title: 'å½åä»»å¡äºº', |
| | | align: 'center', |
| | | dataIndex: 'todoUsers_dictText' |
| | | }, |
| | | { |
| | | title: 'å¤çè¿ç人', |
| | | align: 'center', |
| | | dataIndex: 'doneUsers_dictText' |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' }, |
| | | align: 'center', |
| | | width: 200, |
| | | fixed: 'right' |
| | | } |
| | | ], |
| | | url: { |
| | | list: '/assign/flow/list' |
| | | }, |
| | | dictOptions: {}, |
| | | selectShenpiData: {}, |
| | | selectDispatchFileXqData: {}, |
| | | selectInspectionOrderXqData: {} |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function() { |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
| | | } |
| | | }, |
| | | methods: { |
| | | handelDetail(item, index) { |
| | | console.log('ç¹å»äºè¯¦æ
') |
| | | console.log('item----->', item) |
| | | console.log('index----->', index) |
| | | let approcesstype = this.splitAprocessType(item.category) |
| | | console.log('approcesstype--->', approcesstype) |
| | | switch (approcesstype) { |
| | | case 'drApproval': |
| | | item.description=item.description |
| | | this.handDrDetial(item) |
| | | break |
| | | case 'ggApproval': |
| | | item.description=item.description |
| | | this.handDispatchFileDetial(item) |
| | | break |
| | | case 'sbdjApproval': |
| | | item.description = item.description |
| | | this.handInspectionOrderDetail(item) |
| | | break |
| | | default: |
| | | alert('没æ¾å°è¯¥æµç¨') |
| | | } |
| | | }, |
| | | splitAprocessType(title) { |
| | | let parts = title.split('ï¼') // 注æåå·æ¯å
¨è§å符ï¼ä½¿ç¨å¯¹åºçåè¿è¡åå² |
| | | let result = parts[0] |
| | | return result |
| | | }, |
| | | handDrDetial(item) { |
| | | this.selectShenpiData = item |
| | | this.selectShenpiData.assignee_dictText=item.todoUsers_dictText |
| | | this.selectShenpiData.createTime=item.startTime |
| | | this.selectShenpiData.procInstId=item.processInstanceId |
| | | this.$refs.modalFormApproval.clearTableSource() |
| | | this.$refs.modalFormApproval.getAllApproveData(item) |
| | | }, |
| | | handDispatchFileDetial(item){ |
| | | this.selectDispatchFileXqData = item |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | this.selectDispatchFileXqData.assignee_dictText=item.todoUsers_dictText |
| | | this.selectDispatchFileXqData.createTime=item.startTime |
| | | this.selectDispatchFileXqData.procInstId=item.processInstanceId |
| | | this.$refs.modalFormDispatchFileXq.clearTableSource() |
| | | this.$refs.modalFormDispatchFileXq.getAllApproveData(item) |
| | | }, |
| | | handInspectionOrderDetail(item) { |
| | | this.selectInspectionOrderXqData = item |
| | | this.selectInspectionOrderXqData.assignee_dictText = item.todoUsers_dictText |
| | | this.selectInspectionOrderXqData.createTime = item.startTime |
| | | this.selectInspectionOrderXqData.procInstId = item.processInstanceId |
| | | this.$refs.modalFormInspectionOrderXq.visible = true |
| | | this.$refs.modalFormInspectionOrderXq.disableSubmit = true |
| | | this.$refs.modalFormInspectionOrderXq.getAllApproveData(item) |
| | | this.$refs.modalFormInspectionOrderXq.getBasicInformation(item) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | Description: 工使µ-æçå¾
å List |
| | | Author: ä½è
liuyh |
| | | Date: 2025-02-27 |
| | | --> |
| | | <template> |
| | | <a-card :bordered='false'> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class='table-page-search-wrapper'> |
| | | <a-form |
| | | layout='inline' |
| | | @keyup.enter.native='searchQuery' |
| | | > |
| | | <a-row :gutter='24'> |
| | | <a-col |
| | | :lg='6' |
| | | :md='8' |
| | | :sm='24' |
| | | :xl='4' |
| | | > |
| | | <a-form-item label='æµç¨åç±»'> |
| | | <j-dict-select-tag |
| | | v-model='queryParam.category' |
| | | dictCode='flow_type' |
| | | placeholder='è¯·éæ©æµç¨åç±»' |
| | | ></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--<a-col :xl="4" :lg="6" :md="8" :sm="24">--> |
| | | <!--<a-form-item label="æµç¨åç§°">--> |
| | | <!--<a-input placeholder="请è¾å
¥æµç¨åç§°" v-model="queryParam.flowName"></a-input>--> |
| | | <!--</a-form-item>--> |
| | | <!--</a-col>--> |
| | | <a-col |
| | | :lg='6' |
| | | :md='8' |
| | | :sm='24' |
| | | :xl='4' |
| | | > |
| | | <a-form-item label='å½åèç¹'> |
| | | <a-input |
| | | v-model='queryParam.name' |
| | | placeholder='请è¾å
¥å½åèç¹ç²¾ç¡®æ¥è¯¢' |
| | | ></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col |
| | | :lg='6' |
| | | :md='8' |
| | | :sm='24' |
| | | :xl='4' |
| | | > |
| | | <a-form-item label='ç®è¦æè¿°'> |
| | | <a-input |
| | | v-model='queryParam.title' |
| | | placeholder='请è¾å
¥ç®è¦æè¿°' |
| | | ></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <template v-if='toggleSearchStatus'> |
| | | <a-col |
| | | :lg='8' |
| | | :md='12' |
| | | :sm='24' |
| | | :xl='8' |
| | | > |
| | | <a-form-item label='任塿¶é´èå´'> |
| | | <j-date |
| | | v-model='queryParam.startTime' |
| | | :show-time='false' |
| | | class='query-group-cust' |
| | | date-format='YYYY-MM-DD HH:mm:ss' |
| | | placeholder='è¯·éæ©å¼å§æ¶é´' |
| | | ></j-date> |
| | | <span class='query-group-split-cust'></span> |
| | | <j-date |
| | | v-model='queryParam.endTime' |
| | | :show-time='false' |
| | | class='query-group-cust' |
| | | date-format='YYYY-MM-DD HH:mm:ss' |
| | | placeholder='è¯·éæ©ç»ææ¶é´' |
| | | ></j-date> |
| | | </a-form-item> |
| | | </a-col> |
| | | </template> |
| | | |
| | | <a-col |
| | | :lg='6' |
| | | :md='8' |
| | | :sm='24' |
| | | :xl='4' |
| | | > |
| | | <span |
| | | class='table-page-search-submitButtons' |
| | | style='float: left;overflow: hidden;' |
| | | > |
| | | <a-button |
| | | icon='search' |
| | | type='primary' |
| | | @click='searchQuery' |
| | | >æ¥è¯¢</a-button> |
| | | <a-button |
| | | icon='reload' |
| | | style='margin-left: 8px' |
| | | @click='searchReset' |
| | | >éç½®</a-button> |
| | | <a |
| | | style='margin-left: 8px' |
| | | @click='handleToggleSearch' |
| | | > |
| | | {{ toggleSearchStatus ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class='table-operator'> |
| | | <a-dropdown v-if='selectedRowKeys.length > 0 '> |
| | | <a-menu slot='overlay'> |
| | | <a-menu-item |
| | | key='1' |
| | | @click='batchHandle' |
| | | > |
| | | <a-icon type='delete' /> |
| | | æ¹éå¤ç |
| | | </a-menu-item> |
| | | </a-menu> |
| | | <a-button style='margin-left: 8px'> æ¹éæä½ |
| | | <a-icon type='down' /> |
| | | </a-button> |
| | | </a-dropdown> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <div |
| | | class='ant-alert ant-alert-info' |
| | | style='margin-bottom: 16px;' |
| | | > |
| | | <i class='anticon anticon-info-circle ant-alert-icon'></i>已鿩 <a style='font-weight: 600'>{{ |
| | | selectedRowKeys.length }}</a>项 |
| | | <a |
| | | style='margin-left: 24px' |
| | | @click='onClearSelected' |
| | | >æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref='table' |
| | | :columns='columns' |
| | | :dataSource='dataSource' |
| | | :loading='loading' |
| | | :pagination='ipagination' |
| | | :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' |
| | | :scroll='{x:getTableColumnsTotalWidth,y:465}' |
| | | bordered |
| | | rowKey='id' |
| | | size='middle' |
| | | @change='handleTableChange' |
| | | > |
| | | |
| | | <span |
| | | slot='action' |
| | | slot-scope='text, record' |
| | | > |
| | | <a @click='handelDetail(record,text)'>æ§è¡/审æ¹</a> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' |
| | | import { getAction } from '@api/manage' |
| | | export default { |
| | | name: 'NcDeviceCharactersList', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: { |
| | | JDictSelectTag, |
| | | }, |
| | | data() { |
| | | return { |
| | | description: '工使µ-æçå¾
å', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: 'åºå·', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function (t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | { |
| | | title: 'æµç¨åç±»', |
| | | align: 'center', |
| | | dataIndex: 'category_dictText', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'æµç¨åç§°', |
| | | align: 'center', |
| | | dataIndex: 'flowName', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'æµç¨ä¸å¡ç®è¦æè¿°', |
| | | align: 'center', |
| | | dataIndex: 'description', |
| | | width: 350, |
| | | ellipsis: true |
| | | |
| | | }, |
| | | { |
| | | title: 'ä¸ä¸æ¥å¤ç人', |
| | | align: 'center', |
| | | dataIndex: 'preNodeAssignee_dictText', |
| | | width: 150 |
| | | }, |
| | | { |
| | | title: 'å驱èç¹', |
| | | align: 'center', |
| | | dataIndex: 'preNode', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'å½åèç¹', |
| | | align: 'center', |
| | | dataIndex: 'name', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'å½åèç¹å¼å§æ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'createTime', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' }, |
| | | align: 'center', |
| | | width: 150, |
| | | fixed: 'right' |
| | | } |
| | | ], |
| | | url: { |
| | | list: '/assign/flow/toTaskBySelf', |
| | | isSameNode: '/assign/flow/isSameNode' |
| | | }, |
| | | dictOptions: {}, |
| | | selectShenpiData: {}, |
| | | selectDispatchFileXqData: {}, |
| | | selectInspectionOrderData: {}, |
| | | selectWeekMaintenanceData: {}, |
| | | selectSecondMaintenanceData: {}, |
| | | selectThirdMaintenanceData: {}, |
| | | selectBachData: {}, |
| | | selectRepairOrderData: {}, |
| | | selectOutBoundOrderData: {}, |
| | | selectLossBoundOrderData: {}, |
| | | selectStocktakingBoundOrderData: {}, |
| | | selectInboundOrderData: {}, |
| | | selectSparePartApplyData: {}, |
| | | selectGuideCardData:{}, |
| | | selectEquipmentAssignProductData:{}, |
| | | selectEquipmentSealUpData:{}, |
| | | //ä¸å¡ä¿¡æ¯ID |
| | | dataId: undefined |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function () { |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
| | | }, |
| | | getTableColumnsTotalWidth() { |
| | | return this.columns.reduce((total, item) => total + item.width, 0) |
| | | } |
| | | }, |
| | | methods: { |
| | | loadData(arg) { |
| | | if (!this.url.list) { |
| | | this.$message.error('请设置url.list屿§!') |
| | | return |
| | | } |
| | | //å è½½æ°æ® è¥ä¼ å
¥åæ°1åå 载第ä¸é¡µçå
容 |
| | | if (arg === 1) { |
| | | this.ipagination.current = 1 |
| | | } |
| | | var params = this.getQueryParams()//æ¥è¯¢æ¡ä»¶ |
| | | if (!params) { |
| | | return false |
| | | } |
| | | this.loading = true |
| | | getAction(this.url.list, params).then((res) => { |
| | | if (res.success) { |
| | | // console.log(res) |
| | | //update-begin---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | this.dataSource = res.result.records || res.result |
| | | if (res.result.total) { |
| | | this.ipagination.total = res.result.total |
| | | } else { |
| | | this.ipagination.total = 0 |
| | | } |
| | | if (this.selectedRowKeys.length > 0) this.selectedRowKeys = this.selectionRows = [] |
| | | //update-end---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | } else { |
| | | this.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | |
| | | handelDetail(item, index) { |
| | | console.log('ç¹å»äºè¯¦æ
') |
| | | console.log('item----->', item) |
| | | console.log('index----->', index) |
| | | let processType = this.splitAprocessType(item.category) |
| | | console.log('processType--->', processType) |
| | | switch (processType) { |
| | | case 'drApproval': |
| | | this.handDrDetial(item) |
| | | break |
| | | case 'ggApproval': |
| | | this.handDispatchFileDetial(item) |
| | | break |
| | | case 'ncFileSettingProcessApproval': |
| | | this.handStandardizedDetial(item) |
| | | break |
| | | case 'sbdjApproval': |
| | | this.handInspectionOrder(item) |
| | | break |
| | | case 'WEEK_MAINTENANCE': |
| | | this.handleWeekMaintenance(item) |
| | | break |
| | | case 'eam_repair': |
| | | this.handleRepairOrder(item) |
| | | break |
| | | case 'equipment_lean_out': |
| | | this.handleEquipmentLeanOut(item) |
| | | break |
| | | case 'second_maintenance': |
| | | this.handleSecondMaintenance(item) |
| | | break |
| | | case 'third_maintenance': |
| | | this.handleThirdMaintenance(item) |
| | | break |
| | | case 'toolOutStorageApproval': |
| | | this.handleToolOutStorageApproval(item) |
| | | break |
| | | case 'toolsStocktakingBound': |
| | | this.handleToolStocktakingApproval(item) |
| | | break |
| | | case 'toolsLossApproval': |
| | | this.handleToolLossApproval(item) |
| | | break |
| | | case 'equipment_seal_up': |
| | | this.handleEquipmentSealUp(item) |
| | | break |
| | | case 'toolInStorageApproval': |
| | | this.handleToolInStorage(item) |
| | | break |
| | | case 'equipment_transfer': |
| | | this.handleEquipmentTransfer(item) |
| | | break |
| | | case 'equipment_scrap': |
| | | this.handleEquipmentScrap(item) |
| | | break |
| | | case 'spare_part_apply': |
| | | this.handleSparePartApplyApproval(item) |
| | | break |
| | | case 'programConfirmApproval': |
| | | this.handleGuideCardApproval(item) |
| | | break |
| | | case 'equipmentAssignProductApproval': |
| | | this.handleEquipmentAssignProductApproval(item) |
| | | break |
| | | default: |
| | | alert('没æ¾å°è¯¥æµç¨') |
| | | } |
| | | }, |
| | | |
| | | batchHandle() { |
| | | const categorySet = new Set(this.selectionRows.map(item => item.category)) |
| | | const nameSet = new Set(this.selectionRows.map(item => item.name)) |
| | | if (categorySet.size !== 1 || nameSet.size !== 1) { |
| | | this.$notification.info({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©å䏿µç¨åç±»ä¸çåä¸å½åèç¹' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | if (categorySet.has('eam_repair')) { |
| | | this.$notification.info({ |
| | | message: 'æ¶æ¯', |
| | | description: '设å¤ç»´ä¿®æµç¨æ æ³æ¹éå¤ç' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | if (categorySet.has('sbdjApproval')) { |
| | | this.$refs.inspectionOrderBatchHandleRef.visible = true |
| | | this.$refs.inspectionOrderBatchHandleRef.title = this.selectionRows[0].name |
| | | this.$refs.inspectionOrderBatchHandleRef.getAllApproveData(this.selectionRows[0]) |
| | | this.$refs.inspectionOrderBatchHandleRef.getBasicInformation(this.selectionRows[0]) |
| | | } else if (categorySet.has('WEEK_MAINTENANCE')) { |
| | | this.$refs.weenMaintenanceBatchApprovalModalRef.handleDetail(this.selectionRows[0]) |
| | | this.$refs.weenMaintenanceBatchApprovalModalRef.title = this.selectionRows[0].name |
| | | } |
| | | }, |
| | | |
| | | splitAprocessType(title) { |
| | | let parts = title.split('ï¼') // 注æåå·æ¯å
¨è§å符ï¼ä½¿ç¨å¯¹åºçåè¿è¡åå² |
| | | let result = parts[0] |
| | | return result |
| | | }, |
| | | //DNC-ææ´¾NCç¨åºè³è®¾å¤ |
| | | handDrDetial(item) { |
| | | this.selectShenpiData = item |
| | | this.$refs.modalFormApproval.clearTableSource() |
| | | this.$refs.modalFormApproval.getAllApproveData(item) |
| | | }, |
| | | //DNC-NCç¨åºç¾æ´¾ |
| | | handDispatchFileDetial(item) { |
| | | console.log('item----->', item) |
| | | this.selectDispatchFileXqData = item |
| | | this.$refs.modalFormDispatchFileXq.clearTableSource() |
| | | this.$refs.modalFormDispatchFileXq.getAllApproveData(item) |
| | | }, |
| | | //DNC-å®å审æ¹é¡µé¢ |
| | | handStandardizedDetial(item){ |
| | | this.selectDispatchFileXqData = item |
| | | this.$refs.StandardizedProcessHandle.clearTableSource() |
| | | this.$refs.StandardizedProcessHandle.getAllApproveData(item) |
| | | }, |
| | | |
| | | handInspectionOrder(record) { |
| | | console.log('record----->', record) |
| | | this.selectInspectionOrderData = Object.assign({}, record) |
| | | this.$refs.modalFormInspectionOrder.visible = true |
| | | this.$refs.modalFormInspectionOrder.title = record.name |
| | | this.$refs.modalFormInspectionOrder.getAllApproveData(record) |
| | | this.$refs.modalFormInspectionOrder.getBasicInformation(record) |
| | | }, |
| | | |
| | | handleWeekMaintenance(item) { |
| | | if (item && item.dataId) { |
| | | this.selectWeekMaintenanceData = Object.assign({}, item) |
| | | this.$refs.weekMaintenanceApprovalModal.handleDetail(item) |
| | | this.$refs.weekMaintenanceApprovalModal.title = item.name |
| | | this.$refs.weekMaintenanceApprovalModal.disableSubmit = false |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * ç¹å»è®¾å¤ç»´ä¿®åç±»æµç¨è¯¦æ
æ¶è§¦å |
| | | * @param record |
| | | */ |
| | | handleRepairOrder(record) { |
| | | this.selectRepairOrderData = Object.assign({}, record) |
| | | this.$refs.repairOrderApprovalModal.visible = true |
| | | this.$refs.repairOrderApprovalModal.title = record.name |
| | | this.$refs.repairOrderApprovalModal.getAllApproveData(record) |
| | | this.$refs.repairOrderApprovalModal.getBasicInformation(record) |
| | | }, |
| | | handleEquipmentLeanOut(item) { |
| | | this.$refs.equipmentLeanOutApprovalModelRef.visible = true |
| | | this.$refs.equipmentLeanOutApprovalModelRef.title = item.name |
| | | this.$refs.equipmentLeanOutApprovalModelRef.handleDetail(item) |
| | | this.$refs.equipmentLeanOutApprovalModelRef.disableSubmit = false |
| | | }, |
| | | handleSecondMaintenance(item) { |
| | | if (item && item.dataId) { |
| | | this.selectSecondMaintenanceData = Object.assign({}, item) |
| | | this.$refs.secondMaintenanceApprovalModal.handleDetail(item) |
| | | this.$refs.secondMaintenanceApprovalModal.title = item.name |
| | | this.$refs.secondMaintenanceApprovalModal.disableSubmit = false |
| | | } |
| | | }, |
| | | handleThirdMaintenance(item) { |
| | | if (item && item.dataId) { |
| | | this.selectThirdMaintenanceData = Object.assign({}, item) |
| | | this.$refs.thirdMaintenanceApprovalModal.handleDetail(item) |
| | | this.$refs.thirdMaintenanceApprovalModal.title = item.name |
| | | this.$refs.thirdMaintenanceApprovalModal.disableSubmit = false |
| | | } |
| | | }, |
| | | handleToolOutStorageApproval(item) { |
| | | if (item && item.dataId) { |
| | | this.selectOutBoundOrderData = Object.assign({}, item) |
| | | this.$refs.outBoundOrderHandle.auditVisible = true |
| | | this.$refs.outBoundOrderHandle.clearTableSource() |
| | | this.$refs.outBoundOrderHandle.getAllApproveData(item) |
| | | } |
| | | }, |
| | | handleToolStocktakingApproval(item) { |
| | | if (item && item.dataId) { |
| | | this.selectStocktakingBoundOrderData = Object.assign({}, item) |
| | | this.$refs.stocktakingBoundHandle.auditVisible = true |
| | | this.$refs.stocktakingBoundHandle.clearTableSource() |
| | | this.$refs.stocktakingBoundHandle.getAllApproveData(item) |
| | | } |
| | | }, |
| | | handleToolLossApproval(item) { |
| | | if (item && item.dataId) { |
| | | this.selectLossBoundOrderData = Object.assign({}, item) |
| | | this.$refs.lossBoundHandle.auditVisible = true |
| | | this.$refs.lossBoundHandle.clearTableSource() |
| | | this.$refs.lossBoundHandle.getAllApproveData(item) |
| | | } |
| | | }, |
| | | |
| | | handleEquipmentSealUp(item) { |
| | | this.$refs.equipmentSealUpApprovalModelRef.visible = true |
| | | this.$refs.equipmentSealUpApprovalModelRef.title = item.name |
| | | this.$refs.equipmentSealUpApprovalModelRef.handleDetail(item) |
| | | this.$refs.equipmentSealUpApprovalModelRef.disableSubmit = false |
| | | }, |
| | | handleToolInStorage(item) { |
| | | if (item && item.dataId) { |
| | | this.selectInboundOrderData = Object.assign({}, item) |
| | | this.$refs.inboundOrderApprovalModal.auditVisible = true |
| | | this.$refs.inboundOrderApprovalModal.clearTableSource() |
| | | this.$refs.inboundOrderApprovalModal.getAllApproveData(item) |
| | | } |
| | | }, |
| | | handleEquipmentTransfer(item) { |
| | | this.$refs.equipmentTransferApprovalModelRef.visible = true |
| | | this.$refs.equipmentTransferApprovalModelRef.title = item.name |
| | | this.$refs.equipmentTransferApprovalModelRef.handleDetail(item) |
| | | this.$refs.equipmentTransferApprovalModelRef.disableSubmit = false |
| | | }, |
| | | handleEquipmentScrap(item) { |
| | | this.$refs.equipmentScrapApprovalModelRef.visible = true |
| | | this.$refs.equipmentScrapApprovalModelRef.title = item.name |
| | | this.$refs.equipmentScrapApprovalModelRef.handleDetail(item) |
| | | this.$refs.equipmentScrapApprovalModelRef.disableSubmit = false |
| | | }, |
| | | handleSparePartApplyApproval(item) { |
| | | if (item && item.dataId) { |
| | | this.selectSparePartApplyData = Object.assign({}, item) |
| | | this.$refs.sparePartApplyModal.auditVisible = true |
| | | this.$refs.sparePartApplyModal.clearTableSource() |
| | | this.$refs.sparePartApplyModal.getAllApproveData(item) |
| | | } |
| | | }, |
| | | //DNC-ç¨åºç¡®è®¤è¡¨æµç¨ |
| | | handleGuideCardApproval(item) { |
| | | console.log('item----->', item) |
| | | this.selectGuideCardData = item |
| | | this.$refs.guideCardBatchHandle.clearTableSource() |
| | | this.$refs.guideCardBatchHandle.getAllApproveData(item) |
| | | }, |
| | | //DNC-设å¤ç»ææ ææ´¾äº§åç»ææ |
| | | handleEquipmentAssignProductApproval(item){ |
| | | console.log('item----->', item) |
| | | this.selectEquipmentSealUpData = item |
| | | this.$refs.assignEquipmentFileStreamHandle.clearTableSource() |
| | | this.$refs.assignEquipmentFileStreamHandle.getAllApproveData(item) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | </style> |