diff --git a/src/app/api/pickOrder/actions.ts b/src/app/api/pickOrder/actions.ts index 62bf102..50d6a92 100644 --- a/src/app/api/pickOrder/actions.ts +++ b/src/app/api/pickOrder/actions.ts @@ -332,7 +332,8 @@ export interface UpdateDoPickOrderHideStatusRequest { } export interface CompletedDoPickOrderResponse { id: number; - doPickOrderRecordId: number; // 新增 + doPickOrderRecordId: number; // ✅ 新增 + recordId: number | null; pickOrderId: number; pickOrderIds: number[]; // 新增:所有 pick order IDs pickOrderCode: string; diff --git a/src/components/FinishedGoodSearch/FGPickOrderTicketReleaseTable.tsx b/src/components/FinishedGoodSearch/FGPickOrderTicketReleaseTable.tsx index ee04688..a52a238 100644 --- a/src/components/FinishedGoodSearch/FGPickOrderTicketReleaseTable.tsx +++ b/src/components/FinishedGoodSearch/FGPickOrderTicketReleaseTable.tsx @@ -19,11 +19,13 @@ import { TableRow, Paper, CircularProgress, - TablePagination + TablePagination, + Chip } from '@mui/material'; import { useTranslation } from 'react-i18next'; import dayjs from 'dayjs'; import { fetchTicketReleaseTable, getTicketReleaseTable } from '@/app/api/do/actions'; +import { time } from 'console'; const FGPickOrderTicketReleaseTable: React.FC = () => { const { t } = useTranslation("pickOrder"); @@ -33,9 +35,34 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { const [loading, setLoading] = useState(true); const [paginationController, setPaginationController] = useState({ pageNum: 0, - pageSize: 10, + pageSize: 5, }); + const formatTime = (timeData: any): string => { + if (!timeData) return ''; + + let hour: number; + let minute: number; + + if (typeof timeData === 'string') { + + const parts = timeData.split(':'); + hour = parseInt(parts[0], 10); + minute = parseInt(parts[1] || '0', 10); + } else if (Array.isArray(timeData)) { + + hour = timeData[0] || 0; + minute = timeData[1] || 0; + } + else { + return ''; + } + + const formattedHour = hour.toString().padStart(2, '0'); + const formattedMinute = minute.toString().padStart(2, '0'); + return `${formattedHour}:${formattedMinute}`; + }; + const getDateLabel = (offset: number) => { return dayjs().add(offset, 'day').format('YYYY-MM-DD'); }; @@ -175,7 +202,7 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { {t("Truck Information")} - {t("Departure Time")} / {t("Truck Lane Code")} + {t("Departure Time")} {t("Truck Lane Code")} @@ -195,7 +222,10 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { {t("Ticket Information")} - {t("Ticket No.")} ({t("Status")}) / {t("Release Time")} / {t("Complete Time")} + {t("Ticket No.")} ({t("Status")}) + + + {t("Released Time")} - {t("Completed Time")} @@ -211,10 +241,7 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { ) : ( - paginatedData.map((row) => { - const isPending = row.ticketStatus?.toLowerCase() === 'pending'; - const showTimes = !isPending && (row.ticketStatus?.toLowerCase() === 'released' || row.ticketStatus?.toLowerCase() === 'completed'); - + paginatedData.map((row) => { return ( {row.storeId || '-'} @@ -225,33 +252,27 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { - - {row.truckDepartureTime && row.truckLanceCode - ? (() => { - let timeStr = row.truckDepartureTime.toString().trim(); - timeStr = timeStr.replace(',', ':'); - const timeMatch = timeStr.match(/^(\d{1,2})[:](\d{2})/); - if (timeMatch) { - const hours = timeMatch[1].padStart(2, '0'); - const minutes = timeMatch[2]; - return `${hours}:${minutes} | ${row.truckLanceCode}`; - } - return `${timeStr} | ${row.truckLanceCode}`; - })() - : row.truckDepartureTime - ? (() => { - let timeStr = row.truckDepartureTime.toString().trim(); - timeStr = timeStr.replace(',', ':'); - const timeMatch = timeStr.match(/^(\d{1,2})[:](\d{2})/); - if (timeMatch) { - const hours = timeMatch[1].padStart(2, '0'); - const minutes = timeMatch[2]; - return `${hours}:${minutes}`; - } - return timeStr; - })() - : row.truckLanceCode || '-'} - + + {row.truckLanceCode && ( + + )} + {row.truckDepartureTime && ( + + )} + {!row.truckLanceCode && !row.truckDepartureTime && ( + + - + + )} + {row.shopName || '-'} @@ -276,20 +297,16 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { {row.ticketNo || '-'} ({row.ticketStatus || '-'}) - {showTimes && ( - <> - - {row.ticketReleaseTime - ? dayjs(row.ticketReleaseTime, 'YYYYMMDDHHmmss').format('YYYY-MM-DD HH:mm') - : '-'} - - - {row.ticketCompleteDateTime - ? dayjs(row.ticketCompleteDateTime, 'YYYYMMDDHHmmss').format('YYYY-MM-DD HH:mm') - : '-'} - - - )} + + {row.ticketReleaseTime + ? dayjs(row.ticketReleaseTime, 'YYYYMMDDHHmmss').format('YYYY-MM-DD HH:mm') + : '-'} + + + {row.ticketCompleteDateTime + ? dayjs(row.ticketCompleteDateTime, 'YYYYMMDDHHmmss').format('YYYY-MM-DD HH:mm') + : '-'} + {row.handlerName || '-'} diff --git a/src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx b/src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx index db214b6..89b6351 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx @@ -111,7 +111,7 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { const formProps = useForm(); const errors = formProps.formState.errors; - const handleDN = useCallback(async (doPickOrderId: number) => { + const handleDN = useCallback(async (recordId: number) => { const askNumofCarton = await Swal.fire({ title: t("Enter the number of cartons: "), icon: "info", @@ -147,7 +147,7 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { printQty: 1, isDraft: false, numOfCarton: numOfCartons, - doPickOrderId: doPickOrderId + doPickOrderId: recordId }; console.log("Printing Delivery Note with request: ", printRequest); @@ -171,7 +171,7 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { } }, [t]); - const handleDNandLabel = useCallback(async (doPickOrderId: number) => { + const handleDNandLabel = useCallback(async (recordId: number) => { const askNumofCarton = await Swal.fire({ title: t("Enter the number of cartons: "), icon: "info", @@ -207,14 +207,14 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { printQty: 1, isDraft: false, numOfCarton: numOfCartons, - doPickOrderId: doPickOrderId, + doPickOrderId: recordId, }; const printDNLabelsRequest = { printerId: 1, printQty: 1, numOfCarton: numOfCartons, - doPickOrderId: doPickOrderId + doPickOrderId: recordId }; console.log("Printing Labels with request: ", printDNLabelsRequest); @@ -248,7 +248,7 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { } }, [t]); - const handleLabel = useCallback(async (doPickOrderId: number) => { + const handleLabel = useCallback(async (recordId: number) => { const askNumofCarton = await Swal.fire({ title: t("Enter the number of cartons: "), icon: "info", @@ -283,7 +283,7 @@ const GoodPickExecutionRecord: React.FC = ({ filterArgs }) => { printerId: 1, printQty: 1, numOfCarton: numOfCartons, - doPickOrderId: doPickOrderId + doPickOrderId: recordId }; console.log("Printing Labels with request: ", printRequest); @@ -740,7 +740,7 @@ if (showDetailView && selectedDoPickOrder) { - ) + ))}