diff --git a/inventory-web/src/views/stock/inbound/semi.vue b/inventory-web/src/views/stock/inbound/semi.vue index 7d418d7..0dccdb4 100644 --- a/inventory-web/src/views/stock/inbound/semi.vue +++ b/inventory-web/src/views/stock/inbound/semi.vue @@ -1501,15 +1501,23 @@ const handleScannerConfirm = (result: string) => { // Track 扫码入库:扫码面板扫到身份证后,自动带出物料基础信息 + 序列号 const handleTrackScanFill = async (data: { track: any; material: any }) => { const { track, material } = data + // 选择物料:触发原生联动(基础信息/历史库位/历史模式与批号自增) await onMaterialSelected(material) - // 优先使用真实自定义序列号(external_serial),回退到 16 位系统身份证 - form.serial_number = track.external_serial || track.serial_number || '' - // 自动切换入库模式:有真实序列号 → 强制 SN;否则 → Batch - if (form.serial_number) { + + if (track.external_serial) { + // 序列号管理产品:切 SN,填真实外部业务序列号 entryMode.value = 'serial' modeLocked.value = false // 扫码为明确序列号输入,解除历史锁定 + form.serial_number = track.external_serial + form.batch_number = '' } else { + // 批次管理产品:切 Batch,恢复批号自增(onMaterialSelected→checkHistoryAndSetMode 已按历史生成) entryMode.value = 'batch' + modeLocked.value = false + // 批号兜底:无历史/历史为 SN 时确保有默认批号,避免阻断校验 + if (!form.batch_number) form.batch_number = '000001' + // 16 位身份证回填序列号字段(Batch 下该字段禁用,随提交载荷供 Webhook 精准通知 Track) + form.serial_number = track.serial_number || '' } ElMessage.success('扫码入库信息已自动填充,请核对后补充库位/数量等') }