This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user