From 60ba969e37afc70e4fb126e8851a9d9cf1dc428b Mon Sep 17 00:00:00 2001 From: czc <5+czc@noreply.localhost> Date: Wed, 22 Jul 2026 10:01:53 +0800 Subject: [PATCH] refactor: simplify order sidebar --- src/components/dashboard/Dashboard.tsx | 1 - .../dashboard/OrderSidebar.test.tsx | 46 ++++++++++++ src/components/dashboard/OrderSidebar.tsx | 42 ++--------- src/index.css | 73 ++----------------- 4 files changed, 57 insertions(+), 105 deletions(-) create mode 100644 src/components/dashboard/OrderSidebar.test.tsx diff --git a/src/components/dashboard/Dashboard.tsx b/src/components/dashboard/Dashboard.tsx index b4cc2d8..c65ff89 100644 --- a/src/components/dashboard/Dashboard.tsx +++ b/src/components/dashboard/Dashboard.tsx @@ -207,7 +207,6 @@ export function Dashboard() { selectedOrderId={selectedOrder.id} search={search} activeOrder={selectedOrder} - showProjectDossier={orders.length === 1} onSearchChange={setSearch} onSelectOrder={handleSelectOrder} /> diff --git a/src/components/dashboard/OrderSidebar.test.tsx b/src/components/dashboard/OrderSidebar.test.tsx new file mode 100644 index 0000000..ef9010a --- /dev/null +++ b/src/components/dashboard/OrderSidebar.test.tsx @@ -0,0 +1,46 @@ +import { renderToStaticMarkup } from 'react-dom/server' +import { describe, expect, it } from 'vitest' +import { createMockOrders } from '@/data/mock-data' +import { OrderSidebar } from './OrderSidebar' + +describe('OrderSidebar', () => { + const sourceOrders = createMockOrders() + const activeOrder = sourceOrders[0] + + it('keeps the order list and active BOM dossier without legacy filters or pagination', () => { + const markup = renderToStaticMarkup( + undefined} + onSelectOrder={() => undefined} + />, + ) + + expect(markup).toContain('订单列表') + expect(markup).toContain('项目 BOM 档案') + expect(markup).not.toContain('筛选订单') + expect(markup).not.toContain('全部状态') + expect(markup).not.toContain('全部产线') + expect(markup).not.toContain('订单分页') + }) + + it('keeps the active BOM dossier when the search result is empty', () => { + const markup = renderToStaticMarkup( + undefined} + onSelectOrder={() => undefined} + />, + ) + + expect(markup).toContain('没有匹配订单') + expect(markup).toContain('修改搜索关键词后重试') + expect(markup).toContain('项目 BOM 档案') + }) +}) diff --git a/src/components/dashboard/OrderSidebar.tsx b/src/components/dashboard/OrderSidebar.tsx index 14ec1d1..d66902b 100644 --- a/src/components/dashboard/OrderSidebar.tsx +++ b/src/components/dashboard/OrderSidebar.tsx @@ -1,16 +1,12 @@ import { useMemo } from 'react' import { Boxes, - ChevronDown, - ChevronLeft, - ChevronRight, DatabaseZap, GitBranch, Layers3, PackageOpen, Search, ShieldAlert, - SlidersHorizontal, } from 'lucide-react' import type { OrderSummary, RiskLevel } from '@/types' import { calculateOrderTreeStats, riskMeta, statusMeta } from '@/lib/production' @@ -21,7 +17,6 @@ import { RingProgress, TechVisual } from './TechVisual' interface OrderSidebarProps { orders: OrderSummary[] activeOrder: OrderSummary - showProjectDossier: boolean selectedOrderId: string search: string onSearchChange: (value: string) => void @@ -31,39 +26,24 @@ interface OrderSidebarProps { export function OrderSidebar({ orders, activeOrder, - showProjectDossier, selectedOrderId, search, onSearchChange, onSelectOrder, }: OrderSidebarProps) { return ( -