From 561224d0c6ea8767766a8114ce15c98e31b6a0d9 Mon Sep 17 00:00:00 2001 From: lzhe <181968431@qq.com> Date: 星期二, 08 七月 2025 23:54:10 +0800 Subject: [PATCH] 1 --- src/views/flow/todolist.vue | 191 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 138 insertions(+), 53 deletions(-) diff --git a/src/views/flow/todolist.vue b/src/views/flow/todolist.vue index d8efadd..250ad09 100644 --- a/src/views/flow/todolist.vue +++ b/src/views/flow/todolist.vue @@ -13,30 +13,51 @@ </el-button> </template> </avue-crud> - <el-dialog title="瀹℃壒" append-to-body v-model="approveBox" width="20%"> - <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" /> - <!-- <template #footer> - <span class="dialog-footer"> - <el-button @click="deployBox = false">鍙� 娑�</el-button> - <el-button type="primary" @click="handleDoDeploy" :loading="deployLoading">纭� 瀹�</el-button> - </span> - </template> --> - </el-dialog> + <!-- <el-dialog title="瀹℃壒" append-to-body v-model="approveBox" width="100%"> + <div class="approve-box"> + <div class="left"> + <TodolistLeft :row="row"/> + </div> + <div class="right"> + <TodolistRightTop :row="row" /> + <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" /> + </div> + </div> + </el-dialog> --> + <el-drawer title="瀹℃壒" append-to-body v-model="approveBox" size="100%" v-if="approveBox"> + <div class="approve-box"> + <div class="left"> + <TodolistLeft :row="row" @selection-change="selectionChange"/> + </div> + <div class="right"> + <TodolistRightTop :row="row" /> + <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" /> + </div> + </div> + </el-drawer> </basic-container> </template> <script> -import { getList, approve } from '@/api/flow/todolist'; +import { getList, approve,getAssignee } from '@/api/flow/todolist'; import { mapGetters } from 'vuex'; - +import dayjs from 'dayjs'; +import TodolistLeft from './components/TodolistLeft.vue'; +import TodolistRightTop from './components/TodolistRightTop.vue'; export default { + components: { + TodolistLeft, + TodolistRightTop + }, data() { return { + applist: [], + assigneeData: [], row: {}, approveBox: false, formApprove: { comment: '', - approve: 'Y', // 榛樿鍚屾剰 + approve: '', // 榛樿鍚屾剰 }, optionApprove: { labelWidth: 100, @@ -54,15 +75,17 @@ rules: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'blur' }], }, { - label: '涓嬩竴瀹℃壒鐢ㄦ埛', + label: '鍙戦�佺粰', prop: 'assignee', type: 'select', - dicUrl: `/blade-mdm/flow/flow-user-list?deptId=0`, + // dicUrl: `/blade-mdm/flow/flow-user-list?deptId=0`, + // dicFlag: true, props: { label: 'name', value: 'id', }, span: 24, + disabled: false, dicData: [ ], @@ -85,11 +108,6 @@ form: {}, query: {}, loading: true, - page: { - pageSize: 10, - currentPage: 1, - total: 0, - }, option: { addBtn: false, editBtn: false, @@ -105,21 +123,9 @@ index: true, // selection: true, // viewBtn: true, - menuWidth: 320, + menuWidth: 100, dialogClickModal: false, - column: [ - { - label: '鍒涘缓鏃堕棿', - prop: 'createTime', - type: 'datetime', - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - search: true, - searchRange: true, - searchSpan: 8, - hide: true, - }, { label: '鍏抽敭瀛�', prop: 'keyword', @@ -140,13 +146,13 @@ }, { label: '浠诲姟鍚嶇О', - prop: 'taskName', + prop: 'processDefinitionName', width: 100, }, { label: '娴佺▼绫诲瀷', width: 100, - prop: 'processDefinitionName', + prop: 'categoryName', }, { @@ -160,32 +166,47 @@ { label: '鍒涘缓浜�', width: 100, - prop: '', + prop: 'startUserName', }, { label: '鍒涘缓鏃堕棿', width: 200, - prop: 'createTime', + prop: 'processCreateTime', + type: 'datetime', + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + search: true, + searchRange: true, + searchSpan: 8, + // hide: true, + }, + { + label: '涓婁竴姝ョ敤鎴�', + width: 200, + prop: '', + formatter: (val, value, label) => { + return `${val?.variables?.approveUserNickName || ''}`; + }, + }, + { + label: '褰撳墠鑺傜偣', + width: 200, + prop: 'taskName', + }, + { + label: '鏂囦欢', + width: 200, + prop: '', }, { label: '鍒拌揪鏃堕棿', - width: 100, - prop: '', + width: 200, + prop: 'createTime', }, { label: '鍒拌揪鎻忚堪', width: 200, prop: 'comment', - }, - { - label: '鏂囦欢', - width: 100, - prop: '', - }, - { - label: '鍒拌揪鏃堕棿', - width: 100, - prop: '', }, ], @@ -205,6 +226,14 @@ // } // }); // }, + 'formApprove.approve'(val) { + if (val === 'Y' && this.row.taskDefinitionKey === 'approveTask') { + this.optionApprove.column[1].disabled = true; + this.formApprove.assignee = ''; // 濡傛灉鏄�氳繃锛屽垯榛樿鎸囨淳缁欒嚜宸� + } else { + this.optionApprove.column[1].disabled = false; + } + }, }, computed: { ...mapGetters(['userInfo', 'permission']), @@ -217,10 +246,31 @@ // }; // }, }, + mounted() { + getAssignee().then(res=> { + this.assigneeData = res.data.data; + this.optionApprove.column[1].dicData = this.assigneeData; + }) + }, methods: { handleAction(row, index) { + this.formApprove = { + comment: '', + approve: '', // 榛樿鍚� + } this.approveBox = true; this.row = row + if(row.taskDefinitionKey=="check") { + this.formApprove.assignee = row.variables.senior; + } else if(row.taskDefinitionKey=="programmingTask") { + this.formApprove.assignee = row.variables.checker; + } else if(row.taskDefinitionKey=="teamLeaderTask") { + this.formApprove.assignee = row.variables.programmer + } else if(row.taskDefinitionKey=="confirmIsUseableTask") { + this.formApprove.assignee = row.variables.checker + } else if(row.taskDefinitionKey=="approveTask") { + + } console.log('handleAction', row, index); }, handleSubmit(form, done) { @@ -228,6 +278,7 @@ ...this.formApprove, taskId: this.row.taskId, processInstanceId: this.row.processInstanceId, + programIds: this.row.taskDefinitionKey === 'programmingTask' ? this.applist.map(v => v.id).join(',') : '', }).then(res => { this.$message.success('瀹℃壒鎴愬姛'); this.approveBox = false; @@ -241,13 +292,25 @@ }, searchChange(params, done) { + let data = {} this.query = params; this.page.currentPage = 1; console.log('searchChange', params); - params.createTimeBegin = params?.createTime?.[0] || ''; - params.createTimeEnd = params?.createTime?.[1] || ''; + params.createTimeBegin = params?.processCreateTime?.[0] || ''; + params.createTimeEnd = params?.processCreateTime?.[1] || ''; console.log(params); - this.onLoad(this.page, params); + // data = { + // createTimeBegin: dayjs(params.createTimeBegin).isValid() ? dayjs(params.createTimeBegin).format('YYYY-MM-DD') : '', + // createTimeEnd: dayjs(params.createTimeEnd).isValid() ? dayjs(params.createTimeEnd).format('YYYY-MM-DD') : '', + // keyword: params.keyword || '' + // } + data = { + createTimeBegin: params.createTimeBegin, + createTimeEnd: params.createTimeEnd, + keyword: params.keyword || '' + } + this.query = data + this.onLoad(this.page, data); done(); }, searchReset() { @@ -270,16 +333,38 @@ // category: params.category ? flowCategory(params.category) : null, mode: this.mode, }; + try { + delete query.processCreateTime; // 鍒犻櫎涓嶅繀瑕佺殑鏌ヨ鏉′欢 + } catch (error) { + console.error('鏃ユ湡鏍煎紡鍖栭敊璇�', error); + } + this.loading = true; - getList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => { + getList(page.currentPage, page.pageSize, Object.assign(query, params)).then(res => { const data = res.data.data; this.page.total = data.total; this.data = data.records; this.loading = false; }); }, + selectionChange (applist) { + this.applist = applist + }, }, }; </script> -<style></style> +<style scoped="scoped" lang="scss"> +.approve-box { + display: flex; + & > div { + border: 1px solid #ccc; + } + .left { + width: 400px; + } + .right { + flex:1; + } +} +</style> -- Gitblit v1.9.3