This commit is contained in:
2026-08-18 14:46:36 +08:00
parent 9e94385dfc
commit a084fe1fd4
13 changed files with 647 additions and 235 deletions
+11 -6
View File
@@ -1,13 +1,13 @@
/**
* 统一扫码模块
* 支持 安卓设备 / iData 专用 / 通用 Android 手动配置
* 支持 安卓设备 / iData 专用 / 通用 Android PDA / 带物理扫码键 PDAhbyapi 广播)
*
* === 使用方式 ===
*
* import scan from '@/utils/scan.js'
*
* onLoad() {
* scan.setMode('uniapp') // 'uniapp' | 'idata' | 'android'(默认 uniapp
* scan.setMode('uniapp') // 'uniapp' | 'idata' | 'android' | 'pda'(默认 uniapp
* scan.init()
* scan.register((codeStr) => {
* console.log('扫码结果:', codeStr)
@@ -18,7 +18,7 @@
* }
*
* === API ===
* scan.setMode(mode) - 设置模式:'uniapp' | 'idata' | 'android'
* scan.setMode(mode) - 设置模式:'uniapp' | 'idata' | 'android' | 'pda'
* scan.init() - 初始化扫码模块
* scan.register(cb) - 注册回调:cb(codeStr)
* scan.unregister() - 注销回调(页面级)
@@ -32,7 +32,8 @@
var MODE = {
UNIAPP: 'uniapp',
IDATA: 'idata',
ANDROID: 'android'
ANDROID: 'android',
PDA: 'pda'
}
// 当前模式,默认 uniapp(安卓设备)
@@ -46,9 +47,9 @@ var impl = null
* @param {'uniapp'|'idata'|'android'} mode
*/
function setMode(mode) {
var validModes = [MODE.UNIAPP, MODE.IDATA, MODE.ANDROID]
var validModes = [MODE.UNIAPP, MODE.IDATA, MODE.ANDROID, MODE.PDA]
if (validModes.indexOf(mode) === -1) {
console.error('[Scan] 不支持的模式: ' + mode + ',可选: uniapp, idata, android')
console.error('[Scan] 不支持的模式: ' + mode + ',可选: uniapp, idata, android, pda')
return
}
// 如果已初始化,先销毁再重新设置模式
@@ -80,6 +81,10 @@ function init() {
}
var ScanIdataImpl = require('./scan-idata.js').default
impl = new ScanIdataImpl(iDataModule)
} else if (currentMode === MODE.PDA) {
// 带物理扫码键 PDA 设备:hbyapi 广播协议(发送 key_scan_down 触发,监听 com.qs.scancode 接收)
var ScanPdaImpl = require('./scan-pda.js').default
impl = new ScanPdaImpl()
} else {
// 带扫码PDA设备:使用 Android 系统扫码 API
try {