# Dashboard 页面 · 设计覆盖 (page override) > 作用域:`/admin/dashboard` (DashboardView.vue) + AppShell 左侧导航。 > 优先级:本文件 > MASTER.md。仅记录 deviation,共性规则继承自 MASTER。 --- ## 1. 页面布局结构 (Bento Grid) ``` ┌────────────────────────────────────────────────────────────────┐ │ Hero Banner (深色沉浸 · 跨主题保持工业感) │ │ Left: tag + title + 8 个 quick-entry (4×2) │ │ Right: AGV 工业 SVG 插画 (主题色驱动 gradient) │ ├──────────────────────────────────┬─────────────────────────────┤ │ KPI Strip (6 项 · 等宽数字) │ 待办事项 (Tabs) │ │ 任务占比 (4 行 · progress) │ - 故障告警 (danger) │ │ 任务执行情况 (donut + legend) │ - 异常任务 (warning) │ │ │ - 通信异常 (info) │ │ │ - 服务器报警 (warning) │ └──────────────────────────────────┴─────────────────────────────┘ ``` 栅格:1.45fr : 1fr,断点见 MASTER §6。 --- ## 2. Hero Banner 颜色规则(关键变更) **原问题**:`hero-banner` 内嵌 `linear-gradient(135deg, #1a0b3d 0%, #2d1b69 50%, #14082e 100%)` 这种**硬编码紫色**,在切换到 `deep-azure` / `emerald-forge` 等主题时会"撞色"。 **新规则**:使用 `--mg-bg-aside-1` / `--mg-bg-aside-2` + 主色 RGB,跨主题保持工业沉浸感。 ```css .hero-banner { background: radial-gradient(ellipse at 0% 0%, rgba(var(--mg-primary-hover-rgb), 0.50) 0%, transparent 55%), radial-gradient(ellipse at 100% 100%, rgba(var(--mg-accent-rgb), 0.45) 0%, transparent 55%), linear-gradient(135deg, var(--mg-bg-aside-1) 0%, var(--mg-bg-aside-2) 100%); border: 1px solid rgba(var(--mg-accent-rgb), 0.30); } ``` SVG `linearGradient` 中的 `#3b1e7a/#0e0a24` 等也建议改为接受 `var()` 注入,但 SVG 内联色本身允许多套主题保留紫色装饰风(hero scene 是装饰艺术,可保留 stylized 颜色)。 --- ## 3. KPI 数字 (高优先级 · 必改) | 元素 | 原 | 新 | |---|---|---| | 字体 | 默认 sans (PingFang/Inter) | `var(--mg-font-mono)` JetBrains Mono | | `font-variant-numeric` | normal | `tabular-nums` | | 颜色 (light theme) | `var(--mg-text-light)` | 同 — 保留 | | 颜色 (industrial-purple) | gradient text | 保留 | | 字号 | 22px | 26px (突出主指标) | | `letter-spacing` | 0.5px | 0 (mono 自带间距) | 实现:在 `.kpi-value` 中加 `font-family: var(--mg-font-mono); font-variant-numeric: tabular-nums;` --- ## 4. 状态色规范化 (DashboardView.vue 强约束) ### 4.1 任务执行情况 (donut) | 状态 | 原 (hardcoded) | 新 (token) | |---|---|---| | 待执行 | `#a78bfa` (品牌紫色挪用) | `var(--mg-status-idle)` | | 执行中 | `#7c3aed` (品牌紫色挪用) | `var(--mg-status-info)` | | 待整理 | `#f59e0b` | `var(--mg-status-warning)` | 不要再用品牌紫色当作运行状态——会造成"系统色"和"品牌色"语义混淆。 ### 4.2 待办事项 tab tone | Tab | tone class | 颜色 (light) | 颜色 (dark) | |---|---|---|---| | 故障告警 | `danger` | `--mg-status-danger` | 同 | | 异常任务 | `warning` | `--mg-status-warning` | 同 | | 通信异常 | `info` | `--mg-status-info` | 同 | | 服务器报警 | `warning` | `--mg-status-warning` | 同 | `.tab-count.danger / .warning / .info / .success` 在 theme.css 内统一,不再每个组件 hardcode。 --- ## 5. 卡片层级 (Bento) | 卡片 | z-level | 浮起 | |---|---|---| | Hero Banner | z-2 | 不浮起(始终展示) | | 主体两栏 (map-card / todo-card) | z-2 | hover 升 z-3 (translateY -2px) | | KPI 项 (.kpi-item) | z-2 inner | hover translateY -1px | | 待办列表 (.todo-list li) | z-2 inner | hover bg 加深 | --- ## 6. AppShell 侧栏调整 ### 6.1 active 菜单项 (高优先级 · 减噪) **原问题**:active 菜单堆叠了 5 重 box-shadow + text-shadow + 多重 background gradient。 **新规则**: - 用单一 left-border (`inset 3px 0 0 var(--mg-accent)`) + 一层柔和 bg gradient (角度从 90° 改为 270° 减少撞色) + 一层窄阴影 - 删除 text-shadow(在浅色主题里不可见,在深色里造成模糊) - font-weight 600 即可强调,不需要发光 ### 6.2 子菜单缩进 - 父菜单 padding-left 16px,子菜单 24px - 子菜单 active 颜色不再用霓虹紫,而是 `color: var(--mg-accent); border-left: 2px solid var(--mg-primary-hover)` 提供清晰但克制的视觉线索 ### 6.3 滚动条 - 侧栏菜单 `.menu` 自定义滚动条宽 4px、半透明色,避免影响紧凑视觉 --- ## 7. 检查清单(与 MASTER §8 互补) 实施完成后核对: - [ ] DashboardView 中无任何 `#7c3aed/#a78bfa` 状态色 hardcode - [ ] KPI value 等宽对齐(tabular-nums) - [ ] 切换主题:fame-lavender → deep-azure → emerald-forge,Hero/卡片/侧栏色彩跟随 - [ ] 侧栏 active 项视觉清晰,无 5+ shadow 叠加 - [ ] `prefers-reduced-motion: reduce` 下 quick-item 入场动画 / live dot 关闭 - [ ] 浏览器缩放到 100%/125%/150% 不破坏栅格