logwire-wms-pda-ui
Version:
运匠科技wms-PDA基础组件库
180 lines (151 loc) • 5.01 kB
JavaScript
/*
* 打印服务
* @author 张文
* @date 2022-02-15
* */
import {AppPower} from "./AppPower";
import {lwToast} from "./Toast";
import {print} from "../api/common/Print";
import {lwCloseLoading, lwShowLoading} from "../components/ui/Loading";
import {lwShowErrorMsg} from "../components/ui/ErrorMsg";
import {Language} from "./Language";
export const Print = {
/**
* 设置当前已经配置了的打印机列表
* @author 张文
* @param {Array} list 当前配置的打印机列表
* */
set(list) {
window.lwWindowGlobalData.set('printList', list)
},
/**
* 获取当前已经配置了的打印机列表
* @author 张文
* @return {Array} 返回当前储存的全部打印机列表
* */
get() {
return window.lwWindowGlobalData.get('printList')
},
/**
* 调用服务端接口获取当前已经配置了的打印机列表,并更新当前储存的数据
* @author 张文
* @return {Promise} 返回获取到的打印机数据
* */
asyncGet() {
return new Promise((PR, PE) => {
print.getList(false).then(res=>{
let printList = res ? res.map(item => {
const devices=item.devices[0]
return {
// 模板code
templateCode:item.code,
// 模板id
templateId:item.id,
// 模板名称
templateName:item.name,
// 打印机id
printId:devices.id,
// 打印机类型 PRINT_SERVICE-服务打印机,BLUETOOTH-蓝牙打印机
printType:devices.type,
// 打印机类型
printCode:devices.code,
// 打印机名字
printName:devices.name,
}
}):[]
this.set(printList)
PR(this.get())
}).catch(err => PE(err))
})
},
/**
* 校验打印配置是否正确
* @author 张文
* @param {String} templateCode 需要判断的模板数据Code
* @param {String} msg 描述文字,默认“当前”
* @return {Object} 返回判断后的结果{success:'成功-true,失败-false',printData:{'包含打印模板和打印机类型的数据'}}
* */
test(templateCode, msg = '当前') {
for (let i of this.get()) {
// 判断当前模板是否配置,没配置就弹出对话框提示去配置
if (i.templateCode.trim() === templateCode.trim()) {
return {success: true, printData: i}
}
}
lwShowErrorMsg({message: msg + '打印模板未配置,请前往"打印设置"配置打印模板'})
return {success: false, printData: {}}
},
/**
* 调用蓝牙打印服务,完成后更新打印状态
* @author 张文
* @date 2022-02-15
* @param {Array} dataList 后端返回的全部数据
* @return {Promise} {success:'成功-true,失败-false',message:失败原因}}
* */
bluetoothPrint(dataList) {
return new Promise(function (RES, ERR) {
if (!dataList || !dataList.length) {
const msg = Language.get('wms_project.pda.utils.print.error', '打印数据有误')
lwShowErrorMsg(msg)
console.error('打印数据有误!!!')
ERR({success: false, message: msg})
return
}
lwShowLoading( Language.get('wms_project.pda.utils.print.printing', '正在打印') + '...')
const ids = []
dataList.forEach(item => {
if (item.bluetooth) {
try {
AppPower.bluePrint(item.template.code, item.data)
} catch (err) {
console.error('调用打印服务失败,错误信息:')
console.error(err)
}
ids.push(item.id)
}
})
lwCloseLoading()
// 如果没有蓝牙打印就不需要更新状态
if (!ids.length) {
lwToast.success({
message: Language.get('wms_project.pda.utils.print.success', '打印成功'),
duration: 1000
})
RES({success: true})
}
// 更新打印状态
this.asyncPrintTypeUpdate(ids).then(() => {
RES({success: true})
}).catch(() => {
ERR({
success: false,
message: Language.get('wms_project.pda.utils.print.updateDataError','打印数据更新接口调用失败')
})
})
})
},
/**
* 更新打印状态
* @author 张文
* @date 2022-02-15
* @param {Array} taskIdList 任务id的集合
* @return {Promise}
* */
asyncPrintTypeUpdate(taskIdList) {
let obj = {}
if (taskIdList.length > 1) {
obj.taskIds = taskIdList
} else {
obj.taskId = taskIdList[0]
}
print.update({
printed: true,
...obj
}).then(()=>{
lwToast.success({
message: Language.get('wms_project.pda.utils.print.success', '打印成功'),
duration: 1000
})
})
}
}