From 3d5a9afeda0ee1a2cdb05d511a31af9fa8c881e0 Mon Sep 17 00:00:00 2001 From: yueli Date: Tue, 1 Sep 2026 15:11:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=AB=E7=A0=81=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8F=B7=E6=98=A0=E5=B0=84=E4=BC=98=E5=85=88?= =?UTF-8?q?=20external=5Fserial=20+=20=E5=8D=8A=E6=88=90=E5=93=81=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=87=E6=8D=A2=20SN/Batch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - form.serial_number = external_serial || serial_number(优先真实自定义序列号) - 半成品:扫码后按有无序列号自动切换 SN/Batch 模式,并解除历史锁定 - 修复 onMaterialSelected 未 await checkHistoryAndSetMode 的竞态 --- inventory-web/src/views/stock/inbound/product.vue | 3 ++- inventory-web/src/views/stock/inbound/semi.vue | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/inventory-web/src/views/stock/inbound/product.vue b/inventory-web/src/views/stock/inbound/product.vue index 4866fb5..611106c 100644 --- a/inventory-web/src/views/stock/inbound/product.vue +++ b/inventory-web/src/views/stock/inbound/product.vue @@ -1409,7 +1409,8 @@ const handleScannerConfirm = (result: string) => { const handleTrackScanFill = async (data: { track: any; material: any }) => { const { track, material } = data await onMaterialSelected(material) - form.serial_number = track.serial_number + // 优先使用真实自定义序列号(external_serial),回退到 16 位系统身份证 + form.serial_number = track.external_serial || track.serial_number || '' if (track.order_no) form.order_id = track.order_no ElMessage.success('扫码入库信息已自动填充,请核对后补充库位/数量等') } diff --git a/inventory-web/src/views/stock/inbound/semi.vue b/inventory-web/src/views/stock/inbound/semi.vue index 6594c9c..7d418d7 100644 --- a/inventory-web/src/views/stock/inbound/semi.vue +++ b/inventory-web/src/views/stock/inbound/semi.vue @@ -1110,7 +1110,7 @@ const onMaterialSelected = async (item: any) => { form.bom_code = '' form.bom_version = '' bomOptions.value = [] - checkHistoryAndSetMode(item.id) + await checkHistoryAndSetMode(item.id) try { const res = await request.get('/v1/inbound/semi/last-location', { params: { base_id: item.id } }) @@ -1502,7 +1502,15 @@ const handleScannerConfirm = (result: string) => { const handleTrackScanFill = async (data: { track: any; material: any }) => { const { track, material } = data await onMaterialSelected(material) - form.serial_number = track.serial_number + // 优先使用真实自定义序列号(external_serial),回退到 16 位系统身份证 + form.serial_number = track.external_serial || track.serial_number || '' + // 自动切换入库模式:有真实序列号 → 强制 SN;否则 → Batch + if (form.serial_number) { + entryMode.value = 'serial' + modeLocked.value = false // 扫码为明确序列号输入,解除历史锁定 + } else { + entryMode.value = 'batch' + } ElMessage.success('扫码入库信息已自动填充,请核对后补充库位/数量等') }