From a8fb0cfc94e091fabf7760419cb0652f411bc824 Mon Sep 17 00:00:00 2001 From: yueli Date: Fri, 17 Jul 2026 16:53:57 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20validateUnique=20=E5=8A=A0=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E6=97=A5=E5=BF=97=E8=BF=BD=E8=B8=AA=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=97=B6=E8=AF=AF=E6=8A=A5=E9=87=8D=E5=A4=8D=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory-web/src/views/stock/inbound/semi.vue | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/inventory-web/src/views/stock/inbound/semi.vue b/inventory-web/src/views/stock/inbound/semi.vue index e3dd44c..90e64ab 100644 --- a/inventory-web/src/views/stock/inbound/semi.vue +++ b/inventory-web/src/views/stock/inbound/semi.vue @@ -1112,9 +1112,18 @@ const onMaterialSelected = async (item: any) => { const validateUnique = (rule: any, value: string, callback: any) => { if (!value) return callback() const isDuplicate = tableData.value.some((row: any) => { - if (dialogStatus.value === 'update' && row.id === form.id) return false - if (rule.field === 'serial_number' && row.serial_number === value) return true - if (rule.field === 'batch_number' && row.batch_number === value && row.base_id === form.base_id) return true + if (dialogStatus.value === 'update' && row.id === form.id) { + console.log('[validateUnique] 跳过自身记录 id=', row.id, 'form.id=', form.id) + return false + } + if (rule.field === 'serial_number' && row.serial_number === value) { + console.log('[validateUnique] SN重复! row.id=', row.id, 'form.id=', form.id, 'dialogStatus=', dialogStatus.value) + return true + } + if (rule.field === 'batch_number' && row.batch_number === value && row.base_id === form.base_id) { + console.log('[validateUnique] 批号重复! row.id=', row.id, 'form.id=', form.id, 'dialogStatus=', dialogStatus.value) + return true + } return false }) if (isDuplicate) callback(new Error('当前列表页存在相同编号(后端将进行全局校验)'))