cuiqian2004
2025-06-19 619b47962e41f506baf7ce2b535b2de1fecc719e
App.vue
@@ -3,6 +3,8 @@
      showModal,
      showToast,
   } from "@/js/Page.js"
   const rfidModule = uni.requireNativePlugin('RFIDModule');
   var main
   export default {
      globalData: {
         largeMode: false,
@@ -33,13 +35,19 @@
      onLaunch: function() {
         console.log('App Launch');
         this.deviceInfo = uni.getSystemInfoSync();
         this.initscan();
         this.init();
      },
      onUnload() {
         // // 汉德霍尔 PDA rfid扫码页面卸载时释放资源
         // const rfidModule = uni.requireNativePlugin('HandheldRFID');
         // rfidModule.closeModule();
         if (this.deviceInfo?.brand.includes('alps')) { // 汉德霍尔设备特征
            // 汉德霍尔 PDA rfid扫码页面卸载时释放资源
            if (rfidModule) {
               rfidModule.closeModule();
            }
         } else {
            main.unregisterReceiver(receiver); // 停止监听广播
         }
      },
      onShow: function() {
@@ -48,67 +56,95 @@
      onHide: function() {
         console.log('App Hide')
      },
      onError(err) {
         console.error('[UniApp Error]', err)
         // 可上报到服务器
      },
      methods: {
         initscan() {
            let that = this;
            console.log("deviceInfo", this.deviceInfo)
            if (this.deviceInfo?.brand.includes('alps')) { // 汉德霍尔设备特征
               // const rfidModule = uni.requireNativePlugin('HandheldRFID');
               // console.log("rfidModule",rfidModule)
               // rfidModule.initModule((res) => {
               //    console.log("rfid initModule", res)
               // })
            } else {
               var 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 = {
                        decodesource,
                        decodedata: decodedata || data,
                        decodelabeltype,
                     };
                     console.log('onReceive', scanResult);
                     uni.$emit("scanresult", scanResult);
                  }
               });
               filter.addAction("com.pda.formobox"); //监听扫码广播
               filter.addAction('com.rfid.scan') //
               main.registerReceiver(receiver, filter); //注册监听
         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); //注册监听
         },
         onScan(callback) {
            console.log('onScan');
            if (this.deviceInfo?.brand.includes('alps')) { // 汉德霍尔设备特征
               // const rfidModule = uni.requireNativePlugin('HandheldRFID');
               // rfidModule.startScan((res) => {
               //    if (res.code) {
               //       console.log(res)
               //       let data = res.data || ""
               //       if (Array.isArray(data)) {
               //          data = data.map((a) => a.epc).join(",")
               //       }
               //       var scanResult = {
               //          decodesource: "epc",
               //          decodedata: data,
               //          decodelabeltype: "",
               //       };
               //       console.log(scanResult)
               //       callback(scanResult);
               //    } else {
               //       console.log("rfid startScan", res)
               //    }
               // })
               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) => {