Files
Mdeical_Sur_Report/工程分析/实现方案-2026-04-19-00-24-02.md

42 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案 —— 2026-04-19-00-24-02
## 方案目标
完善 Dashboard 数据概览:新增全部报告卡片、修复图表重叠、增加时间维度切换。
## 需求 1新增"全部报告总数"卡片
### 修改文件:`src/pages/Dashboard.tsx`
1. **扩展 stats 结构**:增加 `totalCount` 字段,表示全部报告总数(原 `reportCount` 改为仅统计本月)。
2. **更新计算逻辑**:在 useEffect 中计算 `userReports.length` 作为 `totalCount`,原 `reportCount` 保留为当月数量。
3. **调整卡片布局**:将原来的 4 卡片网格改为包含 5 个统计项,或保持 4 卡片但替换/调整内容。根据用户要求,在"本月报告总数"左侧插入"全部报告总数",并将网格列数从 4 改为 5`lg:grid-cols-5`)或保持 4 列但替换其中一个卡片。
## 需求 2修复图表日期文字与 X 轴重叠
### 修改文件:`src/pages/Dashboard.tsx`
1. **增大底部留白**:将 Canvas 的 `padding` 或图表绘制区域的高度计算中加入更大的底部偏移(如 `bottomPadding = 30` 而非原来的 10
2. **调整文字 Y 坐标**:将 `ctx.fillText(label, x, h - 10)` 改为 `ctx.fillText(label, x, h - 5)` 或更下方,确保文字不会与 X 轴线(通常在 `h - padding` 位置绘制)重叠。
3. **调整字体大小**30 天模式下缩小字体到 9px避免文字过密。
## 需求 3时间维度切换
### 修改文件:`src/pages/Dashboard.tsx`
1. **增加状态**`const [timeRange, setTimeRange] = useState<'7days' | '1month'>('7days');`
2. **响应式计算**:将 `useEffect` 的依赖数组增加 `timeRange`,当切换时重新计算 `trend``trendLabels`
3. **标签格式化**
- 7 天模式:显示 `MM-DD`(如 04-13
- 30 天模式:显示 `DD`(如 13避免过密
4. **UI 控件**:在图表标题右侧增加切换按钮组(最近 7 天 / 最近 30 天)。
## 涉及文件及修改点
| 文件 | 修改点 |
|------|--------|
| `src/pages/Dashboard.tsx` | stats 结构扩展、totalCount 计算、卡片布局调整、timeRange 状态、趋势数据响应式计算、Canvas 绘制坐标修复、时间切换 UI |
## 风险与注意事项
1. 原代码中 `reportCount` 可能表示的是全部报告数,需要确认其原意。如果原意是全部报告数,则需要新增 `monthCount` 而非修改 `reportCount`。根据用户方案,将 `reportCount` 改为当月数,`totalCount` 为全部数。
2. Canvas 绘制中 `padding``chartH` 的计算需要同步调整,确保数据线不会画到文字区域。
3. 30 天模式下数据点密集,需要考虑是否跳点显示标签(如只显示奇数天)。