diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue index 0223451b0..00bea6e24 100755 --- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue +++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue @@ -767,6 +767,16 @@ function handleAddDiagnosis() { proxy.$refs.formRef.validate((valid, fields) => { console.log('表单验证结果:', valid, '错误字段:', fields); + // 再次检查是否有未保存的诊断(防止 validate 异步回调的竞态条件) + const hasUnsavedNow = (form.value.diagnosisList || []).some( + (item) => !item.conditionId && !item.encounterDiagnosisId + ); + if (!valid || hasUnsavedNow) { + if (hasUnsavedNow) { + proxy.$modal.msgWarning('请保存当前诊断'); + } + return; + } addDiagnosisItem(); }); } @@ -1194,3 +1204,10 @@ defineExpose({ getList, getDetail, handleSaveDiagnosis }); } + + :disabled="hasUnsavedDiagnosis || isAdding" +const isAdding = ref(false); + if (isAdding.value) return; + isAdding.value = true; + isAdding.value = false; + isAdding.value = false; \ No newline at end of file