licp
2024-05-16 32a532b0141e4425a47db2a19514db923c05fbc2
人员管理第三方f管理添加人员
已修改2个文件
95 ■■■■■ 文件已修改
src/assets/api/controller.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/person-manage.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -283,4 +283,5 @@
const companies = {
  selectCompaniesList: "/companies/selectCompaniesList", //获取人事系统组织
  selectSimpleList: "/companies/selectSimpleList", //获取人事系统组织下的人员
  addPersonUser: "/companies/addPersonUser", //获取人事系统组织下的人员
}
src/components/view/person-manage.vue
@@ -184,7 +184,7 @@
          :componentData="componentData" :key="upIndex" />
      </div>
    </div>
    <el-dialog title="架构新增" :visible.sync="addDia" width="400px">
    <el-dialog title="架构新增" :visible.sync="addDia0" width="400px">
      <div class="body">
        <el-row style="line-height: 50px;">
          <el-col :span="6" style="text-align: right;">
@@ -196,7 +196,7 @@
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia = false">取 消</el-button>
        <el-button @click="addDia0 = false">取 消</el-button>
        <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
      </span>
    </el-dialog>
@@ -208,11 +208,25 @@
              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>
@@ -343,12 +357,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 +380,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]
@@ -461,7 +483,7 @@
        this.addPower = add
      },
      handleAdd() {
        if (this.addOb.fatherId) {
        if (this.addOb.fatherId||this.addOb.name=='全部') {
          this.addDia0 = true;
        } else {
          this.$message.error('请选择一个架构层级')
@@ -498,6 +520,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 +591,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 +606,62 @@
      },
      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.refresh()
          this.multipleSelection = []
          this.$refs.personTable.clearSelection()
          this.addthirdParty = false
        }).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
          }
        })
      }
    }
  }