From 6f955e73dcb83c9103557076de98271b7553bb87 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Tue, 25 Nov 2025 10:17:03 +0800 Subject: [PATCH] update --- src/app/(main)/jodetail/page.tsx | 4 +- src/app/api/jo/actions.ts | 3 +- .../Jodetail/FInishedJobOrderRecord.tsx | 2 +- .../Jodetail/FinishedGoodSearchWrapper.tsx | 15 ++- src/components/Jodetail/JodetailSearch.tsx | 9 +- .../Jodetail/completeJobOrderRecord.tsx | 3 +- .../ProductionProcessJobOrderDetail.tsx | 7 +- .../ProductionProcessStepExecution.tsx | 114 ++++++++++++++++-- src/i18n/zh/common.json | 9 +- 9 files changed, 137 insertions(+), 29 deletions(-) diff --git a/src/app/(main)/jodetail/page.tsx b/src/app/(main)/jodetail/page.tsx index a9a8d79..37a61eb 100644 --- a/src/app/(main)/jodetail/page.tsx +++ b/src/app/(main)/jodetail/page.tsx @@ -5,7 +5,7 @@ import { Stack, Typography } from "@mui/material"; import { Metadata } from "next"; import React, { Suspense } from "react"; import GeneralLoading from "@/components/General/GeneralLoading"; - +import JodetailSearchWrapper from "@/components/Jodetail/FinishedGoodSearchWrapper"; export const metadata: Metadata = { title: "Job Order Pickexcution" } @@ -29,7 +29,7 @@ const jo: React.FC = async () => { }> - + diff --git a/src/app/api/jo/actions.ts b/src/app/api/jo/actions.ts index f3ba859..805b1cf 100644 --- a/src/app/api/jo/actions.ts +++ b/src/app/api/jo/actions.ts @@ -769,7 +769,8 @@ export async function PrintPickRecord(request: PrintPickRecordRequest){ params.append('printQty', request.printQty.toString()); } - const response = await serverFetchWithNoContent(`${BASE_API_URL}/jo/print-PickRecord?${params.toString()}`,{ + //const response = await serverFetchWithNoContent(`${BASE_API_URL}/jo/print-PickRecord?${params.toString()}`,{ + const response = await serverFetchWithNoContent(`${BASE_API_URL}/jo/newPrint-PickRecord?${params.toString()}`,{ method: "GET" }); diff --git a/src/components/Jodetail/FInishedJobOrderRecord.tsx b/src/components/Jodetail/FInishedJobOrderRecord.tsx index 2590801..a4900b1 100644 --- a/src/components/Jodetail/FInishedJobOrderRecord.tsx +++ b/src/components/Jodetail/FInishedJobOrderRecord.tsx @@ -42,7 +42,7 @@ import { import SearchBox, { Criterion } from "../SearchBox"; import { useSession } from "next-auth/react"; import { SessionWithTokens } from "@/config/authConfig"; - +import { PrinterCombo } from "@/app/api/settings/printer"; interface Props { filterArgs: Record; } diff --git a/src/components/Jodetail/FinishedGoodSearchWrapper.tsx b/src/components/Jodetail/FinishedGoodSearchWrapper.tsx index da633c5..dd7c64d 100644 --- a/src/components/Jodetail/FinishedGoodSearchWrapper.tsx +++ b/src/components/Jodetail/FinishedGoodSearchWrapper.tsx @@ -1,13 +1,14 @@ import { fetchPickOrders } from "@/app/api/pickOrder"; +import { fetchPrinterCombo } from "@/app/api/settings/printer"; import GeneralLoading from "../General/GeneralLoading"; -import PickOrderSearch from "./FinishedGoodSearchWrapper"; +import JodetailSearch from "./JodetailSearch"; interface SubComponents { Loading: typeof GeneralLoading; } -const FinishedGoodSearchWrapper: React.FC & SubComponents = async () => { - const [pickOrders] = await Promise.all([ +const JodetailSearchWrapper: React.FC & SubComponents = async () => { + const [pickOrders, printerCombo] = await Promise.all([ fetchPickOrders({ code: undefined, targetDateFrom: undefined, @@ -16,11 +17,13 @@ const FinishedGoodSearchWrapper: React.FC & SubComponents = async () => { status: undefined, itemName: undefined, }), + fetchPrinterCombo(), ]); + console.log("%c printerCombo:", "color:green", printerCombo); - return ; + return ; }; -FinishedGoodSearchWrapper.Loading = GeneralLoading; +JodetailSearchWrapper.Loading = GeneralLoading; -export default FinishedGoodSearchWrapper; +export default JodetailSearchWrapper; \ No newline at end of file diff --git a/src/components/Jodetail/JodetailSearch.tsx b/src/components/Jodetail/JodetailSearch.tsx index 0fd11d4..77275bb 100644 --- a/src/components/Jodetail/JodetailSearch.tsx +++ b/src/components/Jodetail/JodetailSearch.tsx @@ -37,6 +37,7 @@ import { fetchPrinterCombo } from "@/app/api/settings/printer"; import { PrinterCombo } from "@/app/api/settings/printer"; interface Props { pickOrders: PickOrderResult[]; + printerCombo: PrinterCombo[]; } type SearchQuery = Partial< @@ -45,7 +46,7 @@ type SearchQuery = Partial< type SearchParamNames = keyof SearchQuery; -const JodetailSearch: React.FC = ({ pickOrders }) => { +const JodetailSearch: React.FC = ({ pickOrders, printerCombo }) => { const { t } = useTranslation("jo"); const { data: session } = useSession() as { data: SessionWithTokens | null }; const currentUserId = session?.id ? parseInt(session.id) : undefined; @@ -65,7 +66,7 @@ const [hasAssignedJobOrders, setHasAssignedJobOrders] = useState(false); const [hasDataTab0, setHasDataTab0] = useState(false); const [hasDataTab1, setHasDataTab1] = useState(false); const hasAnyAssignedData = hasDataTab0 || hasDataTab1; -const [printers, setPrinters] = useState([]); +//const [printers, setPrinters] = useState([]); const [hideCompletedUntilNext, setHideCompletedUntilNext] = useState( typeof window !== 'undefined' && localStorage.getItem('hideCompletedUntilNext') === 'true' ); @@ -95,6 +96,7 @@ const [printers, setPrinters] = useState([]); window.removeEventListener('jobOrderDataStatus', handleJobOrderDataChange as EventListener); }; }, []); + /* useEffect(() => { const fetchPrinters = async () => { try { @@ -108,6 +110,7 @@ const [printers, setPrinters] = useState([]); }; fetchPrinters(); }, []); + */ useEffect(() => { const onAssigned = () => { localStorage.removeItem('hideCompletedUntilNext'); @@ -482,7 +485,7 @@ const [printers, setPrinters] = useState([]); p: 2 }}> {tabIndex === 0 && } - {tabIndex === 1 && } + {tabIndex === 1 && } {tabIndex === 2 && } {/* {tabIndex === 3 && } */} diff --git a/src/components/Jodetail/completeJobOrderRecord.tsx b/src/components/Jodetail/completeJobOrderRecord.tsx index 31213f3..f54d545 100644 --- a/src/components/Jodetail/completeJobOrderRecord.tsx +++ b/src/components/Jodetail/completeJobOrderRecord.tsx @@ -101,7 +101,7 @@ interface LotDetail { uomDesc: string; } -const CompleteJobOrderRecord: React.FC = ({ filterArgs ,printerCombo=[]}) => { +const CompleteJobOrderRecord: React.FC = ({ filterArgs ,printerCombo}) => { const { t } = useTranslation("jo"); const router = useRouter(); const { data: session } = useSession() as { data: SessionWithTokens | null }; @@ -131,6 +131,7 @@ const CompleteJobOrderRecord: React.FC = ({ filterArgs ,printerCombo=[]}) }; const availablePrinters = useMemo(() => { if (printerCombo.length === 0) { + console.log("No printers available, using default demo printer"); return [defaultDemoPrinter]; } return printerCombo; diff --git a/src/components/ProductionProcess/ProductionProcessJobOrderDetail.tsx b/src/components/ProductionProcess/ProductionProcessJobOrderDetail.tsx index c51754c..56635ff 100644 --- a/src/components/ProductionProcess/ProductionProcessJobOrderDetail.tsx +++ b/src/components/ProductionProcess/ProductionProcessJobOrderDetail.tsx @@ -221,10 +221,13 @@ const handleRelease = useCallback(() => { diff --git a/src/components/ProductionProcess/ProductionProcessStepExecution.tsx b/src/components/ProductionProcess/ProductionProcessStepExecution.tsx index 086651d..c8d8fb3 100644 --- a/src/components/ProductionProcess/ProductionProcessStepExecution.tsx +++ b/src/components/ProductionProcess/ProductionProcessStepExecution.tsx @@ -276,7 +276,7 @@ const ProductionProcessStepExecution: React.FC {/* By-product */} - + {/* {t("By-product")} @@ -293,7 +293,7 @@ const ProductionProcessStepExecution: React.FC{lineDetail.byproductUom || "-"} - + */} {/* Defect */} @@ -398,9 +398,10 @@ const ProductionProcessStepExecution: React.FC - {t("Type")} - {t("Quantity")} - {t("Unit")} + {t("Type")} + {t("Quantity")} + {t("Unit")} + {t(" ")} @@ -432,8 +433,13 @@ const ProductionProcessStepExecution: React.FC + + {t("Description")} + + {/* byproduct */} + {/* @@ -464,11 +470,11 @@ const ProductionProcessStepExecution: React.FC - - {/* defect */} + */} + {/* defect 1 */} - {t("Defect")} + {t("Defect")}{t("(1)")} + + setOutputData({ + ...outputData, + defectUom: e.target.value + })} + /> + + + {/* defect 2 */} + + + {t("Defect")}{t("(2)")} + + + setOutputData({ + ...outputData, + defectQty: parseInt(e.target.value) || 0 + })} + /> + + + setOutputData({ + ...outputData, + defectUom: e.target.value + })} + /> + + + setOutputData({ + ...outputData, + defectUom: e.target.value + })} + /> + + + {/* defect 3 */} + + + {t("Defect")}{t("(3)")} + + + setOutputData({ + ...outputData, + defectQty: parseInt(e.target.value) || 0 + })} + /> + + + setOutputData({ + ...outputData, + defectUom: e.target.value + })} + /> + + + setOutputData({ + ...outputData, + defectUom: e.target.value + })} + /> + - {/* scrap */} diff --git a/src/i18n/zh/common.json b/src/i18n/zh/common.json index 0458ee3..15ddb61 100644 --- a/src/i18n/zh/common.json +++ b/src/i18n/zh/common.json @@ -103,6 +103,7 @@ "Stop Scan": "停止掃碼", "Scan Result": "掃碼結果", "Expiry Date": "有效期", + "Is Dark | Dense | Float| Scrap Rate| Allergic Substance": "顔色深淺度 | 濃淡 | 浮沉 | 損耗率 | 過敏原", "Pick Order Code": "提料單編號", "Target Date": "需求日期", "Lot Required Pick Qty": "批號需求數量", @@ -116,10 +117,10 @@ "By-product": "副產品", "Complete Step": "完成步驟", - "Defect": "缺陷", - "Output from Process": "流程輸出", + "Defect": "不良品", + "Output from Process": "工序產出", "Quantity": "數量", - "Scrap": "廢料", + "Scrap": "損耗", "Unit": "單位", "Back to List": "返回列表", "Production Output Data Entry": "生產輸出數據輸入", @@ -166,7 +167,7 @@ "View": "查看", "Back": "返回", "BoM Material": "物料清單", - "Is Dark | Dense | Float": "顔色深淺度 | 濃淡 | 浮沉", + "Is Dark | Dense | Float | Scrap Rate | Allergic Substance": "顔色深淺度 | 濃淡 | 浮沉 | 損耗率 | 過敏原", "Item Code": "物料編號", "Item Name": "物料名稱", "Job Order Info": "工單信息",