| @@ -530,7 +530,7 @@ console.log("🔍 DEBUG fgOrder.deliveryNos:", fgOrder.deliveryNos); | |||||
| pickOrderConsoCode: mergedPickOrder.consoCode, | pickOrderConsoCode: mergedPickOrder.consoCode, | ||||
| pickOrderTargetDate: mergedPickOrder.targetDate, | pickOrderTargetDate: mergedPickOrder.targetDate, | ||||
| pickOrderStatus: mergedPickOrder.status, | pickOrderStatus: mergedPickOrder.status, | ||||
| pickOrderId: mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||||
| pickOrderId: line.pickOrderId || mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||||
| pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | ||||
| pickOrderLineId: line.id, | pickOrderLineId: line.id, | ||||
| pickOrderLineRequiredQty: line.requiredQty, | pickOrderLineRequiredQty: line.requiredQty, | ||||
| @@ -578,7 +578,7 @@ console.log("🔍 DEBUG fgOrder.deliveryNos:", fgOrder.deliveryNos); | |||||
| pickOrderConsoCode: mergedPickOrder.consoCodes?.[0] || "", // 修复:consoCodes 是数组 | pickOrderConsoCode: mergedPickOrder.consoCodes?.[0] || "", // 修复:consoCodes 是数组 | ||||
| pickOrderTargetDate: mergedPickOrder.targetDate, | pickOrderTargetDate: mergedPickOrder.targetDate, | ||||
| pickOrderStatus: mergedPickOrder.status, | pickOrderStatus: mergedPickOrder.status, | ||||
| pickOrderId: mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||||
| pickOrderId: line.pickOrderId || mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||||
| pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | ||||
| pickOrderLineId: line.id, | pickOrderLineId: line.id, | ||||
| pickOrderLineRequiredQty: line.requiredQty, | pickOrderLineRequiredQty: line.requiredQty, | ||||
| @@ -1371,6 +1371,26 @@ const paginatedData = useMemo(() => { | |||||
| const endIndex = startIndex + paginationController.pageSize; | const endIndex = startIndex + paginationController.pageSize; | ||||
| return combinedLotData.slice(startIndex, endIndex); // No sorting needed | return combinedLotData.slice(startIndex, endIndex); // No sorting needed | ||||
| }, [combinedLotData, paginationController]); | }, [combinedLotData, paginationController]); | ||||
| const allItemsReady = useMemo(() => { | |||||
| if (combinedLotData.length === 0) return false; | |||||
| return combinedLotData.every((lot: any) => { | |||||
| const status = lot.stockOutLineStatus?.toLowerCase(); | |||||
| const isRejected = | |||||
| status === 'rejected' || lot.lotAvailability === 'rejected'; | |||||
| const isCompleted = | |||||
| status === 'completed' || status === 'partially_completed' || status === 'partially_complete'; | |||||
| const isChecked = status === 'checked'; | |||||
| // 无库存(noLot)行:只要状态不是 pending/rejected 即视为已处理 | |||||
| if (lot.noLot === true) { | |||||
| return isChecked || isCompleted || isRejected; | |||||
| } | |||||
| // 正常 lot:必须已扫描/提交或者被拒收 | |||||
| return isChecked || isCompleted || isRejected; | |||||
| }); | |||||
| }, [combinedLotData]); | |||||
| const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: number) => { | const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: number) => { | ||||
| if (!lot.stockOutLineId) { | if (!lot.stockOutLineId) { | ||||
| console.error("No stock out line found for this lot"); | console.error("No stock out line found for this lot"); | ||||
| @@ -1789,7 +1809,10 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||||
| variant="contained" | variant="contained" | ||||
| color="success" | color="success" | ||||
| onClick={handleSubmitAllScanned} | onClick={handleSubmitAllScanned} | ||||
| disabled={scannedItemsCount === 0 || isSubmittingAll} | |||||
| disabled={ | |||||
| // scannedItemsCount === 0 | |||||
| !allItemsReady | |||||
| || isSubmittingAll} | |||||
| sx={{ minWidth: '160px' }} | sx={{ minWidth: '160px' }} | ||||
| > | > | ||||
| {isSubmittingAll ? ( | {isSubmittingAll ? ( | ||||