feat(commission): 支持计奖商品参与设置、独立分成与多规格规则,完善团队中心与微信快捷登录
这个提交包含在:
@@ -317,6 +317,10 @@ class ScoreShop extends Common
|
||||
unset($skuPrice['createtime'], $skuPrice['updatetime'], $skuPrice['deletetime']); // 不手动更新时间
|
||||
$skuPrice['goods_id'] = $goods_id;
|
||||
|
||||
$skuPrice['score'] = isset($skuPrice['score']) && $skuPrice['score'] !== '' ? intval($skuPrice['score']) : 0;
|
||||
$skuPrice['price'] = isset($skuPrice['price']) && $skuPrice['price'] !== '' ? round(floatval($skuPrice['price']), 2) : 0.00;
|
||||
$skuPrice['stock'] = isset($skuPrice['stock']) && $skuPrice['stock'] !== '' ? intval($skuPrice['stock']) : 0;
|
||||
|
||||
$model = new ScoreSkuPrice;
|
||||
if (isset($skuPrice['id'])) {
|
||||
$model = $this->model->find($skuPrice['id']);
|
||||
|
||||
@@ -42,14 +42,21 @@ class Goods extends Common
|
||||
});
|
||||
|
||||
$config = sheep_config('shop.commission');
|
||||
$defaultPartnerRules = \addons\shopro\service\partner\PartnerConfig::defaultRules();
|
||||
$roleNames = \addons\shopro\service\partner\PartnerConfig::roleNames();
|
||||
$levels = \app\admin\model\shopro\commission\Level::order('level asc')->select();
|
||||
|
||||
$this->success('分销商品详情', null, [
|
||||
'goods' => $goodsList,
|
||||
'config' => $config
|
||||
'config' => $config,
|
||||
'default_partner_rules' => $defaultPartnerRules,
|
||||
'role_names' => $roleNames,
|
||||
'levels' => $levels,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置佣金(支持批量)
|
||||
* 设置计奖规则/佣金(支持批量)
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
@@ -61,18 +68,50 @@ class Goods extends Common
|
||||
|
||||
// 接受全部参数
|
||||
$params = $this->request->only(['status', 'self_rules', 'commission_order_status', 'commission_config', 'commission_rules']);
|
||||
if (empty($id)) {
|
||||
$id = $this->request->param('id', '');
|
||||
}
|
||||
if (empty($id)) {
|
||||
$this->error('缺少必要参数: id');
|
||||
}
|
||||
|
||||
// 状态规范化
|
||||
if (isset($params['status'])) {
|
||||
$params['status'] = intval($params['status']) === 1 ? 1 : 0;
|
||||
}
|
||||
if (isset($params['commission_order_status'])) {
|
||||
$params['commission_order_status'] = intval($params['commission_order_status']) === 0 ? 0 : 1;
|
||||
}
|
||||
if (isset($params['self_rules'])) {
|
||||
$params['self_rules'] = intval($params['self_rules']);
|
||||
}
|
||||
|
||||
// 针对 commission_rules 防御性处理
|
||||
if (isset($params['commission_rules'])) {
|
||||
if (is_string($params['commission_rules'])) {
|
||||
$decoded = json_decode($params['commission_rules'], true);
|
||||
if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) {
|
||||
$params['commission_rules'] = $decoded;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$result = Db::transaction(function () use ($id, $params) {
|
||||
$count = 0;
|
||||
$ids = explode(',', $id);
|
||||
$ids = explode(',', (string)$id);
|
||||
|
||||
foreach ($ids as $goods_id) {
|
||||
$goods_id = intval($goods_id);
|
||||
if ($goods_id <= 0) {
|
||||
continue;
|
||||
}
|
||||
if ($row = $this->model->get($goods_id)) {
|
||||
$row->save($params);
|
||||
} else {
|
||||
$model = new CommissionGoodsModel();
|
||||
$params['goods_id'] = $goods_id;
|
||||
$model->save($params);
|
||||
$saveData = $params;
|
||||
$saveData['goods_id'] = $goods_id;
|
||||
$model->save($saveData);
|
||||
}
|
||||
$count++;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class ScoreSkuPrice extends Common
|
||||
|
||||
|
||||
/**
|
||||
* 积分加现金
|
||||
* 兑换门槛(兑换券 + 积分)
|
||||
*
|
||||
* @param string $value
|
||||
* @param array $data
|
||||
@@ -50,10 +50,19 @@ class ScoreSkuPrice extends Common
|
||||
*/
|
||||
public function getScorePriceAttr($value, $data)
|
||||
{
|
||||
$score = $data['score'] ?? 0;
|
||||
$score = intval($data['score'] ?? 0);
|
||||
$price = $data['price'] ?? 0;
|
||||
$priceNum = floatval($price);
|
||||
|
||||
return $score . '积分' . ($price ? '+¥' . $price : '');
|
||||
if ($priceNum > 0 && $score > 0) {
|
||||
return '¥' . $price . '兑换券 + ' . $score . '积分';
|
||||
} elseif ($priceNum > 0) {
|
||||
return '¥' . $price . ' 兑换券';
|
||||
} elseif ($score > 0) {
|
||||
return $score . '积分';
|
||||
}
|
||||
|
||||
return '免费兑换';
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -113,9 +113,24 @@ class User extends Common
|
||||
{
|
||||
$value = array_filter((array)json_decode($value, true));
|
||||
$value = array_merge(['username' => 0, 'password' => 0, 'mobile' => 0], $value);
|
||||
// 若数据库中已有手机号,则自动判定为已绑定/已验证手机号
|
||||
if (!empty($data['mobile'])) {
|
||||
$value['mobile'] = 1;
|
||||
}
|
||||
return (object)$value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置验证字段
|
||||
* @param mixed $value
|
||||
* @return string
|
||||
*/
|
||||
public function setVerificationAttr($value)
|
||||
{
|
||||
$value = is_object($value) || is_array($value) ? json_encode($value) : $value;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function parentUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'id', 'parent_user_id')->field(['id', 'avatar', 'nickname', 'gender']);
|
||||
|
||||
@@ -56,17 +56,25 @@
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<div class="title mb-4">商品名称:{{ state.title }}</div>
|
||||
<div class="title mb-3">商品名称:{{ state.title }}</div>
|
||||
<el-alert
|
||||
title="💡 兑换规则配置说明"
|
||||
type="info"
|
||||
:closable="false"
|
||||
class="mb-4"
|
||||
description="1. 纯兑换券兑换:【所需兑换券】填入所需面额(如 100),【所需积分】填 0。用户在小程序下单时将自动使用可用兑换券 1:1 全额抵扣(实付 0 元)。 2. 兑换券+积分组合:同时填写对应所需兑换券额度与所需积分。 3. 若用户可用兑换券不足,系统自动支持抵扣部分可用券额,剩余差额可使用微信现金支付补齐。"
|
||||
show-icon>
|
||||
</el-alert>
|
||||
<div class="sku-table-wrap">
|
||||
<table class="sku-table" rules="none">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="sku-item sku-col">商品规格</th>
|
||||
<th class="sku-item">是否参与</th>
|
||||
<th class="sku-item">商品价格</th>
|
||||
<th class="sku-item">商品原价</th>
|
||||
<th class="sku-item">可兑换数量</th>
|
||||
<th class="sku-item">兑换积分</th>
|
||||
<th class="sku-item">兑换价格</th>
|
||||
<th class="sku-item">所需兑换券(元)</th>
|
||||
<th class="sku-item">所需积分</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -79,15 +87,18 @@
|
||||
<td class="sku-item">{{ sp.price }}</td>
|
||||
<th class="sku-item">
|
||||
<el-input v-if="goods.score_sku_prices[spindex].status == 'up'" type="number"
|
||||
placeholder="库存数量"
|
||||
v-model="goods.score_sku_prices[spindex].stock"></el-input>
|
||||
</th>
|
||||
<th class="sku-item">
|
||||
<el-input v-if="goods.score_sku_prices[spindex].status == 'up'" type="number"
|
||||
v-model="goods.score_sku_prices[spindex].score"></el-input>
|
||||
placeholder="如 100"
|
||||
v-model="goods.score_sku_prices[spindex].price"></el-input>
|
||||
</th>
|
||||
<th class="sku-item">
|
||||
<el-input v-if="goods.score_sku_prices[spindex].status == 'up'" type="number"
|
||||
v-model="goods.score_sku_prices[spindex].price"></el-input>
|
||||
placeholder="无积分填0"
|
||||
v-model="goods.score_sku_prices[spindex].score"></el-input>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<el-header class="sa-header">
|
||||
<div class="sa-title sa-flex sa-row-between">
|
||||
<div class="sa-title-left">
|
||||
<div class="left-name">积分商城</div>
|
||||
<div class="left-name">兑换商城 (兑换券/积分)</div>
|
||||
<sa-filter-condition v-model="state.filter" @filter-delete="onChangeFilter">
|
||||
</sa-filter-condition>
|
||||
</div>
|
||||
@@ -121,12 +121,19 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="积分现金" min-width="200">
|
||||
<el-table-column label="兑换门槛 (兑换券/积分)" min-width="220">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.score_price" class="sa-flex">
|
||||
{{ scope.row.score_price.score }}积分
|
||||
<div v-if="Number(scope.row.score_price.price)">+¥{{ scope.row.score_price.price }}
|
||||
</div>
|
||||
<span v-if="Number(scope.row.score_price.price)" style="color: #e6a23c; font-weight: 600;">
|
||||
¥{{ scope.row.score_price.price }} 兑换券
|
||||
</span>
|
||||
<span v-if="Number(scope.row.score_price.price) && Number(scope.row.score_price.score)" class="mx-1">+</span>
|
||||
<span v-if="Number(scope.row.score_price.score)" style="color: #409eff; font-weight: 600;">
|
||||
{{ scope.row.score_price.score }}积分
|
||||
</span>
|
||||
<span v-if="!Number(scope.row.score_price.price) && !Number(scope.row.score_price.score)" style="color: #67c23a;">
|
||||
免费兑换
|
||||
</span>
|
||||
</div>
|
||||
<div v-else>-</div>
|
||||
</template>
|
||||
|
||||
@@ -3,94 +3,165 @@
|
||||
<style>
|
||||
.goods-form .sa-title.is-line {
|
||||
margin-bottom: 16px;
|
||||
font-weight: 600;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.goods-form .goods-item {
|
||||
margin-bottom: 16px;
|
||||
.goods-form .goods-card {
|
||||
background: #f8f9fa;
|
||||
border-radius: 8px;
|
||||
padding: 14px 16px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid var(--sa-border);
|
||||
}
|
||||
|
||||
.goods-form .goods-item .goods-title {
|
||||
height: 16px;
|
||||
line-height: 16px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: var(--sa-font);
|
||||
margin-bottom: 8px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.goods-form .goods-item .goods-price {
|
||||
font-size: 14px;
|
||||
color: #f56c6c;
|
||||
font-weight: 600;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.goods-form .goods-item .goods-sku {
|
||||
width: fit-content;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
background: var(--el-color-primary);
|
||||
border-radius: 10px;
|
||||
padding: 0 8px;
|
||||
padding: 0 10px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-background-assist);
|
||||
}
|
||||
|
||||
.goods-form .commission-table {
|
||||
overflow: hidden;
|
||||
overflow-x: auto;
|
||||
.goods-form .section-box {
|
||||
background: #fff;
|
||||
border: 1px solid #e4e7ed;
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.goods-form .commission-table .commission-header {
|
||||
border-left: 1px solid var(--sa-border);
|
||||
}
|
||||
|
||||
.goods-form .commission-table .commission-header .col-item {
|
||||
padding: 0 12px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
background: var(--sa-table-header-bg);
|
||||
border-top: 1px solid var(--sa-border);
|
||||
}
|
||||
|
||||
.goods-form .commission-table .commission-content {
|
||||
border-left: 1px solid var(--sa-border);
|
||||
}
|
||||
|
||||
.goods-form .commission-table .col-item {
|
||||
width: 150px;
|
||||
min-width: 150px;
|
||||
padding: 0 12px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
.goods-form .section-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-right: 1px solid var(--sa-border);
|
||||
border-bottom: 1px solid var(--sa-border);
|
||||
justify-content: space-between;
|
||||
margin-bottom: 14px;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 1px dashed #ebeef5;
|
||||
}
|
||||
|
||||
.goods-form .commission-table .col-item .el-input {
|
||||
margin-right: 12px;
|
||||
.goods-form .section-title {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.goods-form .commission-table .col-item .el-input:last-of-type {
|
||||
margin-right: 0;
|
||||
.goods-form .section-title::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 14px;
|
||||
background: var(--el-color-primary);
|
||||
border-radius: 2px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.goods-form .commission-table .col-item.commission-item, .goods-form .commission-table .col-item.sku-col {
|
||||
width: 240px;
|
||||
min-width: 240px;
|
||||
.goods-form .section-tip {
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.goods-form .batch-edit {
|
||||
color: var(--el-color-primary);
|
||||
margin-left: 8px;
|
||||
.goods-form .rules-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.commission-popover .commission-item {
|
||||
margin-bottom: 12px;
|
||||
.goods-form .rules-grid-2 {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.commission-popover .commission-item .el-input {
|
||||
margin-right: 12px;
|
||||
.goods-form .rules-grid-6 {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.commission-popover .commission-item .el-input:last-of-type {
|
||||
margin-right: 0;
|
||||
.goods-form .field-item {
|
||||
background: #fafafa;
|
||||
padding: 10px 12px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.goods-form .field-label {
|
||||
font-size: 12px;
|
||||
color: #606266;
|
||||
margin-bottom: 6px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.goods-form .preview-summary {
|
||||
background: #f0f9eb;
|
||||
border: 1px solid #e1f3d8;
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.goods-form .preview-summary .summary-title {
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #67c23a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.goods-form .preview-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 10px;
|
||||
font-size: 13px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.goods-form .preview-item {
|
||||
background: #fff;
|
||||
padding: 8px 12px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #e1f3d8;
|
||||
}
|
||||
|
||||
.goods-form .sku-toolbar {
|
||||
background: #f4f6fa;
|
||||
padding: 10px 14px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.goods-form .sku-tab-wrap {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -98,256 +169,311 @@
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<div class="sa-title is-line">商品信息</div>
|
||||
<div v-for="goods in state.data?.goods" :key="goods">
|
||||
<div class="goods-item sa-flex sa-col-top">
|
||||
<sa-image class="mr-2" :url="goods.image" size="48"></sa-image>
|
||||
<!-- 商品基本信息卡片 -->
|
||||
<div class="goods-card">
|
||||
<div v-for="goods in state.data?.goods" :key="goods.id" class="goods-item sa-flex sa-col-top">
|
||||
<sa-image class="mr-3" :url="goods.image" size="64"></sa-image>
|
||||
<div>
|
||||
<div class="goods-title sa-table-line-1">
|
||||
{{ goods.title }}
|
||||
</div>
|
||||
<div v-if="goods.is_sku" class="goods-sku">
|
||||
{{ goods.is_sku ? '多规格' : '' }}
|
||||
<div class="goods-title sa-table-line-1">{{ goods.title }}</div>
|
||||
<div class="goods-price" v-if="goods.price">
|
||||
指导价:¥{{ Array.isArray(goods.price) ? goods.price.join(' ~ ') : goods.price }}
|
||||
</div>
|
||||
<div v-if="goods.is_sku" class="goods-sku">多规格商品(共 {{ goods.sku_prices?.length || 0 }} 种规格)</div>
|
||||
<div v-else class="goods-sku" style="background:#67c23a;">单规格基础商品</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sa-title is-line">佣金设置</div>
|
||||
<el-form label-width="120px">
|
||||
<el-form-item label="是否参与">
|
||||
<el-radio-group v-model="state.commission_goods.status">
|
||||
<el-radio :label="0">不参与</el-radio>
|
||||
<el-radio :label="1">参与</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="分销商业绩">
|
||||
<el-radio-group v-model="state.commission_goods.commission_order_status">
|
||||
<el-radio :label="0">不计入</el-radio>
|
||||
<el-radio :label="1">
|
||||
<span class="sa-flex">
|
||||
计入
|
||||
<el-popover placement="top" :width="310" content="关闭则只分佣,不计入分销订单金额和订单数">
|
||||
<template #reference>
|
||||
<el-icon class="warning sa-m-l-8">
|
||||
<warning />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-popover>
|
||||
</span>
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金规则">
|
||||
<el-radio-group v-model="state.commission_goods.self_rules" @change="onChangeSelfRules">
|
||||
<el-radio :label="0">默认规则</el-radio>
|
||||
<el-radio :label="1" v-if="state.rulesType != 'batch'">独立规则</el-radio>
|
||||
<el-radio :label="2">批量规则</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="state.commission_goods.self_rules == 1 || state.commission_goods.self_rules == 2"
|
||||
label="分销设置">
|
||||
<el-switch v-model="state.commission_config_temp.status"
|
||||
@change="onChangeCommissionConfigStatus" :active-value="1" :inactive-value="0" />
|
||||
<span class="sa-m-l-8">
|
||||
{{ state.commission_config_temp.status ? '自定义' : '默认' }}
|
||||
</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="分销层级">
|
||||
<el-radio-group v-model="state.commission_config_temp.level"
|
||||
:disabled="state.commission_config_temp.status == 0">
|
||||
<el-radio :label="1">一级</el-radio>
|
||||
<el-radio :label="2">二级</el-radio>
|
||||
<el-radio :label="3">三级</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="分销自购">
|
||||
<div>
|
||||
<el-radio-group v-model="state.commission_config_temp.self_buy"
|
||||
:disabled="state.commission_config_temp.status == 0">
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="tip"> 分销自购开启后,分销商自己购买时,下单可以给自己返佣 </div>
|
||||
|
||||
<!-- 计奖与分成核心设置 -->
|
||||
<el-form label-width="120px" label-position="left">
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">计奖资格与业绩设置</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品结算方式">
|
||||
<div>
|
||||
<el-radio-group v-model="state.commission_config_temp.reward_type"
|
||||
:disabled="state.commission_config_temp.status == 0">
|
||||
<el-radio label="goods_price">商品价</el-radio>
|
||||
<el-radio label="pay_price">实际支付价</el-radio>
|
||||
<el-form-item label="是否参与计奖">
|
||||
<el-radio-group v-model="state.commission_goods.status">
|
||||
<el-radio :label="1"><el-tag type="success" size="small">参与计奖</el-tag></el-radio>
|
||||
<el-radio :label="0"><el-tag type="danger" size="small">不参与计奖</el-tag></el-radio>
|
||||
</el-radio-group>
|
||||
<div class="tip">
|
||||
商品价: 商品实际售价/规格价,实际支付价:实际支付的费用(不含运费)
|
||||
<div class="section-tip">
|
||||
开启后,购买该商品的新订单将参与收益中心推三返一、创客极差、团队拆分、兑换券及全网日结奖池;关闭后整单或单品排除计奖。
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金结算方式">
|
||||
<el-radio-group v-model="state.commission_config_temp.reward_event"
|
||||
:disabled="state.commission_config_temp.status == 0">
|
||||
<el-radio label="paid">支付后结算</el-radio>
|
||||
<el-radio label="confirm">确认收货结算</el-radio>
|
||||
<el-radio label="finish">订单完成结算</el-radio>
|
||||
<el-radio label="admin">手动打款</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<div class="commission-table">
|
||||
<template v-if="state.commission_goods.self_rules == 0">
|
||||
<div class="commission-header sa-flex">
|
||||
<div class="col-item">分销等级名称</div>
|
||||
<template v-for="commission in state.commission_config_temp.level" :key="commission">
|
||||
<div v-if="commission == 1" class="col-item commission-item">
|
||||
一级(自购)佣金比例
|
||||
</div>
|
||||
<div v-if="commission == 2" class="col-item commission-item"> 二级佣金比例 </div>
|
||||
<div v-if="commission == 3" class="col-item commission-item"> 三级佣金比例 </div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="commission-content sa-flex" v-for="level in state.levelData" :key="level">
|
||||
<div class="col-item">{{ level.name }}</div>
|
||||
<template v-for="commission in state.commission_config_temp.level" :key="commission">
|
||||
<div class="col-item commission-item">
|
||||
{{ level.commission_rules[`commission_${commission}`] }}%
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="state.commission_goods.self_rules == 1">
|
||||
<div class="commission-header sa-flex">
|
||||
<div class="col-item sku-col">商品规格</div>
|
||||
<div class="col-item">价格</div>
|
||||
<div class="col-item">分销等级名称</div>
|
||||
<template v-for="commission in state.commission_config_temp.level" :key="commission">
|
||||
<div class="col-item commission-item">
|
||||
<template v-if="commission == 1">一级(自购)佣金比例</template>
|
||||
<template v-if="commission == 2">二级佣金比例</template>
|
||||
<template v-if="commission == 3">三级佣金比例</template>
|
||||
<el-popover popper-class="commission-popover"
|
||||
v-model:visible="commissionPopover.flag[commission]" placement="top"
|
||||
:width="220" trigger="click">
|
||||
<div class="commission-item sa-flex">
|
||||
<el-input v-model="commissionPopover.form.rate" type="number"
|
||||
:disabled="commissionPopover.form.money != ''">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
<el-input v-model="commissionPopover.form.money" type="number"
|
||||
:disabled="commissionPopover.form.rate != ''">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="sa-flex sa-row-right">
|
||||
<el-button class="is-link" type="primary" size="small"
|
||||
@click="onCancelCommissionPopover(commission)">取消</el-button>
|
||||
<el-button type="primary" size="small"
|
||||
@click="onConfirmCommissionPopover(commission)">确定</el-button>
|
||||
</div>
|
||||
<template #reference>
|
||||
<el-icon class="batch-edit">
|
||||
<edit />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-popover>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="commission-content sa-flex">
|
||||
<div class="sa-flex sa-flex-col">
|
||||
<div class="sa-flex" v-for="sku in state.detailData.sku_prices" :key="sku">
|
||||
<div class="col-item sku-col" :style="{ height: 48 * state.levelData.length + 'px' }">
|
||||
{{ state.detailData?.is_sku ? sku.goods_sku_text.join(',') : '默认规格' }}
|
||||
</div>
|
||||
<div class="col-item" :style="{ height: 48 * state.levelData.length + 'px' }">
|
||||
{{ sku.price }}
|
||||
</div>
|
||||
<div>
|
||||
<div class="col-item" v-for="level in state.levelData" :key="level">
|
||||
{{ level.name }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<template v-if="state.commission_goods.status == 1">
|
||||
<el-form-item label="分销商业绩">
|
||||
<el-radio-group v-model="state.commission_goods.commission_order_status">
|
||||
<el-radio :label="1">计入业绩</el-radio>
|
||||
<el-radio :label="0">不计入业绩</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="section-tip">
|
||||
计入后,该订单将累加分销商团队订单金额和单数,用于创客升级考核。
|
||||
</div>
|
||||
<div>
|
||||
<div v-for="sku in state.commission_goods.commission_rules" :key="sku">
|
||||
<div class="sa-flex" v-for="level in sku" :key="level">
|
||||
<template v-for="commission in state.commission_config_temp.level"
|
||||
:key="commission">
|
||||
<div v-if="level[commission]" class="col-item commission-item">
|
||||
<el-input v-model="level[commission].rate" type="number"
|
||||
:disabled="level[commission].money != ''">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
<el-input v-model="level[commission].money" type="number"
|
||||
:disabled="level[commission].rate != ''">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="分成规则模式">
|
||||
<el-radio-group v-model="state.commission_goods.self_rules" @change="onChangeSelfRules">
|
||||
<el-radio :label="0">默认规则(跟随系统配置)</el-radio>
|
||||
<el-radio :label="1" v-if="state.rulesType != 'batch'">独立规则(单独设置分成)</el-radio>
|
||||
<el-radio :label="2">批量规则(统一设置分成)</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="section-tip">
|
||||
选择「默认规则」时直接继承系统收益中心全局配置;选择「独立规则」可为当前商品单独定制分成比例与金额。
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="state.commission_goods.self_rules == 2">
|
||||
<div class="commission-header sa-flex">
|
||||
<div class="col-item">分销等级名称</div>
|
||||
<template v-for="commission in state.commission_config_temp.level" :key="commission">
|
||||
<div class="col-item commission-item">
|
||||
<template v-if="commission == 1">一级(自购)佣金比例</template>
|
||||
<template v-if="commission == 2">二级佣金比例</template>
|
||||
<template v-if="commission == 3">三级佣金比例</template>
|
||||
<el-popover popper-class="commission-popover"
|
||||
v-model:visible="commissionPopover.flag[commission]" placement="top"
|
||||
:width="220" trigger="click">
|
||||
<div class="commission-item sa-flex">
|
||||
<el-input v-model="commissionPopover.form.rate" type="number"
|
||||
:disabled="commissionPopover.form.money != ''">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="sa-flex sa-row-right">
|
||||
<el-button class="is-link" type="primary" size="small"
|
||||
@click="onCancelCommissionPopover(commission)">取消</el-button>
|
||||
<el-button size="small" type="primary"
|
||||
@click="onConfirmCommissionPopover(commission)">确定</el-button>
|
||||
</div>
|
||||
<template #reference>
|
||||
<el-icon class="batch-edit">
|
||||
<edit />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-popover>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="commission-content sa-flex">
|
||||
<div>
|
||||
<div class="col-item" v-for="level in state.levelData" :key="level">
|
||||
{{ level.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="sa-flex" v-for="level in state.commission_goods.commission_rules"
|
||||
:key="level">
|
||||
<template v-for="commission in state.commission_config_temp.level"
|
||||
:key="commission">
|
||||
<div v-if="level[commission]" class="col-item commission-item">
|
||||
<el-input v-model="level[commission].rate" type="number"
|
||||
:disabled="level[commission].money != ''">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<!-- 状态为不参与时的警示提示 -->
|
||||
<el-alert v-if="state.commission_goods.status == 0" type="warning" show-icon :closable="false"
|
||||
title="商品未参与计奖"
|
||||
description="当前商品已关闭计奖,会员或下级购买该商品时将不产生推荐开拓奖、创客极差、酒道馆/区县团队奖及兑换券,亦不进入全网日结均分奖池。"
|
||||
style="margin-bottom: 20px;">
|
||||
</el-alert>
|
||||
|
||||
<!-- 模式 0:跟随系统默认规则预览卡片 -->
|
||||
<div v-if="state.commission_goods.status == 1 && state.commission_goods.self_rules == 0" class="preview-summary">
|
||||
<div class="summary-title sa-flex sa-row-between">
|
||||
<span>系统收益中心全局默认分成规则概览</span>
|
||||
<el-tag size="small" type="success">当前生效</el-tag>
|
||||
</div>
|
||||
<div class="preview-list">
|
||||
<div class="preview-item">
|
||||
<strong>推荐开拓奖(推三返一):</strong>
|
||||
循环返现 ¥{{ state.defaultPartnerRules.push3_amounts?.[0] || 398 }} / ¥{{ state.defaultPartnerRules.push3_amounts?.[1] || 400 }} / ¥{{ state.defaultPartnerRules.push3_amounts?.[2] || 600 }} 元
|
||||
</div>
|
||||
<div class="preview-item">
|
||||
<strong>创客极差基数(V1~V6):</strong>
|
||||
¥{{ state.defaultPartnerRules.maker_bonus?.['2'] || 20 }} ~ ¥{{ state.defaultPartnerRules.maker_bonus?.['7'] || 120 }} 元
|
||||
</div>
|
||||
<div class="preview-item">
|
||||
<strong>创客协同与超越:</strong>
|
||||
同级协同 {{ ((state.defaultPartnerRules.maker_peer_rate || 0.10) * 100).toFixed(0) }}%,超越关怀 {{ ((state.defaultPartnerRules.maker_overtaken_rate || 0.05) * 100).toFixed(0) }}%
|
||||
</div>
|
||||
<div class="preview-item">
|
||||
<strong>渠道运营统筹奖:</strong>
|
||||
酒道馆 ¥{{ state.defaultPartnerRules.venue_split || 50 }},区县统筹 ¥{{ state.defaultPartnerRules.county_full || 100 }}(有馆时各50)
|
||||
</div>
|
||||
<div class="preview-item">
|
||||
<strong>馆/县平级协同奖:</strong>
|
||||
酒道馆 {{ ((state.defaultPartnerRules.venue_peer_rate || 0.10) * 100).toFixed(0) }}%,区县代理 {{ ((state.defaultPartnerRules.county_peer_rate || 0.10) * 100).toFixed(0) }}%
|
||||
</div>
|
||||
<div class="preview-item">
|
||||
<strong>消费补贴兑换券:</strong>
|
||||
实付 {{ state.defaultPartnerRules.voucher_times || 1.5 }} 倍,分 {{ state.defaultPartnerRules.voucher_days || 365 }} 天线性释放
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模式 1 / 2:独立设置分成规则面板 -->
|
||||
<template v-if="state.commission_goods.status == 1 && (state.commission_goods.self_rules == 1 || state.commission_goods.self_rules == 2)">
|
||||
<!-- 多规格切换与快捷操作栏 -->
|
||||
<div class="sku-toolbar">
|
||||
<div class="sa-flex" v-if="state.detailData?.is_sku == 1 && state.rulesType != 'batch'">
|
||||
<span class="mr-2" style="font-size: 13px; font-weight: 500;">规格配置模式:</span>
|
||||
<el-radio-group v-model="state.skuMode" size="small">
|
||||
<el-radio-button label="unified">统一设置所有规格</el-radio-button>
|
||||
<el-radio-button label="sku">按规格分别设置</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="sa-flex" v-else>
|
||||
<el-tag size="small" type="info">商品独立分成模式</el-tag>
|
||||
</div>
|
||||
<div class="sa-flex">
|
||||
<el-button size="small" type="primary" plain @click="onFillDefaults(state.skuMode === 'sku' ? 'current_sku' : 'all_skus')">
|
||||
一键填入系统默认值
|
||||
</el-button>
|
||||
<el-button size="small" type="success" plain v-if="state.skuMode === 'sku' && state.detailData?.sku_prices?.length > 1" @click="onSyncToAllSkus">
|
||||
同步当前规则至全部规格
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 当按规格分别设置时的规格切换 Tabs -->
|
||||
<div v-if="state.skuMode === 'sku' && state.detailData?.sku_prices?.length" style="margin-bottom: 16px;">
|
||||
<el-radio-group v-model="state.activeSkuId" size="default">
|
||||
<el-radio-button v-for="sku in state.detailData.sku_prices" :key="sku.id" :label="String(sku.id)">
|
||||
{{ sku.goods_sku_text?.join(' / ') || '默认规格' }}(¥{{ sku.price }})
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
|
||||
<!-- 当前激活的表单对象引用 -->
|
||||
<template v-for="curForm in [(state.skuMode === 'sku' && state.activeSkuId) ? state.skuRules[state.activeSkuId] : state.ruleForm]">
|
||||
<!-- 1. 推荐开拓奖(推三返一) -->
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">1. 推荐开拓奖(推三返一循环返现)</div>
|
||||
<span class="section-tip">直推有效单奖励,每 3 笔订单形成一个循环返还货款</span>
|
||||
</div>
|
||||
<div class="rules-grid">
|
||||
<div class="field-item">
|
||||
<div class="field-label">第 1 单返现金额</div>
|
||||
<el-input v-model="curForm.push3_1" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">第 2 单返现金额</div>
|
||||
<el-input v-model="curForm.push3_2" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">第 3 单返现金额(波峰档)</div>
|
||||
<el-input v-model="curForm.push3_3" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 2. 创客进阶奖(极差基数)与协同奖 -->
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">2. 创客进阶奖(V1~V6极差基数)与协同奖</div>
|
||||
<span class="section-tip">向上链条创客按自身基数减去已截留最高基数计提差额</span>
|
||||
</div>
|
||||
<div class="rules-grid-6" style="margin-bottom: 14px;">
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V1 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v1" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V2 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v2" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V3 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v3" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V4 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v4" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V5 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v5" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客 V6 进阶基数</div>
|
||||
<el-input v-model="curForm.maker_v6" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rules-grid-2">
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客同级平级协同比例</div>
|
||||
<el-input v-model="curForm.maker_peer_rate" type="number" :min="0" :max="100">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">创客下级反超卓越比例</div>
|
||||
<el-input v-model="curForm.maker_overtaken_rate" type="number" :min="0" :max="100">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 3. 实体渠道与区域运营奖(团队拆分) -->
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">3. 实体渠道与区域运营奖(团队拆分)</div>
|
||||
<span class="section-tip">无馆有县独享,有馆有县各分其半</span>
|
||||
</div>
|
||||
<div class="rules-grid-2" style="margin-bottom: 14px;">
|
||||
<div class="field-item">
|
||||
<div class="field-label">酒道馆运营奖基准</div>
|
||||
<el-input v-model="curForm.venue_split" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">区县统筹全额(无馆时独享)</div>
|
||||
<el-input v-model="curForm.county_full" type="number" :min="0">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rules-grid-2">
|
||||
<div class="field-item">
|
||||
<div class="field-label">酒道馆平级协同比例</div>
|
||||
<el-input v-model="curForm.venue_peer_rate" type="number" :min="0" :max="100">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">区县代理平级协同比例</div>
|
||||
<el-input v-model="curForm.county_peer_rate" type="number" :min="0" :max="100">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 4. 消费补贴兑换券计划 -->
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">4. 消费补贴兑换券计划</div>
|
||||
<span class="section-tip">买家本人下单实付金额按倍数赠送并在商城按日释放抵扣</span>
|
||||
</div>
|
||||
<div class="rules-grid-2">
|
||||
<div class="field-item">
|
||||
<div class="field-label">赠送兑换券倍数(相对计奖实付)</div>
|
||||
<el-input v-model="curForm.voucher_times" type="number" :min="0" step="0.1">
|
||||
<template #append>倍</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">线性释放周期天数</div>
|
||||
<el-input v-model="curForm.voucher_days" type="number" :min="1">
|
||||
<template #append>天</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 5. 全平台日结奖池注入(可选定制) -->
|
||||
<div class="section-box">
|
||||
<div class="section-header">
|
||||
<div class="section-title">5. 全平台日结均分奖池注入(可选定制)</div>
|
||||
<span class="section-tip">每日凌晨 00:30 全网有效订单向池中注入并由活跃身份均分</span>
|
||||
</div>
|
||||
<div class="rules-grid-2">
|
||||
<div class="field-item">
|
||||
<div class="field-label">酒道馆日结奖池单笔注入</div>
|
||||
<el-input v-model="curForm.venue_share" type="number" :min="0">
|
||||
<template #append>元/单</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="field-item">
|
||||
<div class="field-label">区县代理日结奖池单笔注入</div>
|
||||
<el-input v-model="curForm.county_share" type="number" :min="0">
|
||||
<template #append>元/单</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</el-main>
|
||||
<el-footer class="sa-footer--submit sa-flex sa-row-right">
|
||||
<el-button type="primary" @click="onConfirm">确定</el-button>
|
||||
<el-button type="primary" size="large" @click="onConfirm">保存分成设置</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</div>
|
||||
@@ -66,14 +66,15 @@
|
||||
<div>{{ scope.row.price?.join('~') || 0 }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分销规则" width="100">
|
||||
<el-table-column label="分成规则" width="120">
|
||||
<template #default="scope">
|
||||
<template v-if="scope.row.commission_goods && scope.row.commission_goods.status == 1">
|
||||
<template v-if="scope.row.commission_goods.self_rules == 0">默认规则</template>
|
||||
<template v-if="scope.row.commission_goods.self_rules == 1">独立规则</template>
|
||||
<template v-if="scope.row.commission_goods.self_rules == 2">批量规则</template>
|
||||
<el-tag size="small" type="info" v-if="scope.row.commission_goods.self_rules == 0">默认规则</el-tag>
|
||||
<el-tag size="small" type="success" v-else-if="scope.row.commission_goods.self_rules == 1">独立规则</el-tag>
|
||||
<el-tag size="small" type="warning" v-else-if="scope.row.commission_goods.self_rules == 2">批量规则</el-tag>
|
||||
<el-tag size="small" type="info" v-else>默认规则</el-tag>
|
||||
</template>
|
||||
<template v-else>-</template>
|
||||
<el-tag size="small" type="danger" v-else>不参与计奖</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品状态" width="100">
|
||||
@@ -83,15 +84,15 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" min-width="140" fixed="right">
|
||||
<el-table-column label="操作" min-width="160" fixed="right">
|
||||
<template #default="scope">
|
||||
<div class="sa-flex">
|
||||
<span class="mr-2"
|
||||
:class="`sa-color--${state.goodsStatusStyle[scope.row.commission_goods?.status] || 'info'}`">
|
||||
{{ scope.row.commission_goods?.status_text || '未参与' }}
|
||||
</span>
|
||||
<el-tag size="small" class="mr-2"
|
||||
:type="scope.row.commission_goods?.status == 1 ? 'success' : 'danger'">
|
||||
{{ scope.row.commission_goods?.status == 1 ? '参与中' : '未参与' }}
|
||||
</el-tag>
|
||||
{if $auth->check('shopro/commission/goods/edit')}
|
||||
<el-button type="primary" link @click="onEdit(scope.row.id)">设置计奖</el-button>
|
||||
<el-button type="primary" link @click="onEdit(scope.row.id)">设置分成</el-button>
|
||||
{/if}
|
||||
</div>
|
||||
</template>
|
||||
@@ -104,7 +105,7 @@
|
||||
已选择 <span>{{batchHandle.data.length}}</span> 项</div>
|
||||
<div class="sa-flex">
|
||||
{if $auth->check('shopro/commission/goods/edit')}
|
||||
<el-button type="primary" :disabled="!batchHandle.data.length" @click="onBatchHandle('edit')">设置佣金
|
||||
<el-button type="primary" :disabled="!batchHandle.data.length" @click="onBatchHandle('edit')">批量设置分成
|
||||
</el-button>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
在新工单中引用
屏蔽一个用户