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:
@@ -874,6 +874,7 @@
|
||||
{ label: '卡业务类型', prop: 'card_category' },
|
||||
{ label: '运营商', prop: 'carrier_name' },
|
||||
{ label: '店铺名称', prop: 'shop_name' },
|
||||
{ label: '套餐系列', prop: 'series_name' },
|
||||
{ label: '成本价', prop: 'cost_price' },
|
||||
{ label: '分销价', prop: 'distribute_price' },
|
||||
{ label: '状态', prop: 'status' },
|
||||
@@ -1025,6 +1026,12 @@
|
||||
minWidth: 150,
|
||||
formatter: (row: StandaloneIotCard) => row.shop_name || '-'
|
||||
},
|
||||
{
|
||||
prop: 'series_name',
|
||||
label: '套餐系列',
|
||||
width: 150,
|
||||
formatter: (row: StandaloneIotCard) => row.series_name || '-'
|
||||
},
|
||||
{
|
||||
prop: 'cost_price',
|
||||
label: '成本价',
|
||||
|
||||
@@ -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, // 只获取启用的套餐
|
||||
|
||||
@@ -283,7 +283,6 @@
|
||||
{ label: '套餐名称', prop: 'package_name' },
|
||||
{ label: '店铺名称', prop: 'shop_name' },
|
||||
{ label: '成本价', prop: 'cost_price' },
|
||||
{ label: '原计算成本价', prop: 'calculated_cost_price' },
|
||||
{ label: '状态', prop: 'status' },
|
||||
{ label: '创建时间', prop: 'created_at' },
|
||||
{ label: '操作', prop: 'operation' }
|
||||
@@ -372,13 +371,6 @@
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'calculated_cost_price',
|
||||
label: '原计算成本价',
|
||||
width: 120,
|
||||
formatter: (row: ShopPackageAllocationResponse) =>
|
||||
`¥${(row.calculated_cost_price / 100).toFixed(2)}`
|
||||
},
|
||||
{
|
||||
prop: 'status',
|
||||
label: '状态',
|
||||
|
||||
@@ -103,141 +103,69 @@
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- 基础返佣配置 -->
|
||||
<ElDivider content-position="left">基础返佣配置</ElDivider>
|
||||
<ElFormItem label="返佣模式" prop="base_commission.mode">
|
||||
<ElRadioGroup v-model="form.base_commission.mode">
|
||||
<ElRadio value="fixed">固定金额</ElRadio>
|
||||
<ElRadio value="percent">百分比</ElRadio>
|
||||
</ElRadioGroup>
|
||||
</ElFormItem>
|
||||
<ElFormItem
|
||||
:label="form.base_commission.mode === 'fixed' ? '返佣金额(分)' : '返佣百分比(千分比)'"
|
||||
prop="base_commission.value"
|
||||
>
|
||||
<!-- 一次性佣金配置 -->
|
||||
<ElDivider content-position="left">一次性佣金配置</ElDivider>
|
||||
|
||||
<ElFormItem label="佣金金额上限(分)" prop="one_time_commission_amount">
|
||||
<ElInputNumber
|
||||
v-model="form.base_commission.value"
|
||||
v-model="form.one_time_commission_amount"
|
||||
:min="0"
|
||||
:controls="false"
|
||||
style="width: 100%"
|
||||
:placeholder="
|
||||
form.base_commission.mode === 'fixed'
|
||||
? '请输入固定返佣金额(分)'
|
||||
: '请输入返佣百分比的千分比(如200表示20%)'
|
||||
"
|
||||
placeholder="请输入该代理能拿的一次性佣金金额上限(分)"
|
||||
/>
|
||||
<div class="form-tip">
|
||||
{{
|
||||
form.base_commission.mode === 'fixed'
|
||||
? '每笔交易返佣该固定金额(单位:分)'
|
||||
: '返佣百分比的千分比,如200表示20%,即每笔交易返佣 = 交易金额 × 20%'
|
||||
}}
|
||||
</div>
|
||||
<div class="form-tip">该代理在此系列分配下能获得的一次性佣金金额上限(单位:分)</div>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- 一次性佣金配置 -->
|
||||
<ElDivider content-position="left">一次性佣金设置(可选)</ElDivider>
|
||||
<ElFormItem label="启用一次性佣金">
|
||||
<ElSwitch v-model="form.enable_one_time_commission" />
|
||||
</ElFormItem>
|
||||
|
||||
<template v-if="form.enable_one_time_commission">
|
||||
<ElFormItem label="一次性佣金类型" prop="one_time_commission_config.type">
|
||||
<ElRadioGroup v-model="form.one_time_commission_config.type">
|
||||
<ElRadio value="fixed">固定</ElRadio>
|
||||
<ElRadio value="tiered">梯度</ElRadio>
|
||||
</ElRadioGroup>
|
||||
<ElFormItem label="触发阈值(分)" prop="one_time_commission_threshold">
|
||||
<ElInputNumber
|
||||
v-model="form.one_time_commission_threshold"
|
||||
:min="0"
|
||||
:controls="false"
|
||||
style="width: 100%"
|
||||
placeholder="请输入触发阈值(分)"
|
||||
/>
|
||||
<div class="form-tip">达到此充值金额后触发一次性佣金</div>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="触发条件" prop="one_time_commission_config.trigger">
|
||||
<ElRadioGroup v-model="form.one_time_commission_config.trigger">
|
||||
<ElRadio value="single_recharge">单次充值</ElRadio>
|
||||
<ElFormItem label="触发类型" prop="one_time_commission_trigger">
|
||||
<ElRadioGroup v-model="form.one_time_commission_trigger">
|
||||
<ElRadio value="first_recharge">首次充值</ElRadio>
|
||||
<ElRadio value="accumulated_recharge">累计充值</ElRadio>
|
||||
</ElRadioGroup>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
|
||||
<ElFormItem label="最低阈值(分)" prop="one_time_commission_config.threshold">
|
||||
<!-- 强制充值配置 -->
|
||||
<ElDivider content-position="left">强制充值配置(可选)</ElDivider>
|
||||
|
||||
<ElFormItem label="启用强制充值">
|
||||
<ElSwitch v-model="form.enable_force_recharge" />
|
||||
</ElFormItem>
|
||||
|
||||
<template v-if="form.enable_force_recharge">
|
||||
<ElFormItem label="强充金额(分)" prop="force_recharge_amount">
|
||||
<ElInputNumber
|
||||
v-model="form.one_time_commission_config.threshold"
|
||||
:min="1"
|
||||
v-model="form.force_recharge_amount"
|
||||
:min="0"
|
||||
:controls="false"
|
||||
style="width: 100%"
|
||||
placeholder="请输入最低阈值(分)"
|
||||
placeholder="请输入强制充值金额(分)"
|
||||
/>
|
||||
<div class="form-tip">用户需要达到的强制充值金额</div>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- 固定类型配置 -->
|
||||
<template v-if="form.one_time_commission_config.type === 'fixed'">
|
||||
<ElFormItem label="返佣模式" prop="one_time_commission_config.mode">
|
||||
<ElRadioGroup v-model="form.one_time_commission_config.mode">
|
||||
<ElRadio value="fixed">固定金额</ElRadio>
|
||||
<ElRadio value="percent">百分比</ElRadio>
|
||||
</ElRadioGroup>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem
|
||||
:label="
|
||||
form.one_time_commission_config.mode === 'fixed'
|
||||
? '佣金金额(分)'
|
||||
: '佣金比例(千分比)'
|
||||
"
|
||||
prop="one_time_commission_config.value"
|
||||
>
|
||||
<ElInputNumber
|
||||
v-model="form.one_time_commission_config.value"
|
||||
:min="1"
|
||||
:controls="false"
|
||||
style="width: 100%"
|
||||
:placeholder="
|
||||
form.one_time_commission_config.mode === 'fixed'
|
||||
? '请输入佣金金额(分)'
|
||||
: '请输入佣金比例的千分比(如200表示20%)'
|
||||
"
|
||||
/>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
|
||||
<!-- 梯度类型配置 -->
|
||||
<template v-if="form.one_time_commission_config.type === 'tiered'">
|
||||
<ElFormItem label="梯度档位">
|
||||
<div class="tier-list">
|
||||
<div
|
||||
v-for="(tier, index) in form.one_time_commission_config.tiers"
|
||||
:key="index"
|
||||
class="tier-item"
|
||||
>
|
||||
<ElSelect
|
||||
v-model="tier.tier_type"
|
||||
placeholder="梯度类型"
|
||||
style="width: 120px"
|
||||
>
|
||||
<ElOption label="销量" value="sales_count" />
|
||||
<ElOption label="销售额" value="sales_amount" />
|
||||
</ElSelect>
|
||||
<ElInputNumber
|
||||
v-model="tier.threshold"
|
||||
:min="1"
|
||||
:controls="false"
|
||||
placeholder="阈值"
|
||||
style="width: 120px"
|
||||
/>
|
||||
<ElSelect v-model="tier.mode" placeholder="返佣模式" style="width: 120px">
|
||||
<ElOption label="固定金额" value="fixed" />
|
||||
<ElOption label="百分比" value="percent" />
|
||||
</ElSelect>
|
||||
<ElInputNumber
|
||||
v-model="tier.value"
|
||||
:min="1"
|
||||
:controls="false"
|
||||
placeholder="返佣值"
|
||||
style="width: 120px"
|
||||
/>
|
||||
<ElButton type="danger" @click="removeTier(index)">删除</ElButton>
|
||||
</div>
|
||||
<ElButton type="primary" @click="addTier">添加档位</ElButton>
|
||||
</div>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
<ElFormItem label="强充触发类型" prop="force_recharge_trigger_type">
|
||||
<ElRadioGroup v-model="form.force_recharge_trigger_type">
|
||||
<ElRadio :value="1">单次充值</ElRadio>
|
||||
<ElRadio :value="2">累计充值</ElRadio>
|
||||
</ElRadioGroup>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
</ElForm>
|
||||
<template #footer>
|
||||
@@ -368,8 +296,9 @@
|
||||
{ label: '系列名称', prop: 'series_name' },
|
||||
{ label: '店铺名称', prop: 'shop_name' },
|
||||
{ label: '分配者店铺', prop: 'allocator_shop_name' },
|
||||
{ label: '基础返佣', prop: 'base_commission' },
|
||||
{ label: '一次性佣金', prop: 'enable_one_time_commission' },
|
||||
{ label: '一次性佣金金额', prop: 'one_time_commission_amount' },
|
||||
{ label: '一次性佣金状态', prop: 'enable_one_time_commission' },
|
||||
{ label: '强制充值', prop: 'enable_force_recharge' },
|
||||
{ label: '状态', prop: 'status' },
|
||||
{ label: '创建时间', prop: 'created_at' },
|
||||
{ label: '操作', prop: 'operation' }
|
||||
@@ -383,19 +312,13 @@
|
||||
series_name: '',
|
||||
shop_name: '',
|
||||
allocator_shop_name: '',
|
||||
base_commission: {
|
||||
mode: 'fixed',
|
||||
value: 0
|
||||
},
|
||||
enable_one_time_commission: false,
|
||||
one_time_commission_config: {
|
||||
type: 'fixed',
|
||||
trigger: 'single_recharge',
|
||||
threshold: 0,
|
||||
mode: 'fixed',
|
||||
value: 0,
|
||||
tiers: []
|
||||
}
|
||||
one_time_commission_amount: 0,
|
||||
one_time_commission_threshold: undefined,
|
||||
one_time_commission_trigger: 'first_recharge' as 'first_recharge' | 'accumulated_recharge',
|
||||
enable_force_recharge: false,
|
||||
force_recharge_amount: undefined,
|
||||
force_recharge_trigger_type: undefined as 1 | 2 | undefined
|
||||
})
|
||||
|
||||
// 动态验证规则
|
||||
@@ -403,15 +326,14 @@
|
||||
const baseRules: FormRules = {
|
||||
series_id: [{ required: true, message: '请选择套餐系列', trigger: 'change' }],
|
||||
shop_id: [{ required: true, message: '请选择店铺', trigger: 'change' }],
|
||||
'base_commission.mode': [{ required: true, message: '请选择返佣模式', trigger: 'change' }],
|
||||
'base_commission.value': [
|
||||
{ required: true, message: '请输入返佣值', trigger: 'blur' },
|
||||
one_time_commission_amount: [
|
||||
{ required: true, message: '请输入一次性佣金金额上限', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === undefined || value === null || value === '') {
|
||||
callback(new Error('请输入返佣值'))
|
||||
callback(new Error('请输入一次性佣金金额上限'))
|
||||
} else if (value < 0) {
|
||||
callback(new Error('返佣值不能小于0'))
|
||||
callback(new Error('一次性佣金金额不能小于0'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
@@ -421,27 +343,24 @@
|
||||
]
|
||||
}
|
||||
|
||||
// 如果启用了一次性佣金,添加验证规则
|
||||
// 如果启用了一次性佣金,添加额外验证规则
|
||||
if (form.enable_one_time_commission) {
|
||||
baseRules['one_time_commission_config.type'] = [
|
||||
{ required: true, message: '请选择一次性佣金类型', trigger: 'change' }
|
||||
baseRules.one_time_commission_threshold = [
|
||||
{ required: true, message: '请输入触发阈值', trigger: 'blur' }
|
||||
]
|
||||
baseRules['one_time_commission_config.trigger'] = [
|
||||
{ required: true, message: '请选择触发条件', trigger: 'change' }
|
||||
]
|
||||
baseRules['one_time_commission_config.threshold'] = [
|
||||
{ required: true, message: '请输入最低阈值', trigger: 'blur' }
|
||||
baseRules.one_time_commission_trigger = [
|
||||
{ required: true, message: '请选择触发类型', trigger: 'change' }
|
||||
]
|
||||
}
|
||||
|
||||
// 固定类型验证
|
||||
if (form.one_time_commission_config.type === 'fixed') {
|
||||
baseRules['one_time_commission_config.mode'] = [
|
||||
{ required: true, message: '请选择返佣模式', trigger: 'change' }
|
||||
]
|
||||
baseRules['one_time_commission_config.value'] = [
|
||||
{ required: true, message: '请输入佣金值', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
// 如果启用了强制充值,添加验证规则
|
||||
if (form.enable_force_recharge) {
|
||||
baseRules.force_recharge_amount = [
|
||||
{ required: true, message: '请输入强制充值金额', trigger: 'blur' }
|
||||
]
|
||||
baseRules.force_recharge_trigger_type = [
|
||||
{ required: true, message: '请选择强充触发类型', trigger: 'change' }
|
||||
]
|
||||
}
|
||||
|
||||
return baseRules
|
||||
@@ -476,23 +395,21 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'base_commission',
|
||||
label: '基础返佣',
|
||||
prop: 'one_time_commission_amount',
|
||||
label: '一次性佣金金额',
|
||||
width: 150,
|
||||
formatter: (row: ShopSeriesAllocationResponse) => {
|
||||
if (!row.base_commission) return '-'
|
||||
const { mode, value } = row.base_commission
|
||||
if (mode === 'fixed') {
|
||||
return `固定 ¥${(value / 100).toFixed(2)}`
|
||||
} else {
|
||||
return `百分比 ${(value / 10).toFixed(1)}%`
|
||||
}
|
||||
return h(
|
||||
'span',
|
||||
{ style: 'color: #f56c6c; font-weight: bold' },
|
||||
`¥${(row.one_time_commission_amount / 100).toFixed(2)}`
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'enable_one_time_commission',
|
||||
label: '一次性佣金',
|
||||
width: 120,
|
||||
label: '一次性佣金状态',
|
||||
width: 130,
|
||||
formatter: (row: ShopSeriesAllocationResponse) => {
|
||||
return h(
|
||||
ElTag,
|
||||
@@ -501,6 +418,18 @@
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'enable_force_recharge',
|
||||
label: '强制充值',
|
||||
width: 100,
|
||||
formatter: (row: ShopSeriesAllocationResponse) => {
|
||||
return h(
|
||||
ElTag,
|
||||
{ type: row.enable_force_recharge ? 'warning' : 'info', size: 'small' },
|
||||
() => (row.enable_force_recharge ? '已启用' : '未启用')
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'status',
|
||||
label: '状态',
|
||||
@@ -750,21 +679,6 @@
|
||||
getTableData()
|
||||
}
|
||||
|
||||
// 添加档位
|
||||
const addTier = () => {
|
||||
form.one_time_commission_config.tiers.push({
|
||||
tier_type: 'sales_count',
|
||||
threshold: 0,
|
||||
mode: 'fixed',
|
||||
value: 0
|
||||
})
|
||||
}
|
||||
|
||||
// 删除档位
|
||||
const removeTier = (index: number) => {
|
||||
form.one_time_commission_config.tiers.splice(index, 1)
|
||||
}
|
||||
|
||||
// 显示新增/编辑对话框
|
||||
const showDialog = (type: string, row?: ShopSeriesAllocationResponse) => {
|
||||
dialogVisible.value = true
|
||||
@@ -777,30 +691,13 @@
|
||||
form.series_name = row.series_name
|
||||
form.shop_name = row.shop_name
|
||||
form.allocator_shop_name = row.allocator_shop_name
|
||||
form.base_commission = {
|
||||
mode: row.base_commission.mode,
|
||||
value: row.base_commission.value
|
||||
}
|
||||
form.enable_one_time_commission = row.enable_one_time_commission
|
||||
if (row.enable_one_time_commission && row.one_time_commission_config) {
|
||||
form.one_time_commission_config = {
|
||||
type: row.one_time_commission_config.type,
|
||||
trigger: row.one_time_commission_config.trigger,
|
||||
threshold: row.one_time_commission_config.threshold,
|
||||
mode: row.one_time_commission_config.mode || 'fixed',
|
||||
value: row.one_time_commission_config.value || 0,
|
||||
tiers: row.one_time_commission_config.tiers?.map((t) => ({ ...t })) || []
|
||||
}
|
||||
} else {
|
||||
form.one_time_commission_config = {
|
||||
type: 'fixed',
|
||||
trigger: 'single_recharge',
|
||||
threshold: 0,
|
||||
mode: 'fixed',
|
||||
value: 0,
|
||||
tiers: []
|
||||
}
|
||||
}
|
||||
form.one_time_commission_amount = row.one_time_commission_amount
|
||||
form.one_time_commission_threshold = row.one_time_commission_threshold
|
||||
form.one_time_commission_trigger = row.one_time_commission_trigger || 'first_recharge'
|
||||
form.enable_force_recharge = row.enable_force_recharge
|
||||
form.force_recharge_amount = row.force_recharge_amount
|
||||
form.force_recharge_trigger_type = row.force_recharge_trigger_type
|
||||
} else {
|
||||
form.id = 0
|
||||
form.series_id = undefined
|
||||
@@ -808,19 +705,13 @@
|
||||
form.series_name = ''
|
||||
form.shop_name = ''
|
||||
form.allocator_shop_name = ''
|
||||
form.base_commission = {
|
||||
mode: 'fixed',
|
||||
value: 0
|
||||
}
|
||||
form.enable_one_time_commission = false
|
||||
form.one_time_commission_config = {
|
||||
type: 'fixed',
|
||||
trigger: 'single_recharge',
|
||||
threshold: 0,
|
||||
mode: 'fixed',
|
||||
value: 0,
|
||||
tiers: []
|
||||
}
|
||||
form.one_time_commission_amount = 0
|
||||
form.one_time_commission_threshold = undefined
|
||||
form.one_time_commission_trigger = 'first_recharge'
|
||||
form.enable_force_recharge = false
|
||||
form.force_recharge_amount = undefined
|
||||
form.force_recharge_trigger_type = undefined
|
||||
}
|
||||
|
||||
// 重置表单验证状态
|
||||
@@ -840,19 +731,13 @@
|
||||
form.series_name = ''
|
||||
form.shop_name = ''
|
||||
form.allocator_shop_name = ''
|
||||
form.base_commission = {
|
||||
mode: 'fixed',
|
||||
value: 0
|
||||
}
|
||||
form.enable_one_time_commission = false
|
||||
form.one_time_commission_config = {
|
||||
type: 'fixed',
|
||||
trigger: 'single_recharge',
|
||||
threshold: 0,
|
||||
mode: 'fixed',
|
||||
value: 0,
|
||||
tiers: []
|
||||
}
|
||||
form.one_time_commission_amount = 0
|
||||
form.one_time_commission_threshold = undefined
|
||||
form.one_time_commission_trigger = 'first_recharge'
|
||||
form.enable_force_recharge = false
|
||||
form.force_recharge_amount = undefined
|
||||
form.force_recharge_trigger_type = undefined
|
||||
}
|
||||
|
||||
// 删除分配
|
||||
@@ -886,59 +771,24 @@
|
||||
|
||||
await formEl.validate(async (valid) => {
|
||||
if (valid) {
|
||||
// 验证一次性佣金配置
|
||||
if (form.enable_one_time_commission) {
|
||||
if (form.one_time_commission_config.type === 'tiered') {
|
||||
if (form.one_time_commission_config.tiers.length === 0) {
|
||||
ElMessage.warning('启用梯度类型时至少需要添加一个档位')
|
||||
return
|
||||
}
|
||||
|
||||
// 验证档位阈值递增
|
||||
const thresholds = form.one_time_commission_config.tiers.map((t: any) => t.threshold)
|
||||
for (let i = 1; i < thresholds.length; i++) {
|
||||
if (thresholds[i] <= thresholds[i - 1]) {
|
||||
ElMessage.warning('档位阈值必须递增')
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
submitLoading.value = true
|
||||
try {
|
||||
const data: any = {
|
||||
base_commission: {
|
||||
mode: form.base_commission.mode,
|
||||
value: form.base_commission.value
|
||||
},
|
||||
enable_one_time_commission: form.enable_one_time_commission
|
||||
one_time_commission_amount: form.one_time_commission_amount,
|
||||
enable_one_time_commission: form.enable_one_time_commission,
|
||||
enable_force_recharge: form.enable_force_recharge
|
||||
}
|
||||
|
||||
// 如果启用了一次性佣金,加入配置
|
||||
// 如果启用了一次性佣金,加入相关字段
|
||||
if (form.enable_one_time_commission) {
|
||||
data.one_time_commission_config = {
|
||||
type: form.one_time_commission_config.type,
|
||||
trigger: form.one_time_commission_config.trigger,
|
||||
threshold: form.one_time_commission_config.threshold
|
||||
}
|
||||
data.one_time_commission_threshold = form.one_time_commission_threshold
|
||||
data.one_time_commission_trigger = form.one_time_commission_trigger
|
||||
}
|
||||
|
||||
// 固定类型配置
|
||||
if (form.one_time_commission_config.type === 'fixed') {
|
||||
data.one_time_commission_config.mode = form.one_time_commission_config.mode
|
||||
data.one_time_commission_config.value = form.one_time_commission_config.value
|
||||
}
|
||||
// 梯度类型配置
|
||||
else if (form.one_time_commission_config.type === 'tiered') {
|
||||
data.one_time_commission_config.tiers = form.one_time_commission_config.tiers.map(
|
||||
(t: any) => ({
|
||||
tier_type: t.tier_type,
|
||||
threshold: t.threshold,
|
||||
mode: t.mode,
|
||||
value: t.value
|
||||
})
|
||||
)
|
||||
}
|
||||
// 如果启用了强制充值,加入相关字段
|
||||
if (form.enable_force_recharge) {
|
||||
data.force_recharge_amount = form.force_recharge_amount
|
||||
data.force_recharge_trigger_type = form.force_recharge_trigger_type
|
||||
}
|
||||
|
||||
if (dialogType.value === 'add') {
|
||||
|
||||
Reference in New Issue
Block a user