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

This commit is contained in:
sexygoat
2026-04-28 18:40:18 +08:00
parent 55515410ae
commit b6625748ac
5 changed files with 320 additions and 60 deletions

View File

@@ -139,11 +139,17 @@
:key="pkg.id"
:label="`${pkg.package_name} (¥${((pkg.cost_price || 0) / 100).toFixed(2)})`"
:value="pkg.id"
:disabled="pkg.is_gift"
>
<div style="display: flex; justify-content: space-between">
<span>{{ pkg.package_name }}</span>
<span style="font-size: 12px; color: var(--el-text-color-secondary)">
¥{{ ((pkg.cost_price || 0) / 100).toFixed(2) }}
<template v-if="pkg.is_gift">
<el-tag type="warning" size="small">赠送</el-tag>
</template>
<template v-else>
¥{{ ((pkg.cost_price || 0) / 100).toFixed(2) }}
</template>
</span>
</div>
</ElOption>
@@ -158,14 +164,24 @@
该系列暂无可用套餐
</div>
</template>
<template v-else-if="selectedPackageIsGift">
<div style="color: var(--el-color-warning); font-size: 12px; margin-top: 4px">
提示: 赠送套餐只能使用线下支付方式
</div>
</template>
</ElFormItem>
<ElFormItem label="支付方式" prop="payment_method">
<ElSelect
v-model="createForm.payment_method"
placeholder="请选择支付方式"
style="width: 100%"
:disabled="selectedPackageIsGift"
>
<ElOption label="钱包支付" value="wallet" />
<ElOption
v-if="!selectedPackageIsGift"
label="钱包支付"
value="wallet"
/>
<!-- 只有平台用户(user_type 1:超级管理员, 2:平台用户)才显示线下支付选项 -->
<ElOption
v-if="userStore.info.user_type === 1 || userStore.info.user_type === 2"
@@ -713,6 +729,13 @@
return false
})
// 检查是否选择了赠送套餐
const selectedPackageIsGift = computed(() => {
if (!createForm.package_id) return false
const selectedPackage = packageOptions.value.find((pkg) => pkg.id === createForm.package_id)
return selectedPackage?.is_gift || false
})
// IoT卡选择变化时根据series_id加载套餐列表
const handleIotCardChange = (cardId: number | null) => {
if (!cardId) {
@@ -997,6 +1020,19 @@
}
)
// 当套餐切换时,如果选择的是赠送套餐,自动切换到线下支付
watch(
() => createForm.package_id,
(packageId) => {
if (packageId) {
const selectedPackage = packageOptions.value.find((pkg) => pkg.id === packageId)
if (selectedPackage?.is_gift) {
createForm.payment_method = 'offline'
}
}
}
)
onMounted(() => {
getTableData()
})
@@ -1170,6 +1206,18 @@
return
}
// 检查是否是赠送套餐
const selectedPackage = packageOptions.value.find(
(pkg) => pkg.id === createForm.package_id
)
const isGiftPackage = selectedPackage?.is_gift || false
// 线下支付时,支付凭证为必填
if (createForm.payment_method === 'offline' && !createForm.payment_voucher_key) {
ElMessage.error('线下支付必须上传支付凭证')
return
}
// 创建订单(后端接收数组,前端单选转为单元素数组)
const data: CreateOrderRequest = {
identifier,