From b33517d527aff48ff30eb78d341bbce53d0ed3bb Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 30 十一月 2024 06:42:42 +0800 Subject: [PATCH] 部门、人。回显bug --- src/components/Process/panel/taskPanel.vue | 67 +++++++++++----- src/components/flow/Dept/index.vue | 34 +++++--- src/components/flow/User/index.vue | 102 ++++++++++++++++++++++--- src/components/flow/Role/index.vue | 21 ++++- 4 files changed, 171 insertions(+), 53 deletions(-) diff --git a/src/components/Process/panel/taskPanel.vue b/src/components/Process/panel/taskPanel.vue index 59063a2..51fb63f 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" @@ -87,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> @@ -109,7 +109,8 @@ </div> </el-dialog> - <flow-dept :checkeds="selectData.candidateGroups" :show="deptVisible" @close="closeDept" @submit="submitDept"/> + <!-- 閫夋嫨閮ㄩ棬 --> + <flow-dept ref="dept" :checkeds="selectData.candidateGroups" :show="deptVisible" @close="closeDept" @submit="submitDept"/> <!--閫夋嫨琛ㄨ揪寮�--> <el-dialog @@ -119,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> @@ -137,6 +138,8 @@ import ElInputTag from '@/components/flow/ElInputTag' import FlowDept from '@/components/flow/Dept' import {StrUtil} from '@/utils/StrUtil' + + export default { name: "TaskPanel", @@ -156,6 +159,7 @@ }, data() { return { + num: 0, // 鐢ㄤ簬瑙﹀彂鐢ㄦ埛閫夋嫨鏇存柊 userVisible: false, roleVisible: false, expVisible: false, @@ -171,7 +175,7 @@ ], checkAll: false, bpmnFormData: { - userType: "", + userType: "candidateDeptGroups", assignee: "", candidateUsers: "", candidateGroups: "", @@ -184,7 +188,7 @@ selectData: { assignee: null, candidateUsers: null, - candidateGroups: null, // 瑙掕壊 + candidateGroups: [], // 瑙掕壊 candidateDeptGroups: [], // 閮ㄩ棬 exp: null, }, @@ -209,14 +213,14 @@ methods: { closeDept() { this.deptVisible = false - this.selectData.candidateGroups = [] + this.selectData.candidateGroups = null }, // 鍒濆鍖栬〃鍗� resetTaskForm() { // 鍒濆鍖栬涓虹┖鍊� this.bpmnFormData = { - userType: "", + userType: "candidateDeptGroups", assignee: "", candidateUsers: "", candidateGroups: "", @@ -256,16 +260,19 @@ // 鏇存柊浜哄憳绫诲瀷 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, candidateGroups: null, - candidateDeptGroups: null, exp: null, } // 鍐欏叆userType鑺傜偣淇℃伅鍒皒ml @@ -297,43 +304,54 @@ // 鑾峰彇浜哄憳淇℃伅 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)) { - // 鏍规嵁id绛涢�夊嚭鏄鑹茶繕鏄儴闂� const roleAndDeptIds = val.split(","); const deptIds = roleAndDeptIds.filter(item => item.includes("dept")); const roleIds = roleAndDeptIds.filter(item => !item.includes("dept")); // 璋佹湁鍊煎氨鏄皝 if (roleIds && roleIds.length > 0) { - console.log("鎴戝幓1", roleIds) 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 { - console.log("鎴戝幓2", deptIds) + 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]) } @@ -344,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"; }, @@ -387,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 @@ -395,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); @@ -418,15 +444,16 @@ // 閮ㄩ棬閫変腑鏁版嵁 submitDept(checkList, names) { this.deptVisible = false - // this.selectData.candidateDeptGroups = checkList 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, "閮ㄩ棬鍊�") } }, @@ -444,7 +471,7 @@ /*鐢ㄦ埛閫変腑璧嬪��*/ checkUserComplete() { this.userVisible = false; - this.checkType = ""; + this.checkType = "single"; }, /*鍊欓�夎鑹查�変腑璧嬪��*/ diff --git a/src/components/flow/Dept/index.vue b/src/components/flow/Dept/index.vue index 105e6a7..0f23c51 100644 --- a/src/components/flow/Dept/index.vue +++ b/src/components/flow/Dept/index.vue @@ -4,16 +4,19 @@ :title="`閫夋嫨鍊欓�夐儴闂╜" :visible.sync="show" width="65%" + + :destroy-on-close="true" :close-on-click-modal="false" :before-close="close"> <el-tree + ref="tree" :data="deptTree" show-checkbox node-key="id" :check-strictly="true" :default-expanded-keys="['dept:100']" @check-change="handleCheckChange" - :default-checked-keys="checkeds"> + > </el-tree> <span slot="footer" class="dialog-footer"> <el-button @click="close">鍙� 娑�</el-button> @@ -34,21 +37,21 @@ type: Boolean }, checkeds: { - required: true, - type: Array + required: true } }, - // watch: { - // checkeds: { - // handler(newV) { - // if (newV) { - // console.log("djjdjdjdjdjdjj") - // this.checkedAfterHandler = newV.map(item => {const arr = item.split(':'); return parseInt(arr[1])}) - // } - // }, - // deep: true - // } - // }, + watch: { + show: { + handler(newV) { + this.$nextTick(() => { + if (this.$refs.tree && this.checkeds) { + this.$refs.tree.setCheckedKeys(this.checkeds); + } + }); + }, + deep: true + } + }, data() { return { deptTree: [], @@ -61,6 +64,9 @@ }) }, methods: { + setCheckList(value) { + this.checkList = value + }, handleCheckChange(data, checked, indeterminate) { if (checked) { this.checkList.push(data) diff --git a/src/components/flow/Role/index.vue b/src/components/flow/Role/index.vue index fb0446f..e8f2dcf 100644 --- a/src/components/flow/Role/index.vue +++ b/src/components/flow/Role/index.vue @@ -121,6 +121,7 @@ this.radioSelected = newVal } else { this.selectRoleList = newVal; + console.log(this.selectRoleList, "瑙掕壊鍥炴樉") } } }, @@ -128,14 +129,24 @@ }, roleList: { handler(newVal) { + console.log(newVal, "瑙掕壊鍥炴樉11") if (StrUtil.isNotBlank(newVal) && this.selectRoleList.length > 0) { this.$nextTick(() => { this.$refs.dataTable.clearSelection(); - this.selectRoleList?.split(',').forEach(key => { - this.$refs.dataTable.toggleRowSelection(newVal.find( - item => key == item.roleId - ), true) - }); + if (this.selectRoleList instanceof Array) { + this.selectRoleList.forEach(key => { + this.$refs.dataTable.toggleRowSelection(newVal.find( + item => key == item.roleId + ), true) + }); + } else { + this.selectRoleList?.split(',').forEach(key => { + this.$refs.dataTable.toggleRowSelection(newVal.find( + item => key == item.roleId + ), true) + }); + } + }); } } diff --git a/src/components/flow/User/index.vue b/src/components/flow/User/index.vue index 31ce534..33dcb57 100644 --- a/src/components/flow/User/index.vue +++ b/src/components/flow/User/index.vue @@ -102,6 +102,10 @@ default: 'multiple', required: true }, + num: { + required: true, + type: Number + } }, data() { return { @@ -163,36 +167,106 @@ }, selectValues: { handler(newVal) { - if (StrUtil.isNotBlank(newVal)) { - if (newVal instanceof Number) { - this.radioSelected = newVal + if (newVal) { + if (this.checkType === 'multiple') { + this.selectUserList = newVal.map(item => parseInt(item)) } else { - this.selectUserList = newVal; + this.radioSelected = parseInt(newVal) } } }, immediate: true }, userList: { + deep: true, handler(newVal) { - if (StrUtil.isNotBlank(newVal) && this.selectUserList.length > 0) { + console.log(newVal, "鏁板瓧") + console.log(this.selectValues, "浼犲叆鐨勫�兼槸") + if (this.checkType !== 'multiple') { + console.log(this.userList, "浼犲叆鐨勫�兼槸") + if (this.radioSelected && this.userList.length > 0) { this.$nextTick(() => { this.$refs.dataTable.clearSelection(); - this.selectUserList?.split(',').forEach(key => { - this.$refs.dataTable.toggleRowSelection(newVal.find( - item => key == item.userId - ), true) - }); + newVal.forEach(item => { + console.log(this.radioSelected === item.userId, 123) + if (this.radioSelected === item.userId) { + this.$refs.dataTable.toggleRowSelection(item) + } + }) }); + } + } else { + this.$nextTick(() => { + this.$refs.dataTable.clearSelection(); + this.selectUserList.forEach(key => { + newVal.forEach(item => { + if (key === item.userId) { + this.$refs.dataTable.toggleRowSelection(item) + } + }) + }); + }); } - } - } + + // if (StrUtil.isNotBlank(newVal)) { + // + // if (typeof newVal == "number" || typeof newVal == "string") { + // console.log("杩涜繖") + // + // } else { + // console.log("涓嶅簲璇ヨ繘鐫�") + // + // console.log("鐢ㄦ埛鍥炴樉", this.selectUserList) + // } + // } + }, + // immediate: true + }, + // userList: { + // // handler(newVal) { + // // console.log(this.radioSelected, "鍗曢�夊��") + // // if (this.checkType !== 'multiple') { + // // + // // } else { + // // console.log("this.selectUserList",this.selectUserList ,typeof this.selectUserList) + // // + // // } + // // } + // } }, - created() { + mounted() { this.getList(); this.getDeptTree(); }, methods: { + setChecked() { + if (this.checkType !== 'multiple') { + this.radioSelected = this.selectValues + this.$nextTick(() => { + this.$refs.dataTable.clearSelection(); + this.userList.forEach(item => { + console.log("鍗曢�夊�硷細", this.radioSelected) + console.log(parseInt(this.radioSelected) === item.userId) + if (parseInt(this.radioSelected) === item.userId) { + this.$refs.dataTable.toggleRowSelection(item) + } + }) + }); + } else { + this.selectUserList = this.selectValues; + this.$nextTick(() => { + this.$refs.dataTable.clearSelection(); + this.selectUserList.forEach(key => { + this.userList.forEach(item => { + if (parseInt(key) === item.userId) { + this.$refs.dataTable.toggleRowSelection(item) + } + }) + }); + }); + } + + }, /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ getList() { this.loading = true; @@ -229,7 +303,7 @@ }, // 鍗曢�夋閫変腑鏁版嵁 handleSingleUserSelect(selection) { - this.radioSelected = selection.userId;//鐐瑰嚮褰撳墠琛屾椂,radio鍚屾牱鏈夐�変腑鏁堟灉 + // this.radioSelected = selection.userId;//鐐瑰嚮褰撳墠琛屾椂,radio鍚屾牱鏈夐�変腑鏁堟灉 this.$emit('handleUserSelect', selection); }, /** 鎼滅储鎸夐挳鎿嶄綔 */ -- Gitblit v1.8.0