Parcourir la source

评估-项目组成员

lizhenhao il y a 2 ans
Parent
commit
57aab40e4d

+ 7 - 6
src/views/modules/program/registered/ProjectForm.vue

@@ -13,7 +13,7 @@
           <el-tabs v-model="activeName" type="border-card" @tab-click="tabHandleClick">
             <el-tab-pane label="项目登记详情" name="programDetail">
               <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
-                       label-width="220px" @submit.native.prevent>
+                       label-width="180px" @submit.native.prevent>
                 <el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
                 <el-row  :gutter="15">
                   <el-col :span="24">
@@ -536,7 +536,7 @@
                     @cell-click=""
                     @edit-closed=""
                     highlight-current-row
-                    :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+                    :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
                   >
                     <vxe-table-column field="contacts" title="联系人" :edit-render="{}">
                       <template v-slot:edit="scope">
@@ -545,7 +545,7 @@
                     </vxe-table-column>
                     <vxe-table-column field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
                       <template v-slot:edit="scope">
-                        <vxe-select v-model="scope.row.clientType"  transfer>
+                        <vxe-select :disabled="method==='view'" v-model="scope.row.clientType"  transfer>
                           <vxe-option
                             v-for="item in clientTypes"
                             :key="item.value"
@@ -603,7 +603,7 @@
                     @cell-click=""
                     @edit-closed=""
                     highlight-current-row
-                    :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+                    :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
                   >
                     <vxe-table-column field="name" title="姓名" :edit-render="{}">
                       <template v-slot:edit="scope">
@@ -613,6 +613,7 @@
                     <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}">
                       <template v-slot:edit="scope">
                         <vxe-input
+                          :disabled="method==='view'"
                           v-model="scope.row.workHours"
                           type="float"
                           digits="1"
@@ -623,7 +624,7 @@
                     </vxe-table-column>
                     <vxe-table-column field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
                       <template v-slot:edit="scope">
-                        <vxe-select v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
+                        <vxe-select :disabled="method==='view'" v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
                           <vxe-option
                             v-for="item in $dictUtils.getDictList('program_registered_member_type')"
                             :key="item.value"
@@ -635,7 +636,7 @@
                     </vxe-table-column>
                     <vxe-table-column field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
                       <template v-slot:edit="scope">
-                        <vxe-select v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
+                        <vxe-select :disabled="method==='view'" v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
                           <vxe-option
                             v-for="item in $dictUtils.getDictList('program_registered_member_position')"
                             :key="item.value"

+ 77 - 21
src/views/modules/program/registered/ProjectFormUpdate.vue

@@ -9,7 +9,7 @@
       @keyup.enter.native=""
       :visible.sync="visible">
       <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
-               label-width="220px" @submit.native.prevent>
+               label-width="180px" @submit.native.prevent>
         <el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
         <el-row  :gutter="15">
           <el-col :span="24">
@@ -530,14 +530,14 @@
             @cell-click=""
             @edit-closed=""
             highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+            :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
           >
-            <vxe-table-column field="contacts" title="联系人" :edit-render="{}">
+            <vxe-table-column field="contacts" title="联系人" :edit-render="{}" align="center">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.contacts" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
+            <vxe-table-column field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}" align="center">
               <template v-slot:edit="scope">
                 <vxe-select v-model="scope.row.clientType"  transfer>
                   <vxe-option
@@ -549,27 +549,27 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
+            <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}" align="center">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.linkMobilePhoneFirst" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
+            <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}" align="center">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.linkMobilePhoneSecoed" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="job" title="职位" :edit-render="{}">
+            <vxe-table-column field="job" title="职位" :edit-render="{}" align="center">
               <template v-slot:edit="scope">
                 <el-input v-model="scope.row.job" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="remarks" title="备注" :edit-render="{}">
+            <vxe-table-column field="remarks" title="备注" :edit-render="{}" align="center">
               <template v-slot:edit="scope">
                 <el-input v-model="scope.row.remarks" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column title="操作" width="100">
+            <vxe-table-column title="操作" width="100" align="center">
               <template v-slot="scope">
                 <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'client')">删除</el-button>
               </template>
@@ -594,17 +594,23 @@
             class="vxe-table-element"
             :data="inputForm.members"
             style="margin-left: 5em"
+            :key="memberKey"
             @cell-click=""
             @edit-closed=""
             highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+            :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: false, icon: '#'}"
           >
