From 000ece986de849d5493bf10cd75fe38881daae40 Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Tue, 22 Jul 2025 18:23:23 +0800 Subject: [PATCH] update --- src/app/api/scheduling/index.ts | 3 +++ .../DetailedScheduleSearchView.tsx | 17 +++++++++---- .../ViewByFGDetails.tsx | 11 ++++++++ .../RoughSchedule/RoughSchedileSearchView.tsx | 16 +++++++++--- .../RoughScheduleDetail/ViewByBomDetails.tsx | 22 ++++++++++++++++ .../RoughScheduleDetail/ViewByFGDetails.tsx | 25 +++++++++++++++++-- .../ScheduleTable/BomMaterialTable.tsx | 10 ++++++++ 7 files changed, 93 insertions(+), 11 deletions(-) diff --git a/src/app/api/scheduling/index.ts b/src/app/api/scheduling/index.ts index 9002573..482ddf5 100644 --- a/src/app/api/scheduling/index.ts +++ b/src/app/api/scheduling/index.ts @@ -31,6 +31,7 @@ export interface RoughProdScheduleLineResultByFg { type: string; availableQty: number; prodQty: number; + uomName: string; lastMonthAvgSales: number; estCloseBal: number; priority: number; @@ -94,6 +95,7 @@ export interface DetailedProdScheduleLineResult { type: string; demandQty: number; bomOutputQty: number; + uomName: string; prodTimeInMinute: DetailedProdScheduleLineProdTimeResult[]; priority: number; approved: boolean; @@ -107,6 +109,7 @@ export interface DetailedProdScheduleLineBomMaterialResult { type: string; availableQty: number; demandQty: number; + uomName: string; } export interface DetailedProdScheduleLineProdTimeResult { diff --git a/src/components/DetailedSchedule/DetailedScheduleSearchView.tsx b/src/components/DetailedSchedule/DetailedScheduleSearchView.tsx index 649d272..1b82034 100644 --- a/src/components/DetailedSchedule/DetailedScheduleSearchView.tsx +++ b/src/components/DetailedSchedule/DetailedScheduleSearchView.tsx @@ -19,6 +19,7 @@ import dayjs from "dayjs"; import { orderBy, uniqBy } from "lodash"; import { Button, Stack } from "@mui/material"; import isToday from 'dayjs/plugin/isToday'; +import useUploadContext from "../UploadProvider/useUploadContext"; dayjs.extend(isToday); // may need move to "index" or "actions" @@ -45,6 +46,7 @@ const DSOverview: React.FC = ({ type, defaultInputs }) => { ProdScheduleResult[] >([]); const { t } = useTranslation("schedule"); + const { setIsUploading } = useUploadContext(); const router = useRouter(); // const [filterObj, setFilterObj] = useState({}); @@ -282,11 +284,16 @@ const DSOverview: React.FC = ({ type, defaultInputs }) => { }, []); const testDetailedScheduleClick = useCallback(async () => { - console.log(inputs.scheduleAt) - const response = await testDetailedSchedule(inputs.scheduleAt) - - if (response) { - refetchData(inputs, "paging"); + try { + setIsUploading(true) + const response = await testDetailedSchedule(inputs.scheduleAt) + if (response) { + refetchData(inputs, "paging"); + } + } catch(e) { + console.log(e) + } finally { + setIsUploading(false) } }, [inputs]) diff --git a/src/components/DetailedScheduleDetail/ViewByFGDetails.tsx b/src/components/DetailedScheduleDetail/ViewByFGDetails.tsx index 3902e39..ee70d68 100644 --- a/src/components/DetailedScheduleDetail/ViewByFGDetails.tsx +++ b/src/components/DetailedScheduleDetail/ViewByFGDetails.tsx @@ -168,6 +168,17 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit, type, onReleaseClick return row.demandQty; }, }, + { + field: "uomName", + label: t("UoM Name"), + type: "read-only", + style: { + textAlign: "left", + }, + renderCell: (row) => { + return row.uomName; + }, + }, { field: "prodTimeInMinute", label: t("Estimated Production Time"), diff --git a/src/components/RoughSchedule/RoughSchedileSearchView.tsx b/src/components/RoughSchedule/RoughSchedileSearchView.tsx index 8251eba..21cdf27 100644 --- a/src/components/RoughSchedule/RoughSchedileSearchView.tsx +++ b/src/components/RoughSchedule/RoughSchedileSearchView.tsx @@ -28,6 +28,7 @@ import dayjs from "dayjs"; import { defaultPagingController } from "../SearchResults/SearchResults"; import { ScheduleType } from "@/app/api/scheduling"; import { Button, Stack } from "@mui/material"; +import useUploadContext from "../UploadProvider/useUploadContext"; // type RecordStructure ={ // id: number, @@ -59,6 +60,7 @@ const RSOverview: React.FC = ({ type, defaultInputs }) => { ); const [totalCount, setTotalCount] = useState(0); const [inputs, setInputs] = useState(defaultInputs); + const { setIsUploading } = useUploadContext(); const searchCriteria: Criterion[] = useMemo(() => { const searchCriteria: Criterion[] = [ @@ -254,10 +256,16 @@ const RSOverview: React.FC = ({ type, defaultInputs }) => { }, []); const testRoughScheduleClick = useCallback(async () => { - const response = await testRoughSchedule() - - if (response) { - refetchData(inputs, "paging"); + try { + setIsUploading(true) + const response = await testRoughSchedule() + if (response) { + refetchData(inputs, "paging"); + } + } catch(e) { + console.log(e) + } finally { + setIsUploading(false) } }, []); diff --git a/src/components/RoughScheduleDetail/ViewByBomDetails.tsx b/src/components/RoughScheduleDetail/ViewByBomDetails.tsx index ea95fe6..310647d 100644 --- a/src/components/RoughScheduleDetail/ViewByBomDetails.tsx +++ b/src/components/RoughScheduleDetail/ViewByBomDetails.tsx @@ -302,6 +302,17 @@ const ViewByBomDetails: React.FC = ({ return row.demandQty7; }, }, + { + field: "uomName", + label: t("UoM Name"), + type: "read-only", + style: { + textAlign: "left", + }, + renderCell: (row) => { + return row.uomName; + }, + }, ], [t], ); @@ -356,6 +367,17 @@ const ViewByBomDetails: React.FC = ({ return row.demandQty; }, }, + { + field: "uomName", + label: t("UoM Name"), + type: "read-only", + style: { + textAlign: "left", + }, + renderCell: (row) => { + return row.uomName; + }, + }, ], [], ); diff --git a/src/components/RoughScheduleDetail/ViewByFGDetails.tsx b/src/components/RoughScheduleDetail/ViewByFGDetails.tsx index db009a5..f88b7f2 100644 --- a/src/components/RoughScheduleDetail/ViewByFGDetails.tsx +++ b/src/components/RoughScheduleDetail/ViewByFGDetails.tsx @@ -184,6 +184,18 @@ const ViewByFGDetails: React.FC = ({ return row.prodQty; }, }, + { + field: "uomName", + label: t("UoM Name"), + type: "read-only", + style: { + textAlign: "left", + }, + // editable: true, + renderCell: (row) => { + return row.uomName; + }, + }, ], [], ); @@ -269,12 +281,21 @@ const ViewByFGDetails: React.FC = ({ return row.prodQty; }, }, + { + field: "uomName", + label: t("UoM Name"), + type: "read-only", + style: { + textAlign: "left", + }, + renderCell: (row) => { + return row.uomName; + }, + }, ], [], ); - console.log(getValues("prodScheduleLinesByFg")); - return ( diff --git a/src/components/ScheduleTable/BomMaterialTable.tsx b/src/components/ScheduleTable/BomMaterialTable.tsx index 27e8089..85f0e88 100644 --- a/src/components/ScheduleTable/BomMaterialTable.tsx +++ b/src/components/ScheduleTable/BomMaterialTable.tsx @@ -133,6 +133,16 @@ function BomMaterialTable({ bomMaterial }: Props) { return decimalFormatter.format(row.value); }, }, + { + field: "uomName", + headerName: t("UoM Name"), + flex: 0.5, + align: "left", + headerAlign: "left", + renderCell: (row) => { + return row.value; + }, + }, { field: "status", headerName: t("status"),