feat(admin): 用户管理新增分组列、分组筛选与专属分组一键替换

- 新增分组列:展示用户的专属/公开分组,支持 hover 查看详情
- 新增分组筛选:下拉选择或模糊搜索分组名过滤用户
- 专属分组替换:点击专属分组弹出操作菜单,选择目标分组后
  自动授予新分组权限、迁移绑定的 Key、移除旧分组权限
- 后端新增 POST /admin/users/:id/replace-group 端点,事务内
  完成分组替换并失效认证缓存
This commit is contained in:
QTom
2026-03-18 23:28:11 +08:00
parent 0236b97d49
commit ba7d2aecbb
29 changed files with 594 additions and 9 deletions

View File

@@ -1289,6 +1289,9 @@ export default {
searchUsers: 'Search by email, username, notes, or API key...',
allRoles: 'All Roles',
allStatus: 'All Status',
allGroups: 'All Groups',
searchGroups: 'Search groups...',
fuzzySearch: 'Fuzzy search',
admin: 'Admin',
user: 'User',
disabled: 'Disabled',
@@ -1313,6 +1316,7 @@ export default {
username: 'Username',
notes: 'Notes',
role: 'Role',
groups: 'Groups',
subscriptions: 'Subscriptions',
balance: 'Balance',
usage: 'Usage',
@@ -1324,6 +1328,9 @@ export default {
today: 'Today',
total: 'Last 30d',
noSubscription: 'No subscription',
publicGroupCount: '+{count} public',
exclusiveLabel: 'exclusive',
publicLabel: 'public',
daysRemaining: '{days}d',
expired: 'Expired',
disable: 'Disable',
@@ -1379,6 +1386,14 @@ export default {
useDefaultRate: 'Use Default',
customRatePlaceholder: 'Leave empty for default',
groupConfigUpdated: 'Group configuration updated successfully',
replaceGroup: 'Replace Group',
clickToReplace: 'Click to replace',
replaceGroupTitle: 'Replace Exclusive Group',
replaceGroupHint: 'Select a new group to replace "{old}". Keys will be migrated and permissions updated automatically.',
replaceGroupConfirm: 'Confirm Replace',
replaceGroupSuccess: 'Group replaced successfully, {count} key(s) migrated',
selectNewGroup: 'Select target group',
noOtherGroups: 'No other exclusive groups available',
deposit: 'Deposit',
withdraw: 'Withdraw',
depositAmount: 'Deposit Amount',