弹窗编辑
import { RenderModal } from 'ds-ui'
弹窗编辑用于处理小范围、临时性、需要确认的编辑流程。它不能替代页面级编辑,也不应该承载长时间复杂业务状态。
适用场景
- 新增或编辑少量字段。
- 选择辅助值。
- 二次确认。
- 查看对象详情或诊断信息。
不适合:
- 大型表单。
- 多步骤流程。
- 长时间占用的复杂业务单据。
- 需要频繁与主页面联动的大区域编辑。
基本确认框
const modal = new RenderModal({ title: '删除确认', content: '确认删除当前记录吗?', buttons: [ { label: '取消', key: 'cancel' }, { label: '删除', key: 'delete', danger: true, primary: true }, ], onClose: key => { if (key === 'delete') remove() },}) modal.show()
RenderModal 适合简单文本确认。复杂内容建议用应用 Overlay 服务或专门窗口组合。
上下文继承
弹窗来自某个页面时,应继承调用页面上下文,而不是只挂到应用根。这样弹窗内命令、权限、当前患者或当前单据都能按调用来源解析。
如果弹窗有临时状态,可以创建浮层级上下文,并在弹窗关闭时释放。
关闭规则
- 确认:校验、提交、关闭、刷新主页面。
- 取消:放弃临时值,关闭。
- 点击外部:只在轻量 popup 中允许;编辑型弹窗应谨慎。
- Escape:通常等价于取消,但要考虑脏数据确认。
使用建议
- 弹窗打开时不要复制大型业务对象,传 id 或轻量参数即可。
- 弹窗关闭后必须释放临时上下文、订阅和计时器。
- 弹窗内按钮也应绑定命令或共享权限判断。
- 需要停靠、浮动、最大化的复杂内容,应使用
RenderWindow或工作区文档,而不是普通 Modal。