diff --git a/src/components/PoDetail/PoDetail.tsx b/src/components/PoDetail/PoDetail.tsx index 24a46e5..dc092e6 100644 --- a/src/components/PoDetail/PoDetail.tsx +++ b/src/components/PoDetail/PoDetail.tsx @@ -329,9 +329,22 @@ const PoDetail: React.FC = ({ po, warehouse, printerCombo }) => { } }) + const labelPrinters = useMemo(() => { + return (printerCombo ?? []).filter((p) => { + const text = `${p.label ?? ""} ${p.name ?? ""} ${p.code ?? ""}`.toLowerCase(); + return text.includes("label"); + }); + }, [printerCombo]); + const [selectedPrinter, setSelectedPrinter] = useState( - printerCombo?.[0], + labelPrinters?.[0], ); + useEffect(() => { + // If options change, keep selection valid and prefer first Label printer. + if (!selectedPrinter || !labelPrinters.some((p) => p.id === selectedPrinter.id)) { + setSelectedPrinter(labelPrinters[0]); + } + }, [labelPrinters, selectedPrinter]); const [printQty, setPrintQty] = useState(1); const [printDialogOpen, setPrintDialogOpen] = useState(false); const [isBulkPrinting, setIsBulkPrinting] = useState(false); @@ -1052,7 +1065,7 @@ const PoDetail: React.FC = ({ po, warehouse, printerCombo }) => { 列印 setSelectedPrinter(value)} renderInput={(params) => (