fix: 修复#428赵云代码语法错误 - loadPackageDetailsForItem函数位置错误

- 修复loadPackageDetailsForItem函数被错误插入到loadPackageDetails函数内部的问题
- 格式化模板代码,提高可读性
- 确保套餐明细加载逻辑正确工作
This commit is contained in:
guanyu
2026-04-30 23:56:01 +08:00
parent a007721c8f
commit c712a42f79

View File

@@ -354,8 +354,25 @@
<el-icon><Close /></el-icon>
</el-button>
</div>
<!-- Bug #384修复: 展开后显示检查方法勾选框列表 -->
<!-- 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>
<!-- 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>
@@ -412,13 +429,39 @@ 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);
resolve([]);
}
}
// #428: 为已选择项目加载套餐明细
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 = [];
}
}
const detailTableRef = ref(null);
const formRef = ref(null);