Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4a5932a5d | |||
| e9953cd037 |
22
analysis_469.md
Normal file
22
analysis_469.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# 分析报告 — 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 置回 0,needRefund/needExecute 置回 false
|
||||
@@ -348,7 +348,8 @@ const adviceTypeList = computed(() => {
|
||||
return val === 3 || val === 4;
|
||||
}).map(item => ({
|
||||
label: item.label,
|
||||
value: parseInt(item.value)
|
||||
// drord_doctor_type 中耗材是 4,但 /advice-base-info 后端耗材类型是 2
|
||||
value: parseInt(item.value) === 4 ? 2 : parseInt(item.value)
|
||||
}));
|
||||
return [...filtered, { label: '全部', value: '' }];
|
||||
}
|
||||
@@ -483,8 +484,9 @@ watch(
|
||||
(visible) => {
|
||||
if (visible) {
|
||||
executeTime.value = formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss');
|
||||
// 弹窗打开时重新加载科室和位置选项,确保数据最新
|
||||
// 弹窗打开时按当前患者科室重新加载,避免复用上一次患者/登录科室的结果
|
||||
loadDepartmentOptions();
|
||||
getAdviceBaseInfos();
|
||||
getDiseaseInitLoc(16);
|
||||
} else {
|
||||
resetData();
|
||||
@@ -565,6 +567,8 @@ function getAdviceBaseInfos() {
|
||||
queryParams.value.adviceTypes = [1, 2, 3];
|
||||
}
|
||||
queryParams.value.organizationId = orgId.value;
|
||||
queryParams.value.adviceTypes = normalizeAdviceTypesForQuery(adviceType.value);
|
||||
queryParams.value.organizationId = props.patientInfo.organizationId || orgId.value;
|
||||
queryParams.value.pricingFlag = 1; // 划价标记
|
||||
getAdviceBaseInfo(queryParams.value)
|
||||
.then((res) => {
|
||||
@@ -620,6 +624,12 @@ function getItemType_Text(type) {
|
||||
const map = { 2: '耗材', 3: '诊疗' };
|
||||
return map[type] || '其他';
|
||||
}
|
||||
function normalizeAdviceTypesForQuery(type) {
|
||||
if (type === '' || type === undefined || type === null) {
|
||||
return '2,3';
|
||||
}
|
||||
return Number(type) === 4 ? 2 : type;
|
||||
}
|
||||
function getUnitCodeOptions(row) {
|
||||
const unitCodes = [];
|
||||
// 大单位:优先用 code,code 缺失时用字典文本兜底
|
||||
|
||||
Reference in New Issue
Block a user