From 8779375b26e23113ebfa5940e4e5dbe696980f53 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 07 一月 2025 18:46:29 +0800 Subject: [PATCH] 流程设计-任务配置-人员类型组件重构:todo角色组件分页回显问题 --- src/components/Process/panel/PropertiesPanel.vue | 1 src/views/index.vue | 1 src/views/projectManage/plan/planInfo.vue | 1 src/components/Process/panel/TaskConfPanel.vue | 547 ++++++++++++++++++++++++++++++++++++++++++ src/components/flow/Role/MyRole.vue | 81 +---- src/components/flow/Dept/MyDept.vue | 2 src/components/flow/User/SingleUser.vue | 18 src/views/function/api/purchase.js | 3 src/views/todo/processTask.vue | 3 src/views/flowable/task/myProcess/send/index.vue | 9 src/components/flow/Expression/index.vue | 8 src/components/flow/User/index.vue | 2 src/views/todo/api/myTodoList.js | 4 src/views/function/leaveApply.vue | 5 src/components/Process/designer.vue | 9 src/views/flowable/definition/model.vue | 1 src/views/projectEngineering/projectLibrary/projectDetails.vue | 1 src/views/projectProcess/detail/index.vue | 3 src/components/Process/panel/formPanel.vue | 5 src/views/projectProcess/index.vue | 1 src/components/flow/User/MultUser.vue | 63 +--- src/views/todo/api/allTodoList.js | 4 22 files changed, 619 insertions(+), 153 deletions(-) diff --git a/src/components/Process/designer.vue b/src/components/Process/designer.vue index 5fb87e9..5687849 100644 --- a/src/components/Process/designer.vue +++ b/src/components/Process/designer.vue @@ -66,7 +66,7 @@ import TaskListener from './panel/taskListener' import MultiInstance from './panel/multiInstance' import CommonPanel from './panel/commonPanel' -import UserTaskPanel from './panel/taskPanel' +import UserTaskPanel from './panel/TaskConfPanel' import ConditionPanel from './panel/conditionPanel' import FormPanel from './panel/formPanel' import OtherPanel from './panel/otherPanel' @@ -139,11 +139,9 @@ }); // 鐩戝惉閫夋嫨浜嬩欢锛屼慨鏀瑰綋鍓嶆縺娲荤殑鍏冪礌浠ュ強琛ㄥ崟 this.modelerStore.modeler.on("selection.changed", ({newSelection}) => { - console.log("鏁版嵁鏀瑰彉1", newSelection) this.initFormOnChanged(newSelection[0] || null); }); this.modelerStore.modeler.on("element.changed", ({element}) => { - console.log("鏁版嵁鏀瑰彉2") // 淇濊瘉 淇敼 "榛樿娴佽浆璺緞" 绫讳技闇�瑕佷慨鏀瑰涓厓绱犵殑浜嬩欢鍙戠敓鐨勬椂鍊欙紝鏇存柊琛ㄥ崟鐨勫厓绱犱笌鍘熼�変腑鍏冪礌涓嶄竴鑷淬�� if (element && element.id === this.elementId) { this.initFormOnChanged(element); @@ -153,24 +151,19 @@ // 鍒濆鍖栨暟鎹� initFormOnChanged(element) { - console.log(element, "鑺傜偣鏁版嵁") let activatedElement = element; if (!activatedElement) { - console.log(1) activatedElement = this.modelerStore.elRegistry.find(el => el.type === "bpmn:Process") ?? this.modelerStore.elRegistry.find(el => el.type === "bpmn:Collaboration"); } if (!activatedElement) return; - console.log(2, activatedElement) this.modelerStore.element = activatedElement; this.elementId = activatedElement.id; // 纭繚elementId鍊兼病鍙樹篃瑕佹洿鏂癴orm缁勪欢閫変腑鐨勫�� if (this.formVisible) { - console.log(this.modelerStore.element.businessObject.formKey, "鏂扮殑鍊�") this.$refs.formSelect.init() } - console.log(3, this.elementId) this.elementType = activatedElement.type.split(":")[1] || ""; this.conditionVisible = !!( this.elementType === "SequenceFlow" && diff --git a/src/components/Process/panel/PropertiesPanel.vue b/src/components/Process/panel/PropertiesPanel.vue index 959fc1a..6042067 100644 --- a/src/components/Process/panel/PropertiesPanel.vue +++ b/src/components/Process/panel/PropertiesPanel.vue @@ -107,7 +107,6 @@ } }) - console.log(this.canConfigPropertyList, "杩欐槸浠�涔堥") this.elementPropertyList = JSON.parse(JSON.stringify(this.bpmnElementPropertyList ?? [])); }, openAttributesForm(attr, index) { diff --git a/src/components/Process/panel/TaskConfPanel.vue b/src/components/Process/panel/TaskConfPanel.vue new file mode 100644 index 0000000..88718ff --- /dev/null +++ b/src/components/Process/panel/TaskConfPanel.vue @@ -0,0 +1,547 @@ +<template> + <div> + <el-form label-width="80px" size="small"> + <el-form-item label="寮傛"> + <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-option + v-for="item in userTypeOption" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + + <el-form-item label="鎸囧畾浜哄憳" v-if="bpmnFormData.userType === 'assignee'"> + <single-user ref="singleUser" :select-user="delegationUserSelect && delegationUserSelect.length > 0 ? delegationUserSelect[0].userId : null" :show="singleUserShow" @close="closeSingleUser" @submit="getSingleUserSelect" :key="singleUserKey"/> + <div v-if="expSelect"> + <el-tag class="select-tag" :key="expSelect.id + 'kfc'" type="info" closable @close="removeExp">{{expSelect.expression}}</el-tag> + </div> + <div v-else> + <el-tag class="select-tag" v-for="user in delegationUserSelect" :key="user.userId + 'abc'" type="info" closable @close="removeSingleUser(user)">{{user.nickName}}</el-tag> + </div> + <el-button-group class="ml-4" style="margin-top: 4px"> + <!--鎸囧畾浜哄憳--> + <el-tooltip class="box-item" effect="dark" content="鎸囧畾浜哄憳" :disabled="typeButDisable" placement="bottom"> + <el-button size="mini" type="primary" icon="el-icon-user" :disabled="typeButDisable" @click="editSingleUser"/> + </el-tooltip> + <!--閫夋嫨琛ㄨ揪寮�--> + <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" :disabled="expButDisable" placement="bottom"> + <el-button size="mini" type="warning" icon="el-icon-postcard" :disabled="expButDisable" @click="editExp"/> + </el-tooltip> + </el-button-group> + </el-form-item> + + <el-form-item label="鍊欓�変汉鍛�" v-else-if="bpmnFormData.userType === 'candidateUsers'"> + <mult-user ref="multUser" :select-user="delegationUserSelect" :show="multUserShow" @close="closeMultUser" @submit="getMultUserSelect" :key="multUserKey"/> + <div v-if="expSelect"> + <el-tag class="select-tag" :key="expSelect.id + 'kfc'" type="info" closable @close="removeExp">{{expSelect.expression}}</el-tag> + </div> + <div v-else> + <el-tag class="select-tag" v-for="user in delegationUserSelect" :key="user.userId + 'qwe'" type="info" closable @close="removeMultUser(user)">{{user.nickName}}</el-tag> + </div> + <el-button-group class="ml-4" style="margin-top: 4px"> + <!--鍊欓�変汉鍛�--> + <el-tooltip class="box-item" effect="dark" content="鍊欓�変汉鍛�" :disabled="typeButDisable" placement="bottom"> + <el-button size="mini" type="primary" icon="el-icon-user" :disabled="typeButDisable" @click="editMultUser"/> + </el-tooltip> + <!--閫夋嫨琛ㄨ揪寮�--> + <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" :disabled="expButDisable" placement="bottom"> + <el-button size="mini" type="warning" icon="el-icon-postcard" :disabled="expButDisable" @click="editExp"/> + </el-tooltip> + </el-button-group> + </el-form-item> + + <el-form-item label="鍊欓�夎鑹�" v-else-if="bpmnFormData.userType === 'candidateGroups'"> + <my-role ref="role" :select-values="delegationRoleSelect" :show="roleShow" @close="closeRole" @submit="getRoleSelect" :key="roleKey"/> + <div v-if="expSelect"> + <el-tag class="select-tag" :key="expSelect.id + 'kfc'" type="info" closable @close="removeExp">{{expSelect.expression}}</el-tag> + </div> + <div v-else> + <el-tag class="select-tag" v-for="role in delegationRoleSelect" :key="role.roleId + 'rty'" type="info" closable @close="removeRole(role)">{{role.roleName}}</el-tag> + </div> + <el-button-group class="ml-4" style="margin-top: 4px"> + <!--鍊欓�夎鑹�--> + <el-tooltip class="box-item" effect="dark" content="鍊欓�夎鑹�" :disabled="typeButDisable" placement="bottom"> + <el-button size="mini" type="primary" icon="el-icon-user" :disabled="typeButDisable" @click="editRole"/> + </el-tooltip> + <!--閫夋嫨琛ㄨ揪寮�--> + <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" :disabled="expButDisable" placement="bottom"> + <el-button size="mini" type="warning" icon="el-icon-postcard" :disabled="expButDisable" @click="editExp"/> + </el-tooltip> + </el-button-group> + </el-form-item> + + <el-form-item label="鍊欓�夐儴闂�" v-else> + <MyDept ref="dept" :checkeds="delegationDeptSelect" :show="deptShow" @close="closeDept" @submit="getDeptSelect" :key="deptKey"/> + <div v-if="expSelect"> + <el-tag class="select-tag" :key="expSelect.id + 'kfc'" type="info" closable @close="removeExp">{{expSelect.expression}}</el-tag> + </div> + <div v-else> + <el-tag class="select-tag" v-for="dept in delegationDeptSelect" :key="dept.id + 'zxc'" type="info" closable @close="removeDept(dept)">{{dept.label}}</el-tag> + </div> + <el-button-group class="ml-4" style="margin-top: 4px"> + <!--鍊欓�夐儴闂�--> + <el-tooltip class="box-item" effect="dark" content="鍊欓�夐儴闂�" :disabled="typeButDisable" placement="bottom"> + <el-button size="mini" type="primary" icon="el-icon-user" :disabled="typeButDisable" @click="editDept"/> + </el-tooltip> + <!--閫夋嫨琛ㄨ揪寮�--> + <el-tooltip class="box-item" effect="dark" content="閫夋嫨琛ㄨ揪寮�" :disabled="expButDisable" placement="bottom"> + <el-button size="mini" type="warning" icon="el-icon-postcard" :disabled="expButDisable" @click="editExp"/> + </el-tooltip> + </el-button-group> + </el-form-item> + + <el-form-item label="浼樺厛绾�"> + <el-input v-model="bpmnFormData.priority" @change="updateElementTask('priority')"/> + </el-form-item> + <el-form-item label="鍒版湡鏃堕棿"> + <el-input v-model="bpmnFormData.dueDate" @change="updateElementTask('dueDate')"/> + </el-form-item> + </el-form> + + <!--閫夋嫨琛ㄨ揪寮�--> + <el-dialog + title="閫夋嫨琛ㄨ揪寮�" + :visible.sync="expVisible" + width="60%" + :close-on-press-escape="false" + :destroy-on-close="true" + @close="closeExp" + > + <flow-exp :selectValues="expSelect" @handleSingleExpSelect="getExpSelect"></flow-exp> + <div slot="footer" class="dialog-footer"> + <el-button size="small" type="primary" @click="checkExpComplete">纭� 瀹�</el-button> + </div> + </el-dialog> + + + </div> +</template> + +<script> +import FlowExp from '@/components/flow/Expression' +import {StrUtil} from '@/utils/StrUtil' +import MyDept from '@/components/flow/Dept/MyDept' +import SingleUser from '@/components/flow/User/SingleUser' +import MultUser from '@/components/flow/User/MultUser' +import MyRole from '@/components/flow/Role/MyRole' + + +export default { + name: "TaskConfPanel", + components: { + FlowExp, + MyRole, + MyDept, + SingleUser, + MultUser, + }, + /** 缁勪欢浼犲�� */ + props : { + id: { + type: String, + required: true + }, + }, + data() { + return { + typeButDisable: false, // 鐢ㄦ埛绫诲瀷閫夋嫨鎸夐挳鏄惁绂佺敤 + expButDisable: false, // 鐢ㄦ埛绫诲瀷閫夋嫨鎸夐挳鏄惁绂佺敤 + roleKey: 'role', + deptKey: 'dept', + multUserKey: 0, + singleUserKey: 'single', + roleShow: false, // 瑙掕壊缁勬樉绀� + delegationRoleSelect: [], // 閫変腑瑙掕壊 + multUserShow: false, // 鐢ㄦ埛缁勬樉绀� + singleUserShow: false, // 鎸囧畾鐢ㄦ埛鏄剧ず + delegationUserSelect: [], // 閫変腑鐨勭敤鎴� + deptShow: false, // 閮ㄩ棬缁勬樉绀� + delegationDeptSelect: [], // 閫変腑閮ㄩ棬 + expSelect: null, // 閫変腑琛ㄨ揪寮� + num: 0, // 鐢ㄤ簬瑙﹀彂鐢ㄦ埛閫夋嫨鏇存柊 + expVisible: false, + isIndeterminate: true, + checkType: 'single', // 閫夌被 + userType: '', + userTypeOption: [ + {label: '鎸囧畾浜哄憳', value: 'assignee'}, + {label: '鍊欓�変汉鍛�', value: 'candidateUsers'}, + {label: '鍊欓�夎鑹�', value: 'candidateGroups'}, + {label: '鍊欓�夐儴闂�', value: 'candidateDeptGroups'}, + ], + checkAll: false, + bpmnFormData: { + userType: "candidateDeptGroups", + assignee: "", + candidateUsers: "", + candidateGroups: "", + dueDate: "", + priority: "", + dataType: "", + expId: "", + }, + // 鏁版嵁鍥炴樉 + selectData: { + assignee: null, + candidateUsers: null, + candidateGroups: [], // 瑙掕壊 + candidateDeptGroups: [], // 閮ㄩ棬 + exp: null, + }, + otherExtensionList:[], + } + }, + + /** 浼犲�肩洃鍚� */ + watch: { + id: { + handler(newVal) { + if (StrUtil.isNotBlank(newVal)) { + this.resetTaskForm(); + } + }, + immediate: true, // 绔嬪嵆鐢熸晥 + }, + }, + created() { + + }, + methods: { + removeExp() { + this.getExpSelect(null) + }, + removeDept(dept) { + let index = this.delegationDeptSelect.indexOf(dept); + if (index !== -1) { + this.delegationDeptSelect.splice(index, 1); + } + this.getDeptSelect(this.delegationDeptSelect) + }, + removeRole(role) { + let index = this.delegationRoleSelect.indexOf(role); + if (index !== -1) { + this.delegationRoleSelect.splice(index, 1); + } + this.getRoleSelect(this.delegationRoleSelect) + }, + removeMultUser(user) { + let index = this.delegationUserSelect.indexOf(user); + if (index !== -1) { + this.delegationUserSelect.splice(index, 1); + } + this.getMultUserSelect(this.delegationUserSelect) + }, + removeSingleUser(user) { + // 鍥犱负鍙兘閫変竴涓敤鎴凤紝鎵�浠ュ垹浜嗗氨娌′簡 + this.getSingleUserSelect(null) + }, + editDept() { + this.$nextTick(() => { + this.$refs.dept.setCheckList(this.delegationDeptSelect) + }) + this.deptShow = true + }, + editSingleUser() { + if (this.delegationUserSelect && this.delegationUserSelect.length > 0) { + this.$nextTick(() => { + this.$refs.singleUser.setChecked(this.delegationUserSelect[0]) + }) + } + this.singleUserShow = true + }, + editRole() { + if (this.delegationRoleSelect && this.delegationRoleSelect.length > 0) { + this.$nextTick(() => { + this.$refs.role.setChecked(this.delegationRoleSelect) + }) + } + this.roleShow = true + }, + editMultUser() { + if (this.delegationUserSelect && this.delegationUserSelect.length > 0) { + this.multUserKey += '1' + this.$nextTick(() => { + this.$refs.multUser.setChecked(this.delegationUserSelect) + }) + } + this.multUserShow = true + }, + editExp() { + this.expVisible = true; + }, + getDeptSelect(deptList) { + if (deptList && deptList.length > 0) { + this.deleteFlowAttar(); + this.updateCustomElement('dataType', 'fixed'); + this.updateCustomElement("candidateGroups", deptList.map(item => item.id).join(",")); + this.delegationDeptSelect = deptList + this.expButDisable = true + } else { + this.delegationDeptSelect = [] + this.expButDisable = false + } + this.deptShow = false + this.deptKey += '1' + }, + getMultUserSelect(userList) { + if (userList && userList.length > 0) { + this.deleteFlowAttar(); + this.updateCustomElement('dataType', 'fixed'); + this.updateCustomElement(this.bpmnFormData.userType, userList.map(item => item.userId).join(",")); + this.delegationUserSelect = userList + this.expButDisable = true + } else { + this.delegationUserSelect = [] + this.expButDisable = false + } + this.multUserShow = false + this.multUserKey += 1; + }, + getRoleSelect(roleList) { + if (roleList && roleList.length > 0) { + this.deleteFlowAttar(); + this.updateCustomElement('dataType', 'fixed'); + // userType = candidateGroups + this.updateCustomElement(this.bpmnFormData.userType, roleList.map(item => item.roleId).join(",")); + this.delegationRoleSelect = roleList + this.expButDisable = true + } else { + this.delegationRoleSelect = [] + this.expButDisable = false + } + this.roleShow = false + this.roleKey += '1' + }, + getSingleUserSelect(user) { + if (user) { + this.deleteFlowAttar(); + this.updateCustomElement('dataType', 'fixed'); + this.updateCustomElement(this.bpmnFormData.userType, user.userId); + this.delegationUserSelect = [user] + this.expButDisable = true + } else { + this.delegationUserSelect = [] + this.expButDisable = false + this.deleteFlowAttar(); + } + this.singleUserShow = false + this.singleUserKey += '1' + }, + getExpSelect(selection) { + console.log(selection, "閫変腑鐨勮〃杈惧紡") + if (selection) { + this.expSelect = selection + this.deleteFlowAttar(); + this.bpmnFormData[this.bpmnFormData.userType] = selection.name; + this.updateCustomElement('dataType', selection.dataType); + this.updateCustomElement('expId', selection.id.toString()); + const userType = this.bpmnFormData.userType === "candidateDeptGroups" ? "candidateGroups" : this.bpmnFormData.userType + this.updateCustomElement(userType, selection.expression); + this.handleSelectData("exp", selection.id); + this.typeButDisable = true + } else { + this.expSelect = null + this.typeButDisable = false + this.deleteFlowAttar(); + } + }, + closeExp() { + this.expVisible = false + }, + closeDept() { + this.deptShow = false + this.deptKey += '1' + }, + closeSingleUser() { + this.singleUserShow = false + this.singleUserKey += '1' + }, + closeRole() { + this.roleShow = false + this.roleKey += '1' + }, + closeMultUser() { + this.multUserShow = false + this.multUserKey += 1; + }, + + // 鍒濆鍖栬〃鍗� + resetTaskForm() { + // 鍒濆鍖栬涓虹┖鍊� + this.bpmnFormData = { + userType: "candidateDeptGroups", + assignee: "", + candidateUsers: "", + candidateGroups: "", + dueDate: "", + priority: "", + dataType: "", + expId: "", + } + this.selectData = { + assignee: null, + candidateUsers: null, + candidateGroups: null, + exp: null, + } + // 娴佺▼鑺傜偣淇℃伅涓婂彇鍊� + for (let key in this.bpmnFormData) { + const value = this.modelerStore.element?.businessObject[key] || this.bpmnFormData[key]; + this.$set(this.bpmnFormData, key, value); + } + console.log(this.bpmnFormData, "鍒濆鍖栨暟鎹�") + // 浜哄憳銆佽鑹层�侀儴闂ㄤ俊鎭洖鏄� + this.checkValuesEcho(this.bpmnFormData); + }, + + // 鏇存柊鑺傜偣淇℃伅 + updateElementTask(key) { + const taskAttr = Object.create(null); + taskAttr[key] = this.bpmnFormData[key] || ""; + this.modelerStore.modeling.updateProperties(this.modelerStore.element, taskAttr); + }, + + // 鏇存柊鑷畾涔夋祦绋嬭妭鐐�/鍙傛暟淇℃伅 + updateCustomElement(key, value) { + const taskAttr = Object.create(null); + taskAttr[key] = value; + this.modelerStore.modeling.updateProperties(this.modelerStore.element, taskAttr); + }, + + // 鏇存柊浜哄憳绫诲瀷 + updateUserType(val) { + console.log(val, "浜哄憳绫诲瀷") + // 鍒犻櫎xml涓凡閫夋嫨鏁版嵁绫诲瀷鑺傜偣 + this.deleteFlowAttar(); + // 娓呴櫎宸查�変汉鍛樻暟鎹� + if (val === "candidateDeptGroups") { + val = "candidateGroups" + this.delegationDeptSelect = [] // 閮ㄩ棬 + } else if (val === "candidateGroups") { + this.delegationRoleSelect = [] // 瑙掕壊 + } else if (val === "assignee" || val === "candidateUsers") { + this.delegationUserSelect = [] // 鎸囧畾鐢ㄦ埛/鍊欓�夌敤鎴� + } + this.expSelect = null // 琛ㄨ揪寮忛噸缃负绌� + this.selectData = { + assignee: null, + candidateUsers: null, + candidateGroups: null, + exp: null, + } + this.typeButDisable = false + this.expButDisable = false + // 鍐欏叆userType鑺傜偣淇℃伅鍒皒ml + this.updateCustomElement('userType', val); + }, + + // 璁捐鍣ㄥ彸渚ц〃鍗曟暟鎹洖鏄� + checkValuesEcho(formData) { + if (formData.expId) { + this.getExpList(formData.expId); + this.typeButDisable = true + this.expButDisable = false + } else { + this.typeButDisable = false + this.expSelect = null + if ("candidateGroups" === formData.userType || "candidateDeptGroups" === formData.userType) { + this.getRoleOrDeptReview(formData.candidateGroups) + } else { + this.getUserList(formData[formData.userType], formData.userType); + } + } + }, + + // 鑾峰彇琛ㄨ揪寮忎俊鎭� + getExpList(expId) { + this.expSelect = this.modelerStore.expList?.find(item => item.id.toString() === expId); + }, + + // 鑾峰彇浜哄憳淇℃伅 + getUserList(val, key) { + if (StrUtil.isNotBlank(val)) { + this.expButDisable = true + this.typeButDisable = false + if ('assignee' === key) { + const uList = this.modelerStore.userList.filter(item => item.userId == val); + this.delegationUserSelect = uList + } else { + const newArr = this.modelerStore.userList?.filter(i => val.split(',').includes(i.userId.toString())) + this.delegationUserSelect = newArr + } + } else { + this.expButDisable = false + this.delegationUserSelect = [] + } + }, + + // 鑾峰彇瑙掕壊淇℃伅 + getRoleOrDeptReview(ids) { + this.delegationDeptSelect = [] + this.delegationRoleSelect = [] + if (StrUtil.isNotBlank(ids)) { + this.expButDisable = true + this.typeButDisable = false + // 鏍规嵁id绛涢�夊嚭鏄鑹茶繕鏄儴闂� + const roleAndDeptIds = ids.split(","); + const deptIds = roleAndDeptIds.filter(item => item.includes("dept")); + const roleIds = roleAndDeptIds.filter(item => !item.includes("dept")); + + if (roleIds && roleIds.length > 0) { // 瑙掕壊 + const targetRoleList = this.modelerStore.roleList?.filter(i => roleIds.includes(i.roleId.toString())) + this.delegationRoleSelect = targetRoleList; + this.bpmnFormData.userType = "candidateGroups" + } + if (deptIds && deptIds.length > 0){ // 閮ㄩ棬 + const targetDeptList = this.modelerStore.deptList?.filter(i => deptIds.includes(i.id)) + this.delegationDeptSelect = targetDeptList + this.bpmnFormData.userType = "candidateDeptGroups" + } + } else { + this.expButDisable = false + this.delegationDeptSelect = [] + this.delegationRoleSelect = [] + } + }, + + // ------ 娴佺▼瀹℃壒浜哄憳淇℃伅寮瑰嚭妗� start--------- + + + // 澶勭悊浜哄憳鍥炴樉 + handleSelectData(key, value) { + for (let oldKey in this.selectData) { + if (key !== oldKey) { + this.$set(this.selectData, oldKey, null); + } else { + this.$set(this.selectData, oldKey, value); + } + } + }, + + /*琛ㄨ揪寮忛�変腑璧嬪��*/ + checkExpComplete() { + this.expVisible = false; + }, + + // 鍒犻櫎鑺傜偣 + deleteFlowAttar() { + delete this.modelerStore.element.businessObject[`dataType`] + delete this.modelerStore.element.businessObject[`expId`] + delete this.modelerStore.element.businessObject[`assignee`] + delete this.modelerStore.element.businessObject[`candidateUsers`] + delete this.modelerStore.element.businessObject[`candidateGroups`] + }, + + } +} +</script> +<style scoped> +.select-tag { + margin-right: 3px; +} +</style> diff --git a/src/components/Process/panel/formPanel.vue b/src/components/Process/panel/formPanel.vue index c1d4f14..d5016c2 100644 --- a/src/components/Process/panel/formPanel.vue +++ b/src/components/Process/panel/formPanel.vue @@ -39,7 +39,6 @@ watch: { id: { handler(newVal) { - console.log("鏂扮殑id鍊硷細", newVal) if (StrUtil.isNotBlank(newVal)) { this.init() } @@ -59,12 +58,9 @@ // 鏂规硶鍖� resetFlowForm() { this.bpmnFormData.formKey = this.modelerStore.element.businessObject.formKey; - console.log(this.bpmnFormData.formKey, "formKey!!") }, updateElementFormKey(val) { - console.log(val, "鏁版嵁鏀瑰彉") - console.log(this.bpmnFormData.formKey, "鏁版嵁鏀瑰彉") this.init() if (StrUtil.isBlank(val)) { delete this.modelerStore.element.businessObject[`formKey`] @@ -80,7 +76,6 @@ item.formId = item.formId.toString(); }) this.formList = res.data; - console.log("琛ㄥ崟淇℃伅锛�", this.formList) }) } } diff --git a/src/components/flow/Dept/MyDept.vue b/src/components/flow/Dept/MyDept.vue index ea0b709..c74ced8 100644 --- a/src/components/flow/Dept/MyDept.vue +++ b/src/components/flow/Dept/MyDept.vue @@ -82,7 +82,7 @@ }, handleCheckChange(data, checked, indeterminate) { if (checked) { - if (this.checkList.indexOf(data) === -1) { + if (this.checkList.every(item => item.id !== data.id)) { this.checkList.push(data) } } else { diff --git a/src/components/flow/Expression/index.vue b/src/components/flow/Expression/index.vue index 7c9776c..973e5cb 100644 --- a/src/components/flow/Expression/index.vue +++ b/src/components/flow/Expression/index.vue @@ -54,7 +54,7 @@ props: { // 鍥炴樉鏁版嵁浼犲�� selectValues: { - type: Number | String, + type: Object, default: null, required: false } @@ -93,8 +93,10 @@ watch: { selectValues: { handler(newVal) { - if (StrUtil.isNotBlank(newVal)) { - this.radioSelected = newVal + if (newVal) { + this.radioSelected = newVal.id + } else { + this.radioSelected = null } }, immediate: true, diff --git a/src/components/flow/Role/MyRole.vue b/src/components/flow/Role/MyRole.vue index f2027a0..dfa4e74 100644 --- a/src/components/flow/Role/MyRole.vue +++ b/src/components/flow/Role/MyRole.vue @@ -24,13 +24,13 @@ </el-form-item> </el-form> - <el-table ref="dataTable" v-loading="loading" :data="roleList" @selection-change="handleMultipleRoleSelect"> + <el-table ref="dataTable" v-loading="loading" :data="roleList" @selection-change="handleMultipleRoleSelect"> <el-table-column type="selection" width="50" align="center" /> - <el-table-column label="瑙掕壊缂栧彿" prop="roleId" width="120" /> - <el-table-column label="瑙掕壊鍚嶇О" prop="roleName" :show-overflow-tooltip="true" width="150" /> - <el-table-column label="鏉冮檺瀛楃" prop="roleKey" :show-overflow-tooltip="true" width="150" /> - <el-table-column label="鏄剧ず椤哄簭" prop="roleSort" width="100" /> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <el-table-column label="瑙掕壊缂栧彿" prop="roleId"/> + <el-table-column label="瑙掕壊鍚嶇О" prop="roleName" :show-overflow-tooltip="true"/> + <el-table-column label="鏉冮檺瀛楃" prop="roleKey" :show-overflow-tooltip="true"/> + <el-table-column label="鏄剧ず椤哄簭" prop="roleSort"/> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> @@ -110,65 +110,24 @@ }; }, watch: { - selectValues: { - deep: true, - handler(newVal) { - if (newVal && newVal.length > 0) { - this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - this.selectRoleList = [] - newVal.forEach(item => { - this.roleList.forEach(role => { - if (item.roleId === role.roleId) { - this.selectRoleList.push(role) - this.$refs.dataTable.toggleRowSelection(role) - } - }) - }); - }) - } else { - this.selectRoleList = [] - } - } - }, - roleList: { - deep: true, - handler(newVal) { - if (newVal && newVal.length > 0) { - this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - this.selectValues.forEach(item => { - newVal.forEach(role => { - if (item.roleId === role.roleId) { - this.$refs.dataTable.toggleRowSelection(role) - } - }) - }); - }) - } - } - } }, mounted() { + console.log("鎴戝鍦ㄤ簡") this.getList(); }, methods: { + // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁 + getRowKey (row) { + return row.roleId + }, setChecked(val) { - if (val && val.length > 0) { - this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - this.selectRoleList = val - val.forEach(check => { - this.roleList.forEach(item => { - if (check.roleId === item.roleId) { - this.$refs.dataTable.toggleRowSelection(item) - } - }) - }) - }); - } else { - this.selectRoleList = [] - } + console.log("鎺ユ敹鍒扮殑鏁版嵁", val) + this.selectRoleList = val + this.$nextTick(() => { + val.forEach(check => { + this.$refs.dataTable.toggleRowSelection(check, true) + }) + }); }, close() { this.$emit("close") @@ -187,8 +146,8 @@ ); }, // 澶氶�夋閫変腑鏁版嵁 - handleMultipleRoleSelect(selection) { - this.selectRoleList = selection + handleMultipleRoleSelect(rows) { + this.selectRoleList = rows }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { diff --git a/src/components/flow/User/MultUser.vue b/src/components/flow/User/MultUser.vue index c4e18b7..8e1f059 100644 --- a/src/components/flow/User/MultUser.vue +++ b/src/components/flow/User/MultUser.vue @@ -6,6 +6,7 @@ width="65%" :destroy-on-close="true" :close-on-click-modal="false" + :modal-append-to-body="false" :modal="false" :before-close="close"> <el-row :gutter="20"> @@ -53,7 +54,7 @@ </el-form-item> </el-form> <el-table ref="dataTable" v-loading="loading" :row-key="getRowKey" :data="userList" @selection-change="handleUserSelect"> - <el-table-column type="selection" align="center" /> + <el-table-column type="selection" align="center" :reserve-selection="true"/> <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> <el-table-column label="鐧诲綍璐﹀彿" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> <el-table-column label="鐢ㄦ埛濮撳悕" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> @@ -96,7 +97,7 @@ }, // 鍥炴樉鏁版嵁浼犲�� selectUserList: { - type: Number, + type: Array, default: null, required: false }, @@ -104,9 +105,9 @@ }, data() { return { - innerSelected: [], + innerSelected: [], // 閫変腑 // 閬僵灞� - loading: true, + loading: false, // 閫変腑鏁扮粍 ids: [], // 鏄剧ず鎼滅储鏉′欢 @@ -148,7 +149,6 @@ { key: 5, label: `鐘舵�乣, visible: true }, { key: 6, label: `鍒涘缓鏃堕棿`, visible: true } ], - radioSelected: 0, // 鍗曢�夋浼犲�� }; }, watch: { @@ -156,46 +156,23 @@ deptName(val) { this.$refs.tree.filter(val); }, - selectUserList: { - deep: true, - handler(newVal) { - console.log(this.selectValues, "浼犲叆鐨勫�兼槸") - this.setChecked(newVal) - }, - }, - userList: { - deep: true, - handler(newVal) { - this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - this.innerSelected.forEach(check => { - newVal.forEach(item => { - if (check.userId === item.userId) { - this.$refs.dataTable.toggleRowSelection(item) - } - }) - }) - }); - }, - }, }, mounted() { - this.getList(); this.getDeptTree(); + this.getList(); }, methods: { + getRowKeys(row) { + return row.userId + }, setChecked(val) { + this.innerSelected = val this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - this.innerSelected = val val.forEach(check => { - this.userList.forEach(item => { - if (check.userId === item.userId) { - this.$refs.dataTable.toggleRowSelection(item) - } - }) + this.$refs.dataTable.toggleRowSelection(check, true) }) }); + }, /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ getList() { @@ -215,7 +192,7 @@ }, // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁 getRowKey (row) { - return row.id + return row.userId }, // 绛涢�夎妭鐐� filterNode(value, data) { @@ -229,11 +206,17 @@ }, // 浼犻�掗�変腑鍊� handleUserSelect(selectionList) { - console.log("閫変腑鍊�", selectionList) - this.innerSelected = selectionList + + console.log("鍘熷厛鍊�", this.innerSelected) + this.innerSelected = [...new Set(selectionList)] + console.log("閫変腑鍊�", this.innerSelected) }, getSelected() { this.$emit('submit', this.innerSelected); + + }, + close() { + this.$emit("close") }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { @@ -248,9 +231,7 @@ this.$refs.tree.setCurrentKey(null); this.handleQuery(); }, - close() { - this.$emit("close") - }, + } }; </script> diff --git a/src/components/flow/User/SingleUser.vue b/src/components/flow/User/SingleUser.vue index e8cf64d..ff2cf26 100644 --- a/src/components/flow/User/SingleUser.vue +++ b/src/components/flow/User/SingleUser.vue @@ -147,7 +147,6 @@ { key: 5, label: `鐘舵�乣, visible: true }, { key: 6, label: `鍒涘缓鏃堕棿`, visible: true } ], - radioSelected: 0, // 鍗曢�夋浼犲�� selectUserList: [] // 鍥炴樉鏁版嵁浼犲�� }; }, @@ -179,14 +178,15 @@ handler(newVal) { if (newVal) { this.$nextTick(() => { - this.$refs.dataTable.clearSelection(); - if (! this.innerSelected) { - newVal.forEach(item => { - if (this.innerSelected.userId === item.userId) { - this.innerSelected = item - this.$refs.dataTable.toggleRowSelection(item) - } - }) + if (this.$refs.dataTable) { + if (! this.innerSelected) { + newVal.forEach(item => { + if (this.innerSelected.userId === item.userId) { + this.innerSelected = item + this.$refs.dataTable.toggleRowSelection(item) + } + }) + } } }); } else { diff --git a/src/components/flow/User/index.vue b/src/components/flow/User/index.vue index 33dcb57..5109608 100644 --- a/src/components/flow/User/index.vue +++ b/src/components/flow/User/index.vue @@ -245,8 +245,6 @@ 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) } diff --git a/src/views/flowable/definition/model.vue b/src/views/flowable/definition/model.vue index bead3c6..3ef28fd 100644 --- a/src/views/flowable/definition/model.vue +++ b/src/views/flowable/definition/model.vue @@ -104,7 +104,6 @@ /** 鎸囧畾娴佺▼鍔炵悊浜哄憳鍒楄〃 */ getDataList() { userList().then(res => { - console.log(this.modelerStore, "dhg") this.modelerStore.userList = res.data; }) roleList().then(res => { diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue index ff75151..e87f061 100644 --- a/src/views/flowable/task/myProcess/send/index.vue +++ b/src/views/flowable/task/myProcess/send/index.vue @@ -84,7 +84,7 @@ <el-form-item label="鐢ㄦ埛绫诲瀷" prop="peopleType"> <el-select v-model="delegationForm.peopleType" @change="peopleTypeChange" placeholder="璇烽�夋嫨鐢ㄦ埛绫诲瀷"> <el-option label="鎸囧畾浜哄憳" value="FIX_USER"></el-option> - <el-option label="鍊欓�夌敤鎴�" value="USER"></el-option> + <el-option label="鍊欓�変汉鍛�" value="USER"></el-option> <el-option label="鍊欓�夐儴闂�" value="DEPT"></el-option> <el-option label="鍊欓�夎鑹�" value="ROLE"></el-option> </el-select> @@ -98,7 +98,7 @@ <el-button style="margin-left: 8px" type="text" @click="editDept">閫夋嫨</el-button> </div> </el-form-item> - <el-form-item v-if="delegationForm.peopleType === 'FIX_USER'" label="鎸囧畾鐢ㄦ埛" prop="targetId"> + <el-form-item v-if="delegationForm.peopleType === 'FIX_USER'" label="鎸囧畾浜哄憳" prop="targetId"> <single-user ref="singleUser" :select-user="delegationForm.targetId" :show="singleUserShow" @close="closeSingleUser" @submit="getSingleUserSelect"/> <div style="display: flex;align-items: center"> <div> @@ -107,7 +107,7 @@ <el-button style="margin-left: 8px" type="text" @click="editSingleUser">閫夋嫨</el-button> </div> </el-form-item> - <el-form-item v-if="delegationForm.peopleType === 'USER'" label="鍊欓�夌敤鎴�" prop="targetId"> + <el-form-item v-if="delegationForm.peopleType === 'USER'" label="鍊欓�変汉鍛�" prop="targetId"> <mult-user ref="multUser" :select-user="delegationUserSelect" :show="multUserShow" @close="closeMultUser" @submit="getMultUserSelect"/> <div style="display: flex;align-items: center"> <div> @@ -339,6 +339,8 @@ if (deptList && deptList.length > 0) { this.delegationForm.targetId = deptList.map(item => item.id).join(",") this.delegationDeptSelect = deptList + } else { + this.delegationDeptSelect = [] } this.deptShow = false }, @@ -446,7 +448,6 @@ // }) // } }).catch(res => { - console.log("鎶ラ敊浜嗭細", res) this.goBack(); }) }, diff --git a/src/views/function/api/purchase.js b/src/views/function/api/purchase.js index 1ef3bc0..34c094e 100644 --- a/src/views/function/api/purchase.js +++ b/src/views/function/api/purchase.js @@ -5,7 +5,6 @@ export const getPurchaseApplyList = data => { const queryString = commonUtil.objectToQueryStr(data); - console.log("aaaaaaaaaaaaaaaaaaaaaaa2", queryString); return request({ url: '/purchase/list', method: 'post', @@ -47,4 +46,4 @@ method: 'post', data: fd }); -} \ No newline at end of file +} diff --git a/src/views/function/leaveApply.vue b/src/views/function/leaveApply.vue index 15b9672..f93d294 100644 --- a/src/views/function/leaveApply.vue +++ b/src/views/function/leaveApply.vue @@ -100,7 +100,7 @@ <el-form-item label="閮ㄩ棬棰嗗"> <el-select v-model="form.deptleader"> <el-option - v-for="(user, i) in userList" + v-for="(user, i) in userList" :key="i" :label="user.userName" :value="user.userName" @@ -170,7 +170,6 @@ mounted() { this.getLeaveApplyListAndRender(this.searchParams) listUser().then(res => { - console.log("鑾峰彇鐢ㄦ埛", res); this.userList = res.rows; }); }, @@ -184,7 +183,7 @@ const ids = this.selectionIds.join(","); this.deleteByIdsAndRender(ids); }); - + }, handleExport() { this.$confirm('纭畾瀵煎嚭鎵�鏈夋暟鎹悧锛�', { diff --git a/src/views/index.vue b/src/views/index.vue index 42b2dd7..513d018 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -208,7 +208,6 @@ this.queryParams.endTime = this.timeMerge[1]; }, handleQuery() { - console.log(this.queryParams); const obj = { startDate: this.queryParams.startTime, endDate: this.queryParams.endTime, diff --git a/src/views/projectEngineering/projectLibrary/projectDetails.vue b/src/views/projectEngineering/projectLibrary/projectDetails.vue index 6204cbf..9332ed8 100644 --- a/src/views/projectEngineering/projectLibrary/projectDetails.vue +++ b/src/views/projectEngineering/projectLibrary/projectDetails.vue @@ -131,7 +131,6 @@ }, handleClick(tabTarget) { this.componentName = this.TABS_DATA[tabTarget.index].componentName; - console.log(this.projectForm); }, changeTable(index) { this.componentName = this.TABS_DATA[index].componentName; diff --git a/src/views/projectManage/plan/planInfo.vue b/src/views/projectManage/plan/planInfo.vue index b7cabf3..789eaf3 100644 --- a/src/views/projectManage/plan/planInfo.vue +++ b/src/views/projectManage/plan/planInfo.vue @@ -193,7 +193,6 @@ // 淇濆瓨褰撳墠琛屾暟鎹� handleSave(index) { this.tableData[index].projectPlanRecordId = this.projectInfoData.id; - console.log(this.tableData[index]) savePlanInfo(this.tableData[index], this.planInfoData.id).then(response => { this.$message.success('淇濆瓨鎴愬姛'); }); diff --git a/src/views/projectProcess/detail/index.vue b/src/views/projectProcess/detail/index.vue index 6c17627..207b6a4 100644 --- a/src/views/projectProcess/detail/index.vue +++ b/src/views/projectProcess/detail/index.vue @@ -232,13 +232,16 @@ }, search() { this.queryParams.currentPage = 1; + this.tableLoading = true this.getList() }, sizeChange(pageSize) { + this.tableLoading = true this.queryParams.pageSize = pageSize; this.getList() }, pageChange(pageNum) { + this.tableLoading = true this.queryParams.currentPage = pageNum; this.getList() }, diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue index 9838167..a71814a 100644 --- a/src/views/projectProcess/index.vue +++ b/src/views/projectProcess/index.vue @@ -393,7 +393,6 @@ methods: { // 鏌ョ湅璇︽儏 lookProcessDetail(row) { - console.log(row.processDefId) this.$router.push({ path: '/projectFlow/detail', query: { diff --git a/src/views/todo/api/allTodoList.js b/src/views/todo/api/allTodoList.js index 3f9cb28..b0d011a 100644 --- a/src/views/todo/api/allTodoList.js +++ b/src/views/todo/api/allTodoList.js @@ -3,9 +3,7 @@ // 鑾峰彇鎴戠殑寰呭姙 export const getAllTodoList = data => { - console.log("aaaaaaaaaaaaaaaaaaaaaaa1"); const queryString = commonUtil.objectToQueryStr(data); - console.log("aaaaaaaaaaaaaaaaaaaaaaa2", queryString); return request({ url: '/task/manage/alllist', method: 'post', @@ -14,4 +12,4 @@ 'Content-Type': 'application/x-www-form-urlencoded' }, }); -} \ No newline at end of file +} diff --git a/src/views/todo/api/myTodoList.js b/src/views/todo/api/myTodoList.js index d8d2bdd..2189cd3 100644 --- a/src/views/todo/api/myTodoList.js +++ b/src/views/todo/api/myTodoList.js @@ -3,9 +3,7 @@ // 鑾峰彇鎴戠殑寰呭姙 export const getMyTodoList = data => { - console.log("aaaaaaaaaaaaaaaaaaaaaaa1"); const queryString = commonUtil.objectToQueryStr(data); - console.log("aaaaaaaaaaaaaaaaaaaaaaa2", queryString); return request({ url: '/task/manage/mylist', method: 'post', @@ -101,4 +99,4 @@ url: url + `?taskid=${taksId}`, method: 'get', }); -} \ No newline at end of file +} diff --git a/src/views/todo/processTask.vue b/src/views/todo/processTask.vue index 4ad1076..8504a5a 100644 --- a/src/views/todo/processTask.vue +++ b/src/views/todo/processTask.vue @@ -109,7 +109,6 @@ if (this.step === "input") { const id = this.$route.query.id; const {content} = data; - console.log(id); fillMeetingRecord({ id, content @@ -118,7 +117,7 @@ }); } } - + if (this.taskType === "leaveapply") { if ( this.step === "destroyapply" -- Gitblit v1.8.0