From 849934d0e2a3d05c4814edad52b060d93d77725f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 09 一月 2025 11:42:10 +0800
Subject: [PATCH] 用户、角色、部门组件完善、办理查看任务优化

---
 src/views/flowable/task/myProcess/send/index.vue   |  100 ++++++++++++----
 src/views/flowable/task/myProcess/detail/index.vue |   55 +++++---
 src/components/Process/panel/TaskConfPanel.vue     |    3 
 src/components/flow/Role/MyRole.vue                |   34 ++---
 src/components/flow/Dept/MyDept.vue                |    7 +
 src/components/flow/User/MultUser.vue              |   31 ++---
 src/components/flow/User/SingleUser.vue            |   90 +++-----------
 7 files changed, 165 insertions(+), 155 deletions(-)

diff --git a/src/components/Process/panel/TaskConfPanel.vue b/src/components/Process/panel/TaskConfPanel.vue
index 88718ff..9d93362 100644
--- a/src/components/Process/panel/TaskConfPanel.vue
+++ b/src/components/Process/panel/TaskConfPanel.vue
@@ -242,12 +242,14 @@
     },
     editDept() {
       this.$nextTick(() => {
+        this.deptKey += '1'
         this.$refs.dept.setCheckList(this.delegationDeptSelect)
       })
       this.deptShow = true
     },
     editSingleUser() {
       if (this.delegationUserSelect && this.delegationUserSelect.length > 0) {
+        this.singleUserKey += '1'
         this.$nextTick(() => {
           this.$refs.singleUser.setChecked(this.delegationUserSelect[0])
         })
@@ -256,6 +258,7 @@
     },
     editRole() {
       if (this.delegationRoleSelect && this.delegationRoleSelect.length > 0) {
+        this.roleKey += '1'
         this.$nextTick(() => {
           this.$refs.role.setChecked(this.delegationRoleSelect)
         })
diff --git a/src/components/flow/Dept/MyDept.vue b/src/components/flow/Dept/MyDept.vue
index c74ced8..27abe9a 100644
--- a/src/components/flow/Dept/MyDept.vue
+++ b/src/components/flow/Dept/MyDept.vue
@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-dialog
-      :title="`閫夋嫨鍊欓�夐儴闂╜"
+      :title="title"
       :visible.sync="show"
       width="65%"
       :destroy-on-close="true"
@@ -35,6 +35,11 @@
       required: true,
       type: Boolean
     },
+    title: {
+      type: String,
+      required: false,
+      default: '鍊欓�夐儴闂�'
+    },
     checkeds: {
       required: true
     }
diff --git a/src/components/flow/Role/MyRole.vue b/src/components/flow/Role/MyRole.vue
index dfa4e74..e5e9cd7 100644
--- a/src/components/flow/Role/MyRole.vue
+++ b/src/components/flow/Role/MyRole.vue
@@ -1,11 +1,12 @@
 <template>
   <div>
     <el-dialog
-      :title="`閫夋嫨鍊欓�夎鑹瞏"
+      :title="title"
       :visible.sync="show"
       width="65%"
       :destroy-on-close="true"
       :close-on-click-modal="false"
+      :modal-append-to-body="false"
       :modal="false"
       :before-close="close">
       <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
@@ -14,6 +15,7 @@
             v-model="queryParams.roleName"
             placeholder="璇疯緭鍏ヨ鑹插悕绉�"
             clearable
+            @clear="handleQuery"
             style="width: 240px"
             @keyup.enter.native="handleQuery"
           />
@@ -24,8 +26,8 @@
         </el-form-item>
       </el-form>
 
-      <el-table ref="dataTable"  v-loading="loading"  :data="roleList" @selection-change="handleMultipleRoleSelect">
-        <el-table-column type="selection" width="50" align="center" />
+      <el-table ref="dataTable" :row-key="getRowKey" v-loading="loading"  :data="roleList" @selection-change="handleMultipleRoleSelect">
+        <el-table-column type="selection" width="50" align="center"  :reserve-selection="true"/>
         <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"/>
@@ -68,6 +70,11 @@
       required: true,
       default: true
     },
+    title: {
+      type: String,
+      required: false,
+      default: '鍊欓�夎鑹�'
+    },
     // 鍥炴樉鏁版嵁浼犲��
     selectValues: {
       type: Array,
@@ -79,22 +86,12 @@
     return {
       // 閬僵灞�
       loading: true,
-      // 閫変腑鏁扮粍
-      ids: [],
-      // 闈炲崟涓鐢�
-      single: true,
-      // 闈炲涓鐢�
-      multiple: true,
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
       // 鎬绘潯鏁�
       total: 0,
       // 瑙掕壊琛ㄦ牸鏁版嵁
       roleList: [],
-      // 寮瑰嚭灞傛爣棰�
-      title: "",
-      // 鏄惁鏄剧ず寮瑰嚭灞�
-      open: false,
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
@@ -103,9 +100,6 @@
         roleKey: undefined,
         status: undefined
       },
-      // 琛ㄥ崟鍙傛暟
-      form: {},
-      radioSelected: 0, // 鍗曢�夋浼犲��
       selectRoleList: [] // 鍥炴樉鏁版嵁浼犲��
     };
   },
@@ -118,13 +112,15 @@
   methods: {
     // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁
     getRowKey (row) {
+      console.log(row.roleId)
       return row.roleId
     },
     setChecked(val) {
-      console.log("鎺ユ敹鍒扮殑鏁版嵁", val)
+
       this.selectRoleList = val
+      console.log("鎺ユ敹鍒扮殑鏁版嵁", this.selectRoleList)
       this.$nextTick(() => {
-        val.forEach(check => {
+        this.selectRoleList.forEach(check => {
           this.$refs.dataTable.toggleRowSelection(check, true)
         })
       });
@@ -147,7 +143,7 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleMultipleRoleSelect(rows) {
-      this.selectRoleList = rows
+      this.selectRoleList = [...new Set(rows)]
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
diff --git a/src/components/flow/User/MultUser.vue b/src/components/flow/User/MultUser.vue
index 8e1f059..00406bb 100644
--- a/src/components/flow/User/MultUser.vue
+++ b/src/components/flow/User/MultUser.vue
@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-dialog
-      :title="`閫夋嫨杞姙鎺ユ敹浜哄憳`"
+      :title="title"
       :visible.sync="show"
       width="65%"
       :destroy-on-close="true"
@@ -39,11 +39,12 @@
         <!--鐢ㄦ埛鏁版嵁-->
         <el-col :span="18" :xs="24">
           <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
+            <el-form-item label="鐢ㄦ埛鍚嶇О" prop="nickName">
               <el-input
-                v-model="queryParams.userName"
-                placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+                v-model="queryParams.nickName"
+                placeholder="璇疯緭鍏ョ敤鎴峰鍚�"
                 clearable
+                @clear="handleQuery"
                 style="width: 150px"
                 @keyup.enter.native="handleQuery"
               />
@@ -95,6 +96,11 @@
       required: true,
       type: Boolean
     },
+    title: {
+      type: String,
+      required: false,
+      default: '鍊欓�変汉鍛�'
+    },
     // 鍥炴樉鏁版嵁浼犲��
     selectUserList: {
       type: Array,
@@ -108,24 +114,16 @@
       innerSelected: [], // 閫変腑
       // 閬僵灞�
       loading: false,
-      // 閫変腑鏁扮粍
-      ids: [],
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
       // 鎬绘潯鏁�
       total: 0,
       // 鐢ㄦ埛琛ㄦ牸鏁版嵁
       userList: [],
-      // 寮瑰嚭灞傛爣棰�
-      title: "",
       // 閮ㄩ棬鏍戦�夐」
       deptOptions: undefined,
-      // 鏄惁鏄剧ず寮瑰嚭灞�
-      open: false,
       // 閮ㄩ棬鍚嶇О
       deptName: undefined,
-      // 琛ㄥ崟鍙傛暟
-      form: {},
       defaultProps: {
         children: "children",
         label: "label"
@@ -134,7 +132,7 @@
       queryParams: {
         pageNum: 1,
         pageSize: 5,
-        userName: undefined,
+        nickName: undefined,
         phonenumber: undefined,
         status: undefined,
         deptId: undefined
@@ -162,7 +160,8 @@
     this.getList();
   },
   methods: {
-    getRowKeys(row) {
+    // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁
+    getRowKey (row) {
       return row.userId
     },
     setChecked(val) {
@@ -189,10 +188,6 @@
       deptTreeSelect().then(response => {
         this.deptOptions = response.data;
       });
-    },
-    // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁
-    getRowKey (row) {
-      return row.userId
     },
     // 绛涢�夎妭鐐�
     filterNode(value, data) {
diff --git a/src/components/flow/User/SingleUser.vue b/src/components/flow/User/SingleUser.vue
index ff2cf26..d779e71 100644
--- a/src/components/flow/User/SingleUser.vue
+++ b/src/components/flow/User/SingleUser.vue
@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-dialog
-      :title="`閫夋嫨杞姙鎺ユ敹浜哄憳`"
+      :title="title"
       :visible.sync="show"
       width="65%"
       :destroy-on-close="true"
@@ -38,11 +38,12 @@
         <!--鐢ㄦ埛鏁版嵁-->
         <el-col :span="18" :xs="24">
           <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
+            <el-form-item label="鐢ㄦ埛濮撳悕" prop="nickName">
               <el-input
-                v-model="queryParams.userName"
-                placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+                v-model="queryParams.nickName"
+                placeholder="璇疯緭鍏ョ敤鎴峰鍚�"
                 clearable
+                @clear="handleQuery"
                 style="width: 150px"
                 @keyup.enter.native="handleQuery"
               />
@@ -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" />
+            <el-table-column type="selection" :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" />
@@ -94,6 +95,11 @@
       required: true,
       type: Boolean
     },
+    title: {
+      type: String,
+      required: false,
+      default: '鎸囧畾浜哄憳'
+    },
     // 鍥炴樉鏁版嵁浼犲��
     selectUser: {
       default: null,
@@ -106,24 +112,16 @@
       innerSelected: null,
       // 閬僵灞�
       loading: true,
-      // 閫変腑鏁扮粍
-      ids: [],
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
       // 鎬绘潯鏁�
       total: 0,
       // 鐢ㄦ埛琛ㄦ牸鏁版嵁
       userList: [],
-      // 寮瑰嚭灞傛爣棰�
-      title: "",
       // 閮ㄩ棬鏍戦�夐」
       deptOptions: undefined,
-      // 鏄惁鏄剧ず寮瑰嚭灞�
-      open: false,
       // 閮ㄩ棬鍚嶇О
       deptName: undefined,
-      // 琛ㄥ崟鍙傛暟
-      form: {},
       defaultProps: {
         children: "children",
         label: "label"
@@ -132,7 +130,7 @@
       queryParams: {
         pageNum: 1,
         pageSize: 5,
-        userName: undefined,
+        nickName: undefined,
         phonenumber: undefined,
         status: undefined,
         deptId: undefined
@@ -155,65 +153,21 @@
     deptName(val) {
       this.$refs.tree.filter(val);
     },
-    selectUser: {
-      deep: true,
-      handler(newVal) {
-        if (newVal) {
-          this.$nextTick(() => {
-            this.$refs.dataTable.clearSelection();
-            this.userList.forEach(item => {
-              if (newVal === item.userId) {
-                this.innerSelected = item
-                this.$refs.dataTable.toggleRowSelection(item)
-              }
-            })
-          });
-        } else {
-          this.innerSelected = null;
-        }
-      },
-    },
-    userLst: {
-      deep: true,
-      handler(newVal) {
-        if (newVal) {
-          this.$nextTick(() => {
-            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 {
-          this.innerSelected = null;
-        }
-      },
-    },
   },
   mounted() {
     this.getList();
     this.getDeptTree();
   },
   methods: {
+    // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁
+    getRowKey (row) {
+      return row.userId
+    },
     setChecked(val) {
-      if (val) {
-        this.$nextTick(() => {
-          this.$refs.dataTable.clearSelection();
-          this.userList.forEach(item => {
-            if (val.userId === item.userId) {
-              this.innerSelected = item
-              this.$refs.dataTable.toggleRowSelection(item)
-            }
-          })
-        });
-      } else {
-        this.innerSelected = null
-      }
+      this.innerSelected = val
+      this.$nextTick(() => {
+        this.$refs.dataTable.toggleRowSelection(val, true)
+      });
     },
     /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
     getList() {
@@ -230,10 +184,6 @@
       deptTreeSelect().then(response => {
         this.deptOptions = response.data;
       });
-    },
-    // 淇濆瓨閫変腑鐨勬暟鎹甶d,row-key灏辨槸瑕佹寚瀹氫竴涓猭ey鏍囪瘑杩欎竴琛岀殑鏁版嵁
-    getRowKey (row) {
-      return row.id
     },
     // 绛涢�夎妭鐐�
     filterNode(value, data) {
diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue
index baa1eae..9879bd8 100644
--- a/src/views/flowable/task/myProcess/detail/index.vue
+++ b/src/views/flowable/task/myProcess/detail/index.vue
@@ -9,17 +9,41 @@
       <el-tabs  tab-position="top" v-model="activeName" @tab-click="handleClick">
         <!--琛ㄥ崟淇℃伅-->
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
+          <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
           <el-col :span="16" :offset="4">
             <div v-if="formDataList && formDataList.length > 0">
-              <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp">
-                <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">褰撳墠闃舵锛�<span style="color: red">{{formDataObj.beforeNodeName}}</span></div>
-                <div v-else style="margin-bottom: 15px;color: #409eff">鍓嶇疆闃舵锛�<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div>
-                <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
-                  <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+              <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
+                <div v-if="formDataObj.current">
+                  <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div>
+                  <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
+                    <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                  </div>
+                  <div v-else>
+                    <el-alert
+                      title="褰撳墠鑺傜偣鏈粦瀹氳〃鍗�"
+                      type="info"
+                      :closable="false"
+                    >
+                    </el-alert>
+                  </div>
                 </div>
-                <div v-else>
+                <div v-else-if="formDataList.length > 1">
+                  <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div>
+                  <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
+                    <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                  </div>
+                  <div v-else>
+                    <el-alert
+                      title="鍓嶇疆鑺傜偣鏈粦瀹氳〃鍗�"
+                      type="info"
+                      :closable="false"
+                    >
+                    </el-alert>
+                  </div>
+                </div>
+                <div v-if="formDataList.length <= 1">
                   <el-alert
-                    title="鑺傜偣鏃犺〃鍗曟暟鎹�"
+                    title="涓嶅瓨鍦ㄥ墠缃妭鐐�"
                     type="info"
                     :closable="false"
                   >
@@ -27,22 +51,7 @@
                 </div>
               </div>
             </div>
-            <div v-else>
-              <el-alert
-                title="褰撳墠鑺傜偣鏃犺〃鍗曟暟鎹�"
-                type="info"
-                :closable="false"
-              >
-              </el-alert>
-              <el-alert
-                style="margin-top: 20px"
-                title="鍓嶇疆鑺傜偣鏃犺〃鍗曟暟鎹�"
-                type="info"
-                :closable="false"
-              >
-              </el-alert>
-            </div>
-         </el-col>
+          </el-col>
         </el-tab-pane>
         <!--娴佺▼娴佽浆璁板綍-->
         <el-tab-pane label="娴佽浆璁板綍" name="2">
diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue
index e87f061..1fdc23e 100644
--- a/src/views/flowable/task/myProcess/send/index.vue
+++ b/src/views/flowable/task/myProcess/send/index.vue
@@ -10,21 +10,56 @@
         <!--琛ㄥ崟淇℃伅-->
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
           <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
-          <el-col :span="16" :offset="4" v-if="formDataList && formDataList.length > 0">
-            <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
-<!--     鍓嶇疆鑺傜偣鍙┏鍥�         -->
-              <div v-if="!formDataObj.current" style="position: absolute; top: 4px; right: 4px">
-                <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button>
+          <el-col :span="16" :offset="4">
+            <div v-if="formDataList && formDataList.length > 0">
+              <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
+                <div v-if="formDataObj.current">
+                  <!--     褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔         -->
+                  <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;">
+                    <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button>
+                    <el-button size="small" type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button>
+                    <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</el-button>
+                  </div>
+                  <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div>
+                  <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
+                    <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                  </div>
+                  <div v-else>
+                    <el-alert
+                      title="褰撳墠鑺傜偣鏈粦瀹氳〃鍗�"
+                      type="info"
+                      :closable="false"
+                    >
+                    </el-alert>
+                  </div>
+                </div>
+                <div v-else-if="formDataList.length > 1">
+                  <!--     鍓嶇疆鑺傜偣鍙┏鍥�         -->
+                  <div style="position: absolute; top: 4px; right: 4px">
+                    <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button>
+                  </div>
+                  <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div>
+                  <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
+                    <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                  </div>
+                  <div v-else>
+                    <el-alert
+                      title="鍓嶇疆鑺傜偣鏈粦瀹氳〃鍗�"
+                      type="info"
+                      :closable="false"
+                    >
+                    </el-alert>
+                  </div>
+                </div>
+                <div v-if="formDataList.length <= 1">
+                  <el-alert
+                    title="涓嶅瓨鍦ㄥ墠缃妭鐐�"
+                    type="info"
+                    :closable="false"
+                  >
+                  </el-alert>
+                </div>
               </div>
-<!--     褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔         -->
-              <div v-else style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;">
-                <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button>
-                <el-button size="small" type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button>
-                <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</el-button>
-              </div>
-              <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div>
-              <div v-else style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div>
-              <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
             </div>
           </el-col>
         </el-tab-pane>
@@ -90,7 +125,7 @@
             </el-select>
           </el-form-item>
           <el-form-item v-if="delegationForm.peopleType === 'DEPT'" label="鍊欓�夐儴闂�" prop="targetId">
-            <MyDept ref="dept" :checkeds="delegationDeptSelect" :show="deptShow" @close="closeDept" @submit="getDeptSelect"/>
+            <MyDept ref="dept" :checkeds="delegationDeptSelect" :title="`閫夋嫨杞姙閮ㄩ棬`" :show="deptShow" @close="closeDept" @submit="getDeptSelect" :key="deptKey"/>
             <div style="display: flex;align-items: center">
               <div>
                 <el-tag v-for="dept in delegationDeptSelect" :key="dept.id + 'zxc'" type="info" closable @close="removeDept(dept)">{{dept.label}}</el-tag>
@@ -99,7 +134,7 @@
             </div>
           </el-form-item>
           <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"/>
+            <single-user ref="singleUser" :select-user="delegationForm.targetId" :title="`閫夋嫨杞姙鎺ユ敹浜哄憳(鍗曚汉)`" :show="singleUserShow" @close="closeSingleUser" @submit="getSingleUserSelect" :key="singleUserKey"/>
             <div style="display: flex;align-items: center">
               <div>
                 <el-tag v-for="user in delegationUserSelect" :key="user.userId + 'abc'" type="info" closable @close="removeSingleUser(user)">{{user.nickName}}</el-tag>
@@ -108,7 +143,7 @@
             </div>
           </el-form-item>
           <el-form-item v-if="delegationForm.peopleType === 'USER'" label="鍊欓�変汉鍛�" prop="targetId">
-            <mult-user ref="multUser" :select-user="delegationUserSelect" :show="multUserShow" @close="closeMultUser" @submit="getMultUserSelect"/>
+            <mult-user ref="multUser" :select-user="delegationUserSelect" :title="`閫夋嫨杞姙鎺ユ敹浜哄憳(鍙浜�)`" :show="multUserShow" @close="closeMultUser" @submit="getMultUserSelect" :key="multUserKey"/>
             <div style="display: flex;align-items: center">
               <div>
                 <el-tag v-for="user in delegationUserSelect" :key="user.userId + 'qwe'" type="info" closable @close="removeMultUser(user)">{{user.nickName}}</el-tag>
@@ -117,7 +152,7 @@
             </div>
           </el-form-item>
           <el-form-item v-if="delegationForm.peopleType === 'ROLE'" label="鍊欓�夎鑹�" prop="targetId">
-            <my-role ref="role" :select-values="delegationRoleSelect" :show="roleShow" @close="closeRole" @submit="getRoleSelect"/>
+            <my-role ref="role" :select-values="delegationRoleSelect" :title="`閫夋嫨杞姙瑙掕壊`" :show="roleShow" @close="closeRole" @submit="getRoleSelect" :key="roleKey"/>
             <div style="display: flex;align-items: center">
               <div>
                 <el-tag v-for="role in delegationRoleSelect" :key="role.roleId + 'rty'" type="info" closable @close="removeRole(role)">{{role.roleName}}</el-tag>
@@ -160,6 +195,10 @@
   props: {},
   data() {
     return {
+      roleKey: 'role',
+      deptKey: 'dept',
+      multUserKey: 0,
+      singleUserKey: 'single',
       projectName: '',
       flowName: '',
       roleShow: false, // 瑙掕壊缁勬樉绀�
@@ -306,6 +345,7 @@
       }
     },
     editDept() {
+      this.deptKey += '1'
       this.$nextTick(() => {
         this.$refs.dept.setCheckList(this.delegationDeptSelect)
       })
@@ -313,6 +353,7 @@
     },
     editSingleUser() {
       if (this.delegationUserSelect && this.delegationUserSelect.length > 0) {
+        this.singleUserKey += '1'
         this.$nextTick(() => {
           this.$refs.singleUser.setChecked(this.delegationUserSelect[0])
         })
@@ -321,6 +362,7 @@
     },
     editRole() {
       if (this.delegationRoleSelect && this.delegationRoleSelect.length > 0) {
+        this.roleKey += '1'
         this.$nextTick(() => {
           this.$refs.role.setChecked(this.delegationRoleSelect)
         })
@@ -329,6 +371,7 @@
     },
     editMultUser() {
       if (this.delegationForm.targetId) {
+        this.multUserKey += 1
         this.$nextTick(() => {
           this.$refs.multUser.setChecked(this.delegationUserSelect)
         })
@@ -343,6 +386,7 @@
         this.delegationDeptSelect = []
       }
       this.deptShow = false
+      this.deptKey += 1
     },
     getMultUserSelect(userList) {
       if (userList && userList.length > 0) {
@@ -353,6 +397,7 @@
         this.delegationUserSelect = []
       }
       this.multUserShow = false
+      this.multUserKey += 1
     },
     getRoleSelect(roleList) {
       if (roleList && roleList.length > 0) {
@@ -363,6 +408,7 @@
         this.delegationRoleSelect = []
       }
       this.roleShow = false
+      this.roleKey += '1'
     },
     getSingleUserSelect(user) {
       if (user) {
@@ -373,18 +419,23 @@
         this.delegationUserSelect = []
       }
       this.singleUserShow = false
+      this.singleUserKey += '1'
     },
     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
     },
     openDelegation(taskName) {
       this.delegationForm.taskName = taskName
@@ -417,14 +468,15 @@
         if (this.formDataList && this.formDataList.length > 0) {
           this.$nextTick(() => {
             this.formDataList.forEach((formDataObj, index) => {
-              console.log("琛ㄥ崟鏁版嵁鍒楄〃", formDataObj.formJson)
               let that = this
-              console.log(eval("that.$refs.form" +index)[0])
-              eval("that.$refs.form" +index)[0].setFormJson(formDataObj.formJsonObj.formJson);
-
-              eval("that.$refs.form" +index)[0].setFormData(formDataObj.formJsonObj);
+              if (formDataObj.formJsonObj) {
+                eval("that.$refs.form" +index)[0].setFormJson(formDataObj.formJsonObj.formJson);
+                eval("that.$refs.form" +index)[0].setFormData(formDataObj.formJsonObj);
+              }
             })
-            this.formJson = this.formDataList[0].formJsonObj.formJson
+            if (this.formDataList[0].formJsonObj) {
+              this.formJson = this.formDataList[0].formJsonObj.formJson
+            }
           })
 
         }

--
Gitblit v1.8.0