UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

135 lines (115 loc) 3.96 kB
import { message } from "antd" import { isMobile } from "./helper" import { Shell } from "./shell" import { last } from "lodash" // 从epc中获取 sku god_id 并格式化 const transportEpcList = (epcList: string[]) => epcList.map(_ => { const sku = _.slice(0, 8) const god_id = _.slice(0, 6) return { epc: _, sku: sku.endsWith('FF') ? god_id : sku, god_id: god_id } }) // 获取改写状态为的方法 const getModifyResult = (epcList: string[], status: any) => new Promise((res, rej) => { console.log('开始写入', JSON.stringify(epcList), JSON.stringify(status)) if (isMobile()) { Shell.UHFModify(epcList, status, (result: any) => { const failList = result.data.failList res({ data: { failList } }) }) } else { Shell.UHFModify(epcList, status, (openRes: any) => { if (openRes) setTimeout(() => { // 5s以后根据回调获取返回值 Shell.UHFStopModify((result: any) => { // 一个成功的一个失败的 const failList = result.data?.failList || result.detail.failList console.log(result, failList) res({ data: { failList } }) }) }, 5000) else { res('打开改写失败') } }) } }) // 获取改写状态为的方法 const getDestoryResult = (epcList: string[]) => new Promise((res, rej) => { console.log('开始写入', JSON.stringify(epcList), JSON.stringify(status)) Shell.UHFKillTags(epcList, (result: any) => { const epcList = result.data.epcList res({ data: { epcList } }) }) }) // 扳机事件 enum RFIDTrigeerEnum { TRIGGERHOLD = 0, // 按住 TRIGGERCLICK = 1, // 单击 TRIGGERDOUBLECLICK = 2, // 双击 } enum RFIDTrigeerCodeEnum { TRIGGERHOLD = 'triggerHold', // 按住 TRIGGERCLICK = 'triggerClick', // 单击 TRIGGERDOUBLECLICK = 'triggerDoubleClick', // 双击 } class WindowRFIDTrigerClass { eventQuque: any = { [RFIDTrigeerCodeEnum.TRIGGERHOLD]: [], [RFIDTrigeerCodeEnum.TRIGGERCLICK]: [], [RFIDTrigeerCodeEnum.TRIGGERDOUBLECLICK]: [], } // act触发中标识 onAct = false // rfid设备调用中的标识, 防止你打开了一个弹窗在进行操作 使用按钮打开了另一个弹窗 onRfidAct = false // 增加监听 addEventListener = (type: RFIDTrigeerCodeEnum, res: any) => { if (type && !this.eventQuque[type]) this.eventQuque[type] = [] this.eventQuque[type]?.push?.(res) } // 移除监听 removeEventListener = (type: RFIDTrigeerCodeEnum, res: any) => { const index = this.eventQuque[type]?.indexOf(res) if (index >= 0) this.eventQuque[type].splice(index, 1) } // 触发对应的最后一个事件 actEvent = ({ type }: { type: RFIDTrigeerEnum | string }) => { // 防止重复触发 if (this.onAct) return this.onAct = true switch (type) { // 因为执行的code和 // 单击 case RFIDTrigeerEnum.TRIGGERCLICK: this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERCLICK][this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERCLICK].length - 1]?.({}) break; // 双击 case RFIDTrigeerEnum.TRIGGERDOUBLECLICK: this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERDOUBLECLICK][this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERDOUBLECLICK].length - 1]?.({}) break; // 按住 case RFIDTrigeerEnum.TRIGGERHOLD: this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERHOLD][this.eventQuque[RFIDTrigeerCodeEnum.TRIGGERHOLD].length - 1]?.({}) break; default: // 事件触发的方式注册的 const eventQuque = this.eventQuque[type]; (last(eventQuque) as any)?.({}) break } this.onAct = false } } const windowRFIDTriger = new WindowRFIDTrigerClass() // 注册回调 window['onDeviceEvent'] = windowRFIDTriger.actEvent export { windowRFIDTriger, RFIDTrigeerEnum, RFIDTrigeerCodeEnum, transportEpcList, getModifyResult, getDestoryResult }