0602
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* uni-app 默认扫码实现
|
||||
* 使用 uni.scanCode API(安卓设备)
|
||||
*
|
||||
* 注意:uni.scanCode 是一次性扫码,每次调用都会弹出扫码界面
|
||||
* 不支持持续扫描,因此 startScan() 每次都会弹出新界面
|
||||
*/
|
||||
|
||||
class ScanUniappImpl {
|
||||
constructor() {
|
||||
this._callback = null
|
||||
this._isScanning = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化(uni.scanCode 无需特殊初始化)
|
||||
*/
|
||||
init() {
|
||||
console.log('[Scan-Uniapp] 初始化完成(使用 uni.scanCode)')
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册扫码结果回调
|
||||
* @param {Function} callback - (codeStr: string) => void
|
||||
*/
|
||||
register(callback) {
|
||||
this._callback = callback
|
||||
}
|
||||
|
||||
/**
|
||||
* 注销监听(页面卸载时调用)
|
||||
*/
|
||||
unregister() {
|
||||
this._callback = null
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始扫描(调用 uni.scanCode)
|
||||
* 注意:每次调用都会弹出扫码界面
|
||||
*/
|
||||
startScan() {
|
||||
if (this._isScanning) return
|
||||
this._isScanning = true
|
||||
|
||||
const self = this
|
||||
uni.scanCode({
|
||||
success: (res) => {
|
||||
self._isScanning = false
|
||||
console.log('[Scan-Uniapp] 扫码结果:', res.result)
|
||||
if (self._callback) {
|
||||
self._callback(res.result)
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
self._isScanning = false
|
||||
console.error('[Scan-Uniapp] 扫码失败:', err)
|
||||
// 用户取消不算错误,不显示 toast
|
||||
if (err.errMsg && err.errMsg.indexOf('cancel') === -1) {
|
||||
uni.showToast({ title: '扫码失败', icon: 'none' })
|
||||
}
|
||||
},
|
||||
complete: () => {
|
||||
self._isScanning = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止扫描(uni.scanCode 无法中途停止,此方法仅重置状态)
|
||||
*/
|
||||
stopScan() {
|
||||
this._isScanning = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否正在扫描
|
||||
* 注意:uni.scanCode 是异步的,调用后界面会切换,此方法主要用于防止重复调用
|
||||
*/
|
||||
isScanning() {
|
||||
return this._isScanning
|
||||
}
|
||||
|
||||
/**
|
||||
* 完全销毁(应用退出时调用)
|
||||
*/
|
||||
destroy() {
|
||||
this.unregister()
|
||||
this._isScanning = false
|
||||
}
|
||||
}
|
||||
|
||||
export default ScanUniappImpl
|
||||
Reference in New Issue
Block a user