diff --git a/frontend/src/features/system/SystemMenusPage.tsx b/frontend/src/features/system/SystemMenusPage.tsx
index ff57e0e..58a0aff 100644
--- a/frontend/src/features/system/SystemMenusPage.tsx
+++ b/frontend/src/features/system/SystemMenusPage.tsx
@@ -2,6 +2,7 @@ import * as React from 'react'
import { AppDataTable, type AppDataTableColumn } from '@/components/app/AppDataTable'
import { AppEmptyState } from '@/components/app/AppEmptyState'
+import { AppFilterBar } from '@/components/app/AppFilterBar'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
import { Badge } from '@/components/ui/badge'
@@ -80,22 +81,22 @@ export function SystemMenusPage() {
return (
-
+
-
- setQuery(event.target.value)} />
-
+
+ setQuery(event.target.value)} />
+
- {error ? : null}
- {!error ? (
- menu.id}
- emptyTitle="暂无菜单"
- footer={当前显示 {filteredMenus.length} 个菜单项
}
- />
- ) : null}
+ {error ? : null}
+ {!error ? (
+ menu.id}
+ emptyTitle="暂无菜单"
+ footer={当前显示 {filteredMenus.length} 个菜单项
}
+ />
+ ) : null}
)
}
diff --git a/frontend/src/features/system/SystemRolesPage.tsx b/frontend/src/features/system/SystemRolesPage.tsx
index 339632a..d8061e6 100644
--- a/frontend/src/features/system/SystemRolesPage.tsx
+++ b/frontend/src/features/system/SystemRolesPage.tsx
@@ -5,10 +5,12 @@ import { AppDataTable, type AppDataTableColumn } from '@/components/app/AppDataT
import { AppEmptyState } from '@/components/app/AppEmptyState'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
+import { AppSection } from '@/components/app/AppSection'
import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button'
import { Checkbox } from '@/components/ui/checkbox'
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'
+import { Field, FieldGroup, FieldLabel, FieldLegend, FieldSet } from '@/components/ui/field'
import { Input } from '@/components/ui/input'
import { createRole, listPermissions, listRoles, setRolePermissions } from './api'
@@ -73,31 +75,35 @@ export function SystemRolesPage() {
return (
-
+
-
)
}
@@ -142,12 +148,13 @@ function RolePermissionDialog({
{Object.entries(groupedPermissions).map(([module, modulePermissions]) => (
-
- {module}
-
+
-
+
+
))}
diff --git a/frontend/src/features/system/SystemUserGroupsPage.tsx b/frontend/src/features/system/SystemUserGroupsPage.tsx
index cb00e67..f6d39c7 100644
--- a/frontend/src/features/system/SystemUserGroupsPage.tsx
+++ b/frontend/src/features/system/SystemUserGroupsPage.tsx
@@ -5,8 +5,10 @@ import { AppDataTable, type AppDataTableColumn } from '@/components/app/AppDataT
import { AppEmptyState } from '@/components/app/AppEmptyState'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
+import { AppSection } from '@/components/app/AppSection'
import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button'
+import { FieldGroup } from '@/components/ui/field'
import { Input } from '@/components/ui/input'
import { Switch } from '@/components/ui/switch'
import { formatDateTime } from '@/lib/format'
@@ -81,31 +83,35 @@ export function SystemUserGroupsPage() {
return (
-
+
-
)
}
diff --git a/frontend/src/features/system/SystemUsersPage.tsx b/frontend/src/features/system/SystemUsersPage.tsx
index 86694a5..08d5cf5 100644
--- a/frontend/src/features/system/SystemUsersPage.tsx
+++ b/frontend/src/features/system/SystemUsersPage.tsx
@@ -6,12 +6,13 @@ import { AppEmptyState } from '@/components/app/AppEmptyState'
import { AppFilterBar } from '@/components/app/AppFilterBar'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
+import { AppSection } from '@/components/app/AppSection'
import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button'
import { Checkbox } from '@/components/ui/checkbox'
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'
+import { Field, FieldGroup, FieldLabel, FieldLegend, FieldSet } from '@/components/ui/field'
import { Input } from '@/components/ui/input'
-import { Label } from '@/components/ui/label'
import { Switch } from '@/components/ui/switch'
import { createUser, listRoles, listUserGroups, listUsers, setUserGroups, setUserRoles, updateUser } from './api'
@@ -140,46 +141,50 @@ export function SystemUsersPage() {
return (
-
+
-
-
- setForm({ ...form, username: event.target.value })} required />
-
-
- setForm({ ...form, display_name: event.target.value })} />
-
-
- setForm({ ...form, email: event.target.value })} />
-
-
- setForm({ ...form, password: event.target.value })} required />
-
-
+
+
+
+
+ setForm({ ...form, username: event.target.value })} required />
+
+
+ setForm({ ...form, display_name: event.target.value })} />
+
+
+ setForm({ ...form, email: event.target.value })} />
+
+
+ setForm({ ...form, password: event.target.value })} required />
+
+
+
+
-
- setQuery(event.target.value)} />
-
+
+ setQuery(event.target.value)} />
+
- {error ? : null}
- {!error ? (
- user.id}
- emptyTitle="暂无用户"
- footer={当前显示 {filteredUsers.length} 个用户
}
- />
- ) : null}
-
- setEditingUser(null)}
- onSaved={load}
+ {error ? : null}
+ {!error ? (
+ user.id}
+ emptyTitle="暂无用户"
+ footer={当前显示 {filteredUsers.length} 个用户
}
/>
+ ) : null}
+
+ setEditingUser(null)}
+ onSaved={load}
+ />
)
}
@@ -219,38 +224,40 @@ function UserAccessDialog({
用户授权{user ? `:${user.display_name || user.username}` : ''}
-
-
-
+
-
-
-
-
+
+
+
-
+
+