diff --git a/src/components/production/WorkerScreen/index.tsx b/src/components/production/WorkerScreen/index.tsx index 6f6b746e..892bb7a1 100644 --- a/src/components/production/WorkerScreen/index.tsx +++ b/src/components/production/WorkerScreen/index.tsx @@ -1780,6 +1780,7 @@ function SidebarContent({ apiOrders, }: SidebarContentProps) { const [sidebarTab, setSidebarTab] = useState<'orders' | 'wip'>('orders'); + const [showCompleted, setShowCompleted] = useState(false); const [searchTerm, setSearchTerm] = useState(''); // 수주목록 / 재공품 분리 @@ -1790,15 +1791,23 @@ function SidebarContent({ apiOrders.filter((o) => o.subType === 'wip'), [apiOrders]); + // 완료/미완료 필터링 + const pendingRegular = useMemo(() => regularOrders.filter(o => o.status !== 'completed'), [regularOrders]); + const completedRegular = useMemo(() => regularOrders.filter(o => o.status === 'completed'), [regularOrders]); + const pendingWip = useMemo(() => wipOrders.filter(o => o.status !== 'completed'), [wipOrders]); + const completedWip = useMemo(() => wipOrders.filter(o => o.status === 'completed'), [wipOrders]); + // 검색 필터링 const displayOrders = useMemo(() => { - const source = sidebarTab === 'orders' ? regularOrders : wipOrders; - if (!searchTerm.trim()) return source; + const baseOrders = sidebarTab === 'orders' + ? (showCompleted ? completedRegular : pendingRegular) + : (showCompleted ? completedWip : pendingWip); + if (!searchTerm.trim()) return baseOrders; const q = searchTerm.toLowerCase(); - return source.filter((o) => + return baseOrders.filter((o) => o.siteName.toLowerCase().includes(q) || o.date.includes(q) ); - }, [sidebarTab, regularOrders, wipOrders, searchTerm]); + }, [sidebarTab, showCompleted, pendingRegular, completedRegular, pendingWip, completedWip, searchTerm]); const renderOrders = (orders: SidebarOrder[]) => ( <> @@ -1861,7 +1870,7 @@ function SidebarContent({