diff --git a/openhis-ui-vue3/src/views/clinicmanagement/bargain/component/prescriptionlist.vue b/openhis-ui-vue3/src/views/clinicmanagement/bargain/component/prescriptionlist.vue index bffdacba..d0d3eb37 100644 --- a/openhis-ui-vue3/src/views/clinicmanagement/bargain/component/prescriptionlist.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/bargain/component/prescriptionlist.vue @@ -573,7 +573,11 @@ function selectAdviceBase(key, row) { } } else { // 诊疗:设置执行科室和价格 - prescriptionList.value[rowIndex.value].orgId = JSON.parse(JSON.stringify(row)).positionId; + // 🔧 Bug Fix #238: 如果positionId为空,使用orgId作为默认值 + const rowData = JSON.parse(JSON.stringify(row)); + const selectedPositionId = rowData.positionId; + const selectedOrgId = rowData.orgId; + prescriptionList.value[rowIndex.value].orgId = selectedPositionId || selectedOrgId; if (row.priceList && row.priceList.length > 0) { prescriptionList.value[rowIndex.value].unitPrice = row.priceList[0].price; } else { @@ -751,6 +755,11 @@ function handleSave() { // 单行处方保存 function handleSaveSign(row, index) { + // 🔧 Bug Fix #238: 诊疗项目必须选择执行科室 + if (row.adviceType === 3 && !row.orgId) { + proxy.$modal.msgWarning('诊疗项目必须选择执行科室'); + return; + } proxy.$refs['formRef' + index].validate((valid) => { if (valid) { row.isEdit = false; @@ -774,6 +783,11 @@ function handleSaveSign(row, index) { proxy.$modal.msgSuccess('保存成功'); getListInfo(false); nextId.value == 1; + // 🔧 Bug Fix #238: 如果诊疗项目缺少执行科室,标记为需要修复的脏数据 + if (row.adviceType === 3 && !row.orgId) { + console.warn('Bug #238: 检测到诊疗项目保存时缺少执行科室,请手动编辑修正:', row); + proxy.$modal.msgWarning('诊疗项目执行科室信息不完整,请编辑后重新保存'); + } } }); }