diff --git a/frontend/src/pages/admin/AdminProductsPage.tsx b/frontend/src/pages/admin/AdminProductsPage.tsx index 286db3b..ee7705d 100644 --- a/frontend/src/pages/admin/AdminProductsPage.tsx +++ b/frontend/src/pages/admin/AdminProductsPage.tsx @@ -35,7 +35,7 @@ export default function AdminProductsPage() { // 搜索 & 筛选 & 分组 const [keyword, setKeyword] = useState(""); const [statusFilter, setStatusFilter] = useState(""); - const [groupBy, setGroupBy] = useState<"order" | "device">("order"); + const [groupBy, setGroupBy] = useState<"order" | "device">("device"); const [expandedGroups, setExpandedGroups] = useState>(new Set()); // 打印 @@ -71,7 +71,7 @@ export default function AdminProductsPage() { useEffect(() => { loadProducts(); }, []); // eslint-disable-line react-hooks/exhaustive-deps - function handleSearch(e?: React.FormEvent) { e?.preventDefault(); setExpandedGroups(new Set()); loadProducts(); } + function handleSearch(e?: React.FormEvent) { e?.preventDefault(); loadProducts(); } // ---- 分组 + 状态过滤 ---- const productGroups = useMemo(() => { @@ -93,6 +93,11 @@ export default function AdminProductsPage() { })); }, [products, statusFilter, groupBy]); + // 🔧 默认全部展开:productGroups 变化时自动展开所有面板 + useEffect(() => { + setExpandedGroups(new Set(productGroups.map(g => g.groupKey))); + }, [productGroups]); + function toggleGroup(key: string) { setExpandedGroups(prev => { const n = new Set(prev); if (n.has(key)) n.delete(key); else n.add(key); return n; }); } @@ -130,13 +135,21 @@ export default function AdminProductsPage() { {/* 搜索 + 分组 + 状态过滤(移植自 AdminTasksPage) */}
-
- 分组: - {(["order", "device"] as const).map(m => ( - - ))} +
+
+ 分组: + {(["order", "device"] as const).map(m => ( + + ))} +
+
+ + +