From 5f68a682a7f59aa29fc453f12e51f431ebcb538b Mon Sep 17 00:00:00 2001 From: yuan Date: Fri, 15 May 2026 18:07:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A2=81=E4=BC=9F=E6=9D=B0=EF=BC=9AV2.0.006=20?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=BC=B9=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages-erp/purchase-in/scan/index.vue | 26 ++++++++++++++++++++++-- src/pages-erp/stock-in/scan/index.vue | 1 + src/pages-erp/stock-out/scan/index.vue | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/pages-erp/purchase-in/scan/index.vue b/src/pages-erp/purchase-in/scan/index.vue index bfaf896..47d39c3 100644 --- a/src/pages-erp/purchase-in/scan/index.vue +++ b/src/pages-erp/purchase-in/scan/index.vue @@ -24,6 +24,7 @@ v-model="scanCode" placeholder="请扫描采购订单号" :loading="scanLoading" + :auto-focus="false" :show-confirm-button="true" camera-text="拍单号" @submit="handleOrderScanSubmit" @@ -131,7 +132,7 @@ :focus="activeScanField === 'batch'" placeholder="请输入或扫描批次号" confirm-type="next" - @focus="setActiveScanField('batch')" + @focus="handleScanFieldFocus('batch')" @confirm="handleBatchConfirm" > @@ -349,6 +350,7 @@ const items = ref([]) const feedback = ref() const lastScannedTargetKey = ref('') const activeScanField = ref<'batch' | 'location'>('batch') +const suppressKeyboardField = ref<'batch' | 'location' | ''>('') const hasSelectedOrder = computed(() => Boolean(selectedOrder.value?.id)) const currentWarehouse = computed(() => @@ -453,7 +455,27 @@ function setActiveScanField(field: 'batch' | 'location') { activeScanField.value = field } +function hideSoftKeyboardForAutoFocus() { + nextTick(() => { + uni.hideKeyboard() + setTimeout(() => { + uni.hideKeyboard() + }, 80) + }) +} + +function handleScanFieldFocus(field: 'batch' | 'location') { + setActiveScanField(field) + if (suppressKeyboardField.value !== field) { + return + } + + suppressKeyboardField.value = '' + hideSoftKeyboardForAutoFocus() +} + async function focusScanField(field: 'batch' | 'location') { + suppressKeyboardField.value = field activeScanField.value = field === 'batch' ? 'location' : 'batch' await nextTick() activeScanField.value = field diff --git a/src/pages-erp/stock-in/scan/index.vue b/src/pages-erp/stock-in/scan/index.vue index a3292c0..9f265d3 100644 --- a/src/pages-erp/stock-in/scan/index.vue +++ b/src/pages-erp/stock-in/scan/index.vue @@ -37,6 +37,7 @@ v-model="scanCode" placeholder="请先选择仓库,再扫描产品条码" :loading="scanLoading" + :auto-focus="false" @submit="handleScanSubmit" @camera-scan="handleCameraScan" /> diff --git a/src/pages-erp/stock-out/scan/index.vue b/src/pages-erp/stock-out/scan/index.vue index b3d57ab..826463b 100644 --- a/src/pages-erp/stock-out/scan/index.vue +++ b/src/pages-erp/stock-out/scan/index.vue @@ -37,6 +37,7 @@ v-model="scanCode" placeholder="请先选择仓库,再扫描产品条码" :loading="scanLoading" + :auto-focus="false" @submit="handleScanSubmit" @camera-scan="handleCameraScan" />