diff --git a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx index ec6386b..ba53432 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx @@ -19,7 +19,6 @@ import { TablePagination, Modal, Chip, - Chip, } from "@mui/material"; import TestQrCodeProvider from '../QrCodeScannerProvider/TestQrCodeProvider'; import { fetchLotDetail } from "@/app/api/inventory/actions"; @@ -46,7 +45,7 @@ import { DoPickOrderDetail, // ✅ 必须添加 fetchFGPickOrdersByUserId } from "@/app/api/pickOrder/actions"; -import FGPickOrderInfoCard from "./FGPickOrderInfoCard"; + import FGPickOrderInfoCard from "./FGPickOrderInfoCard"; import LotConfirmationModal from "./LotConfirmationModal"; //import { fetchItem } from "@/app/api/settings/item"; @@ -445,13 +444,13 @@ const [isConfirmingLot, setIsConfirmingLot] = useState(false); return allCompleted; }, []); const fetchAllCombinedLotData = useCallback(async (userId?: number, pickOrderIdOverride?: number) => { - const fetchAllCombinedLotData = useCallback(async (userId?: number, pickOrderIdOverride?: number) => { + setCombinedDataLoading(true); try { const userIdToUse = userId || currentUserId; console.log("🔍 fetchAllCombinedLotData called with userId:", userIdToUse); - console.log("🔍 fetchAllCombinedLotData called with userId:", userIdToUse); + if (!userIdToUse) { console.warn("⚠️ No userId available, skipping API call"); @@ -761,7 +760,6 @@ const [isConfirmingLot, setIsConfirmingLot] = useState(false); console.log("✅ Transformed flat lot data:", flatLotData); console.log("🔍 Total items (including null stock):", flatLotData.length); - console.log("🔍 Total items (including null stock):", flatLotData.length); setCombinedLotData(flatLotData); setOriginalCombinedData(flatLotData); @@ -777,7 +775,6 @@ const [isConfirmingLot, setIsConfirmingLot] = useState(false); setCombinedDataLoading(false); } }, [currentUserId, selectedPickOrderId, checkAllLotsCompleted]); - }, [currentUserId, selectedPickOrderId, checkAllLotsCompleted]); // ✅ Add effect to check completion when lot data changes useEffect(() => { if (combinedLotData.length > 0) { @@ -1609,24 +1606,9 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe console.error("Error switching pick order:", error); } finally { setPickOrderSwitching(false); - } - }, [pickOrderSwitching, currentUserId, fetchAllCombinedLotData]); - const handlePickOrderSwitch = useCallback(async (pickOrderId: number) => { - if (pickOrderSwitching) return; - - setPickOrderSwitching(true); - try { - console.log("🔍 Switching to pick order:", pickOrderId); - setSelectedPickOrderId(pickOrderId); - - // ✅ 强制刷新数据,确保显示正确的 pick order 数据 - await fetchAllCombinedLotData(currentUserId, pickOrderId); - } catch (error) { - console.error("Error switching pick order:", error); - } finally { - setPickOrderSwitching(false); - } - }, [pickOrderSwitching, currentUserId, fetchAllCombinedLotData]); + } + }, [pickOrderSwitching, currentUserId, fetchAllCombinedLotData]); + const handleStopScan = useCallback(() => { console.log("⏹️ Stopping manual QR scan..."); setIsManualScanning(false); @@ -1791,40 +1773,8 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe {t("Departure Time")}: {fgPickOrders[0].DepartureTime || '-'} - lotData={combinedLotData} - onScanLot={handleQrCodeSubmit} - filterActive={(lot) => ( - lot.lotAvailability !== 'rejected' && - lot.stockOutLineStatus !== 'rejected' && - lot.stockOutLineStatus !== 'completed' - )} - > - - - {/* DO Header */} - {fgPickOrdersLoading ? ( - - - - ) : ( - fgPickOrders.length > 0 && ( - - - {/* 基本信息 */} - - - {t("Shop Name")}: {fgPickOrders[0].shopName || '-'} - - - {t("Store ID")}: {fgPickOrders[0].storeId || '-'} - - - {t("Ticket No.")}: {fgPickOrders[0].ticketNo || '-'} - - - {t("Departure Time")}: {fgPickOrders[0].DepartureTime || '-'} - - + + @@ -2163,160 +2113,10 @@ paginatedData.map((lot, index) => { /> )} - - - {isIssueLot ? ( - // ✅ Issue lot 只显示 Issue 按钮 - - ) : ( - // ✅ Normal lot 显示两个按钮 - - - - - - )} - - - - ); -}) - )} - - - - - - `${from}-${to} of ${count !== -1 ? count : `more than ${to}`}` - } - /> - - + - {/* ✅ 保留:QR Code Modal */} - { - setQrModalOpen(false); - setSelectedLotForQr(null); - stopScan(); - resetScan(); - }} - lot={selectedLotForQr} - combinedLotData={combinedLotData} - onQrCodeSubmit={handleQrCodeSubmitFromModal} - /> - - {/* ✅ 保留:Lot Confirmation Modal */} - {lotConfirmationOpen && expectedLotData && scannedLotData && ( - { - setLotConfirmationOpen(false); - setExpectedLotData(null); - setScannedLotData(null); - }} - onConfirm={handleLotConfirmation} - expectedLot={expectedLotData} - scannedLot={scannedLotData} - isLoading={isConfirmingLot} - /> - )} - - {/* ✅ 保留:Good Pick Execution Form Modal */} - {pickExecutionFormOpen && selectedLotForExecutionForm && ( - { - setPickExecutionFormOpen(false); - setSelectedLotForExecutionForm(null); - }} - onSubmit={handlePickExecutionFormSubmit} - selectedLot={selectedLotForExecutionForm} - selectedPickOrderLine={{ - id: selectedLotForExecutionForm.pickOrderLineId, - itemId: selectedLotForExecutionForm.itemId, - itemCode: selectedLotForExecutionForm.itemCode, - itemName: selectedLotForExecutionForm.itemName, - pickOrderCode: selectedLotForExecutionForm.pickOrderCode, - availableQty: selectedLotForExecutionForm.availableQty || 0, - requiredQty: selectedLotForExecutionForm.requiredQty || 0, - // uomCode: selectedLotForExecutionForm.uomCode || '', - uomDesc: selectedLotForExecutionForm.uomDesc || '', - pickedQty: selectedLotForExecutionForm.actualPickQty || 0, - uomShortDesc: selectedLotForExecutionForm.uomShortDesc || '', - suggestedList: [] - }} - pickOrderId={selectedLotForExecutionForm.pickOrderId} - pickOrderCreateDate={new Date()} - /> - )} - + + ); };