licp
2024-05-22 eec42a81e93c206b025c4b21812979c68c41ff2f
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>
@@ -220,9 +234,9 @@
              </el-table-column>
              <el-table-column prop="name" label="员工姓名">
              </el-table-column>
              <el-table-column prop="isLive" label="是否同步" width="100">
              <el-table-column prop="isLive" label="已存在" width="80" align="center">
                <template slot-scope="scope">
                  <el-tag type="success" v-if="scope.row.isLive === 1">是</el-tag>
                  <el-tag type="success" effect="dark" v-if="scope.row.isLive === 1">√</el-tag>
                </template>
              </el-table-column>
            </el-table>
@@ -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) {
        if (ob.children.length === 0) {
        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
          }
        })
      }
    }
  }