# 前端UI一致性系统性修复计划
## 1. 问题诊断
### 1.1 当前发现的问题
| 问题类别 | 具体问题 | 影响页面 | 严重程度 |
|---------|---------|---------|---------|
| **页面标题** | 有的用 `PageHeader`,有的直接用 `
` | 多个页面 | 中 |
| **操作按钮位置** | 有的在右上角(PageHeader actions),有的在表格上方 | 用户管理、角色管理等 | 中 |
| **筛选区域** | 有的用 Card 包裹,有的直接放页面中;样式不统一 | 多个页面 | 高 |
| **表格操作** | 按钮样式、顺序、图标不统一 | 所有列表页 | 高 |
| **空状态** | 有的用 `PageEmpty`,有的用 Ant Design 的 `Empty` | 权限管理等 | 中 |
| **加载状态** | 处理方式不一致 | 多个页面 | 低 |
| **错误处理** | 有的用 `PageError`,有的直接 message 提示 | 多个页面 | 中 |
### 1.2 UI规范要求
根据 `docs/design/admin-ui-tokens.css`,UI规范要求:
```css
/* 颜色系统 */
--color-canvas: #f4f1ea; /* 页面背景 */
--color-layout: #e9e3d5; /* 布局背景 */
--color-surface: #ffffff; /* 卡片表面 */
--color-surface-muted: #f8f5ef; /* 柔和表面 */
--color-primary: #0e5a6a; /* 主色调 */
--color-accent: #c26d3a; /* 强调色 */
/* 间距系统 */
--space-4: 16px; /* 标准间距 */
--space-5: 24px; /* 大间距 */
/* 圆角 */
--radius-md: 16px; /* 卡片圆角 */
/* 阴影 */
--shadow-card: 0 10px 30px rgba(23, 33, 43, 0.06);
```
## 2. 修复目标
### 2.1 一致性目标
1. **100%的页面使用统一的布局组件**
2. **100%的筛选区域使用统一的样式**
3. **100%的表格操作按钮使用统一的顺序和样式**
4. **100%的空状态使用统一的组件**
5. **100%的错误状态使用统一的组件**
### 2.2 视觉目标
1. 所有页面遵循 warm-elegant 设计主题
2. 统一的卡片圆角 (16px)
3. 统一的阴影效果
4. 统一的间距系统
## 3. 修复方案
### 3.1 创建统一布局组件
创建 `components/layout/PageLayout/` 目录,包含:
```
PageLayout/
├── index.ts
├── PageLayout.tsx # 统一页面布局容器
├── PageLayout.module.css # 布局样式
├── PageHeader.tsx # 统一页面头部(已存在,需改造)
├── FilterCard.tsx # 统一筛选卡片
├── TableCard.tsx # 统一表格卡片
└── ActionBar.tsx # 统一操作栏
```
### 3.2 统一页面结构
每个页面必须遵循以下结构:
```tsx
...}
/>
{/* 筛选表单 */}
{/* 表格 */}
{/* 抽屉/弹窗 */}
```
### 3.3 统一操作按钮规范
**表格操作按钮顺序(从左到右)**:
1. 查看/详情 (EyeOutlined)
2. 编辑 (EditOutlined)
3. 权限/角色 (SafetyOutlined/TeamOutlined)
4. 启用/禁用 (根据状态)
5. 删除 (DeleteOutlined, danger)
**按钮样式规范**:
- 所有操作按钮使用 `type="link" size="small"`
- 删除按钮添加 `danger` 属性
- 禁用状态的按钮添加 `disabled` 属性
### 3.4 统一筛选区域规范
**筛选组件顺序**:
1. 关键词搜索 (Input)
2. 状态筛选 (Select)
3. 其他筛选条件
4. 日期范围 (RangePicker)
5. 排序字段 (Select)
6. 排序方向 (Select)
**按钮顺序**:
1. 查询按钮 (type="primary", icon={})
2. 重置按钮
3. 刷新按钮 (icon={})
## 4. 实施计划
### 阶段1:基础组件建设(第1-2天)
- [ ] 创建 `PageLayout` 组件
- [ ] 创建 `FilterCard` 组件
- [ ] 创建 `TableCard` 组件
- [ ] 创建 `ActionBar` 组件
- [ ] 更新 `PageHeader` 组件
- [ ] 创建统一的 CSS Module 样式
### 阶段2:页面改造(第3-5天)
| 页面 | 改造内容 | 预计时间 |
|-----|---------|---------|
| UsersPage | 统一布局、筛选、表格操作 | 0.5天 |
| RolesPage | 统一布局、筛选、表格操作 | 0.5天 |
| PermissionsPage | 统一空状态、布局 | 0.5天 |
| LoginLogsPage | 统一布局、筛选 | 0.5天 |
| OperationLogsPage | 统一布局、筛选 | 0.5天 |
| WebhooksPage | 统一布局、表格操作 | 0.5天 |
| ImportExportPage | 统一布局 | 0.5天 |
| ProfilePage | 统一布局 | 0.5天 |
| ProfileSecurityPage | 统一布局 | 0.5天 |
### 阶段3:验证与优化(第6天)
- [ ] 检查所有页面的一致性
- [ ] 验证响应式布局
- [ ] 验证暗色主题支持
- [ ] 运行测试套件
- [ ] 构建验证
## 5. 技术实现细节
### 5.1 PageLayout 组件
```tsx
// components/layout/PageLayout/PageLayout.tsx
import styles from './PageLayout.module.css'
interface PageLayoutProps {
children: React.ReactNode
className?: string
}
export function PageLayout({ children, className }: PageLayoutProps) {
return (
{children}
)
}
```
### 5.2 FilterCard 组件
```tsx
// components/layout/PageLayout/FilterCard.tsx
import { Card } from 'antd'
import styles from './PageLayout.module.css'
interface FilterCardProps {
children: React.ReactNode
}
export function FilterCard({ children }: FilterCardProps) {
return (
{children}
)
}
```
### 5.3 CSS Module 规范
```css
/* PageLayout.module.css */
.pageLayout {
padding: var(--space-5);
max-width: var(--page-max-width);
margin: 0 auto;
}
.filterCard {
margin-bottom: var(--space-4);
border-radius: var(--radius-md) !important;
box-shadow: var(--shadow-card) !important;
background: var(--color-surface) !important;
}
.tableCard {
border-radius: var(--radius-md) !important;
box-shadow: var(--shadow-card) !important;
background: var(--color-surface) !important;
}
```
## 6. 验收标准
### 6.1 功能验收
- [ ] 所有页面可以正常访问
- [ ] 所有功能可以正常使用
- [ ] 所有测试通过
- [ ] 构建成功
### 6.2 视觉验收
- [ ] 所有页面使用统一的布局组件
- [ ] 所有筛选区域样式一致
- [ ] 所有表格操作按钮顺序一致
- [ ] 所有空状态使用统一组件
- [ ] 所有错误状态使用统一组件
### 6.3 代码验收
- [ ] 代码符合项目规范
- [ ] 无重复代码
- [ ] 组件复用率高
- [ ] 类型定义完整
## 7. 风险评估
| 风险 | 可能性 | 影响 | 缓解措施 |
|-----|-------|-----|---------|
| 改造引入新bug | 中 | 高 | 充分测试,逐步改造 |
| 样式冲突 | 中 | 中 | 使用CSS Module隔离 |
| 性能下降 | 低 | 中 | 优化组件渲染 |
| 工期延误 | 低 | 中 | 分阶段实施 |
## 8. 后续优化建议
1. **添加用户创建功能**:后端需要支持 `POST /api/v1/users` 接口
2. **添加批量操作功能**:后端需要支持批量API
3. **优化移动端体验**:当前主要针对桌面端
4. **添加页面过渡动画**:提升用户体验
5. **添加主题切换动画**:提升用户体验