- Replace direct DOM remove() with Range+execCommand('delete') in TemplateManage click and keydown handlers to restore undo stack
- Append ​ zero-width space to smart-field-wrapper HTML in insertSmartField and defaultContent.ts to prevent unwanted line breaks
- Refactor ReportEditor surgeonSignature rendering to depend on isSigned field
- Add isSigned to DEFAULT_FORM_FIELDS (single_select: 已签字/未签字)
- Change surgeonSignature to visibleInForm=true, isSystemLocked=false
- Constrain signature image with max-width:120px, max-height:40px, object-fit:contain in CSS and print.ts
- Add weak-blocking signature validation prompts in saveReport('completed')
- Update experience record (#19)
57 lines
3.5 KiB
Markdown
57 lines
3.5 KiB
Markdown
# 测试方案 — 撤销栈修复、字段删除交互优化与签名字段闭环(2026-04-17-12-34-56)
|
||
|
||
## 一、编译检查
|
||
|
||
- 执行 `npm run lint`(`tsc --noEmit`),确保全量 TypeScript 无编译错误。
|
||
|
||
## 二、功能验证步骤
|
||
|
||
### 测试 1:TemplateManage 撤销功能恢复
|
||
1. 进入【模板管理】,选择默认模板。
|
||
2. 点击某智能字段(如"手术日期")右上角的红色 × 删除该字段。
|
||
3. 点击编辑器工具栏的"撤销"按钮(↶)。
|
||
4. 确认被删除的字段重新出现,撤销功能正常。
|
||
|
||
### 测试 2:TemplateManage 插入字段不强制换行
|
||
1. 在模板编辑器中,将光标定位到一行文字中间(如"手术名称:"后面)。
|
||
2. 点击右侧字段库插入"手术日期"。
|
||
3. 确认"手术日期"字段框紧跟在光标位置,没有跳到下一行。
|
||
4. 再次插入"手术者签名",确认同样保持在当前行。
|
||
|
||
### 测试 3:TemplateManage Backspace/Delete 精准删除
|
||
1. 将光标定位在某智能字段框**正后方**,按 Backspace。
|
||
2. 确认仅该字段被删除,前面和后面的文本不受影响。
|
||
3. 将光标定位在某智能字段框**正前方**,按 Delete。
|
||
4. 确认仅该字段被删除,其他文本完好无损。
|
||
5. 删除后点击"撤销",确认字段恢复。
|
||
|
||
### 测试 4:签名图片尺寸约束
|
||
1. 进入【用户管理】,给当前登录用户上传一张较大的电子签图片。
|
||
2. 进入【新建报告】,在右侧【基本信息】中将"手术者签名确认"选择为"已签字"。
|
||
3. 观察模板中的签名图片,确认其宽度不超过 120px,高度不超过 40px,且等比例缩放未变形。
|
||
|
||
### 测试 5:签名字段显隐与表单联动
|
||
1. 进入【模板管理】,查看右侧【字段管理】,确认"手术者签名"和"手术者签名确认"字段存在且可切换"显示/隐藏"。
|
||
2. 进入【新建报告】,确认右侧【基本信息】表单中出现了"手术者签名确认"下拉框(默认"未签字")。
|
||
3. 选择"未签字",确认模板中的签名方框显示"【未签字】"。
|
||
4. 选择"已签字",确认模板中的签名方框显示签名图片。
|
||
5. 在 UserManage 中清除当前用户签名,返回 ReportEditor 将"手术者签名确认"选为"已签字"。
|
||
6. 确认签名方框显示"【请上传电子签】"。
|
||
|
||
### 测试 6:完成报告签名校验提示
|
||
1. 确保模板中存在"手术者签名"字段,且 ReportEditor 中"手术者签名确认"为"未签字"。
|
||
2. 点击"完成报告",确认弹出提示:"模板中包含【手术者签名】字段,但您在基本信息中未选择'已签字'。是否继续完成报告?"
|
||
3. 点击"取消",确认报告未被保存,停留在编辑页。
|
||
4. 将"手术者签名确认"改为"已签字",清除当前用户的电子签图片。
|
||
5. 再次点击"完成报告",确认弹出提示:"您选择了'已签字',但您的账号尚未上传电子签名图片。报告中将不显示签名图片,是否继续完成?"
|
||
6. 点击"确定",确认报告正常保存并跳转至报告管理页。
|
||
|
||
## 三、预期结果
|
||
|
||
- `npm run lint` 0 错误。
|
||
- TemplateManage 中删除字段后撤销正常。
|
||
- 插入字段不强制换行;Backspace/Delete 精准删除单个字段。
|
||
- 签名图片受 120×40px 约束,等比例缩放。
|
||
- 表单联动正常:已签字→显示图片,未签字→显示"【未签字】",无签名图→显示"【请上传电子签】"。
|
||
- 完成报告时签名异常给出弱阻断提示,用户可取消或继续。
|