From 2cd8b0ca2746c6f4467995e2f0ed7bd62aa77131 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 09 三月 2025 11:50:59 +0800
Subject: [PATCH] 容缺查询,TODO:容缺完成时调新的接口
---
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