fix: 完善套餐分配生效条件选择
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m30s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m30s
This commit is contained in:
@@ -171,18 +171,6 @@
|
||||
{{ formatSuggestedRetailPrice(pkg.suggested_retail_price) }})
|
||||
</span>
|
||||
</div>
|
||||
<div class="expiry-base-input-wrapper">
|
||||
<div class="expiry-base-label">生效条件</div>
|
||||
<ElSelect
|
||||
v-model="pkg.expiry_base_override"
|
||||
class="expiry-base-select"
|
||||
placeholder="请选择生效条件"
|
||||
>
|
||||
<ElOption label="跟随套餐默认" value="default" />
|
||||
<ElOption label="购买即生效" value="from_purchase" />
|
||||
<ElOption label="实名激活时生效" value="from_activation" />
|
||||
</ElSelect>
|
||||
</div>
|
||||
<ElButton type="danger" size="small" @click="removePackage(index)"
|
||||
>删除</ElButton
|
||||
>
|
||||
@@ -191,7 +179,16 @@
|
||||
<div class="form-tip"
|
||||
>设置每个套餐的成本价(单位:元),不能低于成本价,不能高于建议售价的50%溢价</div
|
||||
>
|
||||
<div class="form-tip">生效条件仅影响后续新订单,不影响已购买套餐</div>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="套餐生效条件">
|
||||
<ElSelect v-model="form.expiry_base_override" style="width: 100%">
|
||||
<ElOption label="跟随套餐默认" value="default" />
|
||||
<ElOption label="购买即生效" value="from_purchase" />
|
||||
<ElOption label="实名激活时生效" value="from_activation" />
|
||||
</ElSelect>
|
||||
<div class="form-tip"
|
||||
>本次所有授权套餐共用此选择,仅影响后续新订单,不影响已购买套餐</div
|
||||
>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
</div>
|
||||
@@ -560,7 +557,6 @@
|
||||
import { useRouter } from 'vue-router'
|
||||
import {
|
||||
ShopSeriesGrantService,
|
||||
ShopPackageAllocationService,
|
||||
PackageSeriesService,
|
||||
ShopService,
|
||||
PackageManageService
|
||||
@@ -787,12 +783,12 @@
|
||||
force_recharge_amount: undefined,
|
||||
force_recharge_locked: false, // 强充是否被套餐系列锁定
|
||||
series_force_recharge_amount: 0, // 系列强充金额(元)
|
||||
expiry_base_override: 'default' as PackageAllocationExpiryBaseOverride | 'default',
|
||||
packages: [] as Array<{
|
||||
package_id: number
|
||||
cost_price: number
|
||||
original_cost_price?: number
|
||||
suggested_retail_price?: number
|
||||
expiry_base_override: PackageAllocationExpiryBaseOverride | 'default'
|
||||
}> // 套餐配置
|
||||
})
|
||||
|
||||
@@ -1153,8 +1149,7 @@
|
||||
suggested_retail_price:
|
||||
pkg?.suggested_retail_price !== undefined && pkg?.suggested_retail_price !== null
|
||||
? pkg.suggested_retail_price / 100
|
||||
: undefined,
|
||||
expiry_base_override: 'default'
|
||||
: undefined
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -1581,8 +1576,7 @@
|
||||
pkgOption?.suggested_retail_price !== undefined &&
|
||||
pkgOption?.suggested_retail_price !== null
|
||||
? pkgOption.suggested_retail_price / 100
|
||||
: undefined,
|
||||
expiry_base_override: pkg.expiry_base_override ?? 'default'
|
||||
: undefined
|
||||
}
|
||||
})
|
||||
selectedPackageIds.value = detail.packages.map((pkg) => pkg.package_id)
|
||||
@@ -1616,6 +1610,7 @@
|
||||
form.force_recharge_amount = undefined
|
||||
form.force_recharge_locked = false
|
||||
form.packages = []
|
||||
form.expiry_base_override = 'default'
|
||||
selectedPackageIds.value = []
|
||||
packageOptions.value = [] // 清空套餐选项
|
||||
}
|
||||
@@ -1639,6 +1634,7 @@
|
||||
form.series_name = ''
|
||||
form.shop_name = ''
|
||||
form.allocator_shop_name = ''
|
||||
form.expiry_base_override = 'default'
|
||||
form.enable_one_time_commission = false
|
||||
form.commission_type = 'fixed'
|
||||
form.one_time_commission_amount = undefined
|
||||
@@ -1649,6 +1645,7 @@
|
||||
form.force_recharge_amount = undefined
|
||||
form.force_recharge_locked = false
|
||||
form.packages = []
|
||||
form.expiry_base_override = 'default'
|
||||
selectedPackageIds.value = []
|
||||
}
|
||||
|
||||
@@ -1730,15 +1727,12 @@
|
||||
data.force_recharge_amount = 0
|
||||
}
|
||||
|
||||
// 新增系列授权后,套餐通过独立分配接口创建,确保显式传递生效条件覆盖值。
|
||||
const packageAllocations = form.packages.map((pkg: any) => ({
|
||||
const packageItems = form.packages.map((pkg: any) => ({
|
||||
package_id: pkg.package_id,
|
||||
cost_price: Math.round((pkg.cost_price ?? 0) * 100),
|
||||
expiry_base_override:
|
||||
pkg.expiry_base_override === 'default' ? null : pkg.expiry_base_override
|
||||
cost_price: Math.round((pkg.cost_price ?? 0) * 100)
|
||||
}))
|
||||
|
||||
if (packageAllocations.length > 0) {
|
||||
if (packageItems.length > 0) {
|
||||
// 验证是否包含赠送套餐
|
||||
for (const pkg of form.packages) {
|
||||
const pkgInfo = packageOptions.value.find((p) => p.id === pkg.package_id)
|
||||
@@ -1776,20 +1770,10 @@
|
||||
// 新增时需要必填字段
|
||||
data.series_id = form.series_id
|
||||
data.shop_id = form.shop_id
|
||||
data.expiry_base_override =
|
||||
form.expiry_base_override === 'default' ? null : form.expiry_base_override
|
||||
data.packages = packageItems
|
||||
await ShopSeriesGrantService.createShopSeriesGrant(data)
|
||||
await Promise.all(
|
||||
packageAllocations.map(
|
||||
(pkg: {
|
||||
package_id: number
|
||||
cost_price: number
|
||||
expiry_base_override: PackageAllocationExpiryBaseOverride | null
|
||||
}) =>
|
||||
ShopPackageAllocationService.createShopPackageAllocation({
|
||||
shop_id: data.shop_id,
|
||||
...pkg
|
||||
})
|
||||
)
|
||||
)
|
||||
ElMessage.success('新增成功')
|
||||
} else {
|
||||
// 编辑时调用更新接口
|
||||
|
||||
Reference in New Issue
Block a user