文件

597 行
24 KiB
HTML

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
<style>
#detailPage {
border-radius: 10px;
color: #444;
font-weight: 500;
padding: 0px 10px 60px;
position: relative;
}
.el-form-item__label,
.el-form-item__content {
line-height: 32px;
}
.el-form-item {
margin-bottom: 14px;
/* padding-left: 50px; */
}
.title-tip {
color: #999;
line-height: 18px;
font-size: 12px;
font-weight: 400;
margin-top: 8px;
}
.commission-rules-help {
background: #f8f5ff;
border: 1px solid #e8dff8;
border-radius: 6px;
padding: 12px 16px;
margin: 0 0 16px 0;
font-size: 12px;
line-height: 20px;
color: #666;
}
.commission-rules-help-title {
color: #7536D0;
font-weight: 600;
margin-bottom: 6px;
}
.commission-rules-help p {
margin: 0 0 6px 0;
}
.commission-rules-help p:last-child {
margin-bottom: 0;
}
.commission-rules-example {
background: #fff;
border-left: 3px solid #7536D0;
padding: 8px 10px;
margin-top: 8px;
color: #888;
font-size: 12px;
line-height: 20px;
}
.commission-rate,
.level-name {
width: 200px;
}
.upgrade-condition-item {
display: inline-block;
margin-bottom: 10px;
padding: 0 10px;
height: 32px;
line-height: 32px;
text-align: center;
border: 1px solid #e5e5e5;
border-radius: 6px;
margin-right: 14px;
cursor: pointer;
font-size: 12px;
position: relative;
overflow: hidden;
}
.upgrade-type-container {
margin-bottom: 20px;
}
.upgrade-type-title {
margin-right: 20px;
}
.upgrade-condition-item-active {
border-color: #7438D5;
color: #7438D5;
}
.condition-delete {
margin-left: 20px;
cursor: pointer;
display: inline-block;
color: #FE7C76;
font-size: 20px;
}
.goods-header {
background: #f9f9f9;
height: 40px;
line-height: 40px;
}
.goods-item-1 {
width: 280px;
padding: 0 20px;
}
.goods-item-2 {
width: 100px;
padding: 0 20px;
}
.goods-item-3 {
width: 100px;
}
.goods-delete {
cursor: pointer;
color: #FF5959;
}
.goods-image {
width: 40px;
height: 40px;
margin-right: 20px;
border: 1px solid #e6e6e6;
}
.goods-add {
width: 80px;
height: 30px;
border-radius: 4px;
font-size: 12px;
cursor: pointer;
background: #7438D5;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
}
.el-image {
width: 100%;
height: 100%;
}
.image-slot {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.shopro-submit-container {
display: flex;
justify-content: flex-end;
position: fixed;
right: 40px;
bottom: 0px;
height: 60px;
}
.shopro-submit-button {
width: 88px;
height: 36px;
line-height: 36px;
text-align: center;
background: #7438D5;
font-size: 14px;
color: #fff;
cursor: pointer;
border-radius: 5px;
}
.goods-title,
.goods-price {
line-height: 13px;
}
.goods-price {
color: #7438D5;
}
.goods-title {
margin-bottom: 13px;
}
.goods-body-item {
border-top: 1px solid #e6e6e6;
height: 50px;
line-height: 50px;
}
.active-icon {
width: 22px;
height: 22px;
position: absolute;
right: -1px;
top: -1px;
}
.shopro-level-item {
width: 70px;
height: 32px;
line-height: 32px;
border-radius: 4px;
border: 1px solid #e6e6e6;
margin-right: 12px;
text-align: center;
font-size: 13px;
cursor: pointer;
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.shopro-level-item-active {
border-color: #7438D5;
color: #7438D5;
}
.shopro-level-item-disable {
background: #eee;
border-color: #e6e6e6;
cursor: auto;
}
.el-dialog__body {
padding: 10px 20px;
}
.el-dialog__footer {
padding: 0;
}
.bgimage-add-container {
border: 1px solid #e6e6e6;
width: 80px;
height: 80px;
border-radius: 5px;
}
.bgimage-add {
width: 80px;
height: 80px;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
color: #999;
}
.shopro-goods-add-button {
cursor: pointer;
color: #7438D5;
font-size: 13px;
height: 50px;
line-height: 50px;
padding: 0 20px;
}
.shopro-goods-add-button i {
margin-right: 6px;
}
.child-agent-count-add {
width: 80px;
height: 32px;
background: #FFFFFF;
border: 1px solid #7438D5;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
color: #7438D5;
margin-bottom: 14px;
cursor: pointer;
}
.child-agent-count-add i {
margin-right: 6px;
}
.child-agent-count-item {
margin-bottom: 14px;
}
.child-agent-count-select {
width: 150px;
}
.child-agent-count-man {
margin-left: 30px;
}
.child-agent-count-input {
width: 90px;
margin-left: 20px;
}
.level-tip {
margin-bottom: 20px;
border-radius: 5px;
background-color: #F1EBFA;
padding: 16px;
}
.el-input-group__append{
line-height: 30px;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/shopro.js"></script>
<div id="detailPage" v-cloak>
<el-form :model="formData" ref="formData" label-width="168px" v-if="formData">
<div class="level-tip">
新增或编辑等级后,请及时在分销商品中完善对应的差价规则
</div>
<div>
<div class="shopro-form-group-title">
<div class="shopro-form-group-title-line"></div>等级基本信息
</div>
<el-form-item label="等级权重:" prop="level">
<div class="display-flex" style="width: 410px;flex-wrap: wrap;">
<tempalte v-if="optType=='edit'">
<div class="shopro-level-item shopro-level-item-disable" v-if="formData.level!=1">
一级
</div>
<div class="shopro-level-item shopro-level-item-active" v-else>
<img class="active-icon" src="/assets/addons/shopro/img/goods/active.png">
一级
</div>
</tempalte>
<tempalte v-if="optType=='add'">
<div class="shopro-level-item shopro-level-item-disable">
一级
</div>
</tempalte>
<template v-for="(levelItem,levelIndex) in levelList" v-if="levelIndex>0 && formData.level!=1">
<div class="shopro-level-item" v-if="existLevel.includes(Number(levelItem.value))"
:class="[(existLevel.includes(Number(levelItem.value)) && formData.level!=levelItem.value)?'shopro-level-item-disable':'',formData.level==levelItem.value?'shopro-level-item-active':'']">
<img class="active-icon"
v-if="existLevel.includes(Number(levelItem.value)) && formData.level==levelItem.value"
src="/assets/addons/shopro/img/goods/active.png">
{{levelItem.title}}
</div>
<div class="shopro-level-item" v-else
:class="formData.level==levelItem.value?'shopro-level-item-active':''"
@click="selectLevel(levelIndex)">
<img class="active-icon"
v-if="formData.level==levelItem.value?'shopro-level-item-active':''"
src="/assets/addons/shopro/img/goods/active.png">
{{levelItem.title}}
</div>
</template>
</div>
</el-form-item>
<el-form-item label="等级名称:" prop="name">
<div class="level-name">
<el-input v-model="formData.name" placeholder="请输入等级名称" maxlength="6" size="small" show-word-limit>
</el-input>
</div>
</el-form-item>
<el-form-item label="等级徽章:" prop="image">
<div class="bgimage-add-container" @click="bgimageAdd">
<el-image v-if="formData.image" :src="Fast.api.cdnurl(formData.image)" fit="contain">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div class="bgimage-add" v-if="!formData.image">
<i class="el-icon-plus"></i>
</div>
</div>
</el-form-item>
<div class="shopro-form-group-title">
<div class="shopro-form-group-title-line"></div>等级差价比例
</div>
<div class="commission-rules-help">
<div class="commission-rules-help-title">说明:本页只配置「当前这一个等级」</div>
<p>每个等级需<strong>分别进入对应等级的编辑页</strong>填写差价。下面举例里的「白银40、黄金80」是指:在白银等级页填40,在黄金等级页填80,不是在同一页填三个数。</p>
<p><strong>关系链 / 管理奖</strong>:填的是<strong>本等级</strong>的比例,订单 100 元时,本等级拿 100×比例。</p>
<p><strong>级差档位</strong>:填的是<strong>本等级</strong>的固定档位(元),与订单金额无关;链上每人实际拿多少,要看自己档位与下级档位之差(见下方举例)。</p>
</div>
<el-form-item label="一级(自购)差价比例:" prop="commission_1">
<div class="commission-rate">
<el-input v-model="formData.commission_rules.commission_1" type="number" placeholder="如不填写默认为0"
size="small">
<template slot="append">%</template>
</el-input>
</div>
<div class="title-tip">关系链分佣:该等级作为直推(一级)时分销商所得比例。</div>
<div class="commission-rules-example">
例:设 10%,订单 100 元 → 直推分销商拿 100×10% = <strong>10 元</strong>。<br>
设 0% → 该等级作直推时不产生关系链差价。
</div>
</el-form-item>
<el-form-item label="二级差价比例:" prop="commission_2">
<div class="commission-rate">
<el-input v-model="formData.commission_rules.commission_2" type="number" placeholder="如不填写默认为0"
size="small">
<template slot="append">%</template>
</el-input>
</div>
<div class="title-tip">关系链分佣:该等级作为二级上级时分销商所得比例。</div>
<div class="commission-rules-example">
例:设 5%,订单 100 元 → 二级上级拿 100×5% = <strong>5 元</strong>。
</div>
</el-form-item>
<el-form-item label="三级差价比例:" prop="commission_3">
<div class="commission-rate">
<el-input v-model="formData.commission_rules.commission_3" type="number" placeholder="如不填写默认为0"
size="small">
<template slot="append">%</template>
</el-input>
</div>
<div class="title-tip">关系链分佣:该等级作为三级上级时分销商所得比例。</div>
<div class="commission-rules-example">
例:设 3%,订单 100 元 → 三级上级拿 100×3% = <strong>3 元</strong>。
</div>
</el-form-item>
<el-form-item label="级差档位金额:" prop="differential_amount">
<div class="commission-rate">
<el-input v-model="formData.commission_rules.differential_amount" type="number" placeholder="只填本等级的档位,如 80"
size="small">
<template slot="append">元</template>
</el-input>
</div>
<div class="title-tip">
<strong>只配置当前等级。</strong>此处填的数字 = 本等级在级差奖里的「档位上限」,与订单金额无关。其他等级请到各自等级页面单独填写。
</div>
<div class="commission-rules-example">
<strong>本栏填 80 是什么意思?</strong><br>
表示:属于<strong>本等级</strong>的分销商,级差档位按 <strong>80 元</strong> 参与计算。<br><br>
<!-- <strong>本等级的人实际拿多少?</strong>(公式:自己档位 − 下级链已占用档位,不足为 0)<br>
· 作直推(链上最靠近客户)→ 80−0 = <strong>80 元</strong><br>
· 下级档位 40 → 80−40 = <strong>40 元</strong><br>
· 下级档位也是 80(平级)→ 80−80 = <strong>0 元</strong><br>
· 下级档位 100、本等级 80 → 80−100 = <strong>0 元</strong>(档位低于下级,不拿)<br><br>
<strong>多等级怎么配?</strong>(每级各填一次,不是一页填三个)<br>
白银等级页填 40、黄金等级页填 80、钻石等级页填 120。<br>
客户下单、链为 C(白银)→B(黄金)→A(钻石) 时 → C拿40、B拿40、A拿40(与订单 100 还是 1000 无关)。<br>
若<strong>只有黄金填了 80</strong>、白银/钻石为 0 → 只有黄金档参与计算,白银直推拿 80,上级按差额算。 -->
</div>
</el-form-item>
<el-form-item label="管理奖比例:" prop="management_rate">
<div class="commission-rate">
<el-input v-model="formData.commission_rules.management_rate" type="number" placeholder="只填本等级的比例,如 4"
size="small">
<template slot="append">%</template>
</el-input>
</div>
<div class="title-tip"><strong>只配置当前等级。</strong>本等级分销商拿:订单金额 × 此处比例(与级差奖叠加)。</div>
<div class="commission-rules-example">
<strong>本栏填 4% 是什么意思?</strong><br>
订单 100 元 → 本等级分销商拿 100×4% = <strong>4 元</strong>;订单 200 元 → <strong>8 元</strong>。<br>
白银页填5%、黄金页填10%、钻石页填15% 时,链 C→B→A、订单100元 → 分别拿 5、10、15 元(各管各级,在各自等级页配置)。
</div>
</el-form-item>
</div>
<div v-if="formData.level!=1">
<div class="shopro-form-group-title">
<div class="shopro-form-group-title-line"></div>添加升级条件
</div>
<el-form-item label="升级方式:" prop="upgrade_type">
<div>
<el-radio-group v-model="formData.upgrade_type">
<el-radio :label="0">满足以下任意条件</el-radio>
<el-radio :label="1">满足以下全部条件</el-radio>
</el-radio-group>
</div>
</el-form-item>
<el-form-item>
<div>
<div>
<div class="upgrade-condition-item" :class="upgrade.selected?'upgrade-condition-item-active':''"
v-for="(upgrade,upgradeIndex) in upgradeCondition" v-if="upgradeIndex<4" @click="selectCondition(upgradeIndex)">
<img class="active-icon" v-if="upgrade.selected"
src="/assets/addons/shopro/img/goods/active.png">
<span>{{upgrade.title}}</span>
</div>
</div>
<div>
<div class="upgrade-condition-item" :class="upgrade.selected?'upgrade-condition-item-active':''"
v-for="(upgrade,upgradeIndex) in upgradeCondition" v-if="upgradeIndex>3 && upgradeIndex<8" @click="selectCondition(upgradeIndex)">
<img class="active-icon" v-if="upgrade.selected"
src="/assets/addons/shopro/img/goods/active.png">
<span v-if="upgradeIndex!=4">{{upgrade.title}}</span>
<el-popover placement="bottom" trigger="hover"
content="包含直推分销金额和内购分销金额">
<span v-if="upgradeIndex==4" slot="reference">{{upgrade.title}}</span>
</el-popover>
</div>
</div>
<div>
<div class="upgrade-condition-item" :class="upgrade.selected?'upgrade-condition-item-active':''"
v-for="(upgrade,upgradeIndex) in upgradeCondition" v-if="upgradeIndex>7 && upgradeIndex<12" @click="selectCondition(upgradeIndex)">
<img class="active-icon" v-if="upgrade.selected"
src="/assets/addons/shopro/img/goods/active.png">
<span v-if="upgradeIndex!=8">{{upgrade.title}}</span>
<el-popover placement="bottom" trigger="hover"
content="包含直推分销订单和内购分销订单">
<span v-if="upgradeIndex==8" slot="reference">{{upgrade.title}}</span>
</el-popover>
</div>
</div>
<div>
<div class="upgrade-condition-item" :class="upgrade.selected?'upgrade-condition-item-active':''"
v-for="(upgrade,upgradeIndex) in upgradeCondition" v-if="upgradeIndex>11 && upgradeIndex<15" @click="selectCondition(upgradeIndex)">
<img class="active-icon" v-if="upgrade.selected"
src="/assets/addons/shopro/img/goods/active.png">
<span>{{upgrade.title}}</span>
</div>
</div>
<div>
<div class="upgrade-condition-item" :class="upgrade.selected?'upgrade-condition-item-active':''"
v-for="(upgrade,upgradeIndex) in upgradeCondition" v-if="upgradeIndex>14" @click="selectCondition(upgradeIndex)">
<img class="active-icon" v-if="upgrade.selected"
src="/assets/addons/shopro/img/goods/active.png">
<span>{{upgrade.title}}</span>
</div>
</div>
</div>
</el-form-item>
<el-form-item :label="upgrade.title+':'" v-if="upgrade.selected"
v-for="(upgrade,uindex) in upgradeCondition" :prop="upgrade.key">
<div class="display-flex"
v-if="upgrade.key!='child_agent_level' && upgrade.key!='child_agent_level_1'">
<div class="commission-rate">
<el-input v-model="upgrade.value" type="number" size="small">
<template slot="append"
v-if="upgrade.key=='total_consume' || upgrade.key=='child_order_money' || upgrade.key=='child_order_money_1' || upgrade.key=='child_order_money_2' || upgrade.key=='order_money'">元</template>
<template slot="append"
v-if="upgrade.key=='child_agent_count' || upgrade.key=='child_agent_count_1' || upgrade.key=='child_agent_count_2' || upgrade.key=='child_user_count' || upgrade.key=='child_user_count_1' || upgrade.key=='child_user_count_2'">人</template>
<template slot="append"
v-if="upgrade.key=='order_count' || upgrade.key=='child_order_count_1' || upgrade.key=='child_order_count_2' || upgrade.key=='child_order_count'">单</template>
</el-input>
</div>
<i class="condition-delete el-icon-circle-close" @click="conditionDelete(uindex)"></i>
</div>
<div
v-if="upgrade.key=='child_agent_level' || upgrade.key=='child_agent_level_1'">
<div>
<div class="display-flex child-agent-count-item" v-for="(countItem,cindex) in upgrade.value">
<div class="child-agent-count-select">
<el-select v-model="countItem.level" placeholder="请选择分销商等级" no-data-text="等级已选择完毕" size="small">
<el-option v-for="item in levelOptions" :key="item.level"
:label="item.name+'(等级'+item.level+')'" :value="item.level"
v-if="Number(item.level)<=Number(formData.level) && Number(item.level)!=Number(editId)">
</el-option>
</el-select>
</div>
<div class="child-agent-count-man">满</div>
<div class="child-agent-count-input">
<el-input v-model="countItem.count" type="number" size="small">
<template slot="append">人</template>
</el-input>
</div>
<i class="condition-delete el-icon-circle-close" @click="childAgentCountDelete(uindex,cindex)"></i>
</div>
</div>
<div class="child-agent-count-add" @click="childAgentCountAdd(uindex)"
v-if="!formData.level || upgrade.value.length<selectLevelOptionsLength">
<i class="el-icon-plus"></i>添加</div>
</div>
</el-form-item>
</div>
</el-form>
<div class="shopro-submit-container">
<div class="shopro-submit-button" @click="formSubmit('formData')">确定</div>
</div>
<el-dialog title="提示" :visible.sync="deleteDialog" width="400" :before-close="deleteDialogClose">
<div class="display-flex" style="justify-content: space-between;">
<div>分销商移入其他等级</div>
<el-select v-model="moveLevel" placeholder="请选择" size="small">
<el-option v-for="item in levelOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="deleteDialogClose('define')">确 定</el-button>
</span>
</el-dialog>
</div>