2.6 KiB
2.6 KiB
诊单编辑业务订单 tab 去除数据权限
Goal
修正「编辑诊单」对话框中的“业务订单”tab:获取订单数据时不再受业务订单列表页的数据权限限制,只要订单与当前诊单患者相关,就应展示出来。
What I verified
- 前端组件是 admin/src/views/tcm/diagnosis/components/PatientOrderList.vue,直接调用
prescriptionOrderLists。 - 路由仍是
GET /tcm.prescriptionOrder/lists,控制器 server/app/adminapi/controller/tcm/PrescriptionOrderController.php 只是透传给PrescriptionOrderLists。 - 真正的权限过滤在 server/app/adminapi/lists/tcm/PrescriptionOrderLists.php:
applyCreatorOrOwnPrescriptionVisibility()applyDataScopeForPrescriptionOrder()
- 当前诊单 tab 已经按
patient_id过滤,且支持diagnosis_id精确过滤,因此即使跳过列表权限,也仍然只会落在“当前患者/当前诊单关联订单”的安全范围内。
Decision
- 不新增独立接口,继续复用
/tcm.prescriptionOrder/lists。 - 仅为“诊单编辑业务订单 tab”增加一个显式场景参数,例如
scene=diagnosis_edit。 - 只有在该场景下,
PrescriptionOrderLists才跳过业务订单列表页的两层权限过滤。 - 其它页面继续保持原有权限逻辑,不改行为。
Requirements
- 前端业务订单 tab 请求列表时附带场景参数,标记这是诊单编辑页内的患者订单查询。
- 后端列表类识别该场景后,不执行:
- 创建人/开方人可见性过滤
- 数据范围过滤
- 后端仍保留患者/诊单过滤逻辑,不允许无条件返回全量订单。
- 原订单管理页、统计页、其它依赖
/tcm.prescriptionOrder/lists的页面行为不变。
Acceptance Criteria
- 打开任意诊单编辑页,“业务订单”tab 可以看到该患者实际关联的业务订单,不因当前登录人不是订单创建人或不在数据范围内而丢失数据。
- 切换“仅本诊单”时,只显示当前诊单关联的业务订单。
- 业务订单主列表页权限行为不变。
- 不新增新的权限点,不修改现有 tab 显隐权限。
Risks
- 如果跳过权限的判断条件不够收敛,可能误影响订单管理页;因此必须使用显式场景参数,不要靠
patient_id/diagnosis_id猜测场景。