<template> 
 | 
    <GlobalWindow 
 | 
        :title="title" 
 | 
        width="100%" 
 | 
        :visible.sync="visible" 
 | 
        :confirm-working="isWorking" 
 | 
        @confirm="confirm" 
 | 
    > 
 | 
      <div style="display: inline-block;padding: 20px 10px;color: red"   class="el-upload__tip" > 
 | 
       操作提示: 请在下面搜索框内输入员工姓名或身份证号进行员工信息搜索,并选择员工进行操作 
 | 
      </div> 
 | 
      <el-select 
 | 
          value-key="id" 
 | 
          v-model="seleData" 
 | 
          filterable 
 | 
          multiple 
 | 
          remote 
 | 
          style="margin-bottom: 15px;width: 100%;margin-right: 10px" 
 | 
          placeholder="请输入员工姓名或身份证号进行选择" 
 | 
          :remote-method="searchSelData" 
 | 
          :loading="loading"> 
 | 
        <el-option 
 | 
            v-for="item in memberList" 
 | 
            :key="item.id" 
 | 
            :label="item.name+' ' +(item.idcardNo||'')" 
 | 
            :value="item"> 
 | 
        </el-option> 
 | 
      </el-select> 
 | 
<!-- 
 | 
        <el-input v-model="val" placeholder="请输入员工姓名后,点击搜索按钮或者按下enter键进行查询" @keypress.enter.native="getList" style="margin-bottom: 15px;width: 50%;margin-right: 10px"></el-input> 
 | 
--> 
 | 
<!--        <el-button type="primary" @click="getList" style="width: 100px;">搜索</el-button>--> 
 | 
        <el-table 
 | 
            :data="seleData" 
 | 
            border 
 | 
            selection-change1="handleSelectionChange" 
 | 
            style="width: 100%"> 
 | 
<!--            <el-table-column 
 | 
                type="selection" 
 | 
                width="55"> 
 | 
            </el-table-column>--> 
 | 
            <el-table-column label="序号" width="80px"> 
 | 
                <template slot-scope="scope"> 
 | 
                    <span>{{scope.$index + 1}}</span> 
 | 
                </template> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                prop="name" 
 | 
                label="姓名"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                prop="idcardNo" 
 | 
                label="身份证号"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                prop="duName" 
 | 
                label="派遣单位"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                prop="workTypeName" 
 | 
                label="所属工种"> 
 | 
            </el-table-column> 
 | 
        </el-table> 
 | 
      <template  v-slot:footer> 
 | 
        <el-button type="primary"  :loading="confirming" @click="confirm">确定</el-button> 
 | 
        <el-button @click="visible=false">返回</el-button> 
 | 
      </template> 
 | 
    </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import { findListByDTO } from '@/api/business/member' 
 | 
