| @@ -11,9 +11,10 @@ import dayjs from "dayjs"; | |||||
| interface Props { | interface Props { | ||||
| onPickOrderAssigned?: () => void; | onPickOrderAssigned?: () => void; | ||||
| onSwitchToDetailTab?: () => void; | |||||
| } | } | ||||
| const FinishedGoodFloorLanePanel: React.FC<Props> = ({ onPickOrderAssigned }) => { | |||||
| const FinishedGoodFloorLanePanel: React.FC<Props> = ({ onPickOrderAssigned, onSwitchToDetailTab }) => { | |||||
| const { t } = useTranslation("pickOrder"); | const { t } = useTranslation("pickOrder"); | ||||
| const { data: session } = useSession() as { data: SessionWithTokens | null }; | const { data: session } = useSession() as { data: SessionWithTokens | null }; | ||||
| const currentUserId = session?.id ? parseInt(session.id) : undefined; | const currentUserId = session?.id ? parseInt(session.id) : undefined; | ||||
| @@ -84,6 +85,7 @@ const FinishedGoodFloorLanePanel: React.FC<Props> = ({ onPickOrderAssigned }) => | |||||
| window.dispatchEvent(new CustomEvent('pickOrderAssigned')); | window.dispatchEvent(new CustomEvent('pickOrderAssigned')); | ||||
| loadSummaries(); // 刷新按钮状态 | loadSummaries(); // 刷新按钮状态 | ||||
| onPickOrderAssigned?.(); | onPickOrderAssigned?.(); | ||||
| onSwitchToDetailTab?.(); | |||||
| } else if (res.code === "USER_BUSY") { | } else if (res.code === "USER_BUSY") { | ||||
| Swal.fire({ | Swal.fire({ | ||||
| icon: "warning", | icon: "warning", | ||||
| @@ -116,7 +118,7 @@ const FinishedGoodFloorLanePanel: React.FC<Props> = ({ onPickOrderAssigned }) => | |||||
| } finally { | } finally { | ||||
| setIsAssigning(false); | setIsAssigning(false); | ||||
| } | } | ||||
| }, [currentUserId, t, selectedDate, onPickOrderAssigned]); | |||||
| }, [currentUserId, t, selectedDate, onPickOrderAssigned, onSwitchToDetailTab, loadSummaries]); | |||||
| const getDateLabel = (offset: number) => { | const getDateLabel = (offset: number) => { | ||||
| return dayjs().add(offset, 'day').format('YYYY-MM-DD'); | return dayjs().add(offset, 'day').format('YYYY-MM-DD'); | ||||
| @@ -330,6 +330,10 @@ const handleAssignByLane = useCallback(async ( | |||||
| }, | }, | ||||
| [], | [], | ||||
| ); | ); | ||||
| const handleSwitchToDetailTab = useCallback(() => { | |||||
| setTabIndex(1); | |||||
| }, []); | |||||
| const openCreateModal = useCallback(async () => { | const openCreateModal = useCallback(async () => { | ||||
| console.log("testing") | console.log("testing") | ||||
| @@ -621,10 +625,15 @@ const handleAssignByLane = useCallback(async ( | |||||
| </Box> | </Box> | ||||
| {/* Content section - NO overflow: 'auto' here */} | {/* Content section - NO overflow: 'auto' here */} | ||||
| <Box sx={{ | |||||
| p: 2 | |||||
| }}> | |||||
| {tabIndex === 0 && <PickExecution filterArgs={filterArgs} onFgPickOrdersChange={setFgPickOrdersData}/>} | |||||
| <Box sx={{ p: 2 }}> | |||||
| {tabIndex === 0 && ( | |||||
| <PickExecution | |||||
| filterArgs={filterArgs} | |||||
| onFgPickOrdersChange={setFgPickOrdersData} | |||||
| onSwitchToDetailTab={handleSwitchToDetailTab} | |||||
| /> | |||||
| )} | |||||
| {tabIndex === 1 && <PickExecutionDetail filterArgs={filterArgs} />} | {tabIndex === 1 && <PickExecutionDetail filterArgs={filterArgs} />} | ||||
| {tabIndex === 2 && <GoodPickExecutionRecord filterArgs={filterArgs} />} | {tabIndex === 2 && <GoodPickExecutionRecord filterArgs={filterArgs} />} | ||||
| {tabIndex === 3 && <FGPickOrderTicketReleaseTable/>} | {tabIndex === 3 && <FGPickOrderTicketReleaseTable/>} | ||||
| @@ -57,6 +57,7 @@ import GoodPickExecutiondetail from "./GoodPickExecutiondetail"; | |||||
| interface Props { | interface Props { | ||||
| filterArgs: Record<string, any>; | filterArgs: Record<string, any>; | ||||
| onFgPickOrdersChange?: (fgPickOrders: FGPickOrderResponse[]) => void; | onFgPickOrdersChange?: (fgPickOrders: FGPickOrderResponse[]) => void; | ||||
| onSwitchToDetailTab?: () => void; | |||||
| } | } | ||||
| // QR Code Modal Component (from LotTable) | // QR Code Modal Component (from LotTable) | ||||
| @@ -313,7 +314,7 @@ const QrCodeModal: React.FC<{ | |||||
| ); | ); | ||||
| }; | }; | ||||
| const PickExecution: React.FC<Props> = ({ filterArgs, onFgPickOrdersChange }) => { | |||||
| const PickExecution: React.FC<Props> = ({ filterArgs, onFgPickOrdersChange, onSwitchToDetailTab }) => { | |||||
| const { t } = useTranslation("pickOrder"); | const { t } = useTranslation("pickOrder"); | ||||
| const router = useRouter(); | const router = useRouter(); | ||||
| const { data: session } = useSession() as { data: SessionWithTokens | null }; | const { data: session } = useSession() as { data: SessionWithTokens | null }; | ||||
| @@ -985,6 +986,7 @@ return ( | |||||
| fetchFgPickOrdersData(); | fetchFgPickOrdersData(); | ||||
| } | } | ||||
| }} | }} | ||||
| onSwitchToDetailTab={onSwitchToDetailTab} | |||||
| /> | /> | ||||
| ) : ( | ) : ( | ||||
| // 有活动订单,显示 FG 订单信息 | // 有活动订单,显示 FG 订单信息 | ||||