# Bug #468 分析报告 ## Bug 描述 [住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度 ## 阶段1:深度分析 ### 数据流追踪 1. **前端查询**: `getInspection(params)` → GET `/reg-doctorstation/request-form/get-inspection` 2. **后端控制器**: `RequestFormManageController.getInspectionRequestForm()` → 调用 `iRequestFormManageAppService.getRequestForm()` 3. **后端服务**: `RequestFormManageAppServiceImpl.getRequestForm()` → 调用 `requestFormManageAppMapper.getRequestForm()` 4. **SQL查询**: `RequestFormManageAppMapper.xml` 中的 `getRequestForm` 语句 5. **状态计算**: SQL 使用 CASE WHEN 根据 `wor_service_request.status_enum` 计算 `computed_status` 6. **前端渲染**: `parseBillStatus(scope.row.billStatus ?? scope.row.status)` 显示状态文本 ### 状态映射关系 **后端 ServiceRequest.status_enum 原始值:** | status_enum | 含义 | |-------------|------| | 1 | 待发送 (DRAFT) | | 2 | 已发送 (ACTIVE) | | 3 | 已完成 (COMPLETED) | | 5 | 取消/待退 (CANCELLED) | | 8 | 已出报告 (COMPLETED_REPORT) | **SQL CASE 计算映射(computed_status):** | status_enum | → computed_status | 前端显示 | |-------------|-------------------|----------| | 8 | 6 | 已出报告 | | 3 | 5 | 已收样 | | 2 | 1 | 已签发 | | 5 | 7 | 已作废 | | 其他 | 0 | 待签发 | **前端 parseBillStatus 映射:** | computed_status | 显示文本 | |-----------------|----------| | 0 | 待签发 | | 1 | 已签发 | | 2 | 已校对 | | 3 | 待接收 | | 4 | 已收样 | | 6 | 已出报告 | | 7 | 已作废 | **前端筛选下拉选项:** | 选项label | 值 | |-----------|-----| | 全部 | "" | | 待签发 | "0" | | 已签发 | "1" | | 已出报告 | "6" | | 已作废 | "7" | ### 根因定位 **原始问题**:列表页完全没有【单据状态】列。 **已有修复**(已在 develop 分支合并): 1. 新增 `el-table-column` 单据状态列(位于申请单号之后) 2. 新增 `parseBillStatus()` 函数用于状态码→文本转换 3. 新增筛选表单中的单据状态下拉选择 4. 后端 SQL 新增 `computed_status` 动态计算逻辑 5. 前端使用 `scope.row.billStatus ?? scope.row.status` 兼容字段名 ## 修复结果 ✅ 成功,Bug #468 已在 develop 分支修复并合并。 当前 guanyu 分支与 develop 分支代码完全一致(diff 为空),无需额外代码改动。 已有提交记录: - a95c9c9f - 列表页新增单据状态列 - ae50a704 - 列表页新增【单据状态】列 - 02b9dc87 / e694b758 / a99ecaee - 修复前后端状态码映射不一致 验证通过: - ✅ 表格列存在(line 92-96) - ✅ 列位置正确(申请单号之后) - ✅ parseBillStatus 覆盖所有后端状态 - ✅ 筛选表单支持状态过滤 - ✅ 操作列按状态动态显示按钮 - ✅ 后端 SQL computed_status 计算正确