06-UI交互规范.md
6.06 KB
06-UI交互规范
本项目所有页面布局以项目根
prototype/目录下的静态 HTML mockup 为权威。前端阶段(fe-feature-*)实现时直接以 prototype/ HTML 推导组件树与样式。本文件仅承载跨页面通用规则与 Design Tokens。
一、通用交互规则
1.1 操作反馈
-
成功提示:使用 Ant Design
message.success(),默认 3s 自动消失;新增 / 修改 / 删除等写操作必须给反馈。 -
失败提示:使用
message.error()显示后端返回的message字段;表单字段级错误用 Form 的validateStatus="error"+help同步显示。 -
危险操作二次确认:删除 / 禁用 / 重置密码等不可逆操作必须用
Modal.confirm({ okType: 'danger' })二次确认,按钮文案使用业务动词(如「确认禁用」),不用「确定」。 -
长耗时按钮 loading:提交类按钮在请求未返回前必须置为
loading=true并禁用,避免重复提交;查询类操作在表格组件上启用loading属性即可。
1.2 数据展示
-
空状态:列表 / 表格无数据时使用
<Empty description="暂无数据" />,明细页无数据时附加「返回列表」按钮。 -
加载状态:页面级加载用
<Spin spinning>包裹主区域;表格 / 卡片局部加载用组件自带loading属性。 -
异常状态:接口 5xx 或网络异常时显示
<Result status="error" title="加载失败" extra={<Button>重试</Button>} />;403 时显示「无权限」并提供「返回首页」按钮。
1.3 权限控制(前端)
- 菜单级:登录后由后端返回菜单权限码列表,前端 Layout 按权限码过滤后渲染左侧菜单。
-
按钮级:包装
<AuthButton code="USR:ADD">新增</AuthButton>,权限码不在用户列表时直接不渲染(避免显示再禁用)。 -
路由级:在 React Router 外层包
<AuthRoute />,路由元数据声明meta.code,无权限重定向 403 页面。 -
关联后端 RBAC:权限码格式
<模块代码>:<动作>(如USR:ADD/USR:EDIT/USR:DELETE),与后端 Spring Security@PreAuthorize("hasAuthority('USR:ADD')")一一对应。
二、Design Tokens
所有色值统一以 CSS 变量定义于
src/styles/tokens.css;命名规范见 docs/04 § 2.5。
2.1 全局调色板
与 Ant Design 5 主题对齐,统一通过 <ConfigProvider theme={{ token: {...} }}> 注入。
| 语义 | 变量名 | 默认值 | 用途 |
|---|---|---|---|
| 主色 | --color-primary |
#1677ff |
主操作按钮 / 链接 / 选中态 |
| 成功 | --color-success |
#52c41a |
成功消息 / 启用状态标签 |
| 警告 | --color-warning |
#faad14 |
警告消息 / 待处理状态 |
| 错误 | --color-error |
#ff4d4f |
错误消息 / 危险按钮 / 禁用状态 |
| 主文字 | --color-text-primary |
rgba(0, 0, 0, 0.88) |
正文 / 表格内容 |
| 次文字 | --color-text-secondary |
rgba(0, 0, 0, 0.65) |
辅助说明 / 占位 |
| 边框 | --color-border |
#d9d9d9 |
表单输入 / 卡片边界 |
| 背景 | --color-bg-base |
#ffffff |
页面主背景 |
| 弱背景 | --color-bg-layout |
#f5f5f5 |
页面 layout 间隙 / 灰底 |
2.2 组件级状态色
| 序号 | 组件 | 编辑bg | 只读bg | 悬浮bg | 编辑fg | 只读fg | 悬浮fg | 备注 |
|---|---|---|---|---|---|---|---|---|
| 1 | 表单输入框 | var(--color-bg-base) |
var(--color-bg-layout) |
var(--color-bg-base) |
var(--color-text-primary) |
var(--color-text-secondary) |
var(--color-text-primary) |
只读态边框使用 transparent
|
| 2 | 下拉单选 | var(--color-bg-base) |
var(--color-bg-layout) |
var(--color-bg-base) |
var(--color-text-primary) |
var(--color-text-secondary) |
var(--color-text-primary) |
— |
| 3 | 表格行 | — | var(--color-bg-base) |
var(--color-bg-row-hover) |
— | var(--color-text-primary) |
var(--color-text-primary) |
编辑态走 Modal,行内不编辑 |
| 4 | 主按钮 | var(--color-primary) |
var(--color-bg-layout) |
var(--color-primary-hover) |
#ffffff |
var(--color-text-secondary) |
#ffffff |
危险按钮替换 --color-error
|
| 5 | 链接 | — | — | var(--color-primary-hover) |
var(--color-primary) |
— | var(--color-primary-hover) |
— |
Token 默认值:
| Token | 默认值 |
|---|---|
--color-primary-hover |
#4096ff |
--color-bg-row-hover |
#fafafa |
2.3 引用约定
- 组件样式只用
var(--color-xxx),禁止硬编码 hex / rgba。 - 新增 token 须先登记到 § 2.1 / 2.2 再补
tokens.css。 - 修改色值只改
tokens.css一处,不允许组件覆盖。
三、页面清单
module_usr USR-用户管理
-
登录页 (
/login)- 类型: 表单页
- 对应 REQ: REQ-USR-001
- 入口菜单: 无(未登录态唯一可达页面)
- 主要交互: 表单输入 用户名 / 密码 / 版本 → 提交 → 成功跳首页 / 失败留页并显示通用错误消息;账号锁定时显示锁定提示
-
用户列表页 (
/usr/users)- 类型: 列表页
- 对应 REQ: REQ-USR-004
- 入口菜单: 系统管理 → 用户管理 → 用户列表
- 主要交互: 查询字段 + 匹配方式 + 查询值 三段筛选 → 表格分页展示 → 行内「编辑」「禁用 / 启用」按钮(权限码
USR:EDIT);顶部「新增用户」按钮(权限码USR:ADD)跳新增表单
-
用户新增页 (
/usr/users/new)- 类型: 表单页
- 对应 REQ: REQ-USR-002
- 入口菜单: 系统管理 → 用户管理 → 用户列表 → 新增按钮
- 主要交互: 员工名(下拉单选)选择后自动回填用户号 / 用户名;类型 / 语言下拉;权限组表格(多选);提交校验失败显示字段级
validateStatus="error";成功 message.success 后回列表页
-
用户编辑页 (
/usr/users/:id/edit)- 类型: 表单页
- 对应 REQ: REQ-USR-003
- 入口菜单: 用户列表 → 行内「编辑」按钮
- 主要交互: 复用新增表单组件;用户名只读;提供「重置密码」按钮(二次确认);提供「禁用 / 启用」开关;禁用自己时按钮置灰