From 021701c611cae5851c93eed8f0b19effd2b995ed Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 15:40:52 +0800 Subject: [PATCH] =?UTF-8?q?550=20=E3=80=90=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99-=E6=A3=80=E6=9F=A5=E3=80=91=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E7=94=B3=E8=AF=B7=E9=A1=B9=E7=9B=AE=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E4=BC=98=E5=8C=96=EF=BC=9A=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8B=BE=E9=80=89=E5=86=B2=E7=AA=81=E3=80=81?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E9=81=AE=E6=8C=A1=E5=8F=8A=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=80=A6=E5=90=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examination/examinationApplication.vue | 67 ++++++++++++++----- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue index 7a201ec7f..607fe6fda 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue @@ -707,7 +707,7 @@ class="item-checkbox" @change="(val) => handleItemSelect(val, item, cat)" > - {{ item.name }} + {{ getDisplayItemName(item) }} ¥{{ item.price }}/{{ item.unit || "次" }} @@ -806,7 +806,7 @@
-
- - - - +
+ + + @@ -1265,7 +1264,12 @@ const activeCategory = computed(() => { const activeCategoryName = computed(() => activeCategory.value?.typeName || activeCategory.value?.categoryName || ''); const methodsForActiveCategory = computed(() => { - const arr = activeCategory.value?.methods; + // Bug #550修复: 直接从 categoryList 查找,避免 activeCategory 中间 computed 缓存阻断响应式 + const id = activeNames.value; + if (id === '' || id === null || id === undefined) return []; + const cat = categoryList.value.find(c => String(c.typeId) === String(id)); + if (!cat) return []; + const arr = cat.methods; return Array.isArray(arr) ? arr : []; }); @@ -1944,6 +1948,11 @@ async function handleItemSelect(checked, item, cat) { console.error('加载检查方法失败', err); } + // Bug #550修复: 同步方法到分类,确保右侧方法选择器可见 + if (methods.length > 0 && cat && (!cat.methods || cat.methods.length === 0)) { + cat.methods = methods; + } + if (selectedItems.value.length > 0) { const currentCategory = selectedItems.value[0].checkType; // Bug #428修复: 使用 cat.typeName 进行比较(与 effectiveCheckType 保持一致) @@ -2459,28 +2468,24 @@ defineExpose({ getList }); flex-direction: column; gap: 8px; flex-shrink: 0; + width: 280px; + min-width: 260px; } .method-picker-section { - width: 260px; - min-width: 240px; - max-width: 320px; flex-shrink: 0; display: flex; flex-direction: column; - margin-top: 8px; } .selected-panel { - width: 260px; - min-width: 240px; - max-width: 320px; - flex-shrink: 0; + min-width: 0; + flex: 1; display: flex; flex-direction: column; + overflow-y: auto; } .selected-tags { - flex: 1; overflow-y: auto; overflow-x: hidden; display: flex; @@ -2488,6 +2493,27 @@ defineExpose({ getList }); gap: 8px; padding-right: 2px; } + +/* 已选择面板中项目/方法区域分隔 */ +.section-divider { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 0 2px; +} +.section-divider::before { + content: ''; + flex: 1; + height: 1px; + background: #dcdfe6; +} +.divider-label { + font-size: 11px; + font-weight: 600; + color: #909399; + letter-spacing: 0.03em; + flex-shrink: 0; +} .selected-tag { max-width: 100%; overflow: hidden; @@ -2510,6 +2536,13 @@ defineExpose({ getList }); overflow: hidden; } +/* 方法卡片:子级缩进,表示从属于检查项目 */ +.selected-item-card.method-child-card { + margin-left: 20px; + border-left: 3px solid #e6a23c; + border-radius: 0 6px 6px 0; +} + /* 项目上 / 方法下:各自独立下拉条 */ .fold-strip { border-bottom: 1px solid var(--el-border-color-lighter);