This commit is contained in:
2026-05-28 22:03:55 +08:00
committed by 华佗
parent a3f870407b
commit 964200e998

View File

@@ -741,8 +741,8 @@
class="fold-strip fold-strip-project"
:class="{ 'is-open': item.projectFoldExpanded }"
>
<div class="fold-strip-header" @click="toggleProjectFold(item)">
<el-icon :class="['fold-chevron', { open: item.projectFoldExpanded }]">
<div class="fold-strip-header" :class="{ 'no-chevron': !hasItemPackage(item) }" @click="hasItemPackage(item) && toggleProjectFold(item)">
<el-icon v-if="hasItemPackage(item)" :class="['fold-chevron', { open: item.projectFoldExpanded }]">
<ArrowDown />
</el-icon>
<div class="fold-header-main">
@@ -756,38 +756,13 @@
<el-icon><Close /></el-icon>
</el-button>
</div>
</template>
<template v-else>
<div
v-for="(item, idx) in selectedItems"
:key="'project-' + item.id"
class="selected-item-card"
:class="{ 'is-expanded': item.projectFoldExpanded }"
>
<div
class="fold-strip fold-strip-project"
:class="{ 'is-open': item.projectFoldExpanded }"
>
<div
class="fold-strip-header"
:class="{ 'no-chevron': !hasItemPackage(item) }"
@click="hasItemPackage(item) && toggleProjectFold(item)"
>
<el-icon
v-if="hasItemPackage(item)"
:class="['fold-chevron', { open: item.projectFoldExpanded }]"
>
<ArrowDown />
</el-icon>
<div class="fold-header-main">
<span class="fold-kicker">检查项目</span>
<el-tooltip
:content="getDisplayItemName(item)"
placement="top"
:show-after="400"
>
<span class="fold-title line-clamp-2">{{ getDisplayItemName(item) }}</span>
</el-tooltip>
<!-- 仅当项目有套餐时展示明细区域,普通项目无明细可展示 -->
<div v-if="hasItemPackage(item) && item.projectFoldExpanded" class="fold-strip-body">
<div class="fold-package-wrap">
<div v-if="item.packageDetailsLoading" class="package-details-loading">加载中...</div>
<template v-else>
<div v-if="getPackageDetailsList(item).length === 0" class="package-details-empty">
暂无套餐明细
</div>
<span class="fold-price-strong">¥{{ formatDetailAmount(item.price || 0) }}</span>
<el-button
@@ -844,67 +819,50 @@
</div>
</div>
</div>
<div v-else class="fold-strip-muted">暂无明细数据</div>
</div>
<div
v-for="(method, idx) in selectedMethods"
:key="'method-' + method.id"
class="selected-item-card"
:class="{ 'is-expanded': method.expanded }"
>
<div
class="fold-strip fold-strip-method"
:class="{ 'is-open': method.expanded }"
<div
v-for="(method, idx) in selectedMethods"
:key="'method-' + method.id"
class="selected-item-card"
:class="{ 'is-expanded': method.expanded }"
>
<div
class="fold-strip fold-strip-method"
:class="{ 'is-open': method.expanded }"
>
<div class="fold-strip-header" :class="{ 'no-chevron': !hasStandaloneMethodPackage(method) }" @click="hasStandaloneMethodPackage(method) && toggleSelectedMethodFold(method)">
<el-icon v-if="hasStandaloneMethodPackage(method)" :class="['fold-chevron', { open: method.expanded }]">
<ArrowDown />
</el-icon>
<div class="fold-header-main">
<span class="fold-kicker">检查方法</span>
<span
class="fold-title fold-title-plain line-clamp-2"
:title="getDisplayMethodName(method)"
>
{{ getDisplayMethodName(method) }}
</span>
</div>
<span
v-if="hasStandaloneMethodPackage(method)"
class="fold-price-strong warn"
>
<div
class="fold-strip-header"
:class="{ 'no-chevron': !hasStandaloneMethodPackage(method) }"
@click="hasStandaloneMethodPackage(method) && toggleSelectedMethodFold(method)"
>
<el-icon
v-if="hasStandaloneMethodPackage(method)"
:class="['fold-chevron', { open: method.expanded }]"
>
<ArrowDown />
</el-icon>
<div class="fold-header-main">
<span class="fold-kicker">检查方法</span>
<span
class="fold-title fold-title-plain line-clamp-2"
:title="getDisplayMethodName(method)"
>
{{ getDisplayMethodName(method) }}
</span>
¥{{ formatDetailAmount(method.packagePrice || method.price || 0) }}
</span>
<el-button link type="danger" size="small" @click.stop="handleRemoveMethod(idx)">
<el-icon><Close /></el-icon>
</el-button>
</div>
<!-- 仅当检查方法有套餐时展示明细 -->
<div v-if="hasStandaloneMethodPackage(method) && method.expanded" class="fold-strip-body">
<div class="fold-package-wrap fold-method-package-wrap">
<div v-if="method.packageLoading" class="package-details-loading">加载中...</div>
<template v-else>
<div v-if="getStandaloneMethodPackageDetailsList(method).length === 0" class="package-details-empty">
暂无检查方法套餐明细
</div>
<span
v-if="hasStandaloneMethodPackage(method)"
class="fold-price-strong warn"
>
¥{{ formatDetailAmount(method.packagePrice || method.price || 0) }}
</span>
<el-button
link
type="danger"
size="small"
@click.stop="handleRemoveMethod(idx)"
>
<el-icon><Close /></el-icon>
</el-button>
</div>
<!-- 仅当检查方法有套餐时展示明细 -->
<div
v-if="hasStandaloneMethodPackage(method) && method.expanded"
class="fold-strip-body"
>
<div class="fold-package-wrap fold-method-package-wrap">
<div
v-if="method.packageLoading"
class="package-details-loading"
>
加载中...
</div>
<template v-else>
<div v-else class="package-details-list method-package-list">
<div
v-if="getStandaloneMethodPackageDetailsList(method).length === 0"
class="package-details-empty"
@@ -933,9 +891,8 @@
</div>
</div>
</div>
</template>
</div>
</div>
</template>
</div>
</div>
</template>
@@ -1009,7 +966,7 @@ const activeDetailTab = ref('applyForm');
const applicationList = ref([]);
const selectedItems = ref([]);
const selectedMethods = ref([]);
const methodPickerExpanded = ref(false);
const methodPickerExpanded = ref(true);
// Bug #499: 查询过滤状态
const searchForm = reactive({
@@ -1530,6 +1487,8 @@ async function handleCategoryExpand(cat) {
function handleCollapseChange(activeName) {
// 始终记录当前激活的分类,确保 handleCategoryExpand 能正确忽略过期请求
currentActiveCategory.value = activeName || null;
// 切换分类时自动展开方法选择器,使关联的检查方法对医生可见
methodPickerExpanded.value = true;
if (activeName) {