From d8bb0e96fbbb763c623255629d623e7308ef5dee Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期三, 22 五月 2024 16:15:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/view/person-manage.vue |  105 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 97 insertions(+), 8 deletions(-)

diff --git a/src/components/view/person-manage.vue b/src/components/view/person-manage.vue
index 62b7845..43f52d3 100644
--- a/src/components/view/person-manage.vue
+++ b/src/components/view/person-manage.vue
@@ -174,8 +174,8 @@
           <el-button size="small" @click="refresh()">閲� 缃�</el-button>
           <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
         </div>
-        <div class="search_thing">
-          <el-button size="small" type="primary" @click="openthirdParty">鑾峰彇涓夋柟浜哄憳</el-button>
+        <div class="search_thing" style="display: flex;justify-content: right;margin-right: 10px;">
+          <el-button size="small" type="primary" @click="openthirdParty" v-if="addUserPower">鑾峰彇涓夋柟浜哄憳</el-button>
           <el-button size="small" type="primary" @click="opeaAdd" v-if="addPower">鏂板鐢ㄦ埛</el-button>
         </div>
       </div>
@@ -204,15 +204,29 @@
       <div class="body">
         <el-row>
           <el-col :span="9" style="height: 70vh;overflow: hidden;">
-            <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;"
+            <el-input placeholder="杈撳叆鍏抽敭瀛楁悳绱�" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;"
               clearable @blur="searchFilter2" @clear="searchFilter2" @keyup.enter.native="searchFilter2()">
             </el-input>
             <el-tree :data="datathirdParty" node-key="id" :props="defaultProps" @node-click="nodeClick2"
-              style="height: calc(100% - 42px);" :filter-node-method="filterNode2" ref="tree2" highlight-current>
+              style="height: calc(100% - 42px);"
+              @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2" highlight-current>
             </el-tree>
           </el-col>
           <el-col :span="15" style="height: 70vh;padding-left: 8px;">
-            <el-table height="70vh" border stripe :data="personList" v-loading="personLoad" ref="personTable"
+            <div class="search_thing" style="width: 360px;margin-bottom: 10px;">
+              <div class="search_label" style="width: 140px;">鍛樺伐鍙�/鍛樺伐濮撳悕锛�</div>
+              <div class="search_input">
+                <el-input
+                size="small"
+                placeholder="璇疯緭鍏ュ伐鍙�/鍛樺伐濮撳悕"
+                @clear="searchPerson"
+                clearable
+                v-model="userSearch2"
+                @keyup.enter.native="searchPerson()">
+                <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer;" @click="searchPerson"></i></el-input>
+                </div>
+            </div>
+            <el-table height="67vh" border stripe :data="personList" v-loading="personLoad" ref="personTable"
               @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="50">
               </el-table-column>
@@ -330,6 +344,7 @@
         upIndex: 0,
         addDia: false,
         addPower: true,
+        addUserPower: true,
         delStandardTree: true,
         addDia0: false,
         addOb: {
@@ -343,12 +358,19 @@
         expandedKeys: [],
         addLoad: false,
         personList: [],
+        personListCopy:[],
         treeLoad: false,
         personLoad: false,
         search2: '',
-        multipleSelection: []
+        multipleSelection: [],
+        companiesList:[],
+        currentCompaniesList: [],
+        userSearch2:''
       }
     },
+    // watch: {
+    //   userSearch2(val){}
+    // },
     mounted() {
       this.selectTreeList()
       this.selectRole()
@@ -359,6 +381,7 @@
       openthirdParty() {
         this.addthirdParty = true;
         this.$axios.get(this.$api.companies.selectCompaniesList).then(res => {
+          this.companiesList = JSON.parse(JSON.stringify(res.data));
           this.datathirdParty = []
           for (let ai = 0; ai < res.data.length; ai++) {
             let a = res.data[ai]
@@ -442,6 +465,7 @@
         let power = JSON.parse(sessionStorage.getItem('power'))
         let up = false
         let add = false
+        let addUserPower = false
         let delStandardTree = false
         for (var i = 0; i < power.length; i++) {
           if (power[i].menuMethod == 'updateUser') {
@@ -453,15 +477,19 @@
           if (power[i].menuMethod == 'delDepartment') {
             delStandardTree = true
           }
+          if (power[i].menuMethod == 'selectCompaniesList') {
+            addUserPower = true
+          }
         }
         if (!up) {
           this.componentData.do.splice(0, 1)
         }
         this.delStandardTree = delStandardTree
         this.addPower = add
+        this.addUserPower = addUserPower
       },
       handleAdd() {
-        if (this.addOb.fatherId) {
+        if (this.addOb.fatherId||this.addOb.name=='鍏ㄩ儴') {
           this.addDia0 = true;
         } else {
           this.$message.error('璇烽�夋嫨涓�涓灦鏋勫眰绾�')
@@ -498,6 +526,9 @@
       },
       nodeOpen(data, node, el) {
         $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
+      },
+      nodeOpen0(data, node, el){
+        this.currentCompaniesList[node.level-1] = data.id
       },
       nodeClose(data, node, el) {
         $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
@@ -566,11 +597,13 @@
         })
       },
       nodeClick2(ob, node, el) {
+        this.currentCompaniesList[node.level-1] = ob.id
         if (ob.id !== 'SC21') {
           this.personLoad = true
           this.$axios.post(this.$api.companies.selectSimpleList, {
             companyId: ob.id
           }).then(res => {
+            this.personListCopy = JSON.parse(JSON.stringify(res.data))
             this.personList = res.data
             this.personLoad = false
             this.$refs.personTable.doLayout()
@@ -579,9 +612,65 @@
       },
       handleSelectionChange(val) {
         this.multipleSelection = val;
-        console.log(this.multipleSelection);
       },
       addUser2(){
+        if(this.multipleSelection.length === 0){
+          return this.$message.error('璇烽�夋嫨浜哄憳')
+        }
+        if(this.currentCompaniesList.length === 0){
+          return this.$message.error('璇烽�夋嫨缁勭粐')
+        }
+        for (let index = this.currentCompaniesList.length-1; index >1; index--) {
+          let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index])
+          if(!obj){
+            this.currentCompaniesList.splice(index,1)
+          }else{
+            return
+          }
+        }
+        let arr = []
+        this.currentCompaniesList.forEach(b=>{
+          /* this.companiesList.forEach(a=>{
+            if(a.companyId===b){
+              console.log(a)
+            }
+          }) */
+          let obj = this.companiesList.find(a=>a.companyId==b)
+          arr.push(obj)
+          })
+        this.addLoad = true
+        this.$axios.post(this.$api.companies.addPersonUser, {
+          company: arr,
+          person: this.multipleSelection
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+        }).then(res => {
+          if (res.code === 201) {
+            this.addLoad = false
+            return
+          }
+          this.$message.success('鎿嶄綔鎴愬姛')
+          this.multipleSelection = []
+          this.$refs.personTable.clearSelection()
+          this.addthirdParty = false
+          this.addLoad = false
+          this.personList = []
+          this.userSearch2 = ''
+          this.refresh()
+        }).catch(e => {
+          this.addthirdParty = false
+          this.addLoad = false
+        })
+      },
+      searchPerson(){
+        let arr = JSON.parse(JSON.stringify(this.personListCopy))
+        this.personList = arr.filter(a=>{
+          if(a.employeeID.includes(this.userSearch2)||a.name.includes(this.userSearch2)){
+            return true
+          }
+        })
       }
     }
   }

--
Gitblit v1.9.3