From 66d755635e9b0366ddd419307096cb47ffd88e60 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Thu, 25 Sep 2025 13:28:56 +0800 Subject: [PATCH] update --- src/app/api/pickOrder/actions.ts | 23 +- .../FinishedGoodSearch/FGPickOrderCard.tsx | 11 +- .../FinishedGoodSearch/FinishedGoodSearch.tsx | 62 ++++- .../GoodPickExecutionForm.tsx | 2 +- .../GoodPickExecutiondetail.tsx | 232 ++++++++++++++---- .../LotConfirmationModal.tsx | 4 +- src/i18n/zh/pickOrder.json | 6 +- 7 files changed, 269 insertions(+), 71 deletions(-) diff --git a/src/app/api/pickOrder/actions.ts b/src/app/api/pickOrder/actions.ts index 70986c3..1681785 100644 --- a/src/app/api/pickOrder/actions.ts +++ b/src/app/api/pickOrder/actions.ts @@ -581,7 +581,28 @@ const fetchSuggestionsWithStatus = async (pickOrderLineId: number) => { return []; } }; - +export const fetchAllPickOrderLotsHierarchical = cache(async (userId: number): Promise => { + try { + console.log("๐Ÿ” Fetching hierarchical pick order lots for userId:", userId); + + const data = await serverFetchJson( + `${BASE_API_URL}/pickOrder/all-lots-hierarchical/${userId}`, + { + method: 'GET', + next: { tags: ["pickorder"] }, + } + ); + + console.log("โœ… Fetched hierarchical lot details:", data); + return data; + } catch (error) { + console.error("โŒ Error fetching hierarchical lot details:", error); + return { + pickOrder: null, + pickOrderLines: [] + }; + } +}); // Update the existing function to use the non-auto-assign endpoint export const fetchALLPickOrderLineLotDetails = cache(async (userId: number): Promise => { try { diff --git a/src/components/FinishedGoodSearch/FGPickOrderCard.tsx b/src/components/FinishedGoodSearch/FGPickOrderCard.tsx index c694447..885942a 100644 --- a/src/components/FinishedGoodSearch/FGPickOrderCard.tsx +++ b/src/components/FinishedGoodSearch/FGPickOrderCard.tsx @@ -109,16 +109,7 @@ const FGPickOrderCard: React.FC = ({ fgOrder, onQrCodeClick }) => { value={fgOrder.ticketNo} /> - - - + diff --git a/src/components/FinishedGoodSearch/FinishedGoodSearch.tsx b/src/components/FinishedGoodSearch/FinishedGoodSearch.tsx index 0d9087e..ca1d3e5 100644 --- a/src/components/FinishedGoodSearch/FinishedGoodSearch.tsx +++ b/src/components/FinishedGoodSearch/FinishedGoodSearch.tsx @@ -46,6 +46,7 @@ const PickOrderSearch: React.FC = ({ pickOrders }) => { const [isOpenCreateModal, setIsOpenCreateModal] = useState(false) const [items, setItems] = useState([]) + const [printButtonsEnabled, setPrintButtonsEnabled] = useState(false); const [filteredPickOrders, setFilteredPickOrders] = useState(pickOrders); const [filterArgs, setFilterArgs] = useState>({}); const [searchQuery, setSearchQuery] = useState>({}); @@ -129,6 +130,19 @@ const PickOrderSearch: React.FC = ({ pickOrders }) => { } } }, [tabIndex, items.length]); + useEffect(() => { + const handleCompletionStatusChange = (event: CustomEvent) => { + const { allLotsCompleted } = event.detail; + setPrintButtonsEnabled(allLotsCompleted); + console.log("Print buttons enabled:", allLotsCompleted); + }; + + window.addEventListener('pickOrderCompletionStatus', handleCompletionStatusChange as EventListener); + + return () => { + window.removeEventListener('pickOrderCompletionStatus', handleCompletionStatusChange as EventListener); + }; + }, []); const searchCriteria: Criterion[] = useMemo( () => { @@ -290,19 +304,8 @@ const PickOrderSearch: React.FC = ({ pickOrders }) => { - - {/* First 4 buttons aligned left */} - - - - - - - - - {/* Last 2 buttons aligned right */} - + + {/* โœ… Updated print buttons with completion status */} + + + + + + + + + + diff --git a/src/components/FinishedGoodSearch/GoodPickExecutionForm.tsx b/src/components/FinishedGoodSearch/GoodPickExecutionForm.tsx index 482b843..b7fe86d 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecutionForm.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecutionForm.tsx @@ -351,7 +351,7 @@ const PickExecutionForm: React.FC = ({ diff --git a/src/i18n/zh/pickOrder.json b/src/i18n/zh/pickOrder.json index a814f08..eb36441 100644 --- a/src/i18n/zh/pickOrder.json +++ b/src/i18n/zh/pickOrder.json @@ -192,7 +192,7 @@ "Finished Good Order": "ๆˆๅ“ๅ‡บๅ€‰", "Assign and Release": "ๅˆ†ๆดพไธฆๆ”พๅ–ฎ", "Original Available Qty": "ๅŽŸๅฏ็”จๆ•ธ", - "Remaining Available Qty": "ๅ‰ฉ้ค˜", + "Remaining Available Qty": "ๅ‰ฉ้ค˜ๅฏ็”จๆ•ธ", "Please submit pick order.": "่ซ‹ๆไบคๆๆ–™ๅ–ฎใ€‚", "Please finish QR code scan and pick order.": "่ซ‹ๅฎŒๆˆ QR ็ขผๆŽƒๆๅ’Œๆๆ–™ใ€‚", "Please finish QR code scanand pick order.": "่ซ‹ๅฎŒๆˆ QR ็ขผๆŽƒๆๅ’Œๆๆ–™ใ€‚", @@ -273,7 +273,9 @@ "Print Draft":"ๅˆ—ๅฐ่‰็จฟ", "Print Pick Order and DN Label":"ๅˆ—ๅฐๆๆ–™ๅ–ฎๅ’Œ้€่ฒจๅ–ฎๆจ™่ฒผ", "Print Pick Order":"ๅˆ—ๅฐๆๆ–™ๅ–ฎ", - "Print DN Label":"ๅˆ—ๅฐ้€่ฒจๅ–ฎๆจ™่ฒผ" + "Print DN Label":"ๅˆ—ๅฐ้€่ฒจๅ–ฎๆจ™่ฒผ", + "If you confirm, the system will:":"ๅฆ‚ๆžœๆ‚จ็ขบ่ช๏ผŒ็ณป็ตฑๅฐ‡๏ผš" +