fix: 半成品扫码入库按 external_serial 精准判定模式并恢复批号联动

- external_serial 有值 → SN + 填外部序列号;为空 → Batch(不再因身份证有值误切 SN)
- Batch 模式恢复批号自增(onMaterialSelected→checkHistoryAndSetMode),空时兜底 000001
- Batch 下 16 位身份证回填序列号字段,随提交载荷供 Webhook 通知 Track
This commit is contained in:
yueli
2026-09-01 15:45:16 +08:00
parent 3d5a9afeda
commit db22065790

View File

@ -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('扫码入库信息已自动填充,请核对后补充库位/数量等')
}