# UI 设计规范 — 平台层必须 100% 复用 CarLog UI > **核心原则**:用户很喜欢 CarLog 现有 UI。**平台层新页面(GlobalSettings / SubsystemSettings / Subsystems / Dashboard)必须严格复用现有设计系统**,不另起设计,不引入新依赖,不写新 CSS 变量。 > > 一切样式从 `client/src/style.css` 的 CSS 变量 + 工具类 + 现有组件取。 --- ## 0. 不做的事(明确边界) - ❌ **不引入新 UI 库**(ant-design / element-plus / naive-ui / vuetify 都不行) - ❌ **不写新的 CSS 变量**(除非有明确理由并记录) - ❌ **不写 styled-component / CSS module / scoped 颜色** - ❌ **不另起一套设计语言**(不要"平台层用 X 配色 / Y 字体") - ❌ **不要 inline `style="color: #xxx"`**(用 `.text-brand` / `.text-danger` 等类) - ❌ **不要自定义 button 样式**(用 `.btn` + 变体) --- ## 1. 设计令牌(CSS 变量) 全部定义在 `client/src/style.css` 顶部 `:root`。**直接用,不要复制**: ```css /* 颜色 */ --bg: #E8F4F9; /* 页面背景(淡蓝) */ --bg-soft: #F2F8FB; /* 卡片 hover / 二级背景 */ --card: #FFFFFF; /* 卡片背景 */ --text: #0F2233; /* 主文字(深蓝近黑) */ --text-soft: #5A6F80; /* 次要文字 */ --text-mute: #8A9CAB; /* 辅助文字 / 描述 */ --line: #E1ECF2; /* 分隔线 / 输入框边框 */ --accent: #0F2233; /* 主按钮背景(深蓝近黑) */ --accent-soft: #1A3A55; /* 主按钮 hover */ --brand: #1E5B8A; /* 蓝色 brand(链接 / 强调) */ --brand-soft: #2C7AB0; --green: #4DBA9A; /* 成功 */ --warn: #E8A33D; /* 警告 */ --danger: #D9695C; /* 错误 */ --info: #5AA8D8; /* 信息 */ /* 圆角 */ --radius: 14px; --radius-sm: 8px; --radius-lg: 22px; --pill: 999px; /* 字体 */ --font: 'Outfit', system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif; /* 阴影 */ --card-shadow: 0 2px 8px rgba(40, 80, 110, 0.06); --card-shadow-hover: 0 4px 16px rgba(40, 80, 110, 0.10); ``` --- ## 2. 工具类速查表 全部在 `client/src/style.css`,**直接 `
` 这样用**: ### 2.1 按钮 ```html ``` | 类 | 用途 | |---|---| | `.btn` | 基础(inline-flex / 圆角 / 过渡) | | `.btn-primary` | 主操作(深蓝背景白字) | | `.btn-ghost` | 次要(透明 + 边框) | | `.btn-danger` | 危险(红背景白字) | | `.btn-danger-outline` | 危险但次要(红边框) | | `.btn-sm` | 小尺寸 | ### 2.2 卡片 ```html

标题

内容
``` - `.card` — 白底 + 圆角 + 阴影 - `.card-pad` — 24px padding(默认所有卡片都用这个) ### 2.3 输入控件 ```html
``` ### 2.4 标签 / Pill ```html 完成 待办 错误 默认 ``` ### 2.5 文字颜色 ```html

普通

次要

辅助

蓝色强调

成功

错误

``` ### 2.6 布局 ```html
``` | 类 | 效果 | |---|---| | `.flex` / `.flex-col` | flex 布局 | | `.items-center` / `.justify-between` / `.justify-center` | flex 对齐 | | `.gap-2` / `gap-3` / `gap-4` / `gap-6` | gap 8/12/16/24px | | `.mt-2/3/4/6` / `.mb-2/3/4/6` | margin-top/bottom 8/12/16/24px | | `.row` | flex 横向 + gap | ### 2.7 响应式 ```html 只在手机显示 只在桌面显示 ``` 断点(在 `style.css`): - `--bp-sm` 480px(小屏手机) - `--bp-md` 768px(大屏手机/小平板) - `--bp-lg` 1024px(平板) - `--bp-xl` 1440px(桌面) 移动端样式(在 `style.css` 已自动处理): - `` 自动 16px(防 iOS 缩放) - `table.data` 自动横向滚动 - `.container` 自动 padding 调整 ### 2.8 表格 ```html
列1列2
AB
``` - 自动 hover 高亮(`tr:hover td`) - 移动端自动横向滚动 --- ## 3. 布局组件(必须复用) ### 3.1 AppLayout.vue — 所有页面顶层 ```vue ``` **所有平台层 view 必须用 `` 包起来**(Settings.vue / WashesList.vue 等都这么做)。 ### 3.2 AppHeader.vue — 顶栏 现有 AppHeader.vue 已经包含左侧菜单 + 用户信息 + 主题切换。**平台层不需要新写顶栏**,复用现有的。 ### 3.3 MobileCardList.vue — 移动端列表 ```vue ``` 平台层如有列表(Subsystems.vue),桌面端用 `table.data`,移动端用 `` 兜底(参考 `WashesList.vue` 怎么用)。 ### 3.4 StatCard.vue — 数据卡片 ```vue ``` 平台 Dashboard 用这个组件展示统计数据。 ### 3.5 ChartBlock.vue — 图表 ```vue ``` 平台 Dashboard 如果有图表就用这个。 ### 3.6 ConfirmDangerDialog.vue — 危险操作确认 ```vue ``` 平台层启停 / 删除子系统前用这个。 ### 3.7 AiFallbackModal.vue — AI 失败兜底 平台层暂不需要(无 AI 集成)。保留供将来用。 --- ## 4. 平台层 view 模板(参考 Settings.vue) ### 4.1 GlobalSettings.vue(总设置) ```vue ``` ### 4.2 SubsystemSettings.vue(通用渲染器) 跟 GlobalSettings 同结构,**每个字段用 `
` 包 label + 控件**: ```vue