fix: 修复#428检查申请分类联动功能
- 修复1: 将el-collapse-item的@click事件改为el-collapse的@change事件 - 修复2: 添加handleCollapseChange函数处理展开事件 - 修复3: 修改已选择区域展开后显示套餐明细或检查方法 - 修复4: 添加loadPackageDetailsForItem函数加载套餐明细 - 修复5: 修改toggleItemExpand函数在展开时加载套餐明细
This commit is contained in:
@@ -301,12 +301,11 @@
|
||||
<div v-if="filteredCategoryList.length === 0" class="empty-hint">
|
||||
{{ dictLoading ? '' : '暂无检查项目,请在"检查项目设置"中配置' }}
|
||||
</div>
|
||||
<el-collapse v-else v-model="activeNames">
|
||||
<el-collapse v-else v-model="activeNames" @change="(activeNames) => handleCollapseChange(activeNames)">
|
||||
<el-collapse-item
|
||||
v-for="cat in filteredCategoryList"
|
||||
:key="cat.typeId"
|
||||
:name="cat.typeId"
|
||||
@click="handleCategoryExpand(cat)"
|
||||
>
|
||||
<template #title>
|
||||
<span class="cat-title">{{ cat.categoryName }}</span>
|
||||
@@ -356,21 +355,7 @@
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- Bug #384修复: 展开后显示检查方法勾选框列表 -->
|
||||
<div v-if="item.expanded && item.methods && item.methods.length > 0" class="method-list">
|
||||
<div
|
||||
v-for="method in item.methods"
|
||||
:key="method.id"
|
||||
class="method-option"
|
||||
>
|
||||
<el-checkbox
|
||||
:model-value="item.selectedMethod?.id === method.id"
|
||||
@change="(val) => selectMethodCheckbox(val, item, method)"
|
||||
>
|
||||
<span class="method-name">{{ method.name }}</span>
|
||||
<span class="method-price">¥{{ method.packagePrice || item.price }}</span>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Bug #428修复: 展开后显示套餐明细或检查方法 --> <div v-if="item.expanded"> <!-- 显示套餐明细 --> <div v-if="item.packageDetails && item.packageDetails.length > 0" class="package-details-list"> <div class="detail-row" v-for="detail in item.packageDetails" :key="detail.id"> <span class="detail-name">{{ detail.name }}</span> <span class="detail-info">数量: {{ detail.quantity }} 单价: ¥{{ detail.price }}</span> </div> </div> <!-- 显示检查方法 --> <div v-else-if="item.methods && item.methods.length > 0" class="method-list"> <div v-for="method in item.methods" :key="method.id" class="method-option"> <el-checkbox :model-value="item.selectedMethod?.id === method.id" @change="(val) => selectMethodCheckbox(val, item, method)"> <span class="method-name">{{ method.name }}</span> <span class="method-price">¥{{ method.packagePrice || item.price }}</span> </el-checkbox> </div> </div> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -427,6 +412,7 @@ async function loadPackageDetails(row, treeNode, resolve) {
|
||||
resolve(children);
|
||||
} else {
|
||||
resolve([]);
|
||||
async function loadPackageDetailsForItem(item) { if (!item.isPackage || !item.packageId) { return; } try { const res = await request({ url: `/exam/package/${item.packageId}/details`, method: 'get' }); if (res.code === 200 && res.data) { item.packageDetails = res.data.map(detail => ({ ...detail, name: detail.name || detail.itemName, unit: detail.unit || '次', price: detail.price || detail.itemPrice || 0, quantity: detail.quantity || 1 })); } else { item.packageDetails = []; } } catch (err) { console.error('加载套餐明细失败:', err); item.packageDetails = []; } }
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('加载套餐明细失败:', err);
|
||||
@@ -623,6 +609,17 @@ async function handleCategoryExpand(cat) {
|
||||
console.error('加载分类检查方法失败', err);
|
||||
}
|
||||
}
|
||||
async function handleCollapseChange(activeNames) {
|
||||
// 当折叠面板展开时,加载对应分类的检查方法
|
||||
if (Array.isArray(activeNames) && activeNames.length > 0) {
|
||||
for (const typeId of activeNames) {
|
||||
const cat = filteredCategoryList.value.find(c => c.typeId == typeId);
|
||||
if (cat && (!cat.methods || cat.methods.length === 0)) {
|
||||
await handleCategoryExpand(cat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watch(availableMethods, (newMethods) => {
|
||||
if (form.inspectionMethod && !newMethods.find(m => m.name === form.inspectionMethod)) {
|
||||
@@ -1060,8 +1057,12 @@ async function handleItemSelect(checked, item, cat) {
|
||||
}
|
||||
|
||||
// Bug #384修复: 展开/收起项目卡片
|
||||
function toggleItemExpand(item) {
|
||||
async function toggleItemExpand(item) {
|
||||
item.expanded = !item.expanded;
|
||||
// 如果是展开且该项目是套餐,加载套餐明细
|
||||
if (item.expanded && item.isPackage && (!item.packageDetails || item.packageDetails.length === 0)) {
|
||||
await loadPackageDetailsForItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Bug #384修复: 勾选框选择检查方法(单选逻辑)
|
||||
|
||||
Reference in New Issue
Block a user