From 2f26ba8f2c8f5c67e5ed16f4e89baaef82d70a3b Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 30 五月 2025 13:29:49 +0800
Subject: [PATCH] 联调pda扫码功能,解决pda上面样式问题

---
 components/scan/scan.vue |  218 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 146 insertions(+), 72 deletions(-)

diff --git a/components/scan/scan.vue b/components/scan/scan.vue
index c39741c..7940f65 100644
--- a/components/scan/scan.vue
+++ b/components/scan/scan.vue
@@ -1,93 +1,167 @@
 <template>
 	<view>
 		<view class="content">
+			<!-- <text>鎵弿缁撴灉锛歿{ scanResult }}</text> -->
 		</view>
 	</view>
 </template>
 
 <script>
-	var main, receiver, filter;
-	var action, extraKey;
-	var _codeQueryTag = false;
-	export default {
-		data() {
-			return {
-				scanCode: ''
-			}
-		},
-		created: function(option) {
-			uni.getSystemInfo({
-				success: (res) => {
-					var brand = res.brand.toUpperCase();
-					var model = res.model.toUpperCase();
-					if (brand.indexOf("ZEBRA")!=-1 && model.indexOf("TC2")!=-1) {
-						 action = "com.zebra.scan";
-						 extraKey = "com.motorolasolutions.emdk.datawedge.data_string";
-					} else if (brand.indexOf("SEUIC")!=-1||brand.indexOf("AUTOID")!=-1) {
-						 action = "com.android.server.scannerservice.broadcast";
-						 extraKey = "scannerdata";
-					}else{
-						return;
-					}
-					console.log(action);
-					console.log(extraKey);
-					this.initScan()
-					this.startScan();
+var main, receiver, filter;
+var action, extraKey;
+var _codeQueryTag = false;
+
+export default {
+	data() {
+		return {
+			scanCode: '',
+			scanResult: ''
+		}
+	},
+	created() {
+		uni.getSystemInfo({
+			success: (res) => {
+				var brand = res.brand.toUpperCase();
+				var model = res.model.toUpperCase();
+
+				console.log('璁惧鍝佺墝:', brand);
+				console.log('璁惧鍨嬪彿:', model);
+
+				// Zebra璁惧閰嶇疆
+				if (brand.indexOf("ZEBRA") != -1 && model.indexOf("TC2") != -1) {
+					action = "com.zebra.scan";
+					extraKey = "com.motorolasolutions.emdk.datawedge.data_string";
 				}
-			})
+				// AUTOID9N璁惧閰嶇疆
+				else if (brand.indexOf("SEUIC") != -1 || brand.indexOf("AUTOID") != -1) {
+					// AUTOID9N涓撶敤閰嶇疆
+					if (model.indexOf("AUTOID9N") != -1) {
+						action = "com.android.server.scannerservice.broadcast";
+						extraKey = "scannerdata"; // 鎴� "BARCODE_STRING"锛屾牴鎹疄闄呮儏鍐佃皟鏁�
+					}
+					// 鍏朵粬SEUIC璁惧
+					else {
+						action = "com.android.server.scannerservice.broadcast";
+						extraKey = "scannerdata";
+					}
+				}
+				else {
+					console.log('鏈煡璁惧鍝佺墝锛屾棤娉曞垵濮嬪寲鎵爜');
+					return;
+				}
 
+				console.log('鎵爜骞挎挱閰嶇疆:', { action, extraKey });
+				this.initScan();
+				this.startScan();
+			},
+			fail: (err) => {
+				console.error('鑾峰彇绯荤粺淇℃伅澶辫触:', err);
+			}
+		});
+	},
+	onLoad() {
+		// 鐩戝惉鍏ㄥ眬鎵爜浜嬩欢
+		uni.$on('scan', (event) => {
+			this.scanResult = event.code;
+			console.log('鎵爜缁撴灉:', this.scanResult);
+		});
+	},
+	onUnload() {
+		this.stopScan();
+		uni.$off('scan'); // 绉婚櫎浜嬩欢鐩戝惉
+	},
+	methods: {
+		initScan() {
+			console.log('鍒濆鍖栨壂鐮佹帴鏀跺櫒');
 
-		
-		},
-		onHide: function() {
-			this.stopScan();
-		},
-		destroyed: function() {
-			this.stopScan();
-		},
-		methods: {
-			initScan() {
-				console.log('initScan');
-				let _this = this;
-				main = plus.android.runtimeMainActivity(); //鑾峰彇activity
+			try {
+				main = plus.android.runtimeMainActivity(); // 鑾峰彇activity
 				var IntentFilter = plus.android.importClass('android.content.IntentFilter');
 				filter = new IntentFilter();
-				//涓嬮潰鐨刟ddAction鍐呮敼涓鸿嚜宸辩殑骞挎挱鍔ㄤ綔
 				filter.addAction(action);
+
+				console.log('娉ㄥ唽骞挎挱杩囨护鍣�:', action);
+
 				receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
-					onReceive: function(context, intent) {
-						console.log('onReceive');
-						plus.android.importClass(intent);
-						//涓嬮潰鐨刧etStringExtra鍐呮敼涓鸿嚜宸辩殑骞挎挱鏍囩--鏈夎
-						let code = intent.getStringExtra(extraKey);
-						_this.queryCode(code);
-					}
+					onReceive: function (context, intent) {
+						console.log('鎺ユ敹鍒版壂鐮佸箍鎾�');
+
+						try {
+							plus.android.importClass(intent);
+							let code = intent.getStringExtra(extraKey);
+
+							if (code) {
+								console.log('鎵爜鍐呭:', code);
+								this.queryCode(code);
+							} else {
+								console.warn('鎵爜鍐呭涓虹┖锛屽彲鑳紼xtraKey涓嶆纭�:', extraKey);
+
+								// 灏濊瘯澶囬�塃xtraKey
+								const altExtraKey = extraKey === "BARCODE_STRING" ? "scannerdata" : "BARCODE_STRING";
+								code = intent.getStringExtra(altExtraKey);
+
+								if (code) {
+									console.log('浣跨敤澶囬�塃xtraKey鑾峰彇鍒板唴瀹�:', altExtraKey);
+									this.queryCode(code);
+								}
+							}
+						} catch (e) {
+							console.error('澶勭悊鎵爜骞挎挱鏃跺嚭閿�:', e);
+						}
+					}.bind(this) // 纭繚this鎸囧悜缁勪欢瀹炰緥
 				});
-			},
-			startScan() {
-				console.log('startScan');
-				main.registerReceiver(receiver, filter);
-			},
-			stopScan() {
-				console.log('stopScan');
-				main.unregisterReceiver(receiver);
-			},
-			queryCode: function(code) {
-				console.log('queryCode');
-				if (_codeQueryTag) return false;
-				_codeQueryTag = true;
-				setTimeout(function() {
-					_codeQueryTag = false;
-				}, 150);
-				var id = code
-				uni.$emit('scan', {
-					code: id
-				})
+
+				console.log('鎵爜鎺ユ敹鍣ㄥ垵濮嬪寲鎴愬姛');
+			} catch (e) {
+				console.error('鍒濆鍖栨壂鐮佹帴鏀跺櫒澶辫触:', e);
 			}
+		},
+		startScan() {
+			console.log('寮�濮嬬洃鍚壂鐮佸箍鎾�');
+
+			try {
+				if (main && receiver && filter) {
+					main.registerReceiver(receiver, filter);
+					console.log('骞挎挱鎺ユ敹鍣ㄥ凡娉ㄥ唽');
+				} else {
+					console.error('鏃犳硶娉ㄥ唽骞挎挱鎺ユ敹鍣�: 缁勪欢鏈垵濮嬪寲');
+				}
+			} catch (e) {
+				console.error('娉ㄥ唽骞挎挱鎺ユ敹鍣ㄥけ璐�:', e);
+			}
+		},
+		stopScan() {
+			console.log('鍋滄鐩戝惉鎵爜骞挎挱');
+
+			try {
+				if (main && receiver) {
+					main.unregisterReceiver(receiver);
+					console.log('骞挎挱鎺ユ敹鍣ㄥ凡娉ㄩ攢');
+				}
+			} catch (e) {
+				console.error('娉ㄩ攢骞挎挱鎺ユ敹鍣ㄥけ璐�:', e);
+			}
+		},
+		queryCode(code) {
+			console.log('澶勭悊鎵爜缁撴灉:', code);
+
+			if (_codeQueryTag) {
+				console.log('蹇界暐閲嶅鎵爜');
+				return false;
+			}
+
+			_codeQueryTag = true;
+
+			// 闃叉姈澶勭悊
+			setTimeout(() => {
+				_codeQueryTag = false;
+			}, 150);
+
+			// 瑙﹀彂鍏ㄥ眬浜嬩欢
+			uni.$emit('scan', { code });
 		}
 	}
+}
 </script>
 
-<style>
-
-</style>
+<style></style>
\ No newline at end of file

--
Gitblit v1.9.3