权限监控与管理界面全面美化

重新设计权限系统所有 UI 组件的视觉风格,统一配色、圆角、阴影和交互动效:
- 实时概览:统计卡片加图标和渐变色条,健康评分改为环形进度,告警改为卡片式
- 趋势分析:图表卡片加彩色图标标识,ECharts 配色升级为渐变面积填充
- 访问日志:指标卡片带图标,日志审计改为卡片式入口,IP排行前三高亮
- IP属地:工具栏重设计,排行列表前三渐变高亮,指标卡片统一新风格
- 系统级权限:从 el-table 改为自定义卡片列表,模块块独立圆角卡片
- 项目权限配置:空状态引导优化,成员表格加头像,工具栏加背景容器
- 角色概览卡片:加进度条可视化,hover 微动效
- 接口权限矩阵:工具栏分离布局,表格圆角包裹
- 角色管理抽屉:侧边栏选中态渐变,操作行 hover 高亮

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Cheng Zhou
2026-05-20 14:36:35 +08:00
parent e95eeed90e
commit 6cefa620e4
68 changed files with 6927 additions and 984 deletions
+38
View File
@@ -6,6 +6,12 @@ import type {
CacheStatsResponse,
AlertsResponse,
HealthResponse,
AccessLogsResponse,
SecurityAccessLogsResponse,
TrendsResponse,
TopDeniedResponse,
StatsSummaryResponse,
IpLocationsResponse,
} from "../types/api";
// 接口级权限
@@ -39,6 +45,38 @@ export const resetPermissionMetrics = () =>
export const clearPermissionAlerts = () =>
apiPost<void>(`/api/v1/permission-monitoring/clear-alerts`);
// 权限监控 - 新增API
export const fetchAccessLogs = (params: {
study_id?: string;
user_id?: string;
endpoint_key?: string;
role?: string;
allowed?: boolean;
start_time?: string;
end_time?: string;
page?: number;
page_size?: number;
}) => apiGet<AccessLogsResponse>(`/api/v1/permission-monitoring/access-logs`, { params });
export const fetchSecurityAccessLogs = (params?: {
status_min?: number;
auth_status?: string;
page?: number;
page_size?: number;
}) => apiGet<SecurityAccessLogsResponse>(`/api/v1/permission-monitoring/security-logs`, { params });
export const fetchPermissionTrends = (period: "24h" | "7d" | "30d" = "24h") =>
apiGet<TrendsResponse>(`/api/v1/permission-monitoring/trends`, { params: { period } });
export const fetchTopDenied = (params?: { days?: number; limit?: number }) =>
apiGet<TopDeniedResponse>(`/api/v1/permission-monitoring/top-denied`, { params });
export const fetchIpLocations = (params?: { days?: number; limit?: number }) =>
apiGet<IpLocationsResponse>(`/api/v1/permission-monitoring/ip-locations`, { params });
export const fetchStatsSummary = () =>
apiGet<StatsSummaryResponse>(`/api/v1/permission-monitoring/stats-summary`);
// 权限模板API
export interface PermissionTemplate {
id: string;