-            <vxe-table-column field="name" title="姓名" :edit-render="{}">
+            <vxe-table-column field="name"  title="姓名" :edit-render="{name: '$input'}" align="center">
               <template v-slot:edit="scope">
-                <el-input v-model="scope.row.name" ></el-input>
+                <vxe-input v-model="scope.row.name" :disabled="commonJS.isNotEmpty(scope.row.userId)"  style="width: 100%" class="my-search">
+                  <template #suffix>
+<!--                    <i class="el-icon-search" @click="openUserSearch(scope.$rowIndex)"></i>-->
+                    <vxe-button  @click="openUserSearch(scope.$rowIndex)" type="text" content="" icon="el-icon-search" ></vxe-button>
+                  </template>
+                </vxe-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}">
+            <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}" align="center">
               <template v-slot:edit="scope">
                 <vxe-input
                   v-model="scope.row.workHours"
@@ -615,7 +621,7 @@
                 </vxe-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
+            <vxe-table-column align="center" field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
               <template v-slot:edit="scope">
                 <vxe-select v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
                   <vxe-option
@@ -627,7 +633,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
+            <vxe-table-column align="center" field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
               <template v-slot:edit="scope">
                 <vxe-select v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
                   <vxe-option
@@ -639,7 +645,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column title="操作" width="100">
+            <vxe-table-column title="操作" width="100" align="center">
               <template v-slot="scope">
                 <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'member')">删除</el-button>
               </template>
@@ -657,6 +663,7 @@
     <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
     <WorkClientForm  ref="workClientForm" @getWorkClient="getWorkClient"></WorkClientForm>
     <ContactForm  ref="contactForm" @getContact="getContact"></ContactForm>
+    <UserSelectDialog ref="userSelectDialog" @doSubmit="getMember" :limit="1"></UserSelectDialog>
   </div>
 </template>
 
@@ -670,6 +677,7 @@
   import ProgramProjectListInfoService from '@/api/program/ProgramProjectListInfoService'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import XEUtils from 'xe-utils'
+  import UserSelectDialog from '@/components/userSelect/UserSelectDialog'
   export default {
     data () {
       return {
@@ -742,9 +750,11 @@
           clientList: [] // 项目直接对接联系人
         },
         clientTypes: [
-          {value: 1, label: '委托人'},
-          {value: 2, label: '项目对接人'}
-        ]
+          {value: '1', label: '委托人'},
+          {value: '2', label: '项目对接人'}
+        ],
+        tableIndex: '',
+        memberKey: ''
       }
     },
     programTypeDictService: null,
@@ -759,7 +769,8 @@
       UpLoadComponent,
       WorkClientForm,
       ContactForm,
-      SelectTree
+      SelectTree,
+      UserSelectDialog
     },
     methods: {
       init (method, id) {
@@ -1109,12 +1120,57 @@
           })
         ]
         return footerData
+      },
+      // 打开用户选择组件
+      openUserSearch (index) {
+        this.tableIndex = index
+        this.$refs.userSelectDialog.init()
+      },
+      // 用户选择组件回显
+      getMember (member) {
+        if (this.commonJS.isNotEmpty(member)) {
+          if (this.commonJS.isNotEmpty(this.inputForm.members)) {
+            this.inputForm.members.forEach((item, index) => {
+              if (index !== this.tableIndex) {
+                if (item.userId === member[0].id) {
+                  this.$message.error('列表中已存在此人员,请重新选择')
+                  throw new Error('列表中已存在此人员,请重新选择')
+                }
+              }
+            })
+          }
+          this.inputForm.members[this.tableIndex].userId = member[0].id
+          this.inputForm.members[this.tableIndex].name = member[0].name
+          this.memberKey = Math.random()
+        }
       }
     }
   }
 </script>
 <style scoped>
