From ca909fae860d1d8104a0daa3573b8a4f0bad4ecc Mon Sep 17 00:00:00 2001 From: wangziqi Date: Mon, 6 Jul 2026 14:33:30 +0800 Subject: [PATCH] feat: add status+tenant filter to Students page, status filter to Rooms page --- apps/admin/src/pages/Rooms/index.tsx | 12 +++++++----- apps/admin/src/pages/Students/index.tsx | 23 ++++++++++++++++------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/apps/admin/src/pages/Rooms/index.tsx b/apps/admin/src/pages/Rooms/index.tsx index c7b6cf6..56e138d 100644 --- a/apps/admin/src/pages/Rooms/index.tsx +++ b/apps/admin/src/pages/Rooms/index.tsx @@ -45,6 +45,7 @@ const RoomsPage: React.FC = () => { const [archivedCount, setArchivedCount] = useState(0); const [searchText, setSearchText] = useState(''); const [filterBuilding, setFilterBuilding] = useState(undefined); + const [filterStatus, setFilterStatus] = useState(undefined); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [form] = Form.useForm(); @@ -89,13 +90,12 @@ const RoomsPage: React.FC = () => { let result = data; if (searchText) { const keyword = searchText.toLowerCase(); - result = result.filter((r: any) => r.roomNumber?.toLowerCase().includes(keyword)); - } - if (filterBuilding) { - result = result.filter((r: any) => r.building === filterBuilding); + result = result.filter((r: Record) => typeof r.roomNumber === 'string' && r.roomNumber.toLowerCase().includes(keyword)); } + if (filterBuilding) result = result.filter((r: Record) => r.building === filterBuilding); + if (filterStatus) result = result.filter((r: Record) => r.status === filterStatus); return result; - }, [data, searchText, filterBuilding]); + }, [data, searchText, filterBuilding, filterStatus]); const handleSave = async () => { const values = await form.validateFields(); @@ -314,6 +314,8 @@ const RoomsPage: React.FC = () => { onChange={(v) => setFilterBuilding(v)} options={buildings.map((b) => ({ value: b, label: b }))} /> + { setFilterStatus(v); }}> + {Object.entries(statusMap).filter(([k]) => k !== 'archived').map(([k, v]) => {v.text})} + +