fix: bug
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 2m27s

This commit is contained in:
sexygoat
2026-04-11 16:51:54 +08:00
parent 33e15314ac
commit 4f02d6faf0
25 changed files with 387 additions and 317 deletions

View File

@@ -15,9 +15,17 @@
reserve-keyword
:remote-method="handlePackageSearch"
:loading="packageSearchLoading"
:disabled="!props.seriesId"
clearable
style="width: 100%"
>
<template v-if="!props.seriesId">
<ElOption :value="null" disabled>
<span style="color: var(--el-text-color-warning)"
>该设备未关联套餐系列无法购买套餐</span
>
</ElOption>
</template>
<ElOption
v-for="pkg in packageOptions"
:key="pkg.id"
@@ -143,32 +151,54 @@
// 监听对话框打开,加载套餐列表
watch(visible, async (newVal) => {
if (newVal) {
if (!props.seriesId) {
packageOptions.value = []
return
}
await loadPackages()
}
})
// 监听 seriesId 变化,重新加载套餐列表
watch(
() => props.seriesId,
async (newSeriesId) => {
if (visible.value && newSeriesId) {
await loadPackages()
}
}
)
let loadPackagesPromise: Promise<void> | null = null
const loadPackages = async () => {
if (!props.seriesId) return
// 防止重复调用
if (loadPackagesPromise) return
try {
packageSearchLoading.value = true
const response = await PackageManageService.getPackages({
loadPackagesPromise = PackageManageService.getPackages({
series_id: props.seriesId,
page: 1,
page_size: 20,
status: 1, // 只获取启用的套餐
shelf_status: 1 // 只获取已上架的套餐
})
if (response.code === 0 && response.data) {
packageOptions.value = response.data.items || []
}
.then((response) => {
if (response.code === 0 && response.data) {
packageOptions.value = response.data.items || []
}
})
.finally(() => {
packageSearchLoading.value = false
loadPackagesPromise = null
})
await loadPackagesPromise
} catch (error: any) {
console.error('加载套餐列表失败:', error)
console.log(error?.message || '加载套餐列表失败')
} finally {
packageSearchLoading.value = false
}
}