From cf0f95770c9b5aea1b5c445078e329e48019eb3d Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期三, 09 七月 2025 00:02:07 +0800 Subject: [PATCH] update --- src/views/flow/todolist.vue | 124 +++++++++++++++++++++++++++++++---------- 1 files changed, 94 insertions(+), 30 deletions(-) diff --git a/src/views/flow/todolist.vue b/src/views/flow/todolist.vue index 250ad09..568b4ab 100644 --- a/src/views/flow/todolist.vue +++ b/src/views/flow/todolist.vue @@ -2,7 +2,8 @@ <basic-container> <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud" @search-change="searchChange" @search-reset="searchReset" @current-change="currentChange" - @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> + @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + @selection-change="selectionTransferTask"> <template #menu-left> <el-button type="primary" plain @click="reassign">閲嶆柊鎸囨淳 </el-button> @@ -13,21 +14,13 @@ </el-button> </template> </avue-crud> - <!-- <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-dialog title="鎸囨淳" append-to-body v-model="reassignBox" width="30%"> + <avue-form ref="reassginform" :option="reassignOption" v-model="reassignForm" @submit="toPerson"></avue-form> + </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"/> + <TodolistLeft :row="row" @selection-change="selectionChange" /> </div> <div class="right"> <TodolistRightTop :row="row" /> @@ -39,7 +32,7 @@ </template> <script> -import { getList, approve,getAssignee } from '@/api/flow/todolist'; +import { getList, approve, getAssignee,reassgin } from '@/api/flow/todolist'; import { mapGetters } from 'vuex'; import dayjs from 'dayjs'; import TodolistLeft from './components/TodolistLeft.vue'; @@ -87,7 +80,7 @@ span: 24, disabled: false, dicData: [ - + ], // rules: [{ required: true, message: '璇烽�夋嫨涓嬩竴瀹℃壒鐢ㄦ埛', trigger: 'blur' }], }, @@ -121,7 +114,7 @@ // tree: true, border: true, index: true, - // selection: true, + selection: true, // viewBtn: true, menuWidth: 100, dialogClickModal: false, @@ -154,7 +147,7 @@ width: 100, prop: 'categoryName', }, - + { label: '鏈哄簥', width: 100, @@ -212,6 +205,39 @@ ], }, data: [], + transferTaskSelection: [], + reassignBox: false, + reassignOption: { + submitBtn: true, + emptyBtn: false, + column: [ + { + label: '鍙戦�佺粰', + prop: 'newAssigneeId', + type: 'select', + // dicUrl: `/blade-mdm/flow/flow-user-list?deptId=0`, + // dicFlag: true, + props: { + label: 'name', + value: 'id', + }, + span: 24, + disabled: false, + dicData: [ + + ], + rules: [{ required: true, message: '璇疯緭鍏ラ�夋嫨', trigger: 'blur' }], + }, + { + label: '澶囨敞', + span: 24, + prop: 'comment', + type: 'textarea', + rules: [{ required: true, message: '璇疯緭鍏ュ鎵规剰瑙�', trigger: 'blur' }], + }, + ], + }, + reassignForm: {} }; }, watch: { @@ -247,12 +273,50 @@ // }, }, mounted() { - getAssignee().then(res=> { + getAssignee().then(res => { this.assigneeData = res.data.data; this.optionApprove.column[1].dicData = this.assigneeData; + this.reassignOption.column[0].dicData = this.assigneeData; }) }, methods: { + selectionTransferTask(list) { + this.transferTaskSelection = list; + }, + reassign() {// 閲嶆柊鎸囨淳 + if (this.transferTaskSelection.length === 0) { + this.$message.warning('璇烽�夋嫨闇�瑕侀噸鏂版寚娲剧殑浠诲姟'); + return; + } + if (this.transferTaskSelection.length > 1) { + this.$message.warning('璇烽�夋嫨涓�鏉�'); + return; + } + this.reassignBox = true; + }, + toPerson(form, done) { + this.$confirm('璇风‘璁ゆ槸鍚︽寚娲�', '', { + confirmButtonText: this.$t('submitText'), + cancelButtonText: this.$t('cancelText'), + type: 'warning', + }).then(() => { + console.log('toPerson', form); + reassgin({ + ...form, + taskId: this.transferTaskSelection[0].taskId, + processInstanceId: this.transferTaskSelection[0].processInstanceId, + }).then(res => { + this.$message.success('鎸囨淳鎴愬姛'); + this.reassignBox = false; + this.$refs?.reassginform?.resetForm(); + this.onLoad(this.page, this.query); + + }).catch(err => { + console.error(err); + }) + }); + done(); + }, handleAction(row, index) { this.formApprove = { comment: '', @@ -260,15 +324,15 @@ } this.approveBox = true; this.row = row - if(row.taskDefinitionKey=="check") { + if (row.taskDefinitionKey == "check") { this.formApprove.assignee = row.variables.senior; - } else if(row.taskDefinitionKey=="programmingTask") { + } else if (row.taskDefinitionKey == "programmingTask") { this.formApprove.assignee = row.variables.checker; - } else if(row.taskDefinitionKey=="teamLeaderTask") { + } else if (row.taskDefinitionKey == "teamLeaderTask") { this.formApprove.assignee = row.variables.programmer - } else if(row.taskDefinitionKey=="confirmIsUseableTask") { + } else if (row.taskDefinitionKey == "confirmIsUseableTask") { this.formApprove.assignee = row.variables.checker - } else if(row.taskDefinitionKey=="approveTask") { + } else if (row.taskDefinitionKey == "approveTask") { } console.log('handleAction', row, index); @@ -287,9 +351,6 @@ }).catch(err => { console.error(err); }); - }, - reassign() {// 閲嶆柊鎸囨淳 - }, searchChange(params, done) { let data = {} @@ -338,7 +399,7 @@ } catch (error) { console.error('鏃ユ湡鏍煎紡鍖栭敊璇�', error); } - + this.loading = true; getList(page.currentPage, page.pageSize, Object.assign(query, params)).then(res => { const data = res.data.data; @@ -347,7 +408,7 @@ this.loading = false; }); }, - selectionChange (applist) { + selectionChange(applist) { this.applist = applist }, }, @@ -357,14 +418,17 @@ <style scoped="scoped" lang="scss"> .approve-box { display: flex; - & > div { + + &>div { border: 1px solid #ccc; } + .left { width: 400px; } + .right { - flex:1; + flex: 1; } } </style> -- Gitblit v1.9.3