feat: add status+tenant filter to Students page, status filter to Rooms page

This commit is contained in:
2026-07-06 14:33:30 +08:00
parent beeb8cb905
commit ca909fae86
2 changed files with 23 additions and 12 deletions

View File

@@ -45,6 +45,7 @@ const RoomsPage: React.FC = () => {
const [archivedCount, setArchivedCount] = useState(0);
const [searchText, setSearchText] = useState('');
const [filterBuilding, setFilterBuilding] = useState<string | undefined>(undefined);
const [filterStatus, setFilterStatus] = useState<string | undefined>(undefined);
const [selectedRowKeys, setSelectedRowKeys] = useState<number[]>([]);
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<string, unknown>) => typeof r.roomNumber === 'string' && r.roomNumber.toLowerCase().includes(keyword));
}
if (filterBuilding) result = result.filter((r: Record<string, unknown>) => r.building === filterBuilding);
if (filterStatus) result = result.filter((r: Record<string, unknown>) => 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 }))}
/>
<Select placeholder="状态" allowClear style={{ width: 110 }} value={filterStatus} onChange={setFilterStatus}
options={[{value:'available',label:'可入住'},{value:'full',label:'已满'},{value:'maintenance',label:'维护中'}]} />
<Button
type={showArchived ? 'primary' : 'default'}
onClick={() => setShowArchived(!showArchived)}