MrShi
2025-04-11 3a45da15c947c2d478a44a51bd0f926647b1b841
company/src/components/enterprise/selectEmployees.vue
@@ -6,71 +6,210 @@
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-input v-model="val" placeholder="查询员工姓名" @keypress.enter.native="getList" style="margin-bottom: 15px;"></el-input>
      <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="list"
            :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="date"
                prop="name"
                label="姓名">
            </el-table-column>
            <el-table-column
                prop="name"
                prop="idcardNo"
                label="身份证号">
            </el-table-column>
            <el-table-column
                prop="address"
                prop="duName"
                label="派遣单位">
            </el-table-column>
            <el-table-column
                prop="address"
                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 {
                val: '',
                list: []
            }
        },
        created () {
            this.config({
                api: '/business/dispatchUnit',
                'field.id': 'id'
            })
        },
        methods: {
            open (title) {
                this.title = title
                this.visible = true
                this.getList()
            },
            getList() {
                findListByDTO({
                    name: this.val
                }).then(res => {
                    this.list = []
                })
            }
        }
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>