fastlion-amis
Version:
一种MIS页面生成工具
135 lines (115 loc) • 3.96 kB
text/typescript
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
}