import { FetchInitBorrowRule, FetchBillBorrowConfirm, FetchArchivesReturnConfirm } from '@/api/archivesManage/lendManage' import { FetchFindAllSubsetById } from '@/api/archivesConfig/dictDetail' import RFID from '@/api/RFID/RFID' export const lendingCrud = { filters: { borrowStatus(val) { switch (val) { case 1: return '待登记' case 2: return '待借阅' case 3: return '待归还' case 4: return '已归还' case 5: return '逾期' } }, tidType(val) { switch (val) { case 1: return '档案' case 2: return '档案盒' case 3: return '层架位' } } }, // 组件共用属性 data() { return { lineStateVal: '', lendQuery: {}, lendSelect: '', options: [], departOptions: [], idTypeOptions: [ { value: '身份证', label: '身份证' }, { value: '军官证', label: '军官证' }, { value: '士官证', label: '士官证' }, { value: '文职人员证', label: '文职人员证' } ], // epc btnDisabled: false, devId: 'D001', timer: null, flagNum: 0, unbindWarnLoading: false, tipIndex: 0, ase: 0 } }, // 组件挂载时的共用方法 mounted() { if (this.queryOption) { this.lendSelect = this.queryOption[0].value } }, // 组件共用方法 methods: { borrowStyle(val) { switch (val) { case '逾期': return 'cell-lend have-lend' case '已归还': return 'cell-lend has-return' default: return 'cell-lend no-lend ' } }, // 获取部门list getDepart() { FetchFindAllSubsetById({ id: 'BA3910917510B181160A9A' }).then(data => { this.departOptions = data }) }, selectionChangeHandler(val) { this.selections = val }, // 档案详情 handleDbClick(row) { this.$nextTick(() => { const archiveDetailDom = this.$refs.archiveDetailDom archiveDetailDom.detailVisible = true archiveDetailDom.rowData = row archiveDetailDom.getBillDetails() }) }, // 判断当前借阅规则 getBorrowRule() { FetchInitBorrowRule().then(data => { if (data) { this.lineStateVal = data === 'true' ? 'online' : 'offline' } }) }, // 借出确认 / 归还确认 confirmLendOrReturn(type, params, selections) { if (type === 0) { FetchBillBorrowConfirm(params).then(data => { if (data === selections.length) { this.$message.success('借阅成功 ' + data + ' 条数据' + ' ' + '借阅失败0条数据') this.releaseAlarmVisible = false this.crud.refresh() } }) } else { FetchArchivesReturnConfirm(params).then(data => { if (data === selections.length) { this.$message.success('归还成功 ' + data + ' 条数据' + ' ' + '归还失败0条数据') this.releaseAlarmVisible = false this.crud.refresh() } }) } }, // 解除/恢复中关闭icon不可操作 handleCancle() { this.releaseAlarmVisible = !!this.btnDisabled }, // 解除/恢复 状态style cellWarn({ row, columnIndex }) { if ((row.warnState === '未解除' || row.warnState === '未恢复') && columnIndex === 4) { return 'no-clear' } else if ((row.warnState === '已解除' || row.warnState === '已恢复') && columnIndex === 4) { return 'have-clear' } else if ((row.warnState === '解除失败' || row.warnState === '恢复失败') && columnIndex === 4) { return 'fail-clear' } }, // 写epc async writeEPC(ase) { this.flagNum++ this.ase = ase this.btnDisabled = true this.unbindWarnLoading = true return new Promise(async(resolve, reject) => { const params = { op: 'RFID_WriteEPC', sDevID: this.devId, EAS: this.ase, Type: this.tipTable[this.tipIndex].tagType, Code: this.tipTable[this.tipIndex].archivesId, Tid: this.tipTable[this.tipIndex].tid } let writeRes = await RFID.writeEPC(params) writeRes = JSON.parse(writeRes) if (writeRes.code === '0') { if (this.ase === 0) { this.tipTable[this.tipIndex].warnState = '已解除' } else { this.tipTable[this.tipIndex].warnState = '已恢复' } this.btnDisabled = false this.unbindWarnLoading = false this.tipIndex = this.tipIndex + 1 if (this.tipIndex !== this.tipTable.length) { this.flagNum = 0 this.btnDisabled = true this.unbindWarnLoading = true clearTimeout(this.timer) this.timer = setTimeout(() => { if (this.ase === 0) { resolve(this.writeEPC(0)) } else { resolve(this.writeEPC(1)) } }, 2000) } else { clearTimeout(this.timer) setTimeout(() => { const index = this.tipTable.findIndex((item) => item.warnState === '解除失败' || item.warnState === '恢复失败') if (index === -1) { let params if (this.ase === 0) { params = this.lendSelections.map(item => item.orderNo) } else { params = this.lendSelections.map(item => item.id) } this.confirmLendOrReturn(this.ase, params, this.lendSelections) } else { this.alarmErrorTip() } }, 2000) } // resolve() } else if (writeRes.code === '-1') { this.releaseAlarmErrorHandle(resolve, '标签损坏或丢失,需要用户自主去解除或恢复电子标签绑定') // reject() } else if (writeRes.code === '-1000') { this.releaseAlarmErrorHandle(resolve, '读写器超时未响应') // reject() } }) }, // 只要有一条未解除/恢复成功即errorTip alarmErrorTip() { if (this.ase === 0) { this.$message.error('借阅成功0条数据' + ' ' + '借阅失败' + this.lendSelections.length + '条数据') } else { this.$message.error('归还成功0条数据' + ' ' + '归还失败' + this.lendSelections.length + '条数据') } this.releaseAlarmVisible = false this.crud.refresh() }, // 写epc不成功时的操作提示 -1 / -1000 releaseAlarmErrorHandle(resolve, message) { if (this.flagNum >= 3) { if (this.ase === 0) { this.tipTable[this.tipIndex].warnState = '解除失败' } else { this.tipTable[this.tipIndex].warnState = '恢复失败' } this.btnDisabled = false this.unbindWarnLoading = false this.tipIndex = this.tipIndex + 1 this.flagNum = 0 this.$message({ message: message, type: 'error' }) } if (this.tipIndex !== this.tipTable.length) { this.btnDisabled = true this.unbindWarnLoading = true clearTimeout(this.timer) this.timer = setTimeout(() => { if (this.ase === 0) { resolve(this.writeEPC(0)) } else { resolve(this.writeEPC(1)) } }, 2000) } else { clearTimeout(this.timer) this.timer = setTimeout(() => { const findErrorArray = this.tipTable.map((item) => item.warnState === '解除失败' || item.warnState === '恢复失败') if (findErrorArray.length === this.tipTable.length) { this.alarmErrorTip() } }, 2000) } } } }