| @@ -329,9 +329,22 @@ const PoDetail: React.FC<Props> = ({ 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 | undefined>( | const [selectedPrinter, setSelectedPrinter] = useState<PrinterCombo | undefined>( | ||||
| 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 [printQty, setPrintQty] = useState(1); | ||||
| const [printDialogOpen, setPrintDialogOpen] = useState(false); | const [printDialogOpen, setPrintDialogOpen] = useState(false); | ||||
| const [isBulkPrinting, setIsBulkPrinting] = useState(false); | const [isBulkPrinting, setIsBulkPrinting] = useState(false); | ||||
| @@ -1052,7 +1065,7 @@ const PoDetail: React.FC<Props> = ({ po, warehouse, printerCombo }) => { | |||||
| <Typography variant="h6">列印</Typography> | <Typography variant="h6">列印</Typography> | ||||
| <Autocomplete | <Autocomplete | ||||
| disableClearable | disableClearable | ||||
| options={printerCombo} | |||||
| options={labelPrinters} | |||||
| value={selectedPrinter} | value={selectedPrinter} | ||||
| onChange={(_event, value) => setSelectedPrinter(value)} | onChange={(_event, value) => setSelectedPrinter(value)} | ||||
| renderInput={(params) => ( | renderInput={(params) => ( | ||||