|  |  |  | 
|---|
|  |  |  | :confirm-working="isWorking" | 
|---|
|  |  |  | @confirm="confirm" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <p class="tip-warn" v-if="type ==1"><i class="el-icon-warning"></i>提醒:<br> | 
|---|
|  |  |  | <span style="">加保人员名单中,人员姓名、身份证号、派遣单位和工种信息均为必填项,备注信息可为空,请录入合法数据。</span> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <p class="tip-warn"  v-if="type !=1"><i class="el-icon-warning"></i>提醒:<br> | 
|---|
|  |  |  | <span style="">减保人员名单中,人员姓名、身份证号均为必填项,备注信息可为空,请录入合法数据。</span> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <el-form class="demo-form-inline"> | 
|---|
|  |  |  | <el-form-item label="上传名单" required> | 
|---|
|  |  |  | <div style="width: 100%;display: flex;align-items: center;"> | 
|---|
|  |  |  | <el-button type="primary" @click="clickRef">点击上传</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="clickRef" :loading="importing">点击上传</el-button> | 
|---|
|  |  |  | <el-button type="text" @click="exportTemplate">名单模板.EXCEL</el-button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" /> | 
|---|
|  |  |  | <input type="file"   @cancel="importing=false"  style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" /> | 
|---|
|  |  |  | <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 { importExcel } from '@/api/business/member' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'importEmployees', | 
|---|
|  |  |  | extends: BaseOpera, | 
|---|
|  |  |  | components: { GlobalWindow }, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | list: [], | 
|---|
|  |  |  | price: 0, | 
|---|
|  |  |  | addList: [], | 
|---|
|  |  |  | fileName: '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | open (title, obj) { | 
|---|
|  |  |  | this.title = title | 
|---|
|  |  |  | this.addList = [] | 
|---|
|  |  |  | this.fileName = '' | 
|---|
|  |  |  | this.visible = true | 
|---|
|  |  |  | this.list = obj.arr | 
|---|
|  |  |  | this.price = obj.price | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 导出模板 | 
|---|
|  |  |  | exportTemplate () { | 
|---|
|  |  |  | window.open(process.env.VUE_APP_USERTEMPLATE_URL) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clickRef () { | 
|---|
|  |  |  | this.$refs.fileExcel.click() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | result (e) { | 
|---|
|  |  |  | const data = new FormData() | 
|---|
|  |  |  | data.append('file', e.target.files[0]) | 
|---|
|  |  |  | importExcel(data) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | res.forEach(item => { | 
|---|
|  |  |  | item.memberName = item.name | 
|---|
|  |  |  | item.fee = '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.addList = res | 
|---|
|  |  |  | this.fileName = e.target.files[0].name | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(err => { | 
|---|
|  |  |  | this.$message.error(err) | 
|---|
|  |  |  | this.fileName = '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.$refs.fileExcel.value = null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm () { | 
|---|
|  |  |  | for (let i = 0; i < this.addList.length; i++) { | 
|---|
|  |  |  | for (let a = 0; a < this.list.length; a++) { | 
|---|
|  |  |  | if (this.addList[i].name === this.list[a].memberName || this.addList[i].idCard === this.list[a].idcardNo) { | 
|---|
|  |  |  | this.$message.warning(`[${this.addList[i].name}]员工重复`) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.addList.forEach(item => { | 
|---|
|  |  |  | item.fee = this.price || '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.$emit('result', this.addList) | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | import BaseOpera from '@/components/base/BaseOpera' | 
|---|
|  |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
|---|
|  |  |  | import { importExcel,importReuduceExcel } from '@/api/business/member' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'importEmployees', | 
|---|
|  |  |  | extends: BaseOpera, | 
|---|
|  |  |  | components: { GlobalWindow }, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | importing:false, | 
|---|
|  |  |  | confirming:false, | 
|---|
|  |  |  | list: [], | 
|---|
|  |  |  | price: 0, | 
|---|
|  |  |  | type: null, | 
|---|
|  |  |  | solutionId: null, | 
|---|
|  |  |  | applyId: null, | 
|---|
|  |  |  | addList: [], | 
|---|
|  |  |  | delList: [], | 
|---|
|  |  |  | fileName: '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | open (title, obj) { | 
|---|
|  |  |  | this.title = title | 
|---|
|  |  |  | this.addList = [] | 
|---|
|  |  |  | this.delList = [] | 
|---|
|  |  |  | this.fileName = '' | 
|---|
|  |  |  | this.type = obj.type | 
|---|
|  |  |  | this.visible = true | 
|---|
|  |  |  | this.solutionId = obj.solutionId | 
|---|
|  |  |  | this.applyId = obj.insuranceApplyId | 
|---|
|  |  |  | this.list = obj.arr | 
|---|
|  |  |  | this.price = obj.price | 
|---|
|  |  |  | this.importing= false | 
|---|
|  |  |  | this.confirming= false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 导出模板 | 
|---|
|  |  |  | exportTemplate () { | 
|---|
|  |  |  | // 投保申请 | 
|---|
|  |  |  | if (this.type === 1) { | 
|---|
|  |  |  | window.open('/template/personnel_add.xlsx') | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | window.open('/template/personnel_reduce.xlsx') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clickRef () { | 
|---|
|  |  |  | if(this.importing){ | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.importing=true | 
|---|
|  |  |  | this.$refs.fileExcel.click() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | result(e){ | 
|---|
|  |  |  | if (this.type === 1) { | 
|---|
|  |  |  | this.result1(e) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.result2(e) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | result1 (e) { | 
|---|
|  |  |  | this.addList = [] | 
|---|
|  |  |  | const data = new FormData() | 
|---|
|  |  |  | data.append('file', e.target.files[0]) | 
|---|
|  |  |  | data.append('solutionId', this.solutionId) | 
|---|
|  |  |  | importExcel(data) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | res.forEach(item => { | 
|---|
|  |  |  | item.memberName = item.name | 
|---|
|  |  |  | item.fee = '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.addList = res | 
|---|
|  |  |  | this.fileName = e.target.files[0].name | 
|---|
|  |  |  | this.importing =false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(err => { | 
|---|
|  |  |  | this.importing =false | 
|---|
|  |  |  | this.$message.error(err) | 
|---|
|  |  |  | this.fileName = '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.importing =false | 
|---|
|  |  |  | this.$refs.fileExcel.value = null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | result2 (e) { | 
|---|
|  |  |  | this.delList = [] | 
|---|
|  |  |  | const data = new FormData() | 
|---|
|  |  |  | data.append('file', e.target.files[0]) | 
|---|
|  |  |  | data.append('applyId', this.applyId) | 
|---|
|  |  |  | importReuduceExcel(data) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | res.forEach(item => { | 
|---|
|  |  |  | item.memberName = item.name | 
|---|
|  |  |  | item.reducePrice = item.fee | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.delList = res | 
|---|
|  |  |  | this.fileName = e.target.files[0].name | 
|---|
|  |  |  | this.importing =false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(err => { | 
|---|
|  |  |  | this.importing = false | 
|---|
|  |  |  | this.$message.error(err) | 
|---|
|  |  |  | this.fileName = '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.importing =false | 
|---|
|  |  |  | this.$refs.fileExcel.value = null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm () { | 
|---|
|  |  |  | if (this.type === 1) { | 
|---|
|  |  |  | this.confirm1() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.confirm2() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm1 () { | 
|---|
|  |  |  | if(this.addList==null || this.addList.length ==0){ | 
|---|
|  |  |  | this.$message.error('导入人员名单为空,请先上传人员名单') | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(this.confirming){ | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.confirming = true | 
|---|
|  |  |  | for (let i = 0; i < this.addList.length; i++) { | 
|---|
|  |  |  | for (let a = 0; a < this.list.length; a++) { | 
|---|
|  |  |  | if (this.addList[i].idCard === this.list[a].idcardNo) { | 
|---|
|  |  |  | this.$message.warning(`【${this.addList[i].name}】员工身份证【${this.addList[i].idCard}】重复`) | 
|---|
|  |  |  | this.confirming = false | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.addList[i].idCard === this.list[a].idCard) { | 
|---|
|  |  |  | this.$message.warning(`【${this.addList[i].name}】员工身份证【${this.addList[i].idCard}】重复`) | 
|---|
|  |  |  | this.confirming = false | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.addList.forEach(item => { | 
|---|
|  |  |  | item.fee = this.price | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | this.$emit('result', this.addList) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm2() { | 
|---|
|  |  |  | if(this.delList==null || this.delList.length ==0){ | 
|---|
|  |  |  | this.$message.error('导入人员名单为空,请先上传人员名单') | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(this.confirming){ | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.confirming = true | 
|---|
|  |  |  | for (let i = 0; i < this.delList.length; i++) { | 
|---|
|  |  |  | for (let a = 0; a < this.list.length; a++) { | 
|---|
|  |  |  | if (this.delList[i].idCard === this.list[a].idcardNo) { | 
|---|
|  |  |  | this.$message.warning(`【${this.delList[i].name}】员工身份证【${this.delList[i].idCard}】重复`) | 
|---|
|  |  |  | this.confirming = false | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.delList[i].idCard === this.list[a].idCard) { | 
|---|
|  |  |  | this.$message.warning(`【${this.delList[i].name}】员工身份证【${this.delList[i].idCard}】重复`) | 
|---|
|  |  |  | this.confirming = false | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | this.$emit('result', this.delList) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|