Files
his/MD/bugs/BUG_498_ANALYSIS.md
华佗 d8427f788e docs: 统一文档管理规范,合并docs/到MD/目录
- 创建MD/目录结构(architecture/development/standards/specs/bugs/guides/upgrade)
- 制定文档命名规范(大写英文+下划线)
- 制定文档格式规范(元数据块、结构模板)
- 合并27个文档到MD/目录,按类别分类
- 删除旧的docs/目录
- 更新AGENTS.md铁律#5: 文档统一管理

命名规范:
- 架构设计: ARCH_<模块>_<描述>.md
- 开发计划: PLAN_<类型>_<版本>.md
- 国家标准: STD_<标准名称>.md
- 技术规范: SPEC_<类型>_<描述>.md
- Bug修复: BUG_<编号>_<描述>.md
- 使用指南: GUIDE_<主题>.md
- 升级记录: UPGRADE_<组件>_<类型>.md
2026-06-06 09:06:21 +08:00

3.2 KiB
Raw Blame History

Bug #498 分析报告

Bug 描述

【住院医生工作站-检查申请】检查申请列表操作项过于单一,缺失修改/作废/打印/看报告等核心临床操作

阶段1深度分析

当前代码状态

examineApplication.vue 的操作列lines 104-137已经实现了按状态动态展示按钮

  • 待签发(0):详情 + 修改 + 删除
  • 已签发(1):详情 + 撤回
  • 已校对(2)/待接收(3):详情 + 打印
  • 已接收(4)/已检查(5):详情 + 看报告
  • 已出报告(6):详情 + 打印 + 看报告
  • 已作废(7):详情

根因分析

核心发现前端按钮逻辑已完整实现但存在一个关键Bug导致"看报告"功能无法工作。

BughandleViewReport 传递错误的参数

前端代码 (examineApplication.vue:920):

const res = await getTestResult({ prescriptionNo: row.prescriptionNo });

后端接口 (DoctorStationAdviceController.java:190-192):

@GetMapping(value = "/test-result")
public R<?> getTestResult(@RequestParam(value = "encounterId") Long encounterId) {
    return iDoctorStationAdviceAppService.getTestResult(encounterId);
}

问题:前端传递 prescriptionNo,后端只接受 encounterId。Spring 忽略未知参数,encounterId 为 null后端直接返回空列表。

后端服务实现 (DoctorStationAdviceAppServiceImpl.java:2357-2376):

public R<?> getTestResult(Long encounterId) {
    if (encounterId == null) {
        return R.ok(new ArrayList<>());  // encounterId为空时直接返回空列表
    }
    // ... 查询逻辑 ...
}

数据流追踪

  1. 前端 handleViewReport(row) → 获取 row.prescriptionNo
  2. 调用 getTestResult({ prescriptionNo: "JCZ26051600001" })
  3. 后端接收:encounterId = null(参数名不匹配,被忽略)
  4. 后端返回空列表 → 前端显示"暂未生成报告"

修复方案

handleViewReport 中的参数从 prescriptionNo 改为 encounterId,使用 row.encounterIdpatientInfo.value.encounterId

后端 API 完整性检查

操作 前端调用 后端接口 状态
修改 saveCheckd → POST /save-check saveRequestForm (支持编辑)
删除 deleteRequestForm → POST /delete deleteRequestForm (验证status=0)
撤回 withdrawRequestForm → POST /withdraw withdrawRequestForm (验证status=2)
打印 前端 window.open 打印 无后端依赖
看报告 getTestResult → GET /test-result getTestResult(encounterId) 参数名不匹配

修复结果: 成功commit 3a928afb2行改动

修复内容

examineApplication.vue:920 - 将 handleViewReport 中的请求参数从 prescriptionNo 改为 encounterId

- const res = await getTestResult({ prescriptionNo: row.prescriptionNo });
+ const res = await getTestResult({ encounterId: row.encounterId || patientInfo.value?.encounterId });

说明

  • 操作列的动态按钮逻辑(修改/删除/撤回/打印/看报告)已在之前的提交中完整实现
  • 本修复解决了"看报告"功能因参数名不匹配导致始终返回空数据的问题
  • 其余操作(修改/删除/撤回/打印)的后端接口参数均正确匹配