Files
Mdeical_Sur_Report/工程分析/需求分析-2026-04-17-10-21-18.md
admin db5df13a05 feat: smart field uniqueness, delete button, bulk export in report manage
- TemplateManage: add uniqueness check for smart fields to prevent duplicate inserts
- Add red circular delete button to smart-field-wrapper (visible on hover via CSS)
- Enhance keydown handler to delete smart fields at block-level boundaries
- Update defaultContent.ts smartField() to include delete-btn
- ReportManage: add per-row checkboxes, select-all, bulk delete
- Add single-report export modal (PDF via printDocument, JSON via Blob)
- Add bulk export actions for PDF and JSON
- Update experience record (#16)
2026-04-17 10:32:07 +08:00

57 lines
3.5 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-17-10-21-18
## 一、需求来源
用户反馈 TemplateManage 中智能字段存在无法删除和重复插入的问题,同时要求升级 ReportManage 的报告管理能力,支持单份/多份报告的结构化导出。
## 二、具体需求拆解
### 需求 1模板字段唯一性校验
**问题**`TemplateManage` 中点击字段库按钮插入智能字段时,同一个字段(如"姓名")可以被重复插入多次,导致模板混乱。
**期望**:每个 `data-bind` 对应的智能字段在编辑器中只能存在一份,若已存在则提示用户并阻止插入。
### 需求 2模板字段删除交互优化
**问题**:默认模板中的智能字段以及手动插入的智能字段,按下 Backspace/Delete 时经常无法删除(尤其是字段位于段落开头/结尾时,浏览器默认行为会误删父级 `<p>`)。
**期望**
- 键盘 Backspace/Delete 能正确删除相邻的智能字段。
- 为智能字段增加可视化删除按钮(类似图片占位符的 ×),用户可直接点击删除。
### 需求 3ReportManage 单报告导出PDF / JSON
**期望**:在报告管理列表的每行操作列增加"导出"按钮,点击后弹出选项:
- **导出 PDF**:调用现有的 `printDocument` 打印报告 HTML 内容,由用户在浏览器打印弹窗中选择"另存为 PDF"。
- **导出 JSON**:下载结构化 JSON 文件,文件内包含该报告所有 `data-bind` 对应字段的值( patientName、hospitalId、title、surgeryDate 等 以及报告元信息id、createdAt 等)。
### 需求 4ReportManage 批量操作(复选框 + 批量删除 / 批量导出)
**期望**
- 表格每行最左侧增加复选框,表头增加全选/反选复选框。
- 当有报告被选中时,表格上方显示批量操作栏,包含:
- **批量删除**:确认后从 `localStorage` 中移除所有选中报告。
- **批量导出 PDF**:将选中报告的 `content` 按分页符拼接后调用 `printDocument`,一次性生成多页 PDF。
- **批量导出 JSON**:将选中报告数组导出为单个 JSON 文件下载。
## 三、影响范围分析
| 文件 | 改动说明 |
|------|----------|
| `src/pages/TemplateManage.tsx` | `insertSmartField` 增加唯一性校验;增强 `keydown` 删除逻辑;给 `smart-field-wrapper` 增加删除按钮及点击事件处理。 |
| `src/utils/defaultContent.ts` | 默认模板中预生成的 `smartField()` 需要包含删除按钮 HTML。 |
| `src/index.css` | 增加 `.smart-field-wrapper .delete-btn` 的样式。 |
| `src/pages/ReportManage.tsx` | 增加 `selectedIds` 状态、复选框列、批量操作栏、导出弹窗/下拉、单报告导出函数、批量导出函数。 |
| `src/utils/print.ts` | 可能需要提供 `printDocument` 的复用,无需修改。 |
## 四、验收标准
- [ ] `TemplateManage` 中已存在的字段再次插入时弹出提示并被阻止。
- [ ] `TemplateManage` 中点击智能字段左上角的 × 可直接删除该字段。
- [ ] `TemplateManage` 中按 Backspace/Delete 可正确删除光标相邻的智能字段(包括段落边界场景)。
- [ ] `ReportManage` 操作列出现"导出"按钮,支持单报告 PDF/JSON 导出。
- [ ] `ReportManage` 表格出现复选框,支持全选/反选。
- [ ] 选中报告后显示批量操作栏,支持批量删除、批量 PDF 导出、批量 JSON 导出。
- [ ] 导出 JSON 的文件内容包含所有 `data-bind` 字段值及报告元信息。