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