# 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` 通过。
- 未修改后端业务代码和接口契约。
