Files
his/analysis_469.md
2026-05-19 13:04:48 +08:00

2.3 KiB
Raw Blame History

分析报告 — Bug #469

问题描述

检验申请列表的【操作】列仅显示固定的"打印"和"删除"按钮,未根据申请单状态动态切换操作权限。

根因分析

文件 openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue 第97-104行

  • 操作列模板中固定渲染"打印"和"删除"按钮,没有任何状态判断逻辑
  • 缺少"修改"和"撤回"按钮

状态机设计

状态 条件 允许的操作
待开立 applyStatus == 0 修改、删除
已开立 applyStatus == 1 && needExecute != true 撤回
已执行 applyStatus == 1 && needExecute == true 无(仅打印)

修复方案

  1. 前端 Vue: 操作列改为 v-if 条件渲染按钮(修改/删除/撤回/打印)
  2. 前端 API: 新增撤回接口 withdrawInspectionApplication(applyNo)
  3. 后端 Controller: 新增 POST /withdraw/{applyNo} 端点
  4. 后端 Service: 新增 withdrawInspectionLabApply 方法,将 applyStatus 置回 0needRefund/needExecute 置回 false

修复结果

成功共14行改动2个commit完成

修复详情

  1. commit c643a78b - 初始修复:将操作列从静态"打印/删除"改为基于状态的动态按钮(修改/删除/撤回/详情10行改动
  2. commit f369ea41 - 跟进修复:将"详情"按钮包裹在 <template v-else>避免对所有状态始终渲染4行改动

状态机实现

状态 条件 显示按钮
待签发 billStatus == '0' 修改 + 删除
已签发 billStatus == '1' 撤回
其他状态 已采证/已送检/报告已出/已作废 详情

涉及文件

  • openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue - 前端操作列动态按钮
  • openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/api.js - 前端APIdeleteRequestForm, withdrawRequestForm
  • openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/controller/RequestFormManageController.java - 后端Controller/delete, /withdraw 端点)
  • openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java - 后端Service实现