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