-  /deep/ .el-input-number .el-input__inner {
+  /deep/  .el-input-number .el-input__inner {
     text-align: left;
   }
+  /*/deep/  .vxe-input .vxe-input--suffix {*/
+  /*  right: 0.09em;*/
+  /*}*/
+  /*/deep/  .my-search.vxe-input {*/
+  /*  height: 34px;*/
+  /*  width: 300px;*/
+  /*}*/
+  /*/deep/  .my-search.vxe-input .vxe-input--suffix {*/
+  /*  width: 50px;*/
+  /*  height: 32px;*/
+  /*  top: 1px;*/
+  /*  text-align: center;*/
+  /*  border-left: 1px solid #dcdfe6;*/
+  /*  background-color: #f5f7fa;*/
+  /*  cursor: pointer;*/
+  /*}*/
+  /*/deep/  .my-search.vxe-input .vxe-input--inner {*/
+  /*  padding-right: 72px;*/
+  /*  border: 1px solid #dcdfe6;*/
+  /*}*/
 </style>
+
+

+ 78 - 26
src/views/modules/program/registered/RegisItemForm.vue

@@ -1,6 +1,6 @@
 <template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
   <div>
-      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="formReadOnly"
+      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status === 'audit' || status === 'taskFormDetail'"
                label-width="220px" @submit.native.prevent>
         <el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
         <el-row  :gutter="15">
@@ -549,7 +549,7 @@
 <!--        </el-row>-->
         <el-divider content-position="left"><i class="el-icon-document"></i>
           委托方联系人和项目直接对接人
-          <el-button style="margin-left: 20px" type="primary" :disabled="formReadOnly" size="mini" @click="openContactForm('0')" plain>
+          <el-button style="margin-left: 20px" type="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" size="mini" @click="openContactForm('0')" plain>
             新增
           </el-button>
         </el-divider>
@@ -563,18 +563,19 @@
             style="margin-left: 5em"
             :key="clientTableKey"
             @cell-click=""
+            :edit-rules="validRulesClient"
             @edit-closed=""
             highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+            :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
           >
-            <vxe-table-column field="contacts" title="联系人" :edit-render="{}">
+            <vxe-table-column field="contacts" title="联系人" :edit-render="{}"  align="center">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.contacts" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
+            <vxe-table-column  align="center" field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
               <template v-slot:edit="scope">
-                <vxe-select v-model="scope.row.clientType"  transfer>
+                <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.clientType"  transfer>
                   <vxe-option
                     v-for="item in clientTypes"
                     :key="item.value"
@@ -584,27 +585,27 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
+            <vxe-table-column  align="center" field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.linkMobilePhoneFirst" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
+            <vxe-table-column  align="center" field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.linkMobilePhoneSecoed" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="job" title="职位" :edit-render="{}">
+            <vxe-table-column  align="center" field="job" title="职位" :edit-render="{}">
               <template v-slot:edit="scope">
                 <el-input v-model="scope.row.job" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="remarks" title="备注" :edit-render="{}">
+            <vxe-table-column  align="center" field="remarks" title="备注" :edit-render="{}">
               <template v-slot:edit="scope">
                 <el-input v-model="scope.row.remarks" ></el-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column title="操作" width="100">
+            <vxe-table-column  align="center" title="操作" width="100">
               <template v-slot="scope">
                 <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'client')">删除</el-button>
               </template>
@@ -614,7 +615,7 @@
 
         <el-divider content-position="left"><i class="el-icon-document"></i>
           项目组成员
-          <el-button style="margin-left: 20px" type="primary" :disabled="formReadOnly" size="mini" @click="insertEvent('member')" plain>
+          <el-button style="margin-left: 20px" type="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" size="mini" @click="insertEvent('member')" plain>
             新增
           </el-button>
         </el-divider>
@@ -626,21 +627,28 @@
             :footer-method="footerMethod"
             ref="memberTable"
             class="vxe-table-element"
+            :key="memberKey"
             :data="inputForm.members"
             style="margin-left: 5em"
             @cell-click=""
+            :edit-rules="validRulesMember"
             @edit-closed=""
             highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+            :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear:  status === 'audit' || status === 'taskFormDetail' ? true : false, icon: '#'}"
           >
-            <vxe-table-column field="name" title="姓名" :edit-render="{}">
+            <vxe-table-column field="name" title="姓名" :edit-render="{name: '$input'}" align="center">
               <template v-slot:edit="scope">
-                <el-input v-model="scope.row.name" ></el-input>
+                <vxe-input v-model="scope.row.name" :disabled="commonJS.isNotEmpty(scope.row.userId) || status === 'audit' || status === 'taskFormDetail'"  style="width: 100%">
+                  <template #suffix>
+                    <vxe-button :disabled="status === 'audit' || status === 'taskFormDetail'" @click="openUserSearch(scope.$rowIndex)" type="text" content="" icon="el-icon-search" ></vxe-button>
+                  </template>
+                </vxe-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}">
+            <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}"  align="center">
               <template v-slot:edit="scope">
                 <vxe-input
