feat: attendance frontend page + backend list/classes endpoints

- Create AttendancePage with filter bar, table, calendar view toggle, batch add modal
- Register /attendance route with PermissionRoute (attendance:view)
- Add menu item in MainLayout with CheckCircleOutlined icon
- Add GET /attendance-records with pagination and filters
- Add GET /attendance-records/classes for class dropdown
- Add source column to AttendanceRecord entity (default: manual)
- Frontend tsc --noEmit: clean; backend: only pre-existing test errors
This commit is contained in:
2026-07-05 19:49:53 +08:00
parent b6e308ae2a
commit 41f381e941
7 changed files with 763 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ import {
CalendarOutlined,
SafetyOutlined,
KeyOutlined,
CheckCircleOutlined,
} from '@ant-design/icons';
import { usePermission } from '../hooks/usePermission';
@@ -77,6 +78,7 @@ const allMenuItems: MenuItemType[] = [
{ key: '/tenants', icon: <TagsOutlined />, label: '租赁方', permission: 'tenant:view' },
],
},
{ key: '/attendance', icon: <CheckCircleOutlined />, label: '考勤管理', permission: 'attendance:view' },
{ key: '/schedules', icon: <CalendarOutlined />, label: '排课管理', permission: 'schedule:view' },
{ key: '/operation-logs', icon: <AuditOutlined />, label: '操作日志', permission: 'log:view' },
{ key: '/roles', icon: <SafetyOutlined />, label: '角色管理', permission: 'role:view' },