Browse Source

离线模式RFID解除绑定

master
z_yu 3 years ago
parent
commit
d27383e2d6
  1. 265
      src/views/archivesManage/lendManage/mixins/lending.js

265
src/views/archivesManage/lendManage/mixins/lending.js

@ -57,13 +57,13 @@ export const lendingCrud = {
devId: '', devId: '',
devIp: '', devIp: '',
timer: null, timer: null,
flagNum: 0,
// flagNum: 0,
unbindWarnLoading: false, unbindWarnLoading: false,
tipIndex: 0, tipIndex: 0,
ase: 0, ase: 0,
tagType: null,
arcId: null,
aseTid: null,
tagType: null, // 不需要
arcId: null, // 不需要
aseTid: null, // 不需要
isFlag: false, isFlag: false,
isKey: false isKey: false
} }
@ -165,66 +165,82 @@ export const lendingCrud = {
}, },
// 写epc // 写epc
async writeEPC() { async writeEPC() {
if (this.isFlag) {
this.tagType = this.tipTable[this.tipIndex].tagType
this.arcId = this.tipTable[this.tipIndex].archivesId
this.aseTid = this.tipTable[this.tipIndex].tid
}
this.tagType = this.tipTable[this.tipIndex].tagType
this.arcId = this.tipTable[this.tipIndex].archivesId
this.aseTid = this.tipTable[this.tipIndex].tid
this.flagNum++ this.flagNum++
this.btnDisabled = true
this.unbindWarnLoading = true
// this.btnDisabled = true
// this.unbindWarnLoading = true
return new Promise(async(resolve, reject) => { return new Promise(async(resolve, reject) => {
const params = { op: 'RFID_WriteEPC', sDevID: this.devId, EAS: this.ase, Type: this.tagType, Code: this.arcId, Tid: this.aseTid, ip: this.devIp } const params = { op: 'RFID_WriteEPC', sDevID: this.devId, EAS: this.ase, Type: this.tagType, Code: this.arcId, Tid: this.aseTid, ip: this.devIp }
let writeRes = await RFID.writeEPC(params)
writeRes = JSON.parse(writeRes)
if (writeRes.code === '0') {
this.isKey = !this.isKey
// 判断是解除还是恢复
if (this.ase === 0) {
this.tipTable[this.tipIndex].warnState = '已解除'
} else {
this.tipTable[this.tipIndex].warnState = '已恢复'
const MAX_NUM_RETRIES = 3
for (let i = 0; i < MAX_NUM_RETRIES; i++) {
let writeRes = await RFID.writeEPC(params)
console.log('writeRes', writeRes)
writeRes = JSON.parse(writeRes)
if (writeRes.code === '0') {
this.isKey = !this.isKey
// 判断是解除还是恢复
if (this.ase === 0) {
this.tipTable[this.tipIndex].warnState = '已解除'
// Vue.set(this.tipTable[this.tipIndex], 'warnState', '已解除')
// console.log(this.tipTable[this.tipIndex])
// Vue.set(this.tipTable, this.tipIndex, this.tipTable[this.tipIndex])
// this.tipTable.splice(this.tipIndex, 0)
} else {
this.tipTable[this.tipIndex].warnState = '已恢复'
}
break
} }
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(() => {
resolve(this.writeEPC())
}, 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)
}
console.log(params)
// 全部成功之后确认借出 / 归还
this.confirmLendOrReturn(this.ase, params, this.lendSelections)
} else {
this.alarmErrorTip()
}
}, 4000)
if (i === 3) {
if (this.ase === 0) {
this.tipTable[this.tipIndex].warnState = '解除失败'
} else {
this.tipTable[this.tipIndex].warnState = '恢复失败'
}
resolve()
} }
// resolve()
} else if (writeRes.code === '-1') {
this.releaseAlarmErrorHandle(resolve, '标签损坏或丢失,需要用户自主去解除或恢复电子标签绑定')
// reject()
} else if (writeRes.code === '-1000') {
this.releaseAlarmErrorHandle(resolve, '读写器超时未响应')
// reject()
} }
resolve()
// 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(() => {
// resolve(this.writeEPC())
// }, 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)
// }
// console.log(params)
// // 全部成功之后确认借出 / 归还
// this.confirmLendOrReturn(this.ase, params, this.lendSelections)
// } else {
// this.alarmErrorTip()
// }
// }, 4000)
// }
// resolve()
// } else if (writeRes.code === '-1') {
// this.releaseAlarmErrorHandle(resolve, '标签损坏或丢失,需要用户自主去解除或恢复电子标签绑定')
// // reject()
// } else if (writeRes.code === '-1000') {
// this.releaseAlarmErrorHandle(resolve, '读写器超时未响应')
// // reject()
// }
}) })
}, },
async getDevId() { async getDevId() {
@ -243,33 +259,30 @@ export const lendingCrud = {
} }
}) })
}, },
readEpc(param) {
readEpc(devParam, tipTableIndex) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
RFID.readEpc(param).then(res => {
RFID.readEpc(devParam).then(res => {
res = JSON.parse(res) res = JSON.parse(res)
if (res.code && res.code === '0') { if (res.code && res.code === '0') {
this.$message.success('已放入标签')
// 判断table内的标签和桌面读取标签比较 // 判断table内的标签和桌面读取标签比较
this.tipTable.map((item, index) => {
res.data.map((item1, index1) => {
if (item.tid === item1.tid) {
this.isFlag = true
console.log('index', index)
this.tipIndex = index
resolve(this.writeEPC())
} else {
console.log('index2', index)
this.isFlag = false
this.$message.error('请注意,未读到正确的档案标签')
}
})
})
if (res.data.find((item) => {
return this.tipTable[tipTableIndex].tid === item.tid
})) {
this.isFlag = true
// console.log('index', index)
this.tipIndex = tipTableIndex
resolve(this.writeEPC())
} else {
// 没有读取到标签数量加1
this.isKey = !this.isKey
this.tipTable[tipTableIndex].warnState = '未读取到该标签'
resolve()
}
} else if (res.code && res.code === '-2') { } else if (res.code && res.code === '-2') {
this.$message.error('未读取到标签,请重新放入') this.$message.error('未读取到标签,请重新放入')
clearTimeout(this.timer) clearTimeout(this.timer)
this.timer = setTimeout(() => { this.timer = setTimeout(() => {
resolve(this.readEpc(param))
resolve(this.readEpc(devParam, tipTableIndex))
}, 2000) }, 2000)
} else { } else {
this.$message.error('读取标签失败') this.$message.error('读取标签失败')
@ -279,13 +292,35 @@ export const lendingCrud = {
}) })
}, },
async opened(ase) { async opened(ase) {
console.log(11111)
this.btnDisabled = true
this.ase = ase this.ase = ase
const devInfo = await this.getDevId() const devInfo = await this.getDevId()
this.devId = devInfo.deviceId this.devId = devInfo.deviceId
this.devIp = devInfo.deviceIp + ':' + devInfo.devicePort this.devIp = devInfo.deviceIp + ':' + devInfo.devicePort
await this.tryConnect({ op: 'RFID_CheckStatus', sDevID: devInfo.deviceId, ip: this.devIp }) await this.tryConnect({ op: 'RFID_CheckStatus', sDevID: devInfo.deviceId, ip: this.devIp })
await this.readEpc({ op: 'RFID_ReadEpc', sDevID: devInfo.deviceId, ip: this.devIp })
// await this.writeEPC(ase)
for (let tipTableIndex = 0; tipTableIndex < this.tipTable.length; tipTableIndex++) {
console.log('tipTableIndex', tipTableIndex)
if (this.tipTable[tipTableIndex].warnState !== '已解除' && this.tipTable[tipTableIndex].warnState !== '已恢复' && this.tipTable[tipTableIndex].warnState !== '解除失败' && this.tipTable[tipTableIndex].warnState !== '恢复失败') {
await this.readEpc({ op: 'RFID_ReadEpc', sDevID: devInfo.deviceId, ip: this.devIp }, tipTableIndex)
}
}
if (this.tipTable.filter((item) => { return item.warnState === '未读取到该标签' }).length > 0) {
this.btnDisabled = false
this.unbindWarnLoading = false
} else if (this.tipTable.filter((item) => { return item.warnState === '解除失败' || item.warnState === '恢复失败' }).length > 0) {
this.btnDisabled = true
this.unbindWarnLoading = false
if (this.ase === 0) {
this.$message.error('借阅成功n条数据' + ' ' + '借阅失败' + this.lendSelections.length + '条数据')
} else {
this.$message.error('归还成功n条数据' + ' ' + '归还失败' + this.lendSelections.length + '条数据')
}
} else {
this.btnDisabled = false
this.unbindWarnLoading = false
this.$message.success('解绑/恢复成功n条数据')
}
}, },
async checkStatus(param) { async checkStatus(param) {
return RFID.checkStatus(param).then((res) => { return RFID.checkStatus(param).then((res) => {
@ -309,13 +344,19 @@ export const lendingCrud = {
for (let i = 0; i < MAX_NUM_RETRIES; i++) { for (let i = 0; i < MAX_NUM_RETRIES; i++) {
try { try {
res = await this.checkStatus(param) res = await this.checkStatus(param)
console.log(2222)
break break
} catch (e) { } catch (e) {
err = e err = e
this.$message.error('连接失败,请检查网络') this.$message.error('连接失败,请检查网络')
} }
} }
if (res) return res
if (res) {
console.log(3333)
return res
}
this.btnDisabled = false
this.unbindWarnLoading = false
throw err throw err
}, },
// 只要有一条未解除/恢复成功即errorTip // 只要有一条未解除/恢复成功即errorTip
@ -329,39 +370,39 @@ export const lendingCrud = {
this.crud.refresh() this.crud.refresh()
}, },
// 写epc不成功时的操作提示 -1 / -1000 // 写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(() => {
resolve(this.writeEPC())
}, 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)
}
},
// 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(() => {
// resolve(this.writeEPC())
// }, 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)
// }
// },
// 导出接口调用 // 导出接口调用
downloadApi() { downloadApi() {
console.log(this.selections) console.log(this.selections)

Loading…
Cancel
Save