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',

View File

@@ -1314,6 +1314,9 @@ export default {
roleFilter: '角色筛选',
allRoles: '全部角色',
allStatus: '全部状态',
allGroups: '全部分组',
searchGroups: '搜索分组...',
fuzzySearch: '模糊搜索',
statusFilter: '状态筛选',
allStatuses: '全部状态',
admin: '管理员',
@@ -1340,6 +1343,7 @@ export default {
username: '用户名',
notes: '备注',
role: '角色',
groups: '分组',
subscriptions: '订阅分组',
balance: '余额',
usage: '用量',
@@ -1351,6 +1355,9 @@ export default {
today: '今日',
total: '近30天',
noSubscription: '暂无订阅',
publicGroupCount: '+{count} 公开',
exclusiveLabel: '专属',
publicLabel: '公开',
daysRemaining: '{days}天',
expired: '已过期',
disable: '禁用',
@@ -1442,6 +1449,14 @@ export default {
useDefaultRate: '使用默认',
customRatePlaceholder: '留空使用默认',
groupConfigUpdated: '分组配置更新成功',
replaceGroup: '替换分组',
clickToReplace: '点击替换分组',
replaceGroupTitle: '替换专属分组',
replaceGroupHint: '选择新分组替换「{old}」,将自动迁移绑定的 Key 并更新分组权限',
replaceGroupConfirm: '确认替换',
replaceGroupSuccess: '分组替换成功,已迁移 {count} 个 Key',
selectNewGroup: '请选择目标分组',
noOtherGroups: '没有其他可用的专属分组',
deposit: '充值',
withdraw: '退款',
depositAmount: '充值金额',