From b0087d1a50b45c64669f15bd0996f858cb46b086 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期一, 01 四月 2024 20:59:52 +0800 Subject: [PATCH] #I96DTG update 类型下拉框和java类名下拉框没有联动 --- src/views/workflow/task/allTaskWaiting.vue | 139 ++++++++++++++++++++++++++++++---------------- 1 files changed, 90 insertions(+), 49 deletions(-) diff --git a/src/views/workflow/task/allTaskWaiting.vue b/src/views/workflow/task/allTaskWaiting.vue index 5a5b5d4..e1c72b7 100644 --- a/src/views/workflow/task/allTaskWaiting.vue +++ b/src/views/workflow/task/allTaskWaiting.vue @@ -33,15 +33,15 @@ <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button type="primary" plain icon="Edit" @click="handleUpdate">淇敼鍔炵悊浜�</el-button> + <el-button type="primary" plain icon="Edit" :disabled="multiple" @click="handleUpdate">淇敼鍔炵悊浜�</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> </el-row> </template> - <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange"> + <el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column fixed align="center" type="index" label="搴忓彿" width="50"></el-table-column> + <el-table-column fixed align="center" type="index" label="搴忓彿" width="60"></el-table-column> <el-table-column fixed align="center" prop="processDefinitionName" label="娴佺▼瀹氫箟鍚嶇О"></el-table-column> <el-table-column fixed align="center" prop="processDefinitionKey" label="娴佺▼瀹氫箟KEY"></el-table-column> <el-table-column fixed align="center" prop="name" label="浠诲姟鍚嶇О"></el-table-column> @@ -54,34 +54,40 @@ </template> <template v-else> <el-tag type="success"> - {{ scope.row.assigneeName }} + {{ scope.row.assigneeName || '鏃�'}} </el-tag> </template> </template> <template v-else-if="tab === 'finish'" #default="scope"> <el-tag type="success"> - {{ scope.row.assigneeName }} + {{ scope.row.assigneeName || '鏃�'}} </el-tag> </template> </el-table-column> - <el-table-column align="center" prop="businessStatusName" label="娴佺▼鐘舵��" min-width="70"> + <el-table-column align="center" label="娴佺▼鐘舵��" min-width="70"> <template #default="scope"> - <el-tag v-if="tab === 'waiting'" type="success">{{ scope.row.businessStatusName }}</el-tag> + <dict-tag v-if="tab === 'waiting'" :options="wf_business_status" :value="scope.row.businessStatus"></dict-tag> <el-tag v-else type="success">宸插畬鎴�</el-tag> </template> </el-table-column> - <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" width="160"></el-table-column> - <el-table-column label="鎿嶄綔" align="center" width="160" class-name="small-padding fixed-width"> + <el-table-column align="center" v-if="tab === 'waiting'" prop="createTime" label="鍒涘缓鏃堕棿" width="160"></el-table-column> + <el-table-column align="center" v-if="tab === 'finish'" prop="startTime" label="鍒涘缓鏃堕棿" width="160"></el-table-column> + <el-table-column label="鎿嶄綔" align="center" :width="tab === 'finish' ? '80' : '151'"> <template #default="scope"> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button link type="primary" size="small" icon="Document" @click="handleApprovalRecord(scope.row)">瀹℃壒璁板綍</el-button> + <el-button link type="primary" size="small" icon="View" @click="handleView(scope.row)">鏌ョ湅</el-button> </el-col> - <el-col v-if="scope.row.multiInstance" :span="1.5"> - <el-button link type="primary" size="small" icon="CirclePlus" @click="addMultiInstanceUser(scope.row)">鍔犵</el-button> + <el-col v-if="tab === 'waiting'" :span="1.5"> + <el-button link type="primary" size="small" icon="Document" @click="handleInstanceVariable(scope.row)">娴佺▼鍙橀噺</el-button> </el-col> - <el-col v-if="scope.row.multiInstance" :span="1.5"> + </el-row> + <el-row :gutter="10" class="mb8" v-if="scope.row.multiInstance" > + <el-col :span="1.5"> <el-button link type="primary" size="small" icon="Remove" @click="deleteMultiInstanceUser(scope.row)">鍑忕</el-button> + </el-col> + <el-col :span="1.5"> + <el-button link type="primary" size="small" icon="CirclePlus" @click="addMultiInstanceUser(scope.row)">鍔犵</el-button> </el-col> </el-row> </template> @@ -95,35 +101,45 @@ @pagination="handleQuery" /> </el-card> - <!-- 瀹℃壒璁板綍 --> - <approvalRecord ref="approvalRecordRef" /> - <!-- 鎻愪氦缁勪欢 --> - <submitVerify ref="submitVerifyRef" :task-id="taskId" @submit-callback="handleQuery" /> <!-- 鍔犵缁勪欢 --> <multiInstanceUser ref="multiInstanceUserRef" :title="title" @submit-callback="handleQuery" /> <!-- 閫変汉缁勪欢 --> - <selectSysUser ref="selectSysUserRef" :multiple="true" @submit-callback="submitCallback" /> + <UserSelect ref="userSelectRef" :multiple="false" @confirm-call-back="submitCallback"></UserSelect> + <!-- 娴佺▼鍙橀噺寮�濮� --> + <el-dialog v-model="variableVisible" draggable title="娴佺▼鍙橀噺" width="60%" :close-on-click-modal="false"> + <el-card class="box-card" v-loading="variableLoading"> + <div slot="header" class="clearfix"> + <span>娴佺▼瀹氫箟鍚嶇О锛�<el-tag>{{processDefinitionName}}</el-tag></span> + </div> + <div v-for="(v,index) in variableList" :key="index" > + <el-form :label-position="'right'" v-if="v.key!=='_FLOWABLE_SKIP_EXPRESSION_ENABLED'" label-width="150px"> + <el-form-item :label="v.key+'锛�'"> + {{v.value}} + </el-form-item> + </el-form> + </div> + </el-card> + </el-dialog> + <!-- 娴佺▼鍙橀噺缁撴潫 --> </div> </template> <script lang="ts" setup> -import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee } from '@/api/workflow/task'; -import ApprovalRecord from '@/components/Process/approvalRecord.vue'; -import SubmitVerify from '@/components/Process/submitVerify.vue'; +import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee, getInstanceVariable } from '@/api/workflow/task'; import MultiInstanceUser from '@/components/Process/multiInstanceUser.vue'; -import SelectSysUser from '@/components/Process/selectSysUser.vue'; -import { TaskQuery, TaskVO } from '@/api/workflow/task/types'; -//鎻愪氦缁勪欢 -const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>(); +import UserSelect from '@/components/UserSelect'; +import { TaskQuery, TaskVO, VariableVo } from '@/api/workflow/task/types'; +import workflowCommon from '@/api/workflow/workflowCommon'; +import { RouterJumpVo } from '@/api/workflow/workflowCommon/types'; //瀹℃壒璁板綍缁勪欢 -const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>(); //鍔犵缁勪欢 const multiInstanceUserRef = ref<InstanceType<typeof MultiInstanceUser>>(); -//閫変汉缁勪欢 -const selectSysUserRef = ref<InstanceType<typeof SelectSysUser>>(); +//閫変汉缁勪欢 +const userSelectRef = ref<InstanceType<typeof UserSelect>>(); const queryFormRef = ref<ElFormInstance>(); const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { wf_business_status } = toRefs<any>(proxy?.useDict('wf_business_status')); // 閬僵灞� const loading = ref(true); // 閫変腑鏁扮粍 @@ -138,9 +154,17 @@ const total = ref(0); // 妯″瀷瀹氫箟琛ㄦ牸鏁版嵁 const taskList = ref([]); -// 浠诲姟id -const taskId = ref(''); const title = ref(''); +// 娴佺▼鍙橀噺鏄惁鏄剧ず +const variableVisible = ref(false); +const variableLoading = ref(true); +// 娴佺▼鍙橀噺 +const variableList = ref<VariableVo>({ + key: '', + value: '', +}) +//娴佺▼瀹氫箟鍚嶇О +const processDefinitionName = ref(undefined); // 鏌ヨ鍙傛暟 const queryParams = ref<TaskQuery>({ pageNum: 1, @@ -150,15 +174,7 @@ processDefinitionKey: undefined }); const tab = ref('waiting'); -onMounted(() => { - getWaitingList(); -}); -//瀹℃壒璁板綍 -const handleApprovalRecord = (row: TaskVO) => { - if (approvalRecordRef.value) { - approvalRecordRef.value.init(row.processInstanceId); - } -}; + //鍔犵 const addMultiInstanceUser = (row: TaskVO) => { if (multiInstanceUserRef.value) { @@ -195,6 +211,7 @@ multiple.value = !selection.length; }; const changeTab = async (data: string) => { + taskList.value = [] queryParams.value.pageNum = 1; if ('waiting' === data) { getWaitingList(); @@ -219,19 +236,43 @@ loading.value = false; }); }; +//鎵撳紑淇敼閫変汉 const handleUpdate = () => { - if (selectSysUserRef.value) { - selectSysUserRef.value.getUserList([]); - } + userSelectRef.value.open(); }; //淇敼鍔炵悊浜� -const submitCallback = (data) => { - if (data && data.value.length > 0) { - updateAssignee(ids.value, data.value[0].userId).then((resp) => { - selectSysUserRef.value.close(); - proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); - handleQuery(); - }); +const submitCallback = async (data) => { + if(data && data.length > 0){ + await proxy?.$modal.confirm('鏄惁纭鎻愪氦锛�'); + loading.value = true; + await updateAssignee(ids.value, data[0].userId) + handleQuery() + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); + }else{ + proxy?.$modal.msgWarning('璇烽�夋嫨鐢ㄦ埛锛�'); } }; +//鏌ヨ娴佺▼鍙橀噺 +const handleInstanceVariable = async (row: TaskVO) => { + variableLoading.value = true + variableVisible.value = true + processDefinitionName.value = row.processDefinitionName + let data = await getInstanceVariable(row.id) + variableList.value = data.data + variableLoading.value = false +}; +/** 鏌ョ湅鎸夐挳鎿嶄綔 */ +const handleView = (row) => { + const routerJumpVo = reactive<RouterJumpVo>({ + wfDefinitionConfigVo: row.wfDefinitionConfigVo, + wfNodeConfigVo: row.wfNodeConfigVo, + businessKey: row.businessKey, + taskId: row.id, + type: 'view' + }); + workflowCommon.routerJump(routerJumpVo,proxy) +}; +onMounted(() => { + getWaitingList(); +}); </script> -- Gitblit v1.9.3