From 619b47962e41f506baf7ce2b535b2de1fecc719e Mon Sep 17 00:00:00 2001 From: cuiqian2004 <cuiqian2004@163.com> Date: 星期四, 19 六月 2025 10:58:49 +0800 Subject: [PATCH] rfid扫描添加原生插件 --- App.vue | 241 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 196 insertions(+), 45 deletions(-) diff --git a/App.vue b/App.vue index 9c61ef0..c4feda8 100644 --- a/App.vue +++ b/App.vue @@ -1,79 +1,159 @@ <script> + import { + showModal, + showToast, + } from "@/js/Page.js" + const rfidModule = uni.requireNativePlugin('RFIDModule'); + var main export default { globalData: { - isMobox3:true, - deviceId:"", - cname:"", + largeMode: false, + isMobox3: true, + deviceId: "", + cname: "", mobox3ApiUrl: { org: "", data: "", mobox: "", }, - mobox2ApiUrl:"", + mobox2ApiUrl: "", loginUser: { id: "", name: "", pwd: "" }, - sessionId: "" + sessionId: "", + bindClasses: false, + classes: "" + }, + data() { + //鑾峰彇鍏ㄥ眬鍙傛暟锛歶rl-鏈嶅姟鍣ㄥ湴鍧�+ return { + + } }, onLaunch: function() { console.log('App Launch'); - this.initscan(); + this.deviceInfo = uni.getSystemInfoSync(); + this.init(); + }, + onUnload() { + + if (this.deviceInfo?.brand.includes('alps')) { // 姹夊痉闇嶅皵璁惧鐗瑰緛 + // 姹夊痉闇嶅皵 PDA rfid鎵爜椤甸潰鍗歌浇鏃堕噴鏀捐祫婧�+ if (rfidModule) { + rfidModule.closeModule(); + } + } else { + main.unregisterReceiver(receiver); // 鍋滄鐩戝惉骞挎挱 + } + }, onShow: function() { - const args = plus.runtime.arguments || "" - if(args) - { - uni.showModal({ - title: "App鍙傛暟", - content: args, - showCancel: false, - confirmText:"cancel" - }); - } + console.log('App Show') }, onHide: function() { console.log('App Hide') }, + onError(err) { + console.error('[UniApp Error]', err) + // 鍙笂鎶ュ埌鏈嶅姟鍣�+ }, methods: { - initscan() { - let that = this; - var main = plus.android.runtimeMainActivity(), //鑾峰彇activity - IntentFilter = plus.android.importClass('android.content.IntentFilter'), //寮曞叆杩囨护鍣�- // Intent = plus.android.importClass('android.content.Intent'), - filter = new IntentFilter(), - receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { - onReceive: function(context, intent) { //瀹炵幇onReceiver鍥炶皟鍑芥暟 - //console.log('onReceive',intent); - plus.android.importClass(intent); - var decodesource = intent.getStringExtra("com.symbol.datawedge.source"); - var decodedata = intent.getStringExtra("com.symbol.datawedge.data_string"); - var data = intent.getStringExtra("data"); - var decodelabeltype = intent.getStringExtra("com.symbol.datawedge.label_type"); - var scanResult = { - decodesource, - decodedata: decodedata || data, - decodelabeltype, - }; - console.log('onReceive', scanResult); - uni.$emit("scanresult", scanResult); + init() { + let that = this; + + if (this.deviceInfo?.brand.includes('alps')) { // 姹夊痉闇嶅皵璁惧鐗瑰緛 + + rfidModule.initModule((res) => { + console.log("rfid initModule", res) + if (res.code < 0) { + showToast(res.msg); } - }); + + }) + } else if (this.deviceInfo?.brand.includes('mobiwire') || this.deviceInfo?.deviceBrand.includes( + 'mobiwire')) { // 闇嶅凹闊﹀皵 + + this.initMobiwireScan() + } else { + + this.initScan() + } + }, + initMobiwireScan() { + main = plus.android.runtimeMainActivity(); // 鑾峰彇涓�activity + var IntentFilter = plus.android.importClass("android.content.IntentFilter"); + var filter = new IntentFilter(); + const action = "com.rfid.scan" //榛樿骞挎挱 com.honeywell.scan.broadcast + const stringExtra = "data" + filter.addAction(action); // 娣诲姞骞挎挱鍔ㄤ綔 + + receiver = plus.android.implements("io.dcloud.feature.internal.reflect.BroadcastReceiver", { + onReceive: function(context, intent) { + plus.android.importClass(intent); + let code = intent.getStringExtra(stringExtra); // 鑾峰彇骞挎挱涓殑瀛楃涓查澶栧弬鏁�+ uni.$emit("scanresult", code); + }, + }); + main.registerReceiver(receiver, filter); // 寮�鐩戝惉骞挎挱 + + }, + + initScan() { + main = plus.android.runtimeMainActivity() //鑾峰彇activity + var IntentFilter = plus.android.importClass('android.content.IntentFilter') //寮曞叆杩囨护鍣�+ // Intent = plus.android.importClass('android.content.Intent'), + var filter = new IntentFilter() + var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { + onReceive: function(context, intent) { //瀹炵幇onReceiver鍥炶皟鍑芥暟 + //console.log('onReceive',intent); + plus.android.importClass(intent); + // var decodesource = intent.getStringExtra("com.symbol.datawedge.source"); + var decodedata = intent.getStringExtra("com.symbol.datawedge.data_string"); + var data = intent.getStringExtra("data"); + // var decodelabeltype = intent.getStringExtra("com.symbol.datawedge.label_type"); + var scanResult = decodedata || data + console.log('onReceive', scanResult); + uni.$emit("scanresult", scanResult); + } + }); filter.addAction("com.pda.formobox"); //鐩戝惉鎵爜骞挎挱 filter.addAction('com.rfid.scan') // - main.registerReceiver(receiver, filter); //娉ㄥ唽鐩戝惉 + main.registerReceiver(receiver, filter); //娉ㄥ唽鐩戝惉 }, onScan(callback) { - console.log('onScan'); - uni.$off("scanresult"); - uni.$on("scanresult", (result) => { - callback(result); - }); - } + if (this.deviceInfo?.brand.includes('alps')) { // 姹夊痉闇嶅皵璁惧鐗瑰緛 + if (!rfidModule) + return + rfidModule.startScan((ret) => { + console.log("startScan", ret) + let text = "" + if (ret.code < 0) { + showToast(ret.msg); + } else { + const data = ret.data || [] + if (Array.isArray(data)) { + if (data.length > 0) + text = data[0].epc + } else { + text = data.epc || "" + } + callback(text); + } + }) + } else { + uni.$off("scanresult"); + uni.$on("scanresult", (result) => { + callback(result); + }); + } + + }, + } } </script> @@ -93,4 +173,75 @@ @import '@/fonts/mobox-plm/style.css'; @import '@/fonts/mobox-sys/style.css'; @import '@/fonts/mobox-wms/style.css'; + + .large-mode { + font-size: 24px !important; + + uni-input { + height: 36px; + + .uni-input-placeholder, + .uni-input-input { + font-size: 24px !important; + } + } + + uni-button, + .uni-forms-item__label, + .uni-section__content-title { + font-size: 24px !important; + } + + uni-checkbox { + .uni-checkbox-input { + height: 32px; + width: 32px; + } + + .uni-checkbox-input-checked:before { + font-size: 30px; + } + } + + uni-radio { + .uni-radio-input { + height: 32px; + width: 32px; + } + + .uni-radio-input-checked:before { + font-size: 30px; + } + } + + .uni-date__x-input { + font-size: 24px !important; + height: 40px !important; + + .uniui-clear { + font-size: 30px !important; + } + } + + .uni-data-tree { + font-size: 24px !important; + + .input-value { + height: 45px !important; + font-size: 24px !important; + } + + .placeholder { + font-size: 24px !important; + } + } + + .segmented-control__text { + font-size: 24px !important; + height: 45px; + + } + + + } </style> \ No newline at end of file -- Gitblit v1.9.1