本文件定义 forge-admin-ui 的界面设计原则、公共页面组件和高频交互约束。它服务于长期维护:新页面、新组件和改版都应先遵循这里的视觉与交互规则,再补充具体业务逻辑。
项目级开发约束以仓库根目录 AGENTS.md 为准;目录、命名、接口、字典和编码细则见 Forge Admin前端开发与组件规范.md。
Forge Admin 是供日常反复使用的企业管理控制台,不是营销网站。
| 角色 | 变量或参考色 | 用途 |
|---|---|---|
| 页面底色 | --gray-100 / #f6f8fb |
Layout 内容背景 |
| 面板底色 | --bg-primary / #fff |
工作台、表格和表单 |
| 主文字 | --text-primary |
标题、核心值和当前对象 |
| 次要文字 | --text-tertiary |
编码、账号、说明和时间 |
| 边框 | --border-light |
面板分隔、工具栏和控件边界 |
| 主题色 | --primary-color |
主操作、可点击实体、选中态和焦点 |
| 危险色 | --error-color |
删除和不可逆操作 |
/system/** 已由 SystemPageLayout 负责满高和页面滚动边界。各 Layout 统一提供 8px 页面外边距。
AiCrudPage 内部不得自行增加页面级 padding、外层白卡或大圆角。min-height: 0,再由真正承载内容的子元素声明 overflow: auto。当树、角色、组织、分类等对象决定右侧内容时,必须使用 MasterDetailWorkspace:
<MasterDetailWorkspace
:collapsed="collapsed"
:aside-width="220"
:collapsed-aside-width="72"
>
<template #aside>
<OrgTreePanel />
</template>
<AiCrudPage ... />
</MasterDetailWorkspace>
aside 放树、对象列表或筛选导航;默认插槽放表格、详情或页签工作区。:attached="false"。菜单、资源等“树 + 列表 + 详情”页面遵循以下滚动边界:
工作台(固定高度)
├─ 左侧树:自身滚动
├─ 中间列表:工具栏固定,列表区域自身滚动
└─ 右侧详情:标题与操作固定,详情正文自身滚动
overflow: hidden 的面板后却没有内部滚动容器。flex: 1、min-height: 0、overflow: auto 和 scrollbar-gutter: stable。max-height 计算维持滚动;布局变化后应仍能正确滚动。SystemPageLayoutpadding。/system/** 自动包裹;页面内不要重复套用。MasterDetailWorkspaceasideWidth、collapsedAsideWidth、mainWidth、collapsed、attached。aside 仅放主对象区域,默认插槽放从属工作区。SystemTableCellSystemTableCell 是系统 CRUD 列表的统一单元格能力,不是通用装饰容器。
title、subtitle、interactive;用户、租户、客户端等可传 avatar 显示首字标识。values,仅显示主值和可点击的 +N;点击后用浮层查看全部值。interactive 必须提供真实的 activate 动作,例如详情、编辑或进入下级管理,禁止制造无动作的蓝色链接。@username;当两者相同时不要重复显示。AiCrudPage 与 AiTableAiCrudPage 只负责搜索、工具栏、表格和表单;不负责页面级外框、间距和背景。medium。日志、审计、纯对比列表才可使用 small。showRenderModeSwitch 控制;不适合卡片浏览的树表、日志页应显式关闭。editSchema;无 Schema 的只读兜底只用于防止空弹窗,不能替代正式详情。每个单元格只表达一种信息层级,避免用多个小色块抢注意力。
| 列类型 | 规则 |
|---|---|
| 实体 | 主标题 + 换行辅助标识;可点击时整块点击 |
| 关联关系 | 主值 + 可展开 +N |
| 状态、类型、布尔枚举 | 使用 DictTag 或单个语义 Tag |
| 普通属性 | 纯文字,长文本可省略并提供完整提示 |
| 编码、键名、账号 | 优先作为实体辅助标识,不单独挤占主表列 |
| ID、性别、低频技术字段 | 放入详情或列设置,不占高频列表首屏 |
| 操作 | 最多两个常用文字操作直显,其余收入“更多” |
title 或 aria-label。parentId 懒加载,列表应使用服务端分页;前端假分页不能减少接口传输、构树和 DOM 创建成本。color、background、border、opacity、transform,时长 120–180ms。width、height、top、left;禁止系统 CRUD 页持续动画。/system/user、/system/post、/system/tenant@username 两行信息。+N,不能平铺多个标签。/system/org/system/role/system/menu禁止:
完成系统页前确认:
git diff --check 和必要的前端构建。