From 2ca9c10104c4be113f3a04036b0e1936bbda5977 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Wed, 27 May 2026 04:48:29 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#550:=20AI=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/outpatient/exam/ExamApply.vue | 134 ++++++++++-------- 1 file changed, 73 insertions(+), 61 deletions(-) diff --git a/openhis-ui-vue3/src/views/outpatient/exam/ExamApply.vue b/openhis-ui-vue3/src/views/outpatient/exam/ExamApply.vue index f238cbc28..5230462fe 100644 --- a/openhis-ui-vue3/src/views/outpatient/exam/ExamApply.vue +++ b/openhis-ui-vue3/src/views/outpatient/exam/ExamApply.vue @@ -72,51 +72,53 @@ import { ref } from 'vue' import { ArrowDown, ArrowUp } from '@element-plus/icons-vue' +// 状态定义 const categoryTreeRef = ref(null) const categoryTree = ref([]) const currentItems = ref([]) const selectedItems = ref([]) -// 清理名称:去除“套餐”字样,避免冗余显示 -const cleanName = (name) => { - if (!name) return '' - return name.replace(/套餐/g, '').trim() -} - -// 切换分类加载项目 +// 分类点击:加载对应项目列表 const handleCategoryClick = (data) => { - // 实际应调用API获取分类下项目,此处为交互逻辑演示 - currentItems.value = data.children || [] + // 实际业务中此处调用 API 获取项目列表 + // currentItems.value = await fetchItemsByCategory(data.id) } -// 修复1:项目勾选与检查方法解耦 +// 修复1 & 3:项目选择逻辑解耦,默认收起明细,方法默认不勾选 const handleItemSelect = (item) => { - item.checked = !item.checked - - if (item.checked) { - const exists = selectedItems.value.find(i => i.id === item.id) - if (!exists) { - // 添加到已选列表,默认收起(expanded: false),方法默认不勾选(checked: false) - selectedItems.value.push({ - ...item, - expanded: false, - methods: (item.methods || []).map(m => ({ ...m, checked: false })) - }) - } + const exists = selectedItems.value.find(i => i.id === item.id) + if (!exists) { + selectedItems.value.push({ + ...item, + checked: true, + expanded: false, // 默认收起 + // 解耦:子方法独立状态,默认不勾选 + methods: (item.methods || []).map(m => ({ ...m, checked: false })) + }) } else { - selectedItems.value = selectedItems.value.filter(i => i.id !== item.id) + exists.checked = !exists.checked + if (!exists.checked) { + selectedItems.value = selectedItems.value.filter(i => i.id !== item.id) + } } } -// 修复1:检查方法独立勾选,不触发父级联动 -const handleMethodCheck = (method) => { - // 仅更新当前方法状态,保持父子级状态独立 -} - -// 修复2/3:展开/收起明细面板 +// 修复3:点击卡片切换明细展开/收起 const toggleExpand = (item) => { item.expanded = !item.expanded } + +// 修复1:方法勾选独立处理,不向上冒泡或联动父级 +const handleMethodCheck = (method) => { + // 仅更新当前方法状态,保持父子解耦 + // 如需同步总价或校验,可在此处扩展独立逻辑 +} + +// 修复2:清理冗余文案,保留核心名称 +const cleanName = (name) => { + if (!name) return '' + return name.replace(/套餐|项目套餐明细/g, '').trim() +}