modify-bug
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m58s

This commit is contained in:
sexygoat
2026-03-28 18:31:43 +08:00
parent d6c23c8bd1
commit dbe6070207
22 changed files with 922 additions and 260 deletions

View File

@@ -100,9 +100,10 @@
}
},
{
label: '启用实名激活',
label: '到期计时基准',
formatter: (_, data) => {
return data.enable_realname_activation ? '是' : ''
if (!data.expiry_base) return '--'
return data.expiry_base === 'from_activation' ? '实名后开始计时' : '购买即开始计时'
}
},
{

View File

@@ -108,6 +108,11 @@
:label="series.series_name"
:value="series.id"
/>
<template #empty>
<div style="padding: 10px; text-align: center; color: #909399">
暂无套餐系列请先创建套餐系列
</div>
</template>
</ElSelect>
</ElFormItem>
</ElCol>
@@ -131,6 +136,38 @@
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="有效期(月)" prop="duration_months">
<ElInputNumber
v-model="form.duration_months"
:min="1"
:max="120"
:controls="false"
style="width: 100%"
placeholder="请输入有效期(月)"
/>
</ElFormItem>
</ElCol>
</ElRow>
<!-- 流量重置周期和套餐周期类型 -->
<ElRow :gutter="20">
<ElCol :span="12">
<ElFormItem label="流量重置周期" prop="data_reset_cycle">
<ElSelect
v-model="form.data_reset_cycle"
placeholder="请选择流量重置周期"
style="width: 100%"
clearable
>
<ElOption label="每日" value="daily" />
<ElOption label="每月" value="monthly" />
<ElOption label="每年" value="yearly" />
<ElOption label="不重置" value="none" />
</ElSelect>
</ElFormItem>
</ElCol>
<!-- 只有流量重置周期为每月时才显示套餐周期类型 -->
<ElCol :span="12" v-if="form.data_reset_cycle === 'monthly'">
<ElFormItem label="套餐周期类型" prop="calendar_type">
<ElSelect
v-model="form.calendar_type"
@@ -145,78 +182,24 @@
</ElCol>
</ElRow>
<ElRow :gutter="20">
<!-- 流量重置天数calendar_type为by_day时显示 -->
<ElRow :gutter="20" v-if="form.calendar_type === 'by_day'">
<ElCol :span="12">
<ElFormItem label="有效期(月)" prop="duration_months">
<ElInputNumber
v-model="form.duration_months"
:min="1"
:max="120"
:controls="false"
style="width: 100%"
placeholder="请输入有效期(月)"
/>
</ElFormItem>
</ElCol>
<ElCol :span="12" v-if="form.calendar_type === 'by_day'">
<ElFormItem label="套餐天数" prop="duration_days">
<ElFormItem label="流量重置天数" prop="duration_days">
<ElInputNumber
v-model="form.duration_days"
:min="1"
:max="3650"
:controls="false"
style="width: 100%"
placeholder="请输入套餐天数"
/>
</ElFormItem>
</ElCol>
<ElCol :span="12" v-if="form.calendar_type !== 'by_day'">
<ElFormItem label="流量重置周期" prop="data_reset_cycle">
<ElSelect
v-model="form.data_reset_cycle"
placeholder="请选择流量重置周期"
style="width: 100%"
clearable
>
<ElOption label="每日" value="daily" />
<ElOption label="每月" value="monthly" />
<ElOption label="每年" value="yearly" />
<ElOption label="不重置" value="none" />
</ElSelect>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type === 'by_day'">
<ElCol :span="12">
<ElFormItem label="流量重置周期" prop="data_reset_cycle">
<ElSelect
v-model="form.data_reset_cycle"
placeholder="请选择流量重置周期"
style="width: 100%"
clearable
>
<ElOption label="每日" value="daily" />
<ElOption label="每月" value="monthly" />
<ElOption label="每年" value="yearly" />
<ElOption label="不重置" value="none" />
</ElSelect>
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="真流量额度(MB)" prop="real_data_mb">
<ElInputNumber
v-model="form.real_data_mb"
:min="0"
:controls="false"
style="width: 100%"
placeholder="请输入真流量额度"
placeholder="请输入流量重置天数"
/>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type !== 'by_day'">
<!-- 真流量额度 -->
<ElRow :gutter="20">
<ElCol :span="12">
<ElFormItem label="真流量额度(MB)" prop="real_data_mb">
<ElInputNumber
@@ -239,16 +222,8 @@
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type === 'by_day'">
<ElCol :span="12">
<ElFormItem label="启用虚流量">
<ElSwitch
v-model="form.enable_virtual_data"
active-text="启用"
inactive-text="不启用"
/>
</ElFormItem>
</ElCol>
<!-- 虚流量额度和到期计时基准 -->
<ElRow :gutter="20">
<ElCol :span="12" v-if="form.enable_virtual_data">
<ElFormItem label="虚流量额度(MB)" prop="virtual_data_mb">
<ElInputNumber
@@ -260,97 +235,23 @@
/>
</ElFormItem>
</ElCol>
<ElCol :span="12" v-if="!form.enable_virtual_data">
<ElFormItem label="启用实名激活">
<ElSwitch
v-model="form.enable_realname_activation"
active-text="启用"
inactive-text="不启用"
/>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type !== 'by_day' && form.enable_virtual_data">
<ElCol :span="12">
<ElFormItem label="虚流量额度(MB)" prop="virtual_data_mb">
<ElInputNumber
v-model="form.virtual_data_mb"
:min="0"
:controls="false"
<ElFormItem label="到期计时基准" prop="expiry_base">
<ElSelect
v-model="form.expiry_base"
placeholder="请选择到期计时基准"
style="width: 100%"
placeholder="请输入虚流量额度"
/>
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="启用实名激活">
<ElSwitch
v-model="form.enable_realname_activation"
active-text="启用"
inactive-text="不启用"
/>
clearable
>
<ElOption label="实名后开始计时" value="from_activation" />
<ElOption label="购买即开始计时" value="from_purchase" />
</ElSelect>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type !== 'by_day' && !form.enable_virtual_data">
<ElCol :span="12">
<ElFormItem label="启用实名激活">
<ElSwitch
v-model="form.enable_realname_activation"
active-text="启用"
inactive-text="不启用"
/>
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="成本价(元)" prop="cost_price">
<ElInputNumber
v-model="form.cost_price"
:min="0"
:precision="2"
:step="0.01"
:controls="false"
style="width: 100%"
placeholder="请输入成本价"
/>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type === 'by_day' && form.enable_virtual_data">
<ElCol :span="12">
<ElFormItem label="启用实名激活">
<ElSwitch
v-model="form.enable_realname_activation"
active-text="启用"
inactive-text="不启用"
/>
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="成本价(元)" prop="cost_price">
<ElInputNumber
v-model="form.cost_price"
:min="0"
:precision="2"
:step="0.01"
:controls="false"
style="width: 100%"
placeholder="请输入成本价"
/>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow
:gutter="20"
v-if="
(form.calendar_type !== 'by_day' && form.enable_virtual_data) ||
(form.calendar_type === 'by_day' && !form.enable_virtual_data)
"
>
<!-- 成本价和建议零售价 -->
<ElRow :gutter="20">
<ElCol :span="12">
<ElFormItem label="成本价(元)" prop="cost_price">
<ElInputNumber
@@ -365,7 +266,7 @@
</ElFormItem>
</ElCol>
<ElCol :span="12">
<ElFormItem label="建议售价(元)" prop="suggested_retail_price">
<ElFormItem label="建议售价(元)" prop="suggested_retail_price">
<ElInputNumber
v-model="form.suggested_retail_price"
:min="0"
@@ -373,23 +274,7 @@
:step="0.01"
:controls="false"
style="width: 100%"
placeholder="请输入建议售价(可选)"
/>
</ElFormItem>
</ElCol>
</ElRow>
<ElRow :gutter="20" v-if="form.calendar_type === 'by_day' && form.enable_virtual_data">
<ElCol :span="12">
<ElFormItem label="建议售价(元)" prop="suggested_retail_price">
<ElInputNumber
v-model="form.suggested_retail_price"
:min="0"
:precision="2"
:step="0.01"
:controls="false"
style="width: 100%"
placeholder="请输入建议售价(可选)"
placeholder="请输入建议售价"
/>
</ElFormItem>
</ElCol>
@@ -690,7 +575,7 @@
duration_months: 1,
data_reset_cycle: undefined,
enable_virtual_data: false,
enable_realname_activation: false,
expiry_base: 'from_activation',
real_data_mb: 0,
virtual_data_mb: 0,
cost_price: 0,
@@ -870,6 +755,27 @@
}
)
// 监听流量重置周期变化,不是每月时清空套餐周期类型
watch(
() => form.data_reset_cycle,
(cycle) => {
if (cycle !== 'monthly') {
form.calendar_type = undefined
form.duration_days = undefined
}
}
)
// 监听套餐周期类型变化,不是按天时清空套餐天数
watch(
() => form.calendar_type,
(type) => {
if (type !== 'by_day') {
form.duration_days = undefined
}
}
)
onMounted(() => {
loadSeriesOptions()
loadSearchSeriesOptions()
@@ -1008,7 +914,7 @@
form.duration_months = row.duration_months
form.data_reset_cycle = row.data_reset_cycle || undefined
form.enable_virtual_data = row.enable_virtual_data || false
form.enable_realname_activation = row.enable_realname_activation || false
form.expiry_base = row.expiry_base || 'from_activation'
form.real_data_mb = row.real_data_mb || 0
form.virtual_data_mb = row.virtual_data_mb || 0
form.cost_price = row.cost_price / 100 // 分转换为元显示
@@ -1027,7 +933,7 @@
form.duration_months = 1
form.data_reset_cycle = undefined
form.enable_virtual_data = false
form.enable_realname_activation = false
form.expiry_base = 'from_activation'
form.real_data_mb = 0
form.virtual_data_mb = 0
form.cost_price = 0
@@ -1066,7 +972,7 @@
form.duration_months = 1
form.data_reset_cycle = undefined
form.enable_virtual_data = false
form.enable_realname_activation = false
form.expiry_base = 'from_activation'
form.real_data_mb = 0
form.virtual_data_mb = 0
form.cost_price = 0
@@ -1116,22 +1022,23 @@
duration_months: form.duration_months,
cost_price: costPriceInCents,
enable_virtual_data: form.enable_virtual_data || false,
enable_realname_activation: form.enable_realname_activation || false
expiry_base: form.expiry_base || 'from_activation'
}
// 可选字段
if (form.series_id) {
data.series_id = form.series_id
}
if (form.calendar_type) {
if (form.data_reset_cycle) {
data.data_reset_cycle = form.data_reset_cycle
}
// 只有流量重置周期为 monthly 时,才传递 calendar_type
if (form.data_reset_cycle === 'monthly' && form.calendar_type) {
data.calendar_type = form.calendar_type
}
if (form.calendar_type === 'by_day' && form.duration_days) {
data.duration_days = form.duration_days
}
if (form.data_reset_cycle) {
data.data_reset_cycle = form.data_reset_cycle
}
if (suggestedRetailPriceInCents !== undefined) {
data.suggested_retail_price = suggestedRetailPriceInCents
}