# OKR 绩效系统前端医疗科技化重构设计 日期:2026-06-13 ## 背景 医梦AI OKR 绩效系统准备在公司内部上线。现有前端功能完整,覆盖登录、考核周期、OKR 对齐、团队 OKR、绩效自评、上级评分、绩效沟通、组织架构、模板配置和操作日志。主要问题不是业务缺失,而是视觉语言偏通用 AI 后台:高频使用紫青配色、圆角卡片、轻阴影、emoji 和分散的 scoped 样式,削弱了医疗科技公司内部系统应有的专业性、可靠性和审计感。 本次重构采用“方案 B:设计系统 + 重点页面重构”。先建立统一视觉系统,再重构最影响观感和工作效率的核心页面。业务逻辑、接口契约、权限模型和后端不纳入本阶段改动。 ## 设计定位 目标风格:现代医疗科技型内部工作台。 关键词: - 专业:避免营销页、赛博风、过度装饰和泛 AI 视觉。 - 可靠:用清晰状态、稳定布局、审计信息和低噪声交互建立信任。 - 精密:像医疗数据工作台,而不是普通 SaaS 卡片墙。 - 高效:提高 OKR、评分、周期流转等高频页面的信息密度。 公司主题色保留: - 品牌深色:`#2b1f99` - 科技青色:`#3ad4d8` 使用约束: - `#2b1f99` 用作品牌锚点、主按钮、当前导航、关键标题和少量高权重标记。 - `#3ad4d8` 用作活跃状态、进度、焦点态和医疗科技感强调。 - 内容区避免大面积紫色或青色背景。 - 禁止使用大面积蓝紫渐变、漂浮光斑、营销式 hero 或纯装饰插画。 ## 现状判断 已确认的主要问题: 1. 样式分散。至少 17 个 Vue 文件包含 scoped style,重复定义页面标题、卡片、表格、空状态、阴影和圆角。 2. 色彩硬编码严重。品牌色、状态色、背景色和弱文本色散落在页面组件中。 3. 页面结构同质化。多个页面采用 `page-hero + 白色圆角卡片 + 轻阴影`,缺少业务特征。 4. 内部系统质感不足。OKR 和评分页面大量使用 emoji、亮色 badge、圆角按钮,降低正式感。 5. 关键信息层级不足。评分页、周期页和 OKR 页还没有形成“流程、状态、证据、决策”的稳定结构。 ## 改造目标 可量化验收指标: | 指标 | 目标 | | --- | --- | | 颜色硬编码 | 核心页面硬编码颜色减少 70% 以上 | | 重复样式 | 页面标题、面板、空状态、状态条等重复 CSS 减少 60% 以上 | | 圆角体系 | 统一为 4px、6px、8px,避免大面积 12px+ 圆角 | | 阴影使用 | 大面积阴影减少 60% 以上,主要使用边框、分隔线和浅底色 | | emoji | 业务页面 emoji 全部替换为 Element Plus 图标或正式文本 | | 响应式 | 1366px、1440px、1920px、移动宽度下无明显重叠和断行问题 | | 构建 | `npm run build` 通过 | | 业务行为 | 不改变现有 API、路由和主要交互流程 | ## 视觉系统 ### 色彩 token 建议新增统一样式入口,例如 `frontend/src/styles/theme.css`,并在 `main.js` 或 `App.vue` 引入。 核心 token: ```css :root { --color-brand: #2b1f99; --color-brand-strong: #1d166b; --color-brand-soft: #eceaf8; --color-accent: #3ad4d8; --color-accent-strong: #17a9ad; --color-accent-soft: #e5fbfc; --color-bg: #f5f8fa; --color-surface: #ffffff; --color-surface-subtle: #f8fafc; --color-border: #dfe7ee; --color-border-soft: #edf2f6; --color-text: #18212f; --color-text-secondary: #5f6b7a; --color-text-muted: #8a97a8; --color-success: #2e9d65; --color-warning: #c98219; --color-danger: #c94a4a; --color-info: #4c6f91; } ``` 状态语义: - 进行中 / 当前:accent 青色。 - 完成 / 通过:success 绿色。 - 待处理 / 考评中:warning 琥珀色。 - 驳回 / 风险:danger 红色。 - 草稿 / 归档:info 或中性灰蓝。 ### 布局 token ```css :root { --radius-xs: 4px; --radius-sm: 6px; --radius-md: 8px; --shadow-panel: 0 1px 2px rgba(15, 23, 42, 0.04); --shadow-popover: 0 12px 28px rgba(15, 23, 42, 0.12); --space-page-x: 24px; --space-page-y: 20px; --layout-sidebar: 220px; --layout-topbar: 52px; } ``` 原则: - 面板用 `1px` 边框和轻微阴影,不做漂浮卡片堆叠。 - 内容页背景统一浅冷灰。 - 高密度工作页减少大标题占用,优先展示周期、人员、状态和待办。 ### 字体和排版 保持系统中文字体栈,避免引入不可控外部字体。 建议字号: - 页面标题:22px 或 24px,不再使用 28px 大标题作为默认。 - 分区标题:15px 或 16px。 - 表格和业务文本:13px 或 14px。 - 辅助信息:12px。 - 数字结果:根据场景 24px、32px、40px,但仅用于绩效总分等关键数据。 ### Element Plus 覆盖 新增统一覆盖层,减少页面内重复样式: - 按钮默认不使用 `round`,统一 6px 圆角。 - `el-card` 尽量减少使用;优先自定义业务面板类。 - `el-tag` 降低饱和度,避免大量 dark tag。 - 表格统一表头背景、行高、hover 和边框。 - Dialog 的标题、footer、表单间距统一。 ## 通用组件和样式模式 建议优先抽象为样式类,不急于过度组件化。稳定后再提取 Vue 组件。 第一阶段需要的通用模式: 1. `PageHeader` / `.app-page-header` - 页面标题、描述、主要操作、当前周期/状态摘要。 2. `.med-panel` - 白色业务面板,统一边框、圆角、内边距、标题。 3. `.status-strip` - 周期状态、OKR 状态、自评状态的横向提示条。 4. `.metric-row` / `.metric-card` - 分数、完成率、周期数量、待办数量等指标。 5. `.evidence-panel` - 评分页左侧证据区:OKR 记录、自评、更新日志。 6. `.decision-panel` - 评分页右侧决策区:打分、公式、结果预览、提交。 7. `.empty-state` - 空数据提示统一样式。 8. `.audit-note` - 归档、不可修改、审核、时间戳等审计信息。 ## 页面改造方案 ### 1. 主布局 `MainLayout.vue` 目标:建立系统第一印象。 改造点: - 侧边栏继续使用深品牌色,但降低亮度和饱和噪声。 - logo 区从居中展示改为更像企业系统的品牌栏。 - 菜单 active 状态使用左侧细线 + 浅青文本,不使用过亮背景。 - 顶部栏高度从 48px 调整到 52px,强化边界和用户信息。 - 通知面板改为更清晰的消息列表,未读状态使用青色细点或左边线。 - 用户角色 tag 降低饱和度,避免彩虹角色色影响专业感。 ### 2. 登录页 `LoginView.vue` 目标:从“AI 暗色科技登录页”改为“医疗科技公司内部系统入口”。 改造点: - 背景改为浅冷灰或低亮度品牌底,不使用 radial 科技光晕。 - 登录卡片改为企业内控入口面板,显示系统名、组织名、账号登录。 - 保留 logo,但减少大尺寸品牌展示。 - 注册入口弱化。如内部系统不希望开放注册,后续可单独讨论是否隐藏。 - 输入框和按钮使用统一 Element Plus 覆盖。 ### 3. 考核周期 `PeriodListView.vue` 目标:从卡片列表升级为周期生命周期工作台。 改造点: - 顶部显示周期总览:进行中、待发布、考评中、已归档数量。 - 周期列表按状态分组,但减少彩色 badge,使用状态点和左边线。 - 管理员操作区明确主次:发布、锁定、进入考评、归档、删除。 - 状态说明变成紧凑的流程提示,而不是每张卡片重复大段说明。 - 批量创建预览统一为表格化列表。 ### 4. 我的 OKR `MyOkrView.vue` 目标:强化对齐关系和阶段任务。 改造点: - 去掉 emoji,规则区改为“OKR 编写标准”信息面板。 - 上级 OKR、我的 OKR、待审核 OKR 使用一致的目标/关键结果结构。 - `O` 和 `KR` 标记改为克制的胶囊或短标签。 - 对齐上级 KR 的选择区改成医疗系统式清单,显示承接来源、负责人、目标值。 - 阻塞状态和驳回状态使用明确风险样式,但不大面积红底。 ### 5. 绩效考评 `ScoringEditView.vue` 目标:做成评审工作台,这是第一阶段最重要页面。 布局: - 左侧:证据区,占 52% 左右。 - 右侧:评分决策区,占 420-480px,可在宽屏固定或保持独立滚动。 - 低于断点后上下堆叠,保持原响应式能力。 左侧证据区: - OKR 完整记录。 - KR 完成率、目标值、当前值、权重。 - 进度日志。 - 员工自评和说明。 右侧决策区: - OKR 逐 KR 打分。 - 工作成果维度评分。 - 加减分说明。 - 公式、总分、评级。 - 提交按钮。 改造点: - 总分结果使用稳定的数据面板,不使用紫色大块背景。 - 自评引用以“参考值”形式呈现,避免干扰主评分。 - 加减分必须保留说明输入,视觉上强调审计留痕。 ### 6. 我的绩效 / 历史绩效 目标:结果页体现确认、沟通闭环和归档可信度。 改造点: - 结果总览包括总分、评级、状态、周期。 - OKR 与工作成果分开展示贡献。 - 自评与上级评分对比改为结构化对照。 - 确认按钮和反馈沟通状态明确。 - 历史记录强调归档和不可修改。 ### 7. 组织、模板、日志等管理页 第一阶段只做全局样式适配: - 继承统一页面标题、表格、按钮和面板。 - 不重构业务布局。 - 操作日志保留高密度表格感,避免卡片化。 ## 实施顺序 1. 新增全局样式基础 - `frontend/src/styles/theme.css` - `frontend/src/styles/components.css` - `frontend/src/styles/element-plus.css` - 在入口引入。 2. 改造主布局和登录页 - 先建立整体气质。 - 验证导航、通知、登录流程不受影响。 3. 改造周期页和 PeriodBanner - 统一周期状态表达。 - 提供后续 OKR、评分页复用样式。 4. 改造我的 OKR 页面 - 替换 emoji。 - 统一 OKR/KR 信息结构。 5. 改造绩效考评页 - 重构左右工作台视觉结构。 - 保持计算逻辑不变。 6. 改造我的绩效和历史绩效 - 统一结果呈现和归档语义。 7. 管理页统一适配 - 表格、空状态、按钮、面板。 8. 视觉 QA 和构建验证 - `npm run build` - 桌面宽度 1366、1440、1920 检查。 - 移动或窄屏检查评分页、OKR 页不重叠。 ## 非目标 本阶段不做: - 不改后端接口。 - 不改数据库结构。 - 不改变评分公式。 - 不改变 OKR 周期状态机。 - 不引入大型 UI 框架替换 Element Plus。 - 不做营销首页。 - 不做复杂动画、3D、插画系统。 - 不处理开放注册策略,除非后续明确要求。 ## 风险和应对 风险 1:全局覆盖 Element Plus 影响已有页面。 应对:覆盖规则使用 `.app-shell` 或明确类名约束,避免无边界覆盖。 风险 2:页面 scoped 样式仍然覆盖新样式。 应对:先保留页面结构,逐页移除重复样式;每次只改一个页面组。 风险 3:评分页改动影响计算信任。 应对:评分逻辑不动,只改展示结构;改造后用同一输入检查总分、评级、提交 payload 不变。 风险 4:主题色使用过度,仍显 AI 感。 应对:品牌深色只做锚点,科技青只做活跃和焦点;内容区以中性色和细边框为主。 ## 验收清单 - 登录页符合内部医疗科技系统入口气质。 - 主布局在折叠和展开状态下稳定。 - 周期页能一眼看出当前阶段、下一步动作和管理员操作。 - 我的 OKR 页面能清楚表达上级承接、本人目标、待审核事项。 - 绩效考评页左侧证据、右侧决策分区明确。 - 结果页能清楚表达分数组成、确认状态、反馈状态。 - 所有核心页面无 emoji。 - 核心页面无明显大面积渐变、漂浮光斑、营销式装饰。 - `npm run build` 通过。 - 未修改后端业务代码和接口契约。