fetch(modify):修改套餐接口
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m40s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m40s
This commit is contained in:
@@ -58,34 +58,6 @@
|
||||
<ElOption :label="t('orderManagement.orderType.device')" value="device" />
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
<ElFormItem :label="t('orderManagement.createForm.packageIds')" prop="package_ids">
|
||||
<ElSelect
|
||||
v-model="createForm.package_ids"
|
||||
:placeholder="t('orderManagement.createForm.packageIdsPlaceholder')"
|
||||
multiple
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
:remote-method="searchPackages"
|
||||
:loading="packageSearchLoading"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
>
|
||||
<ElOption
|
||||
v-for="pkg in packageOptions"
|
||||
:key="pkg.id"
|
||||
:label="`${pkg.package_name} (¥${(pkg.price / 100).toFixed(2)})`"
|
||||
:value="pkg.id"
|
||||
>
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<span>{{ pkg.package_name }}</span>
|
||||
<span style="color: var(--el-text-color-secondary); font-size: 12px">
|
||||
¥{{ (pkg.price / 100).toFixed(2) }}
|
||||
</span>
|
||||
</div>
|
||||
</ElOption>
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
<ElFormItem
|
||||
v-if="createForm.order_type === 'single_card'"
|
||||
:label="t('orderManagement.createForm.iotCardId')"
|
||||
@@ -148,6 +120,35 @@
|
||||
</ElOption>
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
<ElFormItem :label="t('orderManagement.createForm.packageIds')" prop="package_ids">
|
||||
<ElSelect
|
||||
v-model="createForm.package_ids"
|
||||
:placeholder="t('orderManagement.createForm.packageIdsPlaceholder')"
|
||||
multiple
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
:remote-method="handlePackageSearch"
|
||||
:loading="packageSearchLoading"
|
||||
:disabled="(!createForm.iot_card_id && !createForm.device_id) || (createForm.order_type === 'single_card' && !createForm.iot_card_id) || (createForm.order_type === 'device' && !createForm.device_id)"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
>
|
||||
<ElOption
|
||||
v-for="pkg in packageOptions"
|
||||
:key="pkg.id"
|
||||
:label="`${pkg.package_name} (¥${(pkg.cost_price / 100).toFixed(2)})`"
|
||||
:value="pkg.id"
|
||||
>
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<span>{{ pkg.package_name }}</span>
|
||||
<span style="color: var(--el-text-color-secondary); font-size: 12px">
|
||||
¥{{ (pkg.cost_price / 100).toFixed(2) }}
|
||||
</span>
|
||||
</div>
|
||||
</ElOption>
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
</ElForm>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
@@ -416,12 +417,13 @@
|
||||
const deviceOptions = ref<Device[]>([])
|
||||
const deviceSearchLoading = ref(false)
|
||||
|
||||
// 搜索套餐(根据套餐名称)
|
||||
const searchPackages = async (query: string) => {
|
||||
// 搜索套餐(根据套餐名称,可选按series_id筛选)
|
||||
const searchPackages = async (query: string, seriesId?: number) => {
|
||||
packageSearchLoading.value = true
|
||||
try {
|
||||
const res = await PackageManageService.getPackages({
|
||||
package_name: query || undefined,
|
||||
series_id: seriesId,
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
status: 1, // 只获取启用的套餐
|
||||
@@ -438,6 +440,25 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 套餐远程搜索方法(自动使用当前选中的IOT卡/设备的series_id)
|
||||
const handlePackageSearch = (query: string) => {
|
||||
let seriesId: number | undefined
|
||||
// 如果是单卡订单并且已选择IOT卡,使用该卡的series_id筛选
|
||||
if (createForm.order_type === 'single_card' && createForm.iot_card_id) {
|
||||
const selectedCard = iotCardOptions.value.find((card) => card.id === createForm.iot_card_id)
|
||||
if (selectedCard && selectedCard.series_id) {
|
||||
seriesId = selectedCard.series_id
|
||||
}
|
||||
} else if (createForm.order_type === 'device' && createForm.device_id) {
|
||||
// 如果是设备订单并且已选择设备,使用设备的series_id筛选
|
||||
const selectedDevice = deviceOptions.value.find((dev) => dev.id === createForm.device_id)
|
||||
if (selectedDevice && selectedDevice.series_id) {
|
||||
seriesId = selectedDevice.series_id
|
||||
}
|
||||
}
|
||||
searchPackages(query, seriesId)
|
||||
}
|
||||
|
||||
// 搜索IoT卡(根据ICCID)
|
||||
const searchIotCards = async (query: string) => {
|
||||
cardSearchLoading.value = true
|
||||
@@ -623,6 +644,42 @@
|
||||
}
|
||||
])
|
||||
|
||||
// 当选择IOT卡时,根据series_id筛选套餐
|
||||
watch(
|
||||
() => createForm.iot_card_id,
|
||||
(newCardId) => {
|
||||
if (newCardId && createForm.order_type === 'single_card') {
|
||||
// 找到选中的IOT卡
|
||||
const selectedCard = iotCardOptions.value.find((card) => card.id === newCardId)
|
||||
if (selectedCard && selectedCard.series_id) {
|
||||
// 根据series_id重新加载套餐列表
|
||||
loadDefaultPackages(selectedCard.series_id)
|
||||
} else {
|
||||
// 如果没有series_id,加载所有套餐
|
||||
loadDefaultPackages()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
// 当选择设备时,根据series_id筛选套餐
|
||||
watch(
|
||||
() => createForm.device_id,
|
||||
(newDeviceId) => {
|
||||
if (newDeviceId && createForm.order_type === 'device') {
|
||||
// 找到选中的设备
|
||||
const selectedDevice = deviceOptions.value.find((dev) => dev.id === newDeviceId)
|
||||
if (selectedDevice && selectedDevice.series_id) {
|
||||
// 根据series_id重新加载套餐列表
|
||||
loadDefaultPackages(selectedDevice.series_id)
|
||||
} else {
|
||||
// 如果没有series_id,加载所有套餐
|
||||
loadDefaultPackages()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
onMounted(() => {
|
||||
getTableData()
|
||||
})
|
||||
@@ -642,7 +699,7 @@
|
||||
}
|
||||
const res = await OrderService.getOrders(params)
|
||||
if (res.code === 0) {
|
||||
orderList.value = res.data.items || []
|
||||
orderList.value = res.data.list || []
|
||||
pagination.total = res.data.total || 0
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -692,15 +749,16 @@
|
||||
// 显示创建订单对话框
|
||||
const showCreateDialog = async () => {
|
||||
createDialogVisible.value = true
|
||||
// 默认加载20条套餐、IoT卡和设备数据
|
||||
await Promise.all([loadDefaultPackages(), loadDefaultIotCards(), loadDefaultDevices()])
|
||||
// 加载IoT卡和设备列表,套餐列表在选择IoT卡/设备后才加载
|
||||
await Promise.all([loadDefaultIotCards(), loadDefaultDevices()])
|
||||
}
|
||||
|
||||
// 加载默认套餐列表
|
||||
const loadDefaultPackages = async () => {
|
||||
// 加载默认套餐列表(可选按series_id筛选)
|
||||
const loadDefaultPackages = async (seriesId?: number) => {
|
||||
packageSearchLoading.value = true
|
||||
try {
|
||||
const res = await PackageManageService.getPackages({
|
||||
series_id: seriesId,
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
status: 1, // 只获取启用的套餐
|
||||
|
||||
Reference in New Issue
Block a user