diff --git a/inventory-web/src/views/outbound/index.vue b/inventory-web/src/views/outbound/index.vue index cf20a93..0a94c51 100644 --- a/inventory-web/src/views/outbound/index.vue +++ b/inventory-web/src/views/outbound/index.vue @@ -296,18 +296,19 @@ /> - +
- 补发单会挂在此人名下,出现在他的「我的申请」里。留空则挂当前操作人。 + 补发单会挂在此人名下,出现在他的「我的申请」里。
+ 必须选择:补发是原申请人的需求,不能挂到办理退回的库管名下。
@@ -566,15 +567,23 @@ const loadReissueUsers = async () => { } } -// 勾选补发时:默认补发量 = 本次退回量,并尝试按**原领用人**预选「补发给谁」 +// 勾选补发时:默认补发量 = 本次退回量,并预选「补发给谁」 const handleNeedReissueChange = async (val: boolean) => { if (!val) return returnDialog.form.reissue_qty = normalizeQty(returnDialog.form.return_qty) || 1 await loadReissueUsers() if (returnDialog.form.reissue_applicant_id) return - // 按姓名唯一命中才预填;重名一律留空让现场自己选 —— 与借用人回填同口径, - // 宁可多一步,也不猜错人(补发单会挂到错的人名下)。 - const want = String(returnDialog.row?.consumer_name || '').split('/')[0].trim() + + const row = returnDialog.row || {} + // ① 优先用原出库明细记录的申请人(创建出库时从审批单带出,主键无歧义) + if (row.applicant_id && reissueUsers.value.some((u) => u.id === row.applicant_id)) { + returnDialog.form.reissue_applicant_id = row.applicant_id + return + } + // ② 历史单据该字段为 NULL(无从回填):退而按原领用人姓名**唯一命中**才预填。 + // 重名一律留空让现场选 —— 与借用人回填同口径,宁可多一步也不猜错人 + // (补发单会挂到错的人名下,而那是别人的「我的申请」)。 + const want = String(row.consumer_name || '').split('/')[0].trim() if (!want) return const hits = reissueUsers.value.filter( (u) => String(u.name || '').split('/')[0].trim() === want, @@ -638,6 +647,11 @@ const submitReturn = async () => { ElMessage.warning(`补发数量不能超过本次退回数量 ${qty}`) return } + // 申请人必须明确指定:补发是原申请人的需求,不能默认挂到办理退回的库管名下 + if (!returnDialog.form.reissue_applicant_id) { + ElMessage.warning('请选择「补发给谁」') + return + } } returnDialog.submitting = true