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 |  245 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 213 insertions(+), 32 deletions(-)

diff --git a/App.vue b/App.vue
index 31d7308..c4feda8 100644
--- a/App.vue
+++ b/App.vue
@@ -1,48 +1,159 @@
 <script>
+	import {
+		showModal,
+		showToast,
+	} from "@/js/Page.js"
+	const rfidModule = uni.requireNativePlugin('RFIDModule');
+	var main
 	export default {
+		globalData: {
+			largeMode: false,
+			isMobox3: true,
+			deviceId: "",
+			cname: "",
+			mobox3ApiUrl: {
+				org: "",
+				data: "",
+				mobox: "",
+			},
+			mobox2ApiUrl: "",
+			loginUser: {
+				id: "",
+				name: "",
+				pwd: ""
+			},
+			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() {
+
 			console.log('App Show')
 		},
 		onHide: function() {
 			console.log('App Hide')
 		},
-		methods:{
-			initscan(){
+		onError(err) {
+			console.error('[UniApp Error]', err)
+			// 鍙笂鎶ュ埌鏈嶅姟鍣�+		},
+		methods: {
+
+			init() {
 				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');
-						var decodesource = intent.getStringExtra("com.symbol.datawedge.source");
+
+				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 decodelabeltype = intent.getStringExtra("com.symbol.datawedge.label_type");
-						
-						var scanResult={
-							decodesource,
-							decodedata,
-							decodelabeltype
-						};
-						uni.$emit("scanresult",scanResult);
+						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");//鐩戝惉鎵爜骞挎挱
-				main.registerReceiver(receiver, filter); //娉ㄥ唽鐩戝惉
+
+				filter.addAction("com.pda.formobox"); //鐩戝惉鎵爜骞挎挱
+				filter.addAction('com.rfid.scan') //
+				main.registerReceiver(receiver, filter); //娉ㄥ唽鐩戝惉	
 			},
-			onScan(callback){
-				console.log('onScan');
-				uni.$off("scanresult");
-				uni.$on("scanresult",(result)=>{
-					callback(result);
-				});
-			}
+			onScan(callback) {
+				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>
@@ -53,7 +164,7 @@
 	@import '@/uni_modules/uni-scss/index.scss';
 	@import '@/fonts/font-awesome/css/font-awesome.css';
 	@import '@/fonts/font-mobox-user/fu.css';
-	@import '@/fonts/font-mobox/fm.css';	
+	@import '@/fonts/font-mobox/fm.css';
 	@import '@/fonts/font-sys/fs.css';
 	/*Mobox3鍥炬爣 */
 	@import '@/fonts/mobox-dms/style.css';
@@ -62,5 +173,75 @@
 	@import '@/fonts/mobox-plm/style.css';
 	@import '@/fonts/mobox-sys/style.css';
 	@import '@/fonts/mobox-wms/style.css';
-		
-</style>
+
+	.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