diff --git a/src/components/PoDetail/PoDetail.tsx b/src/components/PoDetail/PoDetail.tsx index 4fba6f3..05e71f0 100644 --- a/src/components/PoDetail/PoDetail.tsx +++ b/src/components/PoDetail/PoDetail.tsx @@ -199,7 +199,7 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { const [selectedPoId, setSelectedPoId] = useState(po.id); const currentPoId = searchParams.get('id'); const selectedIdsParam = searchParams.get('selectedIds'); - + const [selectedRowId, setSelectedRowId] = useState(null); const fetchPoList = useCallback(async () => { try { @@ -221,15 +221,6 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { } }, [selectedIdsParam]); - const handlePoSelect = useCallback( - (selectedPo: PoResult) => { - setSelectedPoId(selectedPo.id); - - const newSelectedIds = selectedIdsParam || selectedPo.id.toString(); - router.push(`/po/edit?id=${selectedPo.id}&start=true&selectedIds=${newSelectedIds}`, { scroll: false }); - }, - [router, selectedIdsParam] - ); const fetchPoDetail = useCallback(async (poId: string) => { try { @@ -247,7 +238,16 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { console.error("Failed to fetch PO detail:", error); } }, []); - + + const handlePoSelect = useCallback( + async (selectedPo: PoResult) => { + setSelectedPoId(selectedPo.id); + await fetchPoDetail(selectedPo.id.toString()); + const newSelectedIds = selectedIdsParam || selectedPo.id.toString(); + router.push(`/po/edit?id=${selectedPo.id}&start=true&selectedIds=${newSelectedIds}`, { scroll: false }); + }, + [router, selectedIdsParam, fetchPoDetail] + ); useEffect(() => { if (currentPoId && currentPoId !== selectedPoId.toString()) { @@ -324,6 +324,12 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { } }, [processedQty, row.qty]); + const handleRowSelect = () => { + setSelectedRowId(row.id); + setRow(row); + setStockInLine(row.stockInLine); + setProcessedQty(row.processed); + }; return ( <> *": { borderBottom: "unset" }, color: "black" }}> @@ -337,6 +343,13 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { {open ? : } */} + + e.stopPropagation()} + /> + {row.itemNo} {row.itemName} {integerFormatter.format(row.qty)} @@ -570,6 +583,7 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { + Select {t("itemNo")} {t("itemName")} {t("qty")} @@ -596,30 +610,34 @@ const PoDetail: React.FC = ({ po, qc, warehouse }) => { {/* area5: selected item info */} - 已選擇: {row.itemNo}-{row.itemName} + + 已選擇: {selectedRowId ? row.itemNo : '無'} - {selectedRowId ? row.itemName : '無'} + - -
- - - - - - - - - -
- + {selectedRowId && ( + + + + + + + + + + + +
+
+ )} {/* tab 2 */} diff --git a/src/components/PoSearch/PoSearch.tsx b/src/components/PoSearch/PoSearch.tsx index c930f63..5f53e09 100644 --- a/src/components/PoSearch/PoSearch.tsx +++ b/src/components/PoSearch/PoSearch.tsx @@ -47,16 +47,15 @@ const PoSearch: React.FC = ({ const [totalCount, setTotalCount] = useState(initTotalCount); const searchCriteria: Criterion[] = useMemo(() => { const searchCriteria: Criterion[] = [ - { label: t("Po No."), paramName: "code", type: "text" }, { label: t("Supplier"), paramName: "supplier", type: "text" }, - { label: t("Order Date"), label2: t("Order Date To"), paramName: "orderDate", type: "dateRange" }, + { label: t("Po No."), paramName: "code", type: "text" }, { label: t("Escalated"), paramName: "escalated", type: "select", options: [t("Escalated"), t("NotEscalated")], }, - { label: t("ETA"), label2: t("ETA To"), paramName: "estimatedArrivalDate", type: "dateRange" }, + { label: t("Order Date"), label2: t("Order Date To"), paramName: "orderDate", type: "dateRange" }, { label: t("Status"), paramName: "status", @@ -67,6 +66,8 @@ const PoSearch: React.FC = ({ { label: t(`completed`), value: `completed` }, ], }, + { label: t("ETA"), label2: t("ETA To"), paramName: "estimatedArrivalDate", type: "dateRange" }, + ]; return searchCriteria; }, [t]); @@ -114,7 +115,7 @@ const PoSearch: React.FC = ({ () => [ { name: "id" as keyof PoResult, - label: "Select", + label: "Select", renderCell: (params) => (