Fix Bug #443: 手术计费签发耗材时 dbOpType 错误和关键字段缺失
根因:1) handleSave() 对所有记录统一使用 dbOpType='1'(INSERT),但已存在 的耗材记录(requestId不为空)应使用 '2'(UPDATE),导致后端 handDevice 语义 混乱;2) 签发时未从 item 顶层补充 quantity/unitCode/lotNumber/categoryEnum 等字段,若 contentJson 中缺失则后端无法正确处理;3) saveList 为空时未提前 校验,直接发送到后端触发"医嘱列表为空"错误。 修复:1) dbOpType 根据 requestId 是否存在动态选择 '2' 或 '1'; 2) map 中新增 quantity、unitCode、lotNumber、categoryEnum 从 item 顶层补充; 3) generateSourceEnum/sourceBillNo 增加 item 顶层作为第三层兜底; 4) 恢复 saveList.length==0 的空列表校验并给出友好提示。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1082,26 +1082,21 @@ function handleSave() {
|
|||||||
}
|
}
|
||||||
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
||||||
});
|
});
|
||||||
// let saveList = prescriptionList.value
|
// 无可签发项目时提前返回,避免后端报"医嘱列表为空"
|
||||||
// .filter((item) => {
|
if (saveList.length == 0) {
|
||||||
// return item.check;
|
proxy.$modal.msgWarning('当前无可签发处方');
|
||||||
// }).filter((item) => {
|
return;
|
||||||
// return item.statusEnum == 1&&item.bizRequestFlag==1
|
}
|
||||||
// })
|
|
||||||
|
|
||||||
// if (saveList.length == 0) {
|
|
||||||
// proxy.$modal.msgWarning('当前无可签发处方');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// 此处签发处方和单行保存处方传参相同,后台已经将传参存为JSON字符串,此处直接转换为JSON即可
|
// 此处签发处方和单行保存处方传参相同,后台已经将传参存为JSON字符串,此处直接转换为JSON即可
|
||||||
let list = saveList.map((item) => {
|
let list = saveList.map((item) => {
|
||||||
const parsedContent = item.contentJson ? JSON.parse(item.contentJson) : {};
|
const parsedContent = item.contentJson ? JSON.parse(item.contentJson) : {};
|
||||||
return {
|
return {
|
||||||
...parsedContent,
|
...parsedContent,
|
||||||
requestId: item.requestId,
|
requestId: item.requestId,
|
||||||
dbOpType: '1',
|
// 已有 requestId 的记录走 UPDATE 路径,新记录走 INSERT 路径
|
||||||
|
dbOpType: item.requestId ? '2' : '1',
|
||||||
groupId: item.groupId,
|
groupId: item.groupId,
|
||||||
// 🔧 Bug #443: 补充顶层关键字段(这些不在 contentJson 中,需从 API 响应顶层提取)
|
// 补充顶层关键字段(这些可能不在 contentJson 中,需从 API 响应顶层提取)
|
||||||
encounterId: item.encounterId,
|
encounterId: item.encounterId,
|
||||||
patientId: item.patientId,
|
patientId: item.patientId,
|
||||||
locationId: item.positionId,
|
locationId: item.positionId,
|
||||||
@@ -1109,9 +1104,14 @@ function handleSave() {
|
|||||||
adviceTableName: item.adviceTableName,
|
adviceTableName: item.adviceTableName,
|
||||||
adviceDefinitionId: item.adviceDefinitionId,
|
adviceDefinitionId: item.adviceDefinitionId,
|
||||||
chargeItemId: item.chargeItemId,
|
chargeItemId: item.chargeItemId,
|
||||||
// 🔧 Bug Fix: 签发时显式设置手术计费关键字段,避免后端 prescription_no / generateSourceEnum 回退为默认值导致查询无法匹配
|
// 补充数量、单位、批号等字段(后端 handDevice 需要这些字段)
|
||||||
generateSourceEnum: props.generateSourceEnum ?? parsedContent.generateSourceEnum,
|
quantity: item.quantity,
|
||||||
sourceBillNo: props.sourceBillNo ?? parsedContent.sourceBillNo,
|
unitCode: item.unitCode,
|
||||||
|
lotNumber: item.lotNumber,
|
||||||
|
categoryEnum: item.categoryEnum,
|
||||||
|
// 签发时显式设置手术计费关键字段,后端 generateSourceEnum 回退为默认值导致查询无法匹配
|
||||||
|
generateSourceEnum: props.generateSourceEnum ?? parsedContent.generateSourceEnum ?? item.generateSourceEnum,
|
||||||
|
sourceBillNo: props.sourceBillNo ?? parsedContent.sourceBillNo ?? item.sourceBillNo,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
// 确保 organizationId 不为 undefined(手术计费场景下可能缺失 orgId)
|
// 确保 organizationId 不为 undefined(手术计费场景下可能缺失 orgId)
|
||||||
|
|||||||
Reference in New Issue
Block a user