From a3dbb8fe40e06f9abd9718f14aaa7311bddbc150 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 13 二月 2025 21:46:05 +0800 Subject: [PATCH] 除了项目中心,其它项目页面都不显示审核状态 --- src/components/Process/panel/taskPanel.vue | 138 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 114 insertions(+), 24 deletions(-) diff --git a/src/components/Process/panel/taskPanel.vue b/src/components/Process/panel/taskPanel.vue index 9bfe14a..36d58f3 100644 --- a/src/components/Process/panel/taskPanel.vue +++ b/src/components/Process/panel/taskPanel.vue @@ -5,7 +5,7 @@ <el-switch v-model="bpmnFormData.async" active-text="鏄�" inactive-text="鍚�" @change="updateElementTask('async')"/> </el-form-item> <el-form-item label="鐢ㄦ埛绫诲瀷"> - <el-select v-model="bpmnFormData.userType" placeholder="閫夋嫨浜哄憳" @change="updateUserType"> + <el-select v-model="bpmnFormData.userType" placeholder="鐢ㄦ埛绫诲瀷" @change="updateUserType"> <el-option v-for="item in userTypeOption" :key="item.value" @@ -43,12 +43,26 @@ </el-button-group> </el-form-item> - <el-form-item label="鍊欓�夎鑹�" v-else> + <el-form-item label="鍊欓�夎鑹�" v-else-if="bpmnFormData.userType === 'candidateGroups'"> <el-input-tag v-model="bpmnFormData.candidateGroups" :value="bpmnFormData.candidateGroups"/> <el-button-group class="ml-4" style="margin-top: 4px"> <!--鍊欓�夎鑹�--> <el-tooltip class="box-item" effect="dark" content="鍊欓�夎鑹�" placement="bottom"> <el-button size="mini" type="primary" icon="el-icon-user" @click="multipleRoleCheck"/> + </el-tooltip> + <!--閫夋嫨琛ㄨ揪寮�--> + <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" placement="bottom"> + <el-button size="mini" type="warning" icon="el-icon-postcard" @click="singleExpCheck"/> + </el-tooltip> + </el-button-group> + </el-form-item> + + <el-form-item label="鍊欓�夐儴闂�" v-else> + <el-input-tag v-model="bpmnFormData.candidateGroups" :value="bpmnFormData.candidateGroups"/> + <el-button-group class="ml-4" style="margin-top: 4px"> + <!--鍊欓�夐儴闂�--> + <el-tooltip class="box-item" effect="dark" content="鍊欓�夐儴闂�" placement="bottom"> + <el-button size="mini" type="primary" icon="el-icon-user" @click="deptVisible = true"/> </el-tooltip> <!--閫夋嫨琛ㄨ揪寮�--> <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" placement="bottom"> @@ -73,7 +87,7 @@ :close-on-press-escape="false" :show-close="false" > - <flow-user v-if="userVisible" :checkType="checkType" :selectValues="selectData.assignee || selectData.candidateUsers" @handleUserSelect="userSelect"></flow-user> + <flow-user v-show="userVisible" ref="user" :checkType="checkType" :num="num" :selectValues="selectData.assignee || selectData.candidateUsers" @handleUserSelect="userSelect"></flow-user> <div slot="footer" class="dialog-footer"> <el-button size="small" @click="userVisible = false">鍙� 娑�</el-button> <el-button size="small" type="primary" @click="checkUserComplete">纭� 瀹�</el-button> @@ -95,6 +109,9 @@ </div> </el-dialog> + <!-- 閫夋嫨閮ㄩ棬 --> + <flow-dept ref="dept" :checkeds="selectData.candidateGroups" :show="deptVisible" @close="closeDept" @submit="submitDept"/> + <!--閫夋嫨琛ㄨ揪寮�--> <el-dialog title="閫夋嫨琛ㄨ揪寮�" @@ -103,7 +120,7 @@ :close-on-press-escape="false" :show-close="false" > - <flow-exp v-if="expVisible" :selectValues="selectData.exp" @handleSingleExpSelect="expSelect"></flow-exp> + <flow-exp :selectValues="selectData.exp" @handleSingleExpSelect="expSelect"></flow-exp> <div slot="footer" class="dialog-footer"> <el-button size="small" @click="expVisible = false">鍙� 娑�</el-button> <el-button size="small" type="primary" @click="checkExpComplete">纭� 瀹�</el-button> @@ -119,7 +136,10 @@ import FlowRole from '@/components/flow/Role' import FlowExp from '@/components/flow/Expression' import ElInputTag from '@/components/flow/ElInputTag' +import FlowDept from '@/components/flow/Dept' import {StrUtil} from '@/utils/StrUtil' + + export default { name: "TaskPanel", @@ -127,7 +147,8 @@ FlowUser, FlowRole, FlowExp, - ElInputTag + ElInputTag, + FlowDept }, /** 缁勪欢浼犲�� */ props : { @@ -138,20 +159,23 @@ }, data() { return { + num: 0, // 鐢ㄤ簬瑙﹀彂鐢ㄦ埛閫夋嫨鏇存柊 userVisible: false, roleVisible: false, expVisible: false, + deptVisible: false, isIndeterminate: true, checkType: 'single', // 閫夌被 userType: '', userTypeOption: [ {label: '鎸囧畾浜哄憳', value: 'assignee'}, {label: '鍊欓�変汉鍛�', value: 'candidateUsers'}, - {label: '鍊欓�夎鑹�', value: 'candidateGroups'} + {label: '鍊欓�夎鑹�', value: 'candidateGroups'}, + {label: '鍊欓�夐儴闂�', value: 'candidateDeptGroups'}, ], checkAll: false, bpmnFormData: { - userType: "", + userType: "candidateDeptGroups", assignee: "", candidateUsers: "", candidateGroups: "", @@ -164,7 +188,8 @@ selectData: { assignee: null, candidateUsers: null, - candidateGroups: null, + candidateGroups: [], // 瑙掕壊 + candidateDeptGroups: [], // 閮ㄩ棬 exp: null, }, otherExtensionList:[], @@ -186,11 +211,16 @@ }, methods: { + closeDept() { + this.deptVisible = false + this.selectData.candidateGroups = null + }, + // 鍒濆鍖栬〃鍗� resetTaskForm() { // 鍒濆鍖栬涓虹┖鍊� this.bpmnFormData = { - userType: "", + userType: "candidateDeptGroups", assignee: "", candidateUsers: "", candidateGroups: "", @@ -210,7 +240,7 @@ const value = this.modelerStore.element?.businessObject[key] || this.bpmnFormData[key]; this.$set(this.bpmnFormData, key, value); } - // 浜哄憳淇℃伅鍥炴樉 + // 浜哄憳銆佽鑹层�侀儴闂ㄤ俊鎭洖鏄� this.checkValuesEcho(this.bpmnFormData); }, @@ -230,11 +260,15 @@ // 鏇存柊浜哄憳绫诲瀷 updateUserType(val) { + console.log("worinim", val) // 鍒犻櫎xml涓凡閫夋嫨鏁版嵁绫诲瀷鑺傜偣 this.deleteFlowAttar(); - delete this.modelerStore.element.businessObject[`userType`] // 娓呴櫎宸查�変汉鍛樻暟鎹� - this.bpmnFormData[val] = null; + if (val === "candidateDeptGroups") { + this.bpmnFormData["candidateGroups"] = null; + } else { + this.bpmnFormData[val] = null; + } this.selectData = { assignee: null, candidateUsers: null, @@ -250,8 +284,9 @@ if (StrUtil.isNotBlank(formData.expId)) { this.getExpList(formData.expId, formData.userType); } else { - if ("candidateGroups" === formData.userType) { - this.getRoleList(formData[formData.userType], formData.userType); + console.log("鎴戝幓", formData.userType) + if ("candidateGroups" === formData.userType || "candidateDeptGroups" === formData.userType) { + this.getRoleList(formData["candidateGroups"], "candidateGroups"); } else { this.getUserList(formData[formData.userType], formData.userType); } @@ -269,26 +304,57 @@ // 鑾峰彇浜哄憳淇℃伅 getUserList(val, key) { if (StrUtil.isNotBlank(val)) { - const newArr = this.modelerStore.userList?.filter(i => val.split(',').includes(i.userId.toString())) - this.bpmnFormData[key] = newArr.map(item => item.nickName).join(','); + + if ('assignee' === key) { - this.selectData[key] = newArr.find(item => item.userId.toString() === val).userId; + console.log("杩欓噷寮�濮嬫姤閿欙紝", this.modelerStore.userList) + const uList = this.modelerStore.userList.filter(item => item.userId == val); + this.bpmnFormData[key] = uList && uList.length > 0 ? uList[0].nickName : "浜哄憳涓嶅瓨鍦�"; + this.selectData[key] = val; } else { + const newArr = this.modelerStore.userList?.filter(i => val.split(',').includes(i.userId.toString())) + console.log("鎸囧畾浜哄憳", newArr) + this.bpmnFormData[key] = newArr.map(item => item.nickName).join(','); this.selectData[key] = newArr.map(item => item.userId); } + // if (this.$refs.user) { + // this.$refs.user.setChecked(this.selectData[key]) + // } + } }, // 鑾峰彇瑙掕壊淇℃伅 getRoleList(val, key) { if (StrUtil.isNotBlank(val)) { - const newArr = this.modelerStore.roleList?.filter(i => val.split(',').includes(i.roleId.toString())) - this.bpmnFormData[key] = newArr.map(item => item.roleName).join(','); - if ('assignee' === key) { - this.selectData[key] = newArr.find(item => item.roleId.toString() === val).roleId; + // 鏍规嵁id绛涢�夊嚭鏄鑹茶繕鏄儴闂� + const roleAndDeptIds = val.split(","); + const deptIds = roleAndDeptIds.filter(item => item.includes("dept") || item === '${data_launch}'); + const roleIds = roleAndDeptIds.filter(item => !item.includes("dept")); + // 璋佹湁鍊煎氨鏄皝 + if (roleIds && roleIds.length > 0) { + const newArr = this.modelerStore.roleList?.filter(i => roleIds.includes(i.roleId.toString())) + this.bpmnFormData[key] = newArr.map(item => item.roleName).join(','); + if ('assignee' === key) { + console.log("涓嶄細鍚э紵") + this.selectData[key] = newArr.find(item => item.roleId.toString() === val).roleId; + } else { + this.selectData[key] = newArr.map(item => item.roleId); + } } else { - this.selectData[key] = newArr.map(item => item.roleId); + console.log(deptIds, "閮ㄩ棬IDs") + const newArr = this.modelerStore.deptList?.filter(i => deptIds.includes(i.id)) + this.bpmnFormData[key] = newArr.map(item => item.label).join(','); + if ('assignee' === key) { + console.log("涓嶄細鍚э紵锛燂紵") + this.selectData[key] = newArr.find(item => item.id === val).id; + } else { + this.selectData[key] = newArr.map(item => item.id); + } + // this.$refs.dept.setCheckList(this.selectData[key]) } + + } }, @@ -296,12 +362,19 @@ /*鍗曢�変汉鍛�*/ singleUserCheck() { + this.num+=1 this.userVisible = true; this.checkType = "single"; + // this.$nextTick(() => { + // console.log(typeof this.selectData.assignee, "绫诲瀷") + // this.$refs.user.setChecked(this.selectData.assignee); + // }); + }, /*澶氶�変汉鍛�*/ multipleUserCheck() { + this.num = this.num + 1 this.userVisible = true; this.checkType = "multiple"; }, @@ -339,7 +412,7 @@ if (selection) { this.deleteFlowAttar(); this.updateCustomElement('dataType', 'fixed'); - if (selection instanceof Array) { + if (this.checkType === 'multiple') { const userIds = selection.map(item => item.userId); const nickName = selection.map(item => item.nickName); // userType = candidateUsers @@ -347,6 +420,7 @@ this.updateCustomElement(this.bpmnFormData.userType, userIds.join(',')); this.handleSelectData(this.bpmnFormData.userType, userIds); } else { + console.log(selection, "杩斿洖鍊�") // userType = assignee this.bpmnFormData[this.bpmnFormData.userType] = selection.nickName; this.updateCustomElement(this.bpmnFormData.userType, selection.userId); @@ -367,6 +441,22 @@ } }, + // 閮ㄩ棬閫変腑鏁版嵁 + submitDept(checkList, names) { + this.deptVisible = false + if (checkList && names) { + this.deleteFlowAttar(); + this.bpmnFormData["candidateGroups"] = names; + this.updateCustomElement('dataType', 'fixed'); + // userType = candidateGroups + // 杩欓噷鍙兘鍐欐涓猴細candidateGroups锛屽洜涓篺lowable鐢ㄦ埛缁勭殑鍏抽敭瀛楀氨鏄畠 + // this.updateCustomElement("candidateGroups", null); // 鍏堟竻绌哄啀璧嬪�硷紝鍥犱负鏄竴娆℃�ф彁浜ょ殑閮ㄩ棬鏁版嵁锛屾墍浠ラ渶瑕佸幓閲嶏紝鐩存帴璧嬪�间负null + this.updateCustomElement("candidateGroups", checkList); + this.handleSelectData("candidateGroups", checkList); + console.log(checkList, "閮ㄩ棬鍊�") + } + }, + // 澶勭悊浜哄憳鍥炴樉 handleSelectData(key, value) { for (let oldKey in this.selectData) { @@ -381,7 +471,7 @@ /*鐢ㄦ埛閫変腑璧嬪��*/ checkUserComplete() { this.userVisible = false; - this.checkType = ""; + this.checkType = "single"; }, /*鍊欓�夎鑹查�変腑璧嬪��*/ -- Gitblit v1.8.0