| @@ -530,7 +530,7 @@ console.log("🔍 DEBUG fgOrder.deliveryNos:", fgOrder.deliveryNos); | |||
| pickOrderConsoCode: mergedPickOrder.consoCode, | |||
| pickOrderTargetDate: mergedPickOrder.targetDate, | |||
| pickOrderStatus: mergedPickOrder.status, | |||
| pickOrderId: mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||
| pickOrderId: line.pickOrderId || mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||
| pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | |||
| pickOrderLineId: line.id, | |||
| pickOrderLineRequiredQty: line.requiredQty, | |||
| @@ -578,7 +578,7 @@ console.log("🔍 DEBUG fgOrder.deliveryNos:", fgOrder.deliveryNos); | |||
| pickOrderConsoCode: mergedPickOrder.consoCodes?.[0] || "", // 修复:consoCodes 是数组 | |||
| pickOrderTargetDate: mergedPickOrder.targetDate, | |||
| pickOrderStatus: mergedPickOrder.status, | |||
| pickOrderId: mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||
| pickOrderId: line.pickOrderId || mergedPickOrder.pickOrderIds?.[0] || 0, // 使用第一个 pickOrderId | |||
| pickOrderCode: mergedPickOrder.pickOrderCodes?.[0] || "", | |||
| pickOrderLineId: line.id, | |||
| pickOrderLineRequiredQty: line.requiredQty, | |||
| @@ -1371,6 +1371,26 @@ const paginatedData = useMemo(() => { | |||
| const endIndex = startIndex + paginationController.pageSize; | |||
| return combinedLotData.slice(startIndex, endIndex); // No sorting needed | |||
| }, [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) => { | |||
| if (!lot.stockOutLineId) { | |||
| console.error("No stock out line found for this lot"); | |||
| @@ -1789,7 +1809,10 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||
| variant="contained" | |||
| color="success" | |||
| onClick={handleSubmitAllScanned} | |||
| disabled={scannedItemsCount === 0 || isSubmittingAll} | |||
| disabled={ | |||
| // scannedItemsCount === 0 | |||
| !allItemsReady | |||
| || isSubmittingAll} | |||
| sx={{ minWidth: '160px' }} | |||
| > | |||
| {isSubmittingAll ? ( | |||