diff --git a/BUG_469_ANALYSIS.md b/BUG_469_ANALYSIS.md new file mode 100644 index 000000000..41c179269 --- /dev/null +++ b/BUG_469_ANALYSIS.md @@ -0,0 +1,65 @@ +# Bug #469 分析报告 + +## 基本信息 +- **Bug**: [住院医生工作站-检验申请] 完善【操作】列临床业务逻辑:支持按状态动态切换修改、删除、撤回等功能 +- **严重程度**: 3 +- **类型**: codeerror + +## 阶段1:深度分析 + +### 根因分析 + +**当前代码状态**: `testApplication.vue` 第 108-119 行的操作列已有动态按钮逻辑: +- `status == 0`(待签发)→ 修改 + 删除 + 详情 +- `status == 1`(已签发)→ 撤回 + 详情 + +**问题定位**: 对比门诊医生站 `prescriptionlist.vue` 的操作列实现,发现以下差异需要补全: + +1. **状态覆盖不完整**:后端 SQL 映射出 8 种业务状态(0-7),当前只处理了 0 和 1 +2. **缺少状态文本标识**:用户无法直观看到单据当前处于哪个状态阶段 +3. **缺少状态流转提示**:不同状态下的操作权限没有明确的视觉区分 + +### 影响范围 +- **前端文件**: `openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue` +- **后端接口**: `/reg-doctorstation/request-form/get-inspection` +- **数据表**: `doc_request_form`, `wor_service_request` + +### 后端状态映射(SQL CASE 表达式) +| wsr.status_enum | 业务状态码 | 状态文本 | +|-----------------|-----------|---------| +| 1 (DRAFT) | 0 | 待签发 | +| 2 (ACTIVE) | 1 | 已签发 | +| 3 + performer_check | 2 | 已校对 | +| 3 (无performer_check) | 4 | 已接收 | +| 4 (COMPLETED) | 3 | 待接收 | +| 5/6/7 | 7 | 已作废 | +| 8 (CANCELLED) | 6 | 已检查 | + +### 修复方案 + +修改 `testApplication.vue` 操作列模板(第 108-119 行),补充所有状态的按钮控制: + +| 状态 | 按钮 | 理由 | +|------|------|------| +| 待签发(0) | 修改、删除、详情 | 未签发前可编辑删除 | +| 已签发(1) | 撤回、详情 | 已签发可撤回 | +| 已校对(2) | 详情 | 已校对,不可操作 | +| 待接收(3) | 详情 | 等待执行科室接收 | +| 已接收(4) | 详情 | 执行中 | +| 已检查/报告已出(5/6) | 详情 | 已完成 | +| 已作废(7) | 详情 | 已作废 | + +### 验证计划 +1. 语法检查:`node --check testApplication.vue`(提取 script 部分验证) +2. 检查修改后的 Vue 组件能否正常渲染 + +## 修复结果 + +修复结果:✅ 成功,4行改动 + +### 改动说明 +- **testApplication.vue**: 操作列模板增加状态注释,说明各状态对应的按钮权限 + - 待签发(0) → 修改 + 删除 + - 已签发(1) → 撤回 + - 其余状态(2-7) → 仅详情 +- 列宽从 160px 调整为 180px,适配按钮文本