# cfc-web 后台页面美化治理方案 V1(2026-10-20) > **规范依据**:enterprise-ui-optimizer / `references/design-tokens.md` > **现状基线**:`cfc-web/src/styles/admin-tokens.css`(Ant Design 5 令牌体系已立)+ 4 个全局组件已注册(`main.js` 97/98/100 行) > **核心判断**:**规范已立、接入不足**。本方案不做"重新设计",做"收敛接入"——把 164 个页面接入既有令牌与组件,零视觉回归风险优先。 > **风格对标**:Ant Design 5 / 华为云控制台 / 银行信贷系统 / 国资企业后台。克制、干净、专业、信息优先。 --- ## 1. 页面现存问题 ### 1.1 审计快照(2026-10-20,cfc-web/src/views,共 164 个页面) | 债务项 | 数量 | 说明 | |---|---|---| | 旧 Element 调色板残留 | **280 处** | `#409eff`/`#f56c6c`/`#e6a23c`/`#67c23a` 与新令牌 `#1677FF`/`#FF4D4F`/`#FAAD14`/`#52C41A` 并存,**同屏出现双蓝双红** | | Tailwind 风色板残留 | **169 处** | `#64748B`/`#1E293B`/`#10B981`/`#3B82F6`/`#F59E0B`/`#EF4444`/`#94A3B8`,色温、明度体系完全跑偏 | | 内联 `style="..."` 属性 | **1014 处** | 主题化被阻断,换肤/暗色/令牌调整无法穿透 | | 裸 `el-tag`(未走 StatusTag) | **246 / 293 处** | 同一状态在不同页颜色/文案不一致 | | `el-divider content-position="left"` 分区标题 | **25 处** | 未用 `SectionTitle`,缩进字号不统一 | | KPI 卡未用 `StatCard` 的页面 | ≈60+ 页 | 仍有手写 `stat-card`/`td-stat-card` 等私有实现 | **债务 top 文件**(硬编码色值计数): | 文件 | 处数 | 文件 | 处数 | |---|---|---|---| | `views/Dashboard.vue` | 74 | `views/TeacherDashboard.vue` | 33 | | `views/teacher/TeacherMessages.vue` | 58 | `views/admin/Dashboard.vue` | 31 | | `views/Login.vue` | 48 | `views/Layout.vue` | 26 | | `views/teacher/TeacherFamilies.vue` | 39 | `views/admin/ReportTemplateManage.vue` | 24 | | `views/teacher/TeacherTeam.vue` | 38 | `views/teacher/TeacherOrders.vue` | 22 | | `views/admin/ProductEdit.vue` | 36 | `views/admin/ProductManage.vue` | 21 | **组件接入率**:`StatCard` 22 处 / `StatusTag` 47 处 / `PageHeader` 41 处 / `SectionTitle` 3 处 / `adm-table-wrap` 144 页(此项已达标)。 ### 1.2 分区问题(按区域) - **全局主题层**:449 处跑偏色值直接写在页面与内联样式里,令牌体系被"架空";`#409eff` 旧蓝与令牌 `--adm-primary(#1677FF)` 混用,界面出现"两种蓝"。 - **顶部标题区**:约 123 页未用 `PageHeader`,标题字号(16/18/20/22 均有)、主操作按钮位置、副标题有无全凭页面习惯,首屏气质不统一。 - **筛选区**:部分页面筛选器包在 `el-card` 里(双重边框视觉噪音),部分裸排;"查询/重置"位置左右摇摆;高级筛选无折叠,一行溢出到第二行时对齐混乱。 - **KPI 卡片区**:手写统计卡样式各异(圆角、数值字号 20/24/28、是否千分位、null 显示空还是 `-`),`StatCard` 有 `COLOR_MAP` 自动映射旧色名,迁移成本极低但只铺了 5 页。 - **表格区**:表头底色不统一(白/浅灰/品牌蓝都有);金额列左对齐未用等宽数字;操作列未固定右侧;空数据区无占位文案;`StatusTag` 未接入导致状态色五花八门。 - **详情/表单区**:分区标题 25 处仍用 `el-divider`;详情标签列宽不一;金额无千分位;手机号/身份证未脱敏;表单页底部操作区有的贴底有的跟随内容流。 - **弹窗**:依赖全局 `admin-tokens.css` 已接管 `el-dialog`/`el-message-box`(合格),但弹窗内表单的分区、按钮层级仍按页面习惯写。 - **登录页 `Login.vue`**(48 处硬编码):品牌门面页,Tailwind 风渐变与卡片投影偏重,与企业级调性不符。 --- ## 2. 整体优化思路 **策略:「先收敛、后铺开、再结构、终业务」四阶段,每批独立可提交、可回归。** 1. **收敛(A 批,零视觉风险)**:把 449 处跑偏色值按等值/语义映射替换为 `adm-*` 令牌。色彩口径统一后,后续所有批量改造才有意义——否则改一处样式冒出一处新色。 2. **铺开(B 批,低风险)**:4 个全局组件向剩余页面铺开(StatusTag / SectionTitle / StatCard / PageHeader)。组件已全局注册、无需 import,迁移是"机械替换 + 删除死样式"。 3. **结构(C+D 批,中风险)**:内联样式清理(1014 处,按页切片)+ 筛选区/表格/空态/详情分区按令牌标准化。 4. **业务(E 批)**:金融/台账业务适配——金额千分位、敏感信息脱敏、关键写操作留痕与确认弹窗。 **为什么这样排序**:色彩令牌是全系统的"分母",分母不统一时任何视觉优化都会互相打架;组件铺开依赖令牌就位;结构改造依赖组件就位;业务适配是最后一道专业度打磨。每批结束都跑一次等价回归(编译比对)+ grep 归零验收,保证"看得见的好看"不引入"看不见的回归"。 --- ## 3. 分区详细优化方案 ### 3.1 全局主题层(A 批主战场) **优化前**:页面里散写 `color: #409eff`、`style="color:#F59E0B"`,与令牌双轨运行。 **优化后**:全站只允许引用 `var(--adm-*)`;页面级禁止出现裸 hex(令牌定义文件除外)。 替换映射表(等值或最近语义): | 跑偏值 | 替换为 | 性质 | |---|---|---| | `#409eff` / `#409EFF` | `var(--adm-primary)` | 等值 | | `#f56c6c` / `#EF4444` | `var(--adm-error)` | 等值 | | `#e6a23c` / `#F59E0B` | `var(--adm-warning)` | 等值 | | `#67c23a` / `#10B981` | `var(--adm-success)` | 等值 | | `#909399` / `#999` / `#64748B` / `#94A3B8` | `var(--adm-text-45)` | 语义 | | `#303133` / `#1E293B` | `var(--adm-text-88)` | 语义 | | `#3B82F6` | `var(--adm-primary)` | 语义 | | `#fff` / `#FFF`(背景用途) | `var(--adm-bg-container)` | 语义 | 落地方式:写一次性替换脚本(带断言、逐文件计数核对),按目录切片提交;每片跑 `vue-cli-service build --dest dist_verify` 验证编译,视觉走等价回归比对。 ### 3.2 顶部标题区(B 批) **优化前**:各页手写 `