- 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)
3.0 KiB
3.0 KiB
测试方案 — 模板字段唯一性、删除交互与报告批量导出(2026-04-17-10-21-18)
一、编译检查
- 执行
npm run lint(tsc --noEmit),确保全量 TypeScript 无编译错误。
二、功能验证步骤
测试 1:TemplateManage 字段唯一性
- 进入【模板管理】,选择一个模板。
- 在右侧字段库点击"姓名"(
patientName),确认成功插入智能字段方框。 - 再次点击"姓名",确认弹出提示
"姓名" 已存在,请勿重复插入。,且没有再次插入方框。
测试 2:TemplateManage 字段删除(点击删除按钮)
- 在模板编辑器中,鼠标悬停在任意智能字段方框上,确认左上角出现红色小圆 ×。
- 点击该 ×,确认字段方框被移除,模板内容自动保存。
- 刷新页面,确认该字段确实已被删除。
测试 3:TemplateManage 字段删除(键盘 Backspace/Delete)
- 将光标定位在智能字段方框正后方(字段与后续文字之间),按 Backspace,确认字段被删除。
- 将光标定位在智能字段方框正前方(段落开头,字段前面),按 Delete,确认字段被删除。
- 尝试在段落中间的其他位置按 Backspace/Delete,确认不影响正常文本编辑。
测试 4:ReportManage 单报告导出
- 进入【报告管理】,确保列表中至少有一份已完成的报告。
- 点击某报告操作列的"导出"按钮,弹出导出选项弹窗。
- 选择 PDF:确认调用
printDocument弹出浏览器打印窗口(可选择"另存为 PDF")。 - 再次点击"导出",选择 JSON:确认浏览器下载了一个
.json文件。 - 打开该 JSON 文件,确认结构包含
meta(id、title、createdAt 等)和fields(patientName、hospitalId 等字段值)。
测试 5:ReportManage 复选框与批量删除
- 在报告列表中,点击多行的左侧复选框,确认
selectedIds状态更新,顶部出现批量操作栏并显示"已选择 N 项"。 - 点击表头全选 Checkbox,确认所有行被选中;再次点击,确认全部取消。
- 选中 2 份报告,点击批量操作栏的"批量删除",在确认弹窗中点击"取消",确认报告未被删除。
- 再次点击"批量删除"并确认,确认选中的报告从列表和 localStorage 中移除,批量操作栏消失。
测试 6:ReportManage 批量导出
- 选中 2 份报告,点击"批量导出 JSON",确认下载的 JSON 文件中包含一个数组,数组长度为 2,每个元素结构同单报告导出。
- 选中 2 份报告,点击"批量导出 PDF",确认弹出浏览器打印窗口,打印内容中两份报告之间有明显的分页(或分页符空白)。
三、预期结果
npm run lint0 错误。- 模板字段唯一性校验生效,重复插入被阻止。
- 模板字段可通过点击 × 或键盘 Backspace/Delete 删除。
- 报告管理支持单报告 PDF/JSON 导出。
- 报告管理支持复选框全选、批量删除、批量 PDF/JSON 导出。