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"
/>