diff --git a/src/app/api/laserPrint/actions.ts b/src/app/api/laserPrint/actions.ts index f5e6c72..952892c 100644 --- a/src/app/api/laserPrint/actions.ts +++ b/src/app/api/laserPrint/actions.ts @@ -38,20 +38,6 @@ export interface LaserBag2Settings { lastReceiveSuccess?: LaserLastReceiveSuccess | null; } -/** Live TCP queries GetMarkData / GetMarkStatus / GetMarkedCount (same host/port as laser send). */ -export interface LaserBag2MarkInfo { - host: string; - port: number; - markData?: string | null; - /** 0 idle, 1 marking, 2 other — when the device returns a parseable digit */ - markStatus?: number | null; - markStatusLabel?: string | null; - markedCount?: number | null; - rawMarkStatus?: string | null; - rawMarkedCount?: string | null; - error?: string | null; -} - export interface LaserBag2SendRequest { itemId: number | null; stockInLineId: number | null; @@ -123,20 +109,6 @@ export async function fetchLaserBag2Settings(): Promise { return res.json() as Promise; } -export async function fetchLaserBag2MarkInfo(): Promise { - const base = (NEXT_PUBLIC_API_URL ?? "").replace(/\/$/, ""); - if (!base) { - throw new Error("NEXT_PUBLIC_API_URL is not set."); - } - const url = `${base}/plastic/laser-bag2-mark-info`; - const res = await clientAuthFetch(url, { method: "GET" }); - if (!res.ok) { - const body = await res.text().catch(() => ""); - throw new Error(`讀取打標狀態失敗(${res.status})${body ? `:${body.slice(0, 200)}` : ""}`); - } - return res.json() as Promise; -} - export async function sendLaserBag2Job(body: LaserBag2SendRequest): Promise { const url = `${NEXT_PUBLIC_API_URL}/plastic/print-laser-bag2`; const res = await clientAuthFetch(url, { diff --git a/src/components/LaserPrint/LaserPrintSearch.tsx b/src/components/LaserPrint/LaserPrintSearch.tsx index 029aad0..df143b6 100644 --- a/src/components/LaserPrint/LaserPrintSearch.tsx +++ b/src/components/LaserPrint/LaserPrintSearch.tsx @@ -21,10 +21,8 @@ import ChevronRight from "@mui/icons-material/ChevronRight"; import Settings from "@mui/icons-material/Settings"; import { checkPrinterStatus, - fetchLaserBag2MarkInfo, fetchLaserJobOrders, fetchLaserBag2Settings, - type LaserBag2MarkInfo, type LaserLastReceiveSuccess, JobOrderListItem, patchSetting, @@ -48,8 +46,6 @@ const PRINTER_RETRY_MS = 30 * 1000; const LASER_SEND_COUNT = 3; const BETWEEN_SEND_MS = 3000; const SUCCESS_SIGNAL_MS = 3500; -/** Poll laser TCP GetMarkData / GetMarkStatus / GetMarkedCount */ -const MARK_INFO_MS = 5000; function formatQty(val: number | null | undefined): string { if (val == null) return "—"; @@ -68,11 +64,6 @@ function getBatch(jo: JobOrderListItem): string { return (jo.lotNo || "—").trim() || "—"; } -function fmtMarkText(s: string | null | undefined): string { - if (s == null || s === "") return "—"; - return s; -} - function delay(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } @@ -98,8 +89,6 @@ const LaserPrintSearch: React.FC = () => { const [settingsLoaded, setSettingsLoaded] = useState(false); const [printerConnected, setPrinterConnected] = useState(false); const [printerMessage, setPrinterMessage] = useState("檸檬機(激光機)未連接"); - const [markInfo, setMarkInfo] = useState(null); - const [markInfoError, setMarkInfoError] = useState(null); const loadSystemSettings = useCallback(async () => { try { @@ -185,23 +174,6 @@ const LaserPrintSearch: React.FC = () => { return () => clearInterval(id); }, [printerConnected, checkLaser, settingsLoaded]); - const loadMarkInfo = useCallback(async () => { - try { - const m = await fetchLaserBag2MarkInfo(); - setMarkInfo(m); - setMarkInfoError(null); - } catch (e) { - setMarkInfoError(e instanceof Error ? e.message : "無法讀取打標狀態"); - } - }, []); - - useEffect(() => { - if (!settingsLoaded) return; - void loadMarkInfo(); - const id = setInterval(() => void loadMarkInfo(), MARK_INFO_MS); - return () => clearInterval(id); - }, [settingsLoaded, loadMarkInfo]); - const goPrevDay = () => { setPlanDate((d) => dayjs(d).subtract(1, "day").format("YYYY-MM-DD")); }; @@ -258,7 +230,6 @@ const LaserPrintSearch: React.FC = () => { : ""; setSuccessSignal(`已送出 ${LASER_SEND_COUNT} 次至檸檬機(激光機)${ackHint}`); await loadSystemSettings(); - void loadMarkInfo(); } catch (e) { setErrorSnackbar({ open: true, @@ -279,7 +250,6 @@ const LaserPrintSearch: React.FC = () => { void checkLaser(); await loadSystemSettings(); void loadJobOrders(false); - void loadMarkInfo(); } catch (e) { setErrorSnackbar({ open: true, @@ -288,14 +258,6 @@ const LaserPrintSearch: React.FC = () => { } }; - const lastReceiveJson = - lastLaserReceive?.itemId != null && lastLaserReceive?.stockInLineId != null - ? JSON.stringify({ - itemId: lastLaserReceive.itemId, - stockInLineId: lastLaserReceive.stockInLineId, - }) - : null; - return ( {successSignal && ( @@ -306,74 +268,11 @@ const LaserPrintSearch: React.FC = () => { {settingsLoaded && lastLaserReceive && ( - 上次印表機已確認(receive)的工單 - - - 工單號:{lastLaserReceive.jobOrderNo ?? "—"} 批號/Lot:{lastLaserReceive.lotNo ?? "—"} - - - JSON:{lastReceiveJson ?? "—"} - - - 時間:{formatHongKongDateTime(lastLaserReceive.sentAt)} 來源:{lastLaserReceive.source ?? "—"} - {lastLaserReceive.printerAck ? ` 回覆:${lastLaserReceive.printerAck}` : ""} + 上次印表機已確認工單:{lastLaserReceive.jobOrderNo ?? "—"} {formatHongKongDateTime(lastLaserReceive.sentAt)} )} - {settingsLoaded && ( - - - 目前激光機打標(TCP:GetMarkData/GetMarkStatus/GetMarkedCount) - {markInfo ? ` ${markInfo.host}:${markInfo.port}` : ""} - - {markInfoError && ( - - {markInfoError} - - )} - {!markInfo && !markInfoError && ( - - - - 讀取中… - - - )} - {markInfo && ( - - - GetMarkStatus(0 待機/1 打標中/2 其他): - {markInfo.markStatusLabel ?? "—"} - {markInfo.markStatus != null ? `(${markInfo.markStatus})` : ""} - {markInfo.rawMarkStatus ? ` 原始:${markInfo.rawMarkStatus}` : ""} - - - GetMarkData(目前標記字串): - {fmtMarkText(markInfo.markData)} - - - GetMarkedCount: - {markInfo.markedCount != null - ? markInfo.markedCount.toLocaleString() - : fmtMarkText(markInfo.rawMarkedCount)} - {markInfo.markedCount != null && - markInfo.rawMarkedCount != null && - markInfo.rawMarkedCount !== "" && - String(markInfo.markedCount) !== markInfo.rawMarkedCount.trim() - ? ` 原始:${markInfo.rawMarkedCount}` - : ""} - - {markInfo.error ? ( - - 部分查詢:{markInfo.error} - - ) : null} - - )} - - )} -