|  |  | 
 |  |  |         :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-change="handleSelectionChange" | 
 |  |  |             selection-change1="handleSelectionChange" | 
 |  |  |             style="width: 100%"> | 
 |  |  |             <el-table-column | 
 |  |  | <!--            <el-table-column | 
 |  |  |                 type="selection" | 
 |  |  |                 width="55"> | 
 |  |  |             </el-table-column> | 
 |  |  |             </el-table-column>--> | 
 |  |  |             <el-table-column label="序号" width="80px"> | 
 |  |  |                 <template slot-scope="scope"> | 
 |  |  |                     <span>{{scope.$index + 1}}</span> | 
 |  |  | 
 |  |  |                 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 { | 
 |  |  |                 type: '', | 
 |  |  |                 val: '', | 
 |  |  |                 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.oldList = obj.arr | 
 |  |  |                 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.seleData.length === 0) { | 
 |  |  |                     this.$message.warning('至少选择一项内容') | 
 |  |  |                     return | 
 |  |  |                 } | 
 |  |  |                 for (let i = 0; i < this.seleData.length; i++) { | 
 |  |  |                     for (let a = 0; a < this.oldList.length; a++) { | 
 |  |  |                         if (this.seleData[i].name === this.oldList[a].memberName || this.seleData[i].idCard === this.oldList[a].idcardNo) { | 
 |  |  |                             this.$message.warning(`[${this.seleData[i].name}]员工重复`) | 
 |  |  |                             return | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 this.seleData.forEach(item => { | 
 |  |  |                     item.idCard = item.idcardNo | 
 |  |  |                     item.memberName = item.name | 
 |  |  |                     item.memberId = item.id | 
 |  |  |                     if (this.notInInsuranceApplyId || this.type == 1) { | 
 |  |  |                         item.workTypeName = '' | 
 |  |  |                         item.worktypeId = '' | 
 |  |  |                         item.duId = '' | 
 |  |  |                         item.duName = '' | 
 |  |  |                     } | 
 |  |  |                     item.fee = this.price | 
 |  |  |                 }) | 
 |  |  |                 this.$emit('result', this.seleData) | 
 |  |  |                 this.visible = false | 
 |  |  |             }, | 
 |  |  |             handleSelectionChange (e) { | 
 |  |  |                 this.seleData = e | 
 |  |  |             }, | 
 |  |  |             getList() { | 
 |  |  |                 findListByDTO({ | 
 |  |  |                     name: this.val, | 
 |  |  |                     insuranceApplyId: this.insuranceApplyId, | 
 |  |  |                     notInInsuranceApplyId: this.notInInsuranceApplyId, | 
 |  |  |                     validTime: this.validTime | 
 |  |  |                 }).then(res => { | 
 |  |  |                     res.forEach(item => { | 
 |  |  |                         item.fee = '' | 
 |  |  |                     }) | 
 |  |  |                     this.list = res | 
 |  |  |                 }) | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 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> |