fix: id兼容, 通知入口
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m0s

This commit is contained in:
luo
2026-07-28 15:19:29 +08:00
parent 0e8a11430a
commit 261f5f2853
21 changed files with 271 additions and 71 deletions

View File

@@ -11,6 +11,28 @@
@closed="handleCreateDrawerClosed"
>
<ElForm ref="formRef" :model="form" :rules="rules" label-width="110px" class="create-form">
<ElFormItem label="套餐系列" prop="series_id">
<ElSelect
v-model="form.series_id"
filterable
remote
clearable
:remote-method="handleSeriesSearch"
:loading="seriesLoading"
placeholder="请输入系列名称搜索"
style="width: 100%"
@change="handleSeriesChange"
@visible-change="handleSeriesVisibleChange"
>
<ElOption
v-for="series in seriesOptions"
:key="series.id"
:label="series.series_name"
:value="series.id"
/>
</ElSelect>
</ElFormItem>
<ElFormItem label="套餐" prop="package_id">
<ElSelect
v-model="form.package_id"
@@ -19,7 +41,8 @@
clearable
:remote-method="handlePackageSearch"
:loading="packageLoading"
placeholder="请输入套餐名称搜索"
:disabled="!form.series_id"
placeholder="请先选择套餐系列"
style="width: 100%"
@visible-change="handlePackageVisibleChange"
>
@@ -223,8 +246,13 @@
} from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus'
import VoucherUpload from '@/components/business/VoucherUpload.vue'
import { BulkPurchaseService, PackageManageService } from '@/api/modules'
import type { BulkPurchasePaymentMethod, BulkPurchaseTask, PackageResponse } from '@/types/api'
import { BulkPurchaseService, PackageManageService, PackageSeriesService } from '@/api/modules'
import type {
BulkPurchasePaymentMethod,
BulkPurchaseTask,
PackageResponse,
PackageSeriesResponse
} from '@/types/api'
import { BulkPurchaseTaskStatus } from '@/types/api'
import { useAuth } from '@/composables/useAuth'
import { formatDateTime } from '@/utils/business/format'
@@ -244,6 +272,8 @@
const orderFileUploading = ref(false)
const voucherFileKeys = ref<string[]>([])
const voucherUploading = ref(false)
const seriesOptions = ref<PackageSeriesResponse[]>([])
const seriesLoading = ref(false)
const packageOptions = ref<PackageResponse[]>([])
const packageLoading = ref(false)
const taskList = ref<BulkPurchaseTask[]>([])
@@ -257,14 +287,17 @@
)
const form = reactive<{
series_id?: number
package_id?: number
payment_method: BulkPurchasePaymentMethod
}>({
series_id: undefined,
package_id: undefined,
payment_method: 'wallet'
})
const rules = computed<FormRules>(() => ({
series_id: [{ required: true, message: '请选择套餐系列', trigger: 'change' }],
package_id: [{ required: true, message: '请选择套餐', trigger: 'change' }],
payment_method: [{ required: true, message: '请选择支付方式', trigger: 'change' }],
orderFile: [
@@ -289,12 +322,18 @@
}))
const loadPackages = async (query = '') => {
if (!form.series_id) {
packageOptions.value = []
return
}
packageLoading.value = true
try {
const res = await PackageManageService.getPackages({
page: 1,
page_size: 20,
package_name: query.trim() || undefined,
series_id: form.series_id,
status: 1,
shelf_status: 1
})
@@ -314,20 +353,21 @@
}
const handlePackageSearch = (query: string) => {
void loadPackages(query)
if (form.series_id) void loadPackages(query)
}
const handlePackageVisibleChange = (visible: boolean) => {
if (visible && packageOptions.value.length === 0) void loadPackages()
if (visible && form.series_id && packageOptions.value.length === 0) void loadPackages()
}
const openCreateDrawer = () => {
createDrawerVisible.value = true
if (packageOptions.value.length === 0) void loadPackages()
if (seriesOptions.value.length === 0) void loadSeries()
}
const handleCreateDrawerClosed = () => {
formRef.value?.resetFields()
form.series_id = undefined
form.package_id = undefined
form.payment_method = 'wallet'
orderFileKeys.value = []
@@ -338,6 +378,41 @@
voucherUploading.value = false
}
const loadSeries = async (query = '') => {
seriesLoading.value = true
try {
const res = await PackageSeriesService.getPackageSeries({
page: 1,
page_size: 20,
series_name: query.trim() || undefined,
status: 1
})
if (res.code !== 0) {
ElMessage.error(res.msg || '获取套餐系列失败')
return
}
seriesOptions.value = res.data?.items || []
} catch (error: any) {
ElMessage.error(error?.message || '获取套餐系列失败')
} finally {
seriesLoading.value = false
}
}
const handleSeriesSearch = (query: string) => {
void loadSeries(query)
}
const handleSeriesVisibleChange = (visible: boolean) => {
if (visible && seriesOptions.value.length === 0) void loadSeries()
}
const handleSeriesChange = () => {
form.package_id = undefined
packageOptions.value = []
if (form.series_id) void loadPackages()
}
const handlePaymentMethodChange = (value: string | number | boolean | undefined) => {
if (value === 'wallet') {
voucherFileKeys.value = []