This commit is contained in:
@@ -113,17 +113,18 @@
|
||||
|
||||
<!-- 套餐配置 -->
|
||||
<div v-if="form.shop_id" class="form-section-title">
|
||||
<span class="title-text">套餐配置(可选)</span>
|
||||
<span class="title-text">套餐配置(必选)</span>
|
||||
</div>
|
||||
|
||||
<template v-if="form.shop_id">
|
||||
<!-- 选择套餐 -->
|
||||
<ElFormItem label="选择套餐">
|
||||
<ElFormItem label="选择套餐" prop="packages">
|
||||
<ElSelect
|
||||
v-model="selectedPackageIds"
|
||||
placeholder="请选择套餐"
|
||||
style="width: 100%"
|
||||
multiple
|
||||
:multiple-limit="100"
|
||||
filterable
|
||||
remote
|
||||
:remote-method="searchPackages"
|
||||
@@ -142,7 +143,7 @@
|
||||
:value="pkg.id"
|
||||
/>
|
||||
</ElSelect>
|
||||
<div class="form-tip">选择该授权下包含的套餐</div>
|
||||
<div class="form-tip">首次创建必须选择 1~100 个不重复套餐</div>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- 套餐成本价 -->
|
||||
@@ -799,6 +800,24 @@
|
||||
shop_id: [{ required: true, message: '请选择店铺', trigger: 'change' }]
|
||||
}
|
||||
|
||||
baseRules.packages = [
|
||||
{
|
||||
validator: (_rule, value, callback) => {
|
||||
const packageIds = (value || []).map((pkg: { package_id: number }) => pkg.package_id)
|
||||
if (packageIds.length < 1) {
|
||||
callback(new Error('请至少选择 1 个套餐'))
|
||||
} else if (packageIds.length > 100) {
|
||||
callback(new Error('最多选择 100 个套餐'))
|
||||
} else if (new Set(packageIds).size !== packageIds.length) {
|
||||
callback(new Error('套餐不能重复'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
|
||||
// 只有启用一次性佣金时才添加佣金验证规则
|
||||
if (form.enable_one_time_commission) {
|
||||
// 根据佣金类型添加验证规则
|
||||
@@ -1092,9 +1111,9 @@
|
||||
|
||||
// 移除套餐
|
||||
const removePackage = (index: number) => {
|
||||
const removedPackageId = form.packages[index]?.package_id
|
||||
form.packages.splice(index, 1)
|
||||
// 同步更新选中的套餐ID
|
||||
const removedPackageId = form.packages[index]?.package_id
|
||||
if (removedPackageId) {
|
||||
const idIndex = selectedPackageIds.value.indexOf(removedPackageId)
|
||||
if (idIndex > -1) {
|
||||
@@ -1732,6 +1751,20 @@
|
||||
cost_price: Math.round((pkg.cost_price ?? 0) * 100)
|
||||
}))
|
||||
|
||||
if (dialogType.value === 'add') {
|
||||
const packageIds = packageItems.map((pkg: { package_id: number }) => pkg.package_id)
|
||||
if (packageIds.length < 1 || packageIds.length > 100) {
|
||||
ElMessage.error('首次创建必须选择 1~100 个套餐')
|
||||
submitLoading.value = false
|
||||
return
|
||||
}
|
||||
if (new Set(packageIds).size !== packageIds.length) {
|
||||
ElMessage.error('套餐不能重复')
|
||||
submitLoading.value = false
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (packageItems.length > 0) {
|
||||
// 验证是否包含赠送套餐
|
||||
for (const pkg of form.packages) {
|
||||
@@ -1815,8 +1848,8 @@
|
||||
let fieldsToValidate: string[] = []
|
||||
|
||||
if (currentStep.value === 0) {
|
||||
// 第一步:验证系列和店铺选择
|
||||
fieldsToValidate = ['series_id', 'shop_id']
|
||||
// 第一步:验证系列、店铺和初始套餐
|
||||
fieldsToValidate = ['series_id', 'shop_id', 'packages']
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user