# 06-UI交互规范

## 一、整体布局

### 1.1 页面框架

采用 Ant Design `Layout` 组合骨架：顶部 `Header` 放 logo / 全局菜单 / 用户信息；左侧 `Sider` 放可折叠的多级菜单（通过 `Menu` 组件渲染，菜单项数据由后端模块树接口返回）；右侧 `Content` 放业务内容区，顶部为面包屑（`Breadcrumb`），下方为页面主体。整体根节点用 `ConfigProvider` 注入主题与中文 `locale`。

### 1.2 布局参数

| 参数 | 默认值 | 说明 |
|---|---|---|
| Header 高度 | 56 px | 固定置顶，z-index 高于 Content |
| Sider 展开宽度 | 224 px | 多级菜单展开时 |
| Sider 折叠宽度 | 64 px | 仅显示 Icon |
| Content 内边距 | 16 px | 上下左右 |
| 最小分辨率 | 1280 × 720 | ERP 桌面端为主，不做 H5 适配 |

## 二、标准页面类型

ERP 业务以 CRUD 为主，统一为 3 类标准页：列表页、表单页、详情页。模块管理因含树形结构，额外保留树形管理页。

### 2.1 列表页

固定布局：`PageHeader` 标题区 → 顶部操作区（"新建"等主按钮 + 批量操作） → 搜索栏（`Form` 折叠展开） → 数据表格（`Table` + 行操作列） → 底部分页（`Pagination`，默认每页 20 条，可选 10 / 20 / 50 / 100）。

### 2.2 表单页

新增 / 编辑统一用 `Drawer`（从右侧滑出，宽度 520 px）承载，避免页面跳转打断列表上下文。校验时机：失焦校验 + 提交前完整校验（`Form.useForm` + `rules`）。提交按钮固定在 Drawer 底部，左侧"取消"右侧"确定"。

### 2.3 详情页

独立路由页面，顶部用 `Descriptions` 展示基本信息（2 列布局），下方用 `Tabs` 切换"基本信息 / 关联记录 / 操作日志"等分组。详情页只读，编辑跳回列表页 Drawer。

### 2.4 树形管理页

模块管理使用：左侧 `Tree` 展示模块层级（含搜索框），右侧根据选中节点展示详情/编辑表单。新增子节点通过节点上的"+"按钮触发，删除走二次确认。

## 三、通用交互规则

### 3.1 操作反馈

- 成功：`message.success`，2 秒自动消失
- 失败 / 业务错误：`message.error`，展示后端 `msg` 字段
- 危险操作（删除 / 禁用 / 重置密码）：`Modal.confirm` 二次确认，确认按钮 `danger`
- 长耗时按钮：进入请求即 `loading=true`，请求完成（成功或失败）才解除

### 3.2 数据展示

- 空状态：`Empty`，附主操作按钮（如"新建第一条"）
- 加载：`Spin` 包裹内容区，最小展示 300 ms 避免闪烁
- 异常：网络/服务异常用 `Result` 组件，附"重试"按钮

### 3.3 权限控制（前端）

- 菜单级：登录后调 `/auth/menu` 拉模块树，前端按返回数据渲染 `Menu`
- 按钮级：组件读取 `useUser().permissions` 判断操作按钮显隐
- 路由级：`PrivateRoute` 高阶组件包装受保护路由，未登录或无权限重定向至 `/403`
- 所有权限规则与后端 RBAC 保持一致，前端不做"最终判定"，只做"友好屏蔽"，后端依然校验

## 四、主题与颜色

基于 Ant Design 5 的 design token 体系，使用 `ConfigProvider.theme` 全局注入：

| Token | 默认值 | 说明 |
|---|---|---|
| colorPrimary | #1677ff | 主色（按钮、链接、选中态） |
| colorSuccess | #52c41a | 成功反馈 |
| colorWarning | #faad14 | 警告反馈 |
| colorError | #ff4d4f | 错误反馈、危险操作 |
| borderRadius | 4 | 全局圆角 |
| fontSize | 14 | 默认字号 |

## 五、页面清单

### module_mod 模块管理

- **模块管理树** (`/sys/modules`)
  - 类型: 树形管理页
  - 对应 REQ: REQ-MOD-001 / REQ-MOD-002 / REQ-MOD-003 / REQ-MOD-004
  - 入口菜单: 系统设置 → 模块管理
  - 主要交互: 左侧模块树（搜索框 + 树节点） + 右侧 Drawer 表单（新增 / 编辑）；节点上"+"新增子模块、删除走二次确认；REQ-MOD-004 的查询关键字直接绑定左侧树搜索框

### module_usr 用户管理

- **用户列表页** (`/sys/users`)
  - 类型: 列表页
  - 对应 REQ: REQ-USR-001 / REQ-USR-002 / REQ-USR-003
  - 入口菜单: 系统设置 → 用户管理
  - 主要交互: 顶部搜索栏（查询字段 + 匹配方式 + 查询值） + Table（含序号 / 用户名 / 员工名 / 用户号 / 部门 / 用户类型 / 语言 / 作废 / 登录日期 / 制单人 / 制单日期 / 操作列） + 分页；新建 / 编辑用 Drawer，权限组用 Checkbox 表格选择

- **登录页** (`/login`)
  - 类型: 表单页
  - 对应 REQ: REQ-USR-004
  - 入口菜单: 未登录默认重定向至此
  - 主要交互: 用户名 + 密码 + 版本（下拉，默认"标准版"）；提交后调 `POST /api/usr/auth/login`，成功跳转主页，账号锁定时展示剩余冷却时间
