From fc8b94c56295f6b00e766a1cf4f17ce76e7f3e26 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Mon, 16 Mar 2026 23:31:24 +0800 Subject: [PATCH] update --- .../GoodPickExecutiondetail.tsx | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx index 1f25fb5..5e12d87 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx @@ -2740,33 +2740,46 @@ const handleSubmitAllScanned = useCallback(async () => { try { // 转换为 batchSubmitList 所需的格式(与后端 QrPickBatchSubmitRequest 匹配) const lines: batchSubmitListLineRequest[] = scannedLots.map((lot) => { - // 1. 需求数量:优先用 lot.requiredQty,没有就用 pickOrderLineRequiredQty + // 1. 需求数量 const requiredQty = Number(lot.requiredQty || lot.pickOrderLineRequiredQty || 0); - - // 2. 当前已经拣到的数量(数据库里对应的是 stock_out_line.qty) + + // 2. 当前已经拣到的数量(数据库里的 qty) const currentActualPickQty = Number(lot.actualPickQty || 0); - - // 3. 还需要拣多少:不能为负数 - const remainingQty = Math.max(0, requiredQty - currentActualPickQty); - - // 4. 本次批量提交后的目标累计值 = 当前 + 剩余 - const cumulativeQty = currentActualPickQty + remainingQty; - - // 5. 根据“目标累计值是否达到需求”决定状态 - let newStatus = "partially_completed"; - if (requiredQty > 0 && cumulativeQty >= requiredQty) { + + // 🔹 判断是否走“只改状态模式” + // 这里先给一个简单条件示例:如果你不想再补拣,只想把当前数量标记完成, + // 就让这个条件为 true(后面你可以根据业务加 UI 开关或别的 flag)。 + const onlyComplete = lot.stockOutLineStatus === "partially_completed"; + // lot.stockOutLineStatus === "partially_completed" && false === true; + + let targetActual: number; + let newStatus: string; + + if (onlyComplete) { + // ✅ 只改状态:目标数量 = 当前数量,不再补拣 + targetActual = currentActualPickQty; newStatus = "completed"; + } else { + // ✅ 补拣模式:把剩余全部拣完 + const remainingQty = Math.max(0, requiredQty - currentActualPickQty); + const cumulativeQty = currentActualPickQty + remainingQty; + + targetActual = cumulativeQty; + + newStatus = "partially_completed"; + if (requiredQty > 0 && cumulativeQty >= requiredQty) { + newStatus = "completed"; + } } - + return { stockOutLineId: Number(lot.stockOutLineId) || 0, pickOrderLineId: Number(lot.pickOrderLineId), - // ⚠️ 这里按你现在的写法是用 lot.lotId,当心是否真的是 inventoryLotLineId inventoryLotLineId: lot.lotId ? Number(lot.lotId) : null, requiredQty, - // 传“目标累计值”,后端会用它减去当前数据库里的 qty 得到增量 - actualPickQty: cumulativeQty, + // 后端用 targetActual - 当前 qty 算增量,onlyComplete 时就是 0 + actualPickQty: targetActual, stockOutLineStatus: newStatus, pickOrderConsoCode: String(lot.pickOrderConsoCode || ""), noLot: Boolean(lot.noLot === true),