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);