export default { 
 | 
  name: 'selectEmployees', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data () { 
 | 
    return { 
 | 
      confirming:false, 
 | 
      type: '', 
 | 
      val: '', 
 | 
      memberIds:[], 
 | 
      loading:false, 
 | 
      memberList:[], 
 | 
      list: [], 
 | 
      price: '', 
 | 
      insuranceApplyId: '', 
 | 
      notInInsuranceApplyId: '', 
 | 
      validTime: '', 
 | 
      seleData: [], 
 | 
      oldList: [] 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    this.config({ 
 | 
      api: '/business/dispatchUnit', 
 | 
      'field.id': 'id' 
 | 
    }) 
 | 
  }, 
 | 
  methods: { 
 | 
    open (title, obj) { 
 | 
      this.insuranceApplyId = '' 
 | 
      this.notInInsuranceApplyId = '' 
 | 
      this.val = '' 
 | 
      this.price = obj.price 
 | 
      this.confirming=false 
 | 
      this.oldList = obj.arr 
 | 
      // this.seleData = obj.arr || [] 
 | 
      this.memberIds=[] 
 | 
      this.seleData=[] 
 | 
      this.memberList=[] 
 | 
      this.confirming=false 
 | 
      if (obj.type) { 
 | 
        this.type = obj.type 
 | 
      } 
 | 
      this.list = [] 
 | 
      if (obj.insuranceApplyId) { 
 | 
        this.insuranceApplyId = obj.insuranceApplyId 
 | 
      } 
 | 
      if (obj.notInInsuranceApplyId) { 
 | 
        this.notInInsuranceApplyId = obj.notInInsuranceApplyId 
 | 
      } 
 | 
      if (obj.validTime) { 
 | 
        this.validTime = obj.validTime 
 | 
      } 
 | 
      this.title = title 
 | 
      this.visible = true 
 | 
      // this.getList() 
 | 
    }, 
 | 
    confirm () { 
 | 
      if(this.confirming){ 
 | 
        return 
 | 
      } 
 | 
      this.confirming=true 
 | 
      if (this.seleData.length === 0) { 
 | 
        this.$message.warning('至少搜索选择一位员工进行操作') 
 | 
        this.confirming=false 
 | 
        return 
 | 
      } 
 | 
      for (let i = 0; i < this.seleData.length; i++) { 
 | 
        for (let a = 0; a < this.oldList.length; a++) { 
 | 
          // this.seleData[i].name === this.oldList[a].memberName || 
 | 
          if (this.seleData[i].idcardNo === this.oldList[a].idCard) { 
 | 
            this.$message.warning(`[${this.seleData[i].name}]员工重复`) 
 | 
            this.confirming=false 
 | 
            return 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
      this.seleData.forEach(item => { 
 | 
        item.idCard = item.idcardNo 
 | 
        item.memberName = item.name 
 | 
        item.memberId = item.id 
 | 
        item.reducePrice = item.fee 
 | 
        if (this.notInInsuranceApplyId || this.type == 1) { 
 | 
          item.workTypeName = '' 
 | 
          item.worktypeId = '' 
 | 
          item.duId = '' 
 | 
          item.duName = '' 
 | 
        } 
 | 
        item.fee = this.price 
 | 
      }) 
 | 
  
 | 
      console.log(this.oldList) 
 | 
      console.log(this.seleData) 
 | 
      this.confirming=false 
 | 
      this.$emit('result', this.seleData) 
 | 
      this.seleData=[] 
 | 
      this.visible = false 
 | 
    }, 
 | 
    handleSelectionChange (e) { 
 | 
      this.seleData = e 
 | 
    }, 
 | 
    getList () { 
 | 
      if(this.memberIds ==null || !this.memberIds.length){ 
 | 
        this.$message.error('请搜索框检查人员信息后进行搜索!') 
 | 
        return; 
 | 
      } 
 | 
      findListByDTO({ 
 | 
        name: this.val, 
 | 
        subtractMemberIds:this.memberIds, 
 | 
        insuranceApplyId: this.insuranceApplyId, 
 | 
        notInInsuranceApplyId: this.notInInsuranceApplyId, 
 | 
        validTime: this.validTime 
 | 
      }).then(res => { 
 | 
        res.forEach(item => { 
 | 
          item.reducePrice = item.fee 
 | 
          item.fee = '' 
 | 
        }) 
 | 
        this.list = res 
 | 
      }) 
 | 
    }, 
 | 
    searchSelData (query) { 
 | 
      if (query !== '') { 
 | 
        this.loading = true; 
 | 
        findListByDTO({ 
 | 
          name: query, 
 | 
          insuranceApplyId: this.insuranceApplyId, 
 | 
          notInInsuranceApplyId: this.notInInsuranceApplyId, 
 | 
          validTime: this.validTime 
 | 
        }).then(res => { 
 | 
          this.loading = false 
 | 
          this.memberList = res 
 | 
        }).finally(() => { 
 | 
          this.loading = false 
 | 
        }) 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
  
 | 
</style> 
 |