From 439fad8ed851adceba20b9d9c4a11b0eef153602 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 03 三月 2026 15:54:46 +0800
Subject: [PATCH] Revert "fix(scan): 修复扫码组件重复触发和超时处理问题"
---
src/components/scan/index.vue | 96 +++++------------------------------------------
1 files changed, 11 insertions(+), 85 deletions(-)
diff --git a/src/components/scan/index.vue b/src/components/scan/index.vue
index 45dc54b..018c202 100644
--- a/src/components/scan/index.vue
+++ b/src/components/scan/index.vue
@@ -4,18 +4,10 @@
</view>
</template>
<script lang="ts" setup>
-declare const plus: any;
-
const main = ref();
const receiver = ref();
const filter = ref();
const codeQueryTag = ref(false);
-const isInitialized = ref(false);
-const isReceiverRegistered = ref(false);
-const scanTimeoutMs = 3500;
-const scanTimeoutTimer = ref<ReturnType<typeof setTimeout> | null>(null);
-const isWaitingScanResult = ref(false);
-const isScanning = ref(false);
const props = defineProps({
emitName: {
type: String,
@@ -23,27 +15,7 @@
},
});
-const clearScanTimeout = () => {
- if (!scanTimeoutTimer.value) return;
- clearTimeout(scanTimeoutTimer.value);
- scanTimeoutTimer.value = null;
-};
-
-const startScanTimeoutWatch = () => {
- clearScanTimeout();
- isWaitingScanResult.value = true;
- scanTimeoutTimer.value = setTimeout(() => {
- if (!isWaitingScanResult.value) return;
- console.warn("鎵爜瓒呮椂鏈敹鍒板箍鎾�");
- isWaitingScanResult.value = false;
- isScanning.value = false;
- queryCode("");
- scanTimeoutTimer.value = null;
- }, scanTimeoutMs);
-};
-
const initScan = () => {
- if (isInitialized.value) return;
main.value = plus.android.runtimeMainActivity(); //鑾峰彇activity
let IntentFilter: any = plus.android.importClass("android.content.IntentFilter");
filter.value = new IntentFilter();
@@ -58,67 +30,36 @@
var banMaSacanInfo = intent.getStringExtra(
"com.motorolasolutions.emdk.datawedge.data_string"
);
- if (!banMaSacanInfo) {
- banMaSacanInfo =
- intent.getStringExtra("com.symbol.datawedge.data_string") ||
- intent.getStringExtra("data");
- }
// callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));
console.log("鏂戦┈鎵弿缁撴灉", banMaSacanInfo);
// 浼犲叆鎺ユ敹鍒扮殑鍙傛暟
- isWaitingScanResult.value = false;
- isScanning.value = false;
- clearScanTimeout();
- if (!banMaSacanInfo) {
- console.warn("鎵弿杩斿洖涓虹┖");
- }
- queryCode(banMaSacanInfo || "");
+ queryCode(banMaSacanInfo);
},
});
- isInitialized.value = true;
};
// 寮�鍚箍鎾�
const startScan = () => {
// #ifdef APP
- if (!isInitialized.value) {
- initScan();
- }
- if (!main.value || !receiver.value || !filter.value || isReceiverRegistered.value) return;
console.log("startScan,寮�鍚箍鎾帴鏀�");
- try {
- main.value.registerReceiver(receiver.value, filter.value);
- isReceiverRegistered.value = true;
- } catch (error) {
- console.error("startScan澶辫触", error);
- }
+ main.value.registerReceiver(receiver.value, filter.value);
// #endif
};
// 鍏抽棴骞挎挱
const stopScan = () => {
// #ifdef APP
- if (!main.value || !receiver.value || !isReceiverRegistered.value) return;
console.log("stopScan缁撴潫");
- try {
- main.value.unregisterReceiver(receiver.value);
- } catch (error) {
- console.error("stopScan澶辫触", error);
- } finally {
- isReceiverRegistered.value = false;
- }
+ main.value.unregisterReceiver(receiver.value);
// #endif
};
const queryCode = (code: any) => {
// #ifdef APP
- if (codeQueryTag.value) {
- console.warn("鐭椂闂村唴閲嶅鍥炶皟琚嫤鎴�");
- return false;
- }
+ if (codeQueryTag.value) return false;
codeQueryTag.value = true;
setTimeout(function () {
codeQueryTag.value = false;
- }, 300);
+ }, 150);
// console.log('-****--鎵爜code锛� ', code);
let data = code;
uni.$emit(props.emitName, {
@@ -129,21 +70,14 @@
const triggerScan = () => {
console.log("瑙﹀彂鎵弿");
- if (isScanning.value) {
- console.warn("宸叉湁鎵弿杩涜涓紝蹇界暐鏈瑙﹀彂");
- return;
- }
- isScanning.value = true;
-
- if (!main.value) return;
-
- startScanTimeoutWatch();
-
- const Intent = plus.android.importClass("android.content.Intent");
- const intent = new Intent();
+ // 鑾峰彇Android鎰忓浘绫�
+ let Intent = plus.android.importClass("android.content.Intent");
+ // 瀹炰緥鍖栨剰鍥�
+ let intent = new Intent();
+ // 瀹氫箟鎰忓浘锛岀敱鍘傚晢鎻愪緵(姝ゅ璁剧疆涓轰笢澶х殑锛� 寮�濮嬫壂鎻忓箍鎾璫om.scan.onStartScan锛屽搴旂殑鍋滄鎵弿骞挎挱涓篶om.scan.onEndScan)
intent.setAction("com.symbol.datawedge.api.ACTION");
intent.putExtra("com.symbol.datawedge.api.SOFT_SCAN_TRIGGER", "START_SCANNING");
-
+ // 骞挎挱杩欎釜鎰忓浘
main.value.sendBroadcast(intent);
};
@@ -155,19 +89,11 @@
startScan();
});
-onShow(() => {
- startScan();
-});
-
onHide(() => {
- isWaitingScanResult.value = false;
- clearScanTimeout();
stopScan();
});
onUnmounted(() => {
- isWaitingScanResult.value = false;
- clearScanTimeout();
stopScan();
});
--
Gitblit v1.9.3