feat(identity): 支持用户和用户组批量管理

增加原子批量启用、禁用和删除接口及管理端多选操作,目标缺失时整批回滚。\n\n拆分管理端与 API Key 权限缓存并在弹窗保存后刷新候选;补齐失效规则一键清理样式、固定右侧操作列和 OpenAPI 契约。
This commit is contained in:
2026-08-03 15:43:49 +08:00
parent 7376d6fab6
commit ad8cdd525b
19 changed files with 1167 additions and 74 deletions
+34 -4
View File
@@ -435,6 +435,30 @@
align-items: center;
}
.identityBatchToolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.75rem;
padding: 0.625rem 0.75rem;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--muted-foreground);
font-size: var(--font-size-sm);
}
.identityBatchToolbar > div {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.identitySelectionCell {
flex: 0 0 2.5rem;
justify-content: center;
}
.accessGroupToolbar,
.accessGroupHint {
display: flex;
@@ -494,6 +518,10 @@
color: var(--foreground);
}
.accessRuleCleanupButton {
margin-left: auto;
}
.accessRuleDiagnosticRow {
justify-content: space-between;
padding-top: 0.625rem;
@@ -774,15 +802,16 @@
}
.userTable .shTableRow {
grid-template-columns: minmax(210px, 1.25fr) minmax(100px, 0.55fr) minmax(150px, 0.8fr) minmax(150px, 0.8fr) minmax(120px, 0.65fr) minmax(100px, 0.55fr) minmax(88px, 0.5fr) minmax(112px, 0.6fr);
min-width: 1120px;
grid-template-columns: 40px minmax(210px, 1.25fr) minmax(100px, 0.55fr) minmax(150px, 0.8fr) minmax(150px, 0.8fr) minmax(120px, 0.65fr) minmax(100px, 0.55fr) minmax(88px, 0.5fr) minmax(112px, 0.6fr);
min-width: 1160px;
}
.groupTable .shTableRow {
grid-template-columns: minmax(190px, 1.15fr) minmax(90px, 0.5fr) minmax(82px, 0.42fr) minmax(145px, 0.8fr) minmax(180px, 1fr) minmax(180px, 1fr) minmax(82px, 0.42fr) minmax(154px, 0.78fr);
min-width: 1305px;
grid-template-columns: 40px minmax(190px, 1.15fr) minmax(90px, 0.5fr) minmax(82px, 0.42fr) minmax(145px, 0.8fr) minmax(180px, 1fr) minmax(180px, 1fr) minmax(82px, 0.42fr) minmax(154px, 0.78fr);
min-width: 1345px;
}
.userTable .shTableRow > :last-child,
.groupTable .shTableRow > :last-child {
position: sticky;
right: 0;
@@ -791,6 +820,7 @@
box-shadow: -8px 0 12px -12px rgba(16, 24, 40, 0.45);
}
.userTable > .shTableRow:first-child > :last-child,
.groupTable > .shTableRow:first-child > :last-child {
z-index: 2;
background: var(--surface-subtle);