feat:打印消息缓存
This commit is contained in:
@@ -12,7 +12,7 @@ export default {
|
||||
clearInterval(printer.intervalID)
|
||||
printer.socketTask.close()
|
||||
}
|
||||
}, 20000)
|
||||
}, 10000)
|
||||
},
|
||||
//开始心跳
|
||||
heartbeatStart(printer) {
|
||||
@@ -44,7 +44,7 @@ export default {
|
||||
printer = {
|
||||
isOpen: false,
|
||||
isOpening: false, //打开中
|
||||
socketTask: false,
|
||||
socketTask: null,
|
||||
timeoutID: -1,
|
||||
intervalID: -1,
|
||||
reConnectCount: 0, //重新连接次数
|
||||
@@ -77,7 +77,6 @@ export default {
|
||||
complete: () => {}
|
||||
})
|
||||
if (!socketTask) return
|
||||
// console.log(socketTask);
|
||||
printer.socketTask = socketTask
|
||||
this.printMap.set(printServerIp, printer)
|
||||
|
||||
@@ -89,6 +88,18 @@ export default {
|
||||
uni.$emit('printStatus', {})
|
||||
console.log(socketTask)
|
||||
console.log(printServerIp + ': WebSocket连接成功。。。')
|
||||
|
||||
// 发送 pending 消息
|
||||
if (printer.pendingMessages?.length) {
|
||||
printer.pendingMessages.forEach(msg => {
|
||||
try {
|
||||
printer.socketTask.send({ data: msg })
|
||||
} catch (e) {
|
||||
console.error('发送 pending 消息失败:', e)
|
||||
}
|
||||
})
|
||||
printer.pendingMessages = []
|
||||
}
|
||||
this.heartbeatStart(printer)
|
||||
this.checkConnect(printer) //检测连接是否正常
|
||||
})
|
||||
@@ -104,7 +115,7 @@ export default {
|
||||
socketTask.onClose(res => {
|
||||
printer.isOpen = false
|
||||
printer.isOpening = false
|
||||
printer.socketTask = false
|
||||
printer.socketTask = null
|
||||
uni.$emit('printStatus', {})
|
||||
// console.log(printer.printServerIp + ": WebSocket连接关闭。。。");
|
||||
this.heartbeatClear(printer)
|
||||
@@ -119,7 +130,7 @@ export default {
|
||||
socketTask.onError(res => {
|
||||
printer.isOpen = false
|
||||
printer.isOpening = false
|
||||
printer.socketTask = false
|
||||
printer.socketTask = null
|
||||
uni.$emit('printStatus', {})
|
||||
// console.log(printServerIp + ": WebSocket连接失败。。。");
|
||||
// console.log(res);
|
||||
@@ -175,20 +186,38 @@ export default {
|
||||
send(printServerIp, data) {
|
||||
let printer = this.printMap.get(printServerIp)
|
||||
if (!printer) {
|
||||
//不存在则打开
|
||||
// 创建新 printer 对象(尚未连接)
|
||||
printer = {
|
||||
isOpen: false,
|
||||
isOpening: false,
|
||||
socketTask: null,
|
||||
timeoutID: -1,
|
||||
intervalID: -1,
|
||||
reConnectCount: 0, //重新连接次数
|
||||
printServerIp: printServerIp,
|
||||
lastReceiveMessageTime: new Date().getTime(),
|
||||
pendingMessages: [data]
|
||||
}
|
||||
this.printMap.set(printServerIp, printer)
|
||||
this.open(printServerIp)
|
||||
return
|
||||
}
|
||||
if (printer?.socketTask) {
|
||||
if (printer.isOpen && printer.socketTask?.readyState === 1) {
|
||||
printer.socketTask.send({
|
||||
data: data
|
||||
})
|
||||
} else {
|
||||
// 连接中 or 已断开 → 缓存
|
||||
printer.pendingMessages = printer.pendingMessages || []
|
||||
printer.pendingMessages.push(data)
|
||||
}
|
||||
},
|
||||
//获取打印模板并执行打印
|
||||
getPrintTemplateAndPrint(businessSubId) {
|
||||
getPrintTemplateAndPrint(businessSubId, callback) {
|
||||
getBusinessSubSample(businessSubId)
|
||||
.then(res => {
|
||||
this.print(res)
|
||||
.then(async res => {
|
||||
await this.print(res)
|
||||
callback && callback()
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
@@ -197,7 +226,7 @@ export default {
|
||||
//调用send方法执行打印
|
||||
print(businessSubData) {
|
||||
const { printTemplate } = businessSubData
|
||||
if (!printTemplate) return uni.showToast({ title: '样品未配置打印模板' })
|
||||
if (!printTemplate) return uni.showToast({ title: '样品未配置打印模板', icon: 'error' })
|
||||
const me = this
|
||||
me.getReportData(printTemplate, function (res) {
|
||||
const reportData = {
|
||||
|
||||
Reference in New Issue
Block a user