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