fix(diagnosis): 修复诊断类型字段处理逻辑

- 移除medTypeCode的默认值'11',改为undefined以避免强制设置默认类型
- 在新增诊断时不再预设诊断类型,要求用户主动选择
- 从已保存的数据中获取medTypeCode值而不是使用固定默认值
- 添加诊断类型选择验证,在保存时检查是否所有诊断都选择了类型
- 在完诊前验证诊断信息完整性,包括诊断存在性、类型选择和主诊断设置
- 优化UI显示逻辑,当诊断类型选项未加载完成时显示加载状态提示
- 调整删除按钮显示逻辑,改进弹窗确认交互体验
This commit is contained in:
2026-03-04 15:33:25 +08:00
parent 30ca81090a
commit dc039fcced
5 changed files with 66 additions and 30 deletions

View File

@@ -143,7 +143,7 @@ function handleOpen() {
ybNo: item.ybNo,
syndromeGroupNo: item.syndromeGroupNo,
verificationStatusEnum: 4,
medTypeCode: '11',
medTypeCode: item.medTypeCode || undefined, // 使用已保存的值
diagSrtNo: item.diagSrtNo,
isExisting: true // 标记为已存在
},
@@ -188,7 +188,7 @@ function handleOpen() {
ybNo: item.ybNo,
syndromeGroupNo: item.syndromeGroupNo,
verificationStatusEnum: item.verificationStatusEnum || 4,
medTypeCode: item.medTypeCode || '11',
medTypeCode: item.medTypeCode || undefined, // 使用已保存的值
diagSrtNo: item.diagSrtNo,
isExisting: true // 标记为已存在
},
@@ -227,7 +227,7 @@ function handleClickRow(row) {
ybNo: row.ybNo,
syndromeGroupNo: timestamp.value,
verificationStatusEnum: 4,
medTypeCode: '11',
medTypeCode: undefined, // 不设默认值
isExisting: false // 标记为新增
});
tcmDiagonsisList.value.push({

View File

@@ -36,16 +36,12 @@
</el-icon>
</el-button>
</template>
<template v-if="node.level === 2 && node.parent.data.name != '常用' && node.parent.data.name != '历史'">
<el-popconfirm width="200" :hide-after="10" title="确认删除此常用诊断吗" placement="top-start"
@confirm="deleteChild(data)">
<template #reference>
<el-button
style="color: #000000"
v-if="
node.level === 2 &&
node.parent.data.name != '常用' &&
node.parent.data.name != '历史'
"
type="text"
size="small"
@click.stop=""
@@ -56,6 +52,7 @@
</el-button>
</template>
</el-popconfirm>
</template>
</span>
</div>
</template>
@@ -98,7 +95,7 @@
<el-table-column label="诊断类型" align="center" prop="medTypeCode" width="180">
<template #default="scope">
<el-form-item :prop="`diagnosisList.${scope.$index}.medTypeCode`" :rules="rules.medTypeCode">
<el-select v-model="scope.row.medTypeCode" placeholder=" " style="width: 150px">
<el-select v-model="scope.row.medTypeCode" placeholder="请选择" style="width: 150px" v-if="diag_type && diag_type.length > 0">
<el-option
v-for="item in diag_type"
:key="item.value"
@@ -106,6 +103,7 @@
:value="item.value"
/>
</el-select>
<span v-else style="color: #909399;">加载中...</span>
</el-form-item>
</template>
</el-table-column>
@@ -507,7 +505,7 @@ function handleAddDiagnosis() {
showPopover: false,
name: undefined,
verificationStatusEnum: 4,
medTypeCode: 11, // Bug #151 修复:使用数字类型的字典值
medTypeCode: undefined, // 新增时不设默认值,让用户选择
diagSrtNo: maxSortNo + 1,
iptDiseTypeCode: 2,
diagnosisDesc: '',
@@ -578,6 +576,13 @@ function handleMaindise(value, index) {
function handleSaveDiagnosis() {
proxy.$refs.formRef.validate((valid) => {
if (valid) {
// 验证诊断类型是否已选择
const emptyMedType = form.value.diagnosisList.find(d => !d.medTypeCode);
if (emptyMedType) {
proxy.$modal.msgWarning('请选择诊断类型');
return false;
}
if (form.value.diagnosisList.length == 0) {
proxy.$modal.msgWarning('诊断不能为空');
return false;
@@ -718,7 +723,7 @@ form.value.diagnosisList.push({
ybNo: data.ybNo,
name: data.name,
verificationStatusEnum: 4,
medTypeCode: 11, // Bug #151 修复:使用数字类型的字典值,而非字符串'初诊诊断'
medTypeCode: undefined, // 新增时不设默认值,让用户选择
diagSrtNo: maxSortNo + 1,
definitionId: data.definitionId,
classification: '西医', // 默认为西医

View File

@@ -640,7 +640,38 @@ function handleLeave(encounterId) {
});
}
function handleFinish(encounterId) {
async function handleFinish(encounterId) {
// 完诊前验证诊断信息
try {
const diagnosisRes = await getEncounterDiagnosis(encounterId);
if (diagnosisRes.code === 200) {
const diagnosisList = diagnosisRes.data || [];
// 检查是否有诊断
if (diagnosisList.length === 0) {
proxy.$modal.msgWarning('请先添加诊断信息');
return;
}
// 检查诊断类型是否为空
const emptyMedType = diagnosisList.find(d => !d.medTypeCode);
if (emptyMedType) {
proxy.$modal.msgWarning('请选择诊断类型');
return;
}
// 检查是否有主诊断
if (!diagnosisList.some(d => d.maindiseFlag === 1)) {
proxy.$modal.msgWarning('请至少设置一条主诊断');
return;
}
}
} catch (error) {
console.error('获取诊断信息失败:', error);
proxy.$modal.msgWarning('获取诊断信息失败,请重试');
return;
}
completeEncounter({ encounterId, firstEnum: firstEnum.value }).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('操作成功');

View File

@@ -153,7 +153,7 @@ function handleClickRow(row) {
ybNo: row.ybNo,
syndromeGroupNo: timestamp.value,
verificationStatusEnum: 4,
medTypeCode: '11',
medTypeCode: undefined, // 不设默认值
});
tcmDiagonsisList.value.push({
conditionName: row.name,

View File

@@ -415,7 +415,7 @@ function handleAddDiagnosis() {
showPopover: false,
name: undefined,
verificationStatusEnum: 4,
medTypeCode: '11',
medTypeCode: undefined, // 不设默认值
diagSrtNo: form.value.diagnosisList.length + 1,
iptDiseTypeCode: 2,
diagnosisDesc: '',
@@ -632,7 +632,7 @@ function handleNodeClick(data) {
ybNo: data.ybNo,
name: data.name,
verificationStatusEnum: 4,
medTypeCode: '11',
medTypeCode: undefined, // 不设默认值
diagSrtNo: form.value.diagnosisList.length + 1,
definitionId: data.definitionId,
diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,