fix(#569): 请修复 Bug #569:[一般] [住院护士站-医嘱管理] 各业务节点状态名称与《药品医嘱状态映射表》不一致,存在严重歧义

根因:
- 后端 `requestStatus_enumText` 返回旧枚举值(如"已发送""已完成"),前端部分组件直接使用原始枚举文本而未做名称映射,导致界面显示与标准映射表不一致。
- ### 关键映射关系(按《药品医嘱状态映射表》修订版)
- | 业务节点 | 规范名称 | 旧枚举文本 |
- |---|---|---|
- | 开具 | 待签发 | 待发送 |
- | 签发 | 已签发 | 已发送/已发送/待执行 |
- | 校对 | 已校对 | 已完成 |
- | 汇总申请(护士站) | 已提交 | 待配药/已汇总 |
- | 发药(护士站→药房) | 已发药/已完成 | 已发放 |
- ### 修改文件
- 1. `src/views/inpatientNurse/medicalOrderProofread/components/prescriptionList.vue`**

修复:
- 将 `STATUS_DISPLAY_BY_TAB`(基于页签过滤条件的显示)替换为行级别的状态映射
- 新增 `REQUEST_STATUS_DISPLAY`:按 `row.requestStatus` 数值映射规范名称(待签发/已签发/已校对/已停止)
- 新增 `DISPENSE_STATUS_DISPLAY`:按 `row.dispenseStatus` 映射发药状态(已提交/已发药)
- 新增 `LEGACY_STATUS_TEXT`:兼容旧后端返回的 "已发送"→"已签发"、"已完成"→"已校对" 等
- 2. `src/views/drug/inpatientMedicationDispensing/components/MedicationDetails.vue`**
- 新增 `DRUG_STATUS_DISPLAY` + `LEGACY_DRUG_STATUS_TEXT` 映射
- `statusEnum=2` 显示"待配药"(原显示"已提交"),`statusEnum=4` 显示"已发药"
- 3. `src/views/drug/inpatientMedicationDispensing/components/DetailMedicationTable.vue`**
- 新增 `DETAIL_DRUG_STATUS_DISPLAY` + `DETAIL_LEGACY_STATUS_TEXT` 映射
- ### 已存在的正确映射(无需修改)
- `medicalOrderExecution/components/prescriptionList.vue` — 已有完整映射
- `drugDistribution/components/summaryMedicineList.vue` — 已有 `SUMMARY_STATUS_DISPLAY`
- `inpatientMedicationDispensing/components/MedicationSummary.vue` — 已有 `SUMMARY_STATUS_DISPLAY`
- ### 验证
-  ESLint 检查通过(无新增错误)
-  `vite build` 编译成功
This commit is contained in:
2026-05-29 01:31:59 +08:00
parent 504875b011
commit 2aaafb408b
3 changed files with 79 additions and 16 deletions

View File

@@ -105,7 +105,7 @@
min-width="100"
>
<template #default="scope">
{{ scope.row.statusEnum_enumText || scope.row.statusEnum || '-' }}
{{ formatDetailDrugStatus(scope.row) }}
</template>
</el-table-column>
<el-table-column
@@ -241,6 +241,25 @@
</template>
<script setup>
/** 发药状态 → 规范状态名称映射(与《药品医嘱状态映射表》保持一致) */
const DETAIL_DRUG_STATUS_DISPLAY = {
2: '待配药',
4: '已发药',
};
const DETAIL_LEGACY_STATUS_TEXT = {
已提交: '待配药',
已发放: '已发药',
已完成: '已发药',
};
function formatDetailDrugStatus(row) {
const code = Number(row?.statusEnum);
if (DETAIL_DRUG_STATUS_DISPLAY[code]) {
return DETAIL_DRUG_STATUS_DISPLAY[code];
}
return DETAIL_LEGACY_STATUS_TEXT[row?.statusEnum_enumText] || row?.statusEnum_enumText || '-';
}
import {computed, getCurrentInstance, ref, watch} from 'vue';
import {ElMessage} from 'element-plus';
import {totalReturnDrug, totalSendDrug} from './api';

View File

@@ -208,7 +208,7 @@
>
<template #default="scope">
<el-tag :type="tagType(scope.row.statusEnum)">
{{ scope.row.statusEnum_enumText }}
{{ formatDrugStatusText(scope.row) }}
</el-tag>
</template>
</el-table-column>
@@ -760,6 +760,26 @@ function formatPrice(row, column, cellValue) {
return cellValue.toFixed(2) + ' 元'; // 保留两位小数
}
/** 发药状态 → 规范状态名称映射(与《药品医嘱状态映射表》保持一致) */
const DRUG_STATUS_DISPLAY = {
2: '待配药',
4: '已发药',
};
const LEGACY_DRUG_STATUS_TEXT = {
已提交: '待配药',
已发放: '已发药',
已完成: '已发药',
};
function formatDrugStatusText(row) {
const code = Number(row?.statusEnum);
if (DRUG_STATUS_DISPLAY[code]) {
return DRUG_STATUS_DISPLAY[code];
}
return LEGACY_DRUG_STATUS_TEXT[row?.statusEnum_enumText] || row?.statusEnum_enumText || '-';
}
function tagType(statusEnum) {
if (statusEnum == 2 || statusEnum == 2) {
return 'primary';