Fix Bug #545: [门诊医生站-诊断-报卡] 长效诊断标识设置保存就清空 — 根因:1) 后端getEncounterDiagnosis查询已补充longTermFlag字段但前端getList()未做类型转换,useDict('long_term_flag')返回字符串字典值而数据库返回整数导致el-select匹配失败下拉框清空;2) 冗余的备份恢复逻辑应移除;修复:1) getList()中新增longTermFlag转字符串处理(String(item.longTermFlag)),保证与useDict字典值类型一致;2) 移除handleSaveDiagnosis中已不再需要的longTermFlagBackup/恢复逻辑

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 15:07:05 +08:00
parent c49ec61e18
commit 09353c11ca

View File

@@ -354,6 +354,11 @@ async function getList() {
if (!item.classification) {
item.classification = '西医';
}
// 转换 longTermFlag 为字符串,以匹配 useDict 返回的字典值类型(字符串)
// 避免 el-select 因类型不匹配(整数 1 vs 字符串 "1")导致下拉框清空
if (item.longTermFlag != null) {
item.longTermFlag = String(item.longTermFlag);
}
// 如果ybNo诊断编码符合传染病编码格式添加到selectedDiseases
if (item.ybNo && /^(01|02|03)/.test(item.ybNo)) {
item.selectedDiseases = [item.ybNo];
@@ -636,8 +641,6 @@ async function handleSaveDiagnosis() {
saveLoading.value = true;
// 保存前按排序号排序,并转换日期格式为后端期望的格式 yyyy/M/d HH:mm:ss
// 同时保留 longTermFlag 供 getList 刷新后恢复(后端 getEncounterDiagnosis 不返回此字段)
const longTermFlagBackup = form.value.diagnosisList.map(item => item.longTermFlag);
const diagnosisChildList = form.value.diagnosisList.map(item => ({
...item,
onsetDate: item.onsetDate ? formatDateStr(item.onsetDate, 'YYYY/M/D HH:mm:ss') : null,
@@ -654,12 +657,6 @@ async function handleSaveDiagnosis() {
if (res.code === 200) {
// 刷新树和列表数据等待列表数据加载完成确保获取到reportTypeCode
await getList();
// 恢复 longTermFlag后端查询接口不返回此字段需从本地备份恢复
form.value.diagnosisList.forEach((item, index) => {
if (longTermFlagBackup[index] !== undefined) {
item.longTermFlag = longTermFlagBackup[index];
}
});
getTree();
emits('diagnosisSave', false);
proxy.$modal.msgSuccess('诊断已保存并按排序号排序');