+                  :disabled="status === 'audit' || status === 'taskFormDetail'"
                   v-model="scope.row.workHours"
                   type="float"
                   digits="1"
@@ -649,9 +657,9 @@
                 </vxe-input>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
+            <vxe-table-column  align="center" field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
               <template v-slot:edit="scope">
-                <vxe-select v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
+                <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
                   <vxe-option
                     v-for="item in $dictUtils.getDictList('program_registered_member_type')"
                     :key="item.value"
@@ -661,9 +669,9 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
+            <vxe-table-column align="center" field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
               <template v-slot:edit="scope">
-                <vxe-select v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
+                <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
                   <vxe-option
                     v-for="item in $dictUtils.getDictList('program_registered_member_position')"
                     :key="item.value"
@@ -673,7 +681,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column title="操作" width="100">
+            <vxe-table-column align="center" title="操作" width="100">
               <template v-slot="scope">
                 <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'member')">删除</el-button>
               </template>
@@ -686,6 +694,8 @@
       <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
       <WorkClientForm  ref="workClientForm" @getWorkClient="getWorkClient"></WorkClientForm>
       <ContactForm  ref="contactForm" @getContact="getContact"></ContactForm>
+    <UserSelectDialog ref="userSelectDialog" @doSubmit="getMember" :limit="1"></UserSelectDialog>
+
   </div>
 </template>
 
@@ -699,6 +709,8 @@
   import ProgramProjectListInfoService from '@/api/program/ProgramProjectListInfoService'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import XEUtils from 'xe-utils'
+  import UserSelectDialog from '@/components/userSelect/UserSelectDialog'
+
   export default {
     props: {
       businessId: {
@@ -708,6 +720,10 @@
       formReadOnly: {
         type: Boolean,
         default: false
+      },
+      status: {
+        type: String,
+        default: ''
       }
     },
     data () {
@@ -783,11 +799,23 @@
           clientList: [] // 项目直接对接联系人
         },
         clientTypes: [
-          {value: 1, label: '委托人'},
-          {value: 2, label: '项目对接人'}
+          {value: '1', label: '委托人'},
+          {value: '2', label: '项目对接人'}
         ],
         keyWatch: '',
-        clientTableKey: 'default'
+        clientTableKey: 'default',
+        tableIndex: '',
+        memberKey: '',
+        validRulesMember: {
+          name: [
+            {required: true, message: '姓名不能为空'}
+          ]
+        },
+        validRulesClient: {
+          clientType: [
+            {required: true, message: '人员类型不能为空'}
+          ]
+        }
       }
     },
     programTypeDictService: null,
@@ -830,7 +858,8 @@
       UpLoadComponent,
       WorkClientForm,
       ContactForm,
-      SelectTree
+      SelectTree,
+      UserSelectDialog
     },
     methods: {
       getKeyWatch (keyWatch) {
@@ -953,7 +982,7 @@
               this.inputForm.links = []
               this.inputForm.clientList = []
             }
-            if (this.formReadOnly === true) {
+            if (this.status === 'audit' || this.status === 'taskFormDetail') {
               method = 'view'
             }
 
@@ -1474,6 +1503,29 @@
       },
       clearPropertyHolder () {
         this.inputForm.propertyHolder = ''
+      },
+      // 打开用户选择组件
+      openUserSearch (index) {
+        this.tableIndex = index
+        this.$refs.userSelectDialog.init()
+      },
+      // 用户选择组件回显
+      getMember (member) {
+        if (this.commonJS.isNotEmpty(member)) {
+          if (this.commonJS.isNotEmpty(this.inputForm.members)) {
+            this.inputForm.members.forEach((item, index) => {
+              if (index !== this.tableIndex) {
+                if (item.userId === member[0].id) {
+                  this.$message.error('列表中已存在此人员,请重新选择')
+                  throw new Error('列表中已存在此人员,请重新选择')
+                }
+              }
+            })
+          }
+          this.inputForm.members[this.tableIndex].userId = member[0].id
+          this.inputForm.members[this.tableIndex].name = member[0].name
+          this.memberKey = Math.random()
+        }
       }
     }
   }