UNPKG

logwire-wms-pda-ui

Version:

运匠科技wms-PDA基础组件库

180 lines (151 loc) 5.01 kB
/* * 打印服务 * @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 }) }) } }