初始上传
This commit is contained in:
54
addon/fenxiao/shop/view/goods/category_select.html
Executable file
54
addon/fenxiao/shop/view/goods/category_select.html
Executable file
@@ -0,0 +1,54 @@
|
||||
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
|
||||
<style>
|
||||
.goods-category-container {display: inline-block;position: relative;z-index: 10}
|
||||
</style>
|
||||
<div class="goods-category-container">
|
||||
<input type="text" autocomplete="off" show="false" class="layui-input select-category" placeholder="选择商品分类" readonly />
|
||||
<input type="hidden" name="category_id">
|
||||
</div>
|
||||
<script>
|
||||
var form, layCascader, goodsCategory = [];
|
||||
$(function() {
|
||||
layui.use(['form', 'layCascader'], function () {
|
||||
form = layui.form;
|
||||
layCascader = layui.layCascader;
|
||||
form.render();
|
||||
fetchCategory($('.goods-category-container .select-category'), function (value, node) {
|
||||
$('[name="category_id"]').val(value);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 渲染分类选择
|
||||
* @param elem
|
||||
* @param callback
|
||||
*/
|
||||
function fetchCategory(elem, callback){
|
||||
if (!goodsCategory.length) {
|
||||
$.ajax({
|
||||
url : ns.url("shop/goodscategory/lists"),
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
goodsCategory = res.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
if($('.select-category').length) {
|
||||
var _cascader = layCascader({
|
||||
elem: $('.select-category'),
|
||||
options: goodsCategory,
|
||||
props: {
|
||||
value: 'category_id',
|
||||
label: 'category_name',
|
||||
children: 'child_list'
|
||||
}
|
||||
});
|
||||
_cascader.changeEvent(function (value, node) {
|
||||
typeof callback == 'function' && callback(value, node)
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
377
addon/fenxiao/shop/view/goods/config.html
Executable file
377
addon/fenxiao/shop/view/goods/config.html
Executable file
@@ -0,0 +1,377 @@
|
||||
<style>
|
||||
.good-name {
|
||||
line-height: 34px;
|
||||
}
|
||||
|
||||
/* @media screen and (min-width: 1514px) {
|
||||
.len-short {width: 80px!important;}
|
||||
} */
|
||||
@media screen and (max-width: 1330px) {
|
||||
.len-short {width: 100px!important;}
|
||||
}
|
||||
#rule_list .layui-input {display: inline-block;}
|
||||
.layui-table[lay-size=lg] td, .layui-table[lay-size=lg] th {padding: 15px;}
|
||||
.align-right {text-align: right;}
|
||||
.align-center {text-align: center!important;}
|
||||
.line-height {line-height: 45px;}
|
||||
input[disabled] {background-color: #F5F5F5;}
|
||||
</style>
|
||||
|
||||
<div class="layui-collapse tips-wrap">
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">操作提示</h2>
|
||||
<ul class="layui-colla-content layui-show">
|
||||
<li>分销商层级与后台配置有关,最多三级分销。</li>
|
||||
<li>分销商等级与分销商的分销订单数,分销订单总额,自购订单数,自购订单总额,分销商下线人数,分销商的下级分销商人数有关。</li>
|
||||
<li>商品分销总佣金不得超过商品实际价格的50%。</li>
|
||||
<li>分销佣金是根据当前分销订单所属分销商等级或者商品自定义的计算规则进行结算。</li>
|
||||
<li>分销结算说明: A 、B 、C是分销商,C的上级为B,B的上级为A。
|
||||
分佣按照所属分销商的等级佣金比率进行分配,分销商C的等级分佣比率为一级10%,二级5%,三级2%,
|
||||
订单属于分销商C,则C获得商品实付金额10%,B获得商品实付金额5%,A获得商品实付金额2%。
|
||||
若C推荐的普通用户D购买商品,则该订单属于C;若C购买商品,则该订单属于C。</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form">
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">商品信息</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item goods-image-wrap">
|
||||
<label class="layui-form-label">商品图片:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="js-goods-image"><img layer-src src="{:img($goods_info.goods_image[0],'small')}" width="50px"/></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline good-name">{$goods_info.goods_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">佣金设置</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item goods-image-wrap">
|
||||
<label class="layui-form-label">是否参与分销:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_fenxiao" value="1" title="参与" lay-filter="is_fenxiao" {if $goods_info['is_fenxiao'] == 1 }checked{/if}>
|
||||
<input type="radio" name="is_fenxiao" value="0" title="不参与" lay-filter="is_fenxiao" {if $goods_info['is_fenxiao'] == 0 }checked{/if}>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>设置参与分销时,佣金会按照如下规则进行计算,如果有分销计算价则分销计算价优先。佣金 = 销售价*对应分销等级比例 / 佣金 = 分销计算价*对应分销等级比例</p>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods-image-wrap {if $goods_info['is_fenxiao'] == 0}layui-hide{/if}" id="fenxiao_price">
|
||||
<label class="layui-form-label">分销计算价格:</label>
|
||||
<div class="layui-input-block">
|
||||
<table class="layui-table" lay-skin="line">
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="20%">
|
||||
<col width="20%">
|
||||
<col width="20%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>商品规格</th>
|
||||
<th>销售价</th>
|
||||
<th>成本价</th>
|
||||
<th class="align-center">分销计算价</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<tr>
|
||||
<td>
|
||||
<div class="line-hiding">{$sku.goods_name}</div>
|
||||
<div style="color:#B2B2B2;">{$sku.spec_name}</div>
|
||||
</td>
|
||||
<td>{$sku.discount_price}</td>
|
||||
<td>{$sku.cost_price}</td>
|
||||
<td class="align-center">
|
||||
<input type="number" name="fenxiao_price[{$sku.sku_id}]" class="layui-input len-short input-rate" value="{$sku.fenxiao_price}" style="display: inline-block;"> 元
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>未设置分销计算价以该商品实付金额来计算佣金,设置后以该价格来计算佣金。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item {if $goods_info['is_fenxiao'] == 0}layui-hide{/if}" id="fenxiao_type">
|
||||
<label class="layui-form-label">佣金规则:</label>
|
||||
<div class="layui-input-inline good-name">
|
||||
<input type="radio" name="fenxiao_type" value="1" title="默认规则" lay-filter="fenxiao_type" {if $goods_info['fenxiao_type'] == 1 }checked{/if}>
|
||||
<input type="radio" name="fenxiao_type" value="2" title="单独设置" lay-filter="fenxiao_type" {if $goods_info['fenxiao_type'] == 2 }checked{/if}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item {if $goods_info['is_fenxiao'] == 0 || $goods_info['fenxiao_type'] == 2}layui-hide{/if}" id="default_rule">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table class="layui-table" id="default_rule_list" lay-skin="line" lay-size="lg">
|
||||
<colgroup>
|
||||
<col width="25%">
|
||||
<col width="25%">
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<col width="25%">
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<col width="25%">
|
||||
{/if}
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>默认规则</th>
|
||||
<th>一级佣金比例</th>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<th>二级佣金比例</th>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<th>三级佣金比例</th>
|
||||
{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $fenxiao_level as $level}
|
||||
<tr>
|
||||
<td>{$level.level_name}</td>
|
||||
<td>{$level.one_rate}%</td>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<td>{$level.two_rate}%</td>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<td>{$level.three_rate}%</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item {if $goods_info['is_fenxiao'] == 0 || $goods_info['fenxiao_type'] == 1}layui-hide{/if}" id="personal_rule">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table class="layui-table" id="rule_list" lay-skin="line" lay-size="lg">
|
||||
<colgroup>
|
||||
<col width="15%">
|
||||
<col width="10%">
|
||||
<col width="5%">
|
||||
<col width="10%">
|
||||
<col width="20%">
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<col width="20%">
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<col width="20%">
|
||||
{/if}
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>商品规格</th>
|
||||
<th><p class="align-right">价格</p></th>
|
||||
<th></th>
|
||||
<th><p class="line-hiding" title="分销商等级名称">分销商等级名称</p></th>
|
||||
<th>一级佣金比例</th>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<th>二级佣金比例</th>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<th>三级佣金比例</th>
|
||||
{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $fenxiao_level as $level}
|
||||
<tr>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<input name="fenxiao[{$level['level_id']}][sku_id][]" value="{$sku.sku_id}" hidden />
|
||||
<input name="fenxiao[{$level['level_id']}][sku_price][]" value="{$sku.price}" hidden />
|
||||
{/foreach}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p class="line-hiding line-height" title="{$sku.sku_name}">{$sku.sku_name}</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p class="align-right line-height" title="¥{$sku.price}">¥{$sku.price}</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
<td></td>
|
||||
<td>{$level.level_name}</td>
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] > 0}disabled{/if} > %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] > 0}disabled{/if} > 元</div>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="" > %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="" > 元</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] > 0}disabled{/if} > %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] > 0}disabled{/if} > 元</div>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value=""> %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value=""> 元</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] > 0}disabled{/if} > %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] > 0}disabled{/if} > 元</div>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="line-height">
|
||||
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value=""> %</div>
|
||||
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value=""> 元</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="single-filter-box">
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backFenxiaoGoodsList()">返回</button>
|
||||
</div>
|
||||
<input type="hidden" name="goods_id" value="{$goods_info.goods_id}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var fenxiao_type = {$goods_info.fenxiao_type};
|
||||
if (fenxiao_type == 1) {
|
||||
$(".layui-input").removeAttr("lay-verify");
|
||||
}
|
||||
layui.use(['form'], function() {
|
||||
var form = layui.form,
|
||||
repeat_flag = false;
|
||||
form.render();
|
||||
|
||||
$(".layui-input").each(function() {
|
||||
$(this).on('input', function(){
|
||||
var _this = $(this);
|
||||
if(Number($(_this).val()) > 0){
|
||||
$(this).parent().siblings().find("input").attr('disabled', true);
|
||||
$(this).parent().siblings().find("input").removeAttr("lay-verify");
|
||||
} else {
|
||||
$(this).parent().siblings().find("input").attr('disabled', false);
|
||||
$(this).parent().siblings().find("input").attr("lay-verify", "required|flnum");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 是否参与分销
|
||||
form.on("radio(is_fenxiao)", function (data) {
|
||||
if (data.value == 1) {
|
||||
$("#fenxiao_type,#fenxiao_price,#default_rule").removeClass("layui-hide");
|
||||
$(".layui-input").removeAttr("lay-verify");
|
||||
} else {
|
||||
$("#fenxiao_type,#fenxiao_price,#default_rule").addClass("layui-hide");
|
||||
$(".layui-input").attr("lay-verify", "required|flnum");
|
||||
}
|
||||
});
|
||||
|
||||
// 佣金规则
|
||||
form.on("radio(fenxiao_type)", function (data) {
|
||||
if (data.value == 1) {
|
||||
$("#default_rule").removeClass("layui-hide");
|
||||
$("#personal_rule").addClass("layui-hide");
|
||||
$(".layui-input").removeAttr("lay-verify");
|
||||
} else {
|
||||
$("#default_rule").addClass("layui-hide");
|
||||
$("#personal_rule").removeClass("layui-hide");
|
||||
$(".layui-input").attr("lay-verify", "required|flnum");
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("fenxiao://shop/goods/config"),
|
||||
data: data.field,
|
||||
async: false,
|
||||
success: function(res){
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
layer.msg('操作成功');
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
required: function (value) {
|
||||
if (value.trim() == '' || value < 0) {
|
||||
return '佣金比例不能为空,且必须大于0!';
|
||||
}
|
||||
},
|
||||
flnum: function (value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return "佣金比例最多可保留两位小数";
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function backFenxiaoGoodsList() {
|
||||
location.hash = ns.hash("fenxiao://shop/goods/lists");
|
||||
}
|
||||
</script>
|
||||
187
addon/fenxiao/shop/view/goods/detail.html
Executable file
187
addon/fenxiao/shop/view/goods/detail.html
Executable file
@@ -0,0 +1,187 @@
|
||||
<style>
|
||||
.align-right {text-align: right;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form">
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">商品信息</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item goods-image-wrap">
|
||||
<label class="layui-form-label">商品图片:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="js-goods-image"><img layer-src src="{:img($goods_info.goods_image[0],'small')}" width = "50px"/></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline good-name">{$goods_info.goods_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">佣金设置</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">佣金规则:</label>
|
||||
<div class="layui-input-inline good-name">
|
||||
{if $goods_info['fenxiao_type'] == 1 }默认规则{/if}
|
||||
{if $goods_info['fenxiao_type'] == 2 }单独设置{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="default_rule" {if condition="$goods_info['fenxiao_type'] == 2"} style="display:none" {/if}>
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table class="layui-table" id="default_rule_list" lay-skin="line" lay-size="lg">
|
||||
<colgroup>
|
||||
<col width="25%">
|
||||
<col width="25%">
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<col width="25%">
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<col width="25%">
|
||||
{/if}
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>默认规则</th>
|
||||
<th>一级佣金比例</th>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<th>二级佣金比例</th>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<th>三级佣金比例</th>
|
||||
{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $fenxiao_level as $level}
|
||||
<tr>
|
||||
<td>{$level.level_name}</td>
|
||||
<td>{$level.one_rate}%</td>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<td>{$level.two_rate}%</td>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<td>{$level.three_rate}%</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="personal_rule" {if condition="$goods_info['fenxiao_type'] == 1"} style="display:none" {/if}>
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table class="layui-table" id="rule_list" lay-skin="line" lay-size="lg">
|
||||
<colgroup>
|
||||
<col width="15%">
|
||||
<col width="10%">
|
||||
<col width="15%">
|
||||
<col width="20%">
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<col width="20%">
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<col width="20%">
|
||||
{/if}
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>商品规格</th>
|
||||
<th><p class="align-right">价格</p></th>
|
||||
<th><p class="line-hiding" title="分销商等级名称">分销商等级名称</p></th>
|
||||
<th>一级佣金比例</th>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<th>二级佣金比例</th>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<th>三级佣金比例</th>
|
||||
{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $fenxiao_level as $level}
|
||||
<tr>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
{/foreach}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p class="line-hiding line-height" title="{$sku.sku_name}">{$sku.sku_name}</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p class="align-right line-height" title="¥{$sku.price}">¥{$sku.price}</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
<td>{$level.level_name}</td>
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p>
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate']}%
|
||||
{/if}
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money']}元
|
||||
{/if}
|
||||
</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
{if $fenxiao_config.level >= 2}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p>
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate']}%
|
||||
{/if}
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money']}元
|
||||
{/if}
|
||||
</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
{/if}
|
||||
{if $fenxiao_config.level >= 3}
|
||||
<td>
|
||||
{foreach $goods_info['sku_data'] as $sku}
|
||||
<p>
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate']}%
|
||||
{/if}
|
||||
{if !empty($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money']) && $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] > 0}
|
||||
{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money']}元
|
||||
{/if}
|
||||
</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
<div class="form-row">
|
||||
<button class="layui-btn layui-btn-primary" onclick="backFenxiaoGoodsList()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function backFenxiaoGoodsList() {
|
||||
location.hash = ns.hash("fenxiao://shop/goods/lists");
|
||||
}
|
||||
</script>
|
||||
409
addon/fenxiao/shop/view/goods/lists.html
Executable file
409
addon/fenxiao/shop/view/goods/lists.html
Executable file
@@ -0,0 +1,409 @@
|
||||
<style>.table-tab{margin-top: 0;}</style>
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-colla-content layui-form layui-show">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_text" autocomplete="off" class="layui-input" placeholder="输入商品名称" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品类型:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="goods_class" lay-filter="goods_class">
|
||||
<option value="">全部</option>
|
||||
<option value="1">实物商品</option>
|
||||
<option value="2">虚拟商品</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">是否参与:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="is_fenxiao" lay-filter="is_fenxiao">
|
||||
<option value="">全部</option>
|
||||
<option value="1">已参与</option>
|
||||
<option value="0">未参与</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品分类:</label>
|
||||
<div class="layui-input-inline">
|
||||
{include file="goods/category_select" /}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">销量:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="start_sale" id="start_sale" lay-verify="int" placeholder="最低销量" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="end_sale" id="end_sale" lay-verify="int" placeholder="最高销量" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="goods_state" />
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit id="" lay-filter="search">筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-tab table-tab" lay-filter="fenxiao_goods_tab">
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="fenxiao_list" lay-filter="fenxiao_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 商品 -->
|
||||
<script type="text/html" id="goods_info">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
<img layer-src src="{{ns.img(d.goods_image.split(',')[0], 'small')}}"/>
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.goods_name}}">{{d.goods_name}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 状态 -->
|
||||
<script type="text/html" id="status">
|
||||
{{# if(d.status == 0){ }}
|
||||
<span style="color: red;">待审核</span>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<span style="color: green;">审核通过</span>
|
||||
{{# }else if(d.status == 2){ }}
|
||||
<span style="color: gray;">审核拒绝</span>
|
||||
{{# }else if(d.status == -1){ }}
|
||||
<span style="color: gray;">冻结</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 工具栏操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="operation-wrap" data-goods-id="{{d.goods_id}}">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="detail">详情</a>
|
||||
{{# if(d.is_fenxiao == 1){ }}
|
||||
<a class="layui-btn" lay-event="config">佣金设置</a>
|
||||
{{# }else{ }}
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="join">参与</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="cancel">不参与</button>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="batchOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="join">参与</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="cancel">不参与</button>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var form, element, repeat_flag, table;
|
||||
layui.use(['form', 'laydate','element'], function() {
|
||||
form = layui.form, element = layui.element, laydate = layui.laydate;
|
||||
form.render();
|
||||
|
||||
//渲染时间
|
||||
laydate.render({
|
||||
elem: '#start_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#end_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#fenxiao_list',
|
||||
url: ns.url("fenxiao://shop/goods/lists"),
|
||||
toolbar: '#toolbarOperation',
|
||||
bottomToolbar: "#batchOperation",
|
||||
cols: [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
unresize: 'false',
|
||||
width: '3%'
|
||||
},
|
||||
{
|
||||
title: '商品名称',
|
||||
unresize: 'false',
|
||||
templet: '#goods_info',
|
||||
width: '21%'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '价格',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '13%',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
unresize: 'false',
|
||||
width: '4%'
|
||||
}, {
|
||||
field: 'goods_stock',
|
||||
title: '库存',
|
||||
unresize: 'false',
|
||||
width: '8%'
|
||||
}, {
|
||||
field: 'sale_num',
|
||||
title: '销量',
|
||||
unresize: 'false',
|
||||
width: '8%'
|
||||
}, {
|
||||
title: '销售状态',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
if (data.goods_state == 1) {
|
||||
str = '<span style="color: green">销售中</span>';
|
||||
} else if (data.goods_state == 0) {
|
||||
str = '<span style="color: red">仓库中</span>';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '是否参与',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: function (data) {
|
||||
if(data.is_fenxiao == 1){
|
||||
return '<input type="checkbox" name="is_fenxiao" data-goods-id="'+ data.goods_id + '" value="1" lay-filter="is_fenxiao" lay-skin="switch" checked>';
|
||||
}else{
|
||||
return '<input type="checkbox" name="is_fenxiao" data-goods-id="'+ data.goods_id + '" value="0" lay-filter="is_fenxiao" lay-skin="switch">';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
title: '<div class="prompt-block">' + '规则' +
|
||||
'<div class="prompt">' +
|
||||
'<i class="iconfont iconwenhao1 required growth"></i>' +
|
||||
'<div class="growth-box reason-box reason-growth prompt-box" >' +
|
||||
'<div class="prompt-con">' +
|
||||
'<ul style="font-weight: 100">' +
|
||||
'<li>1、分销商层级与后台配置有关,最多三级分销。</li>' +
|
||||
'<li>2、分销商等级与分销商的分销订单数,分销订单总额,自购订单数,自购订单总额,分销商下线人数,分销商的下级分销商人数有关。</li>' +
|
||||
'<li>3、商品分销总佣金不得超过商品实际价格的50%。</li>' +
|
||||
'<li>4、分销佣金是根据当前分销订单所属分销商等级或者商品自定义的计算规则进行结算。</li>' +
|
||||
'<li>5、分销结算说明: A 、B 、C是分销商,C的上级为B,B的上级为A。' +
|
||||
'分佣按照所属分销商的等级佣金比率进行分配,分销商C的等级分佣比率为一级10%,二级5%,三级2%,' +
|
||||
'订单属于分销商C,则C获得商品实付金额10%,B获得商品实付金额5%,A获得商品实付金额2%。' +
|
||||
'若C推荐的普通用户D购买商品,则该订单属于C;若C购买商品,则该订单属于C。</li>' +
|
||||
'</ul>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
if (data.fenxiao_type == 1) {
|
||||
str = '默认规则';
|
||||
} else if (data.fenxiao_type == 2) {
|
||||
str = '单独设置';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
//按钮监控
|
||||
form.on('switch(is_fenxiao)', function(data){
|
||||
var goods_id = $(data.elem).attr('data-goods-id');
|
||||
modifyFenxiao(goods_id, data.value, data.elem);
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data,
|
||||
event = obj.event;
|
||||
switch (event) {
|
||||
case 'detail': //查看
|
||||
location.hash = ns.hash('fenxiao://shop/goods/detail', {'goods_id': data.goods_id});
|
||||
break;
|
||||
case 'config':
|
||||
//编辑
|
||||
location.hash = ns.hash("fenxiao://shop/goods/config", {"goods_id": data.goods_id});
|
||||
break;
|
||||
case 'modify':
|
||||
//删除
|
||||
modifyFenxiao(data.goods_id, data.is_fenxiao);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// 批量操作
|
||||
table.bottomToolbar(function (obj) {
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
var id_array = new Array();
|
||||
for (i in obj.data) id_array.push(obj.data[i].goods_id);
|
||||
switch (obj.event) {
|
||||
case "join":
|
||||
joinFenxiao(id_array);
|
||||
break;
|
||||
case 'cancel':
|
||||
//下架
|
||||
cancelFenxiao(id_array);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// 批量操作
|
||||
table.toolbar(function (obj) {
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
var id_array = new Array();
|
||||
for (i in obj.data) id_array.push(obj.data[i].goods_id);
|
||||
switch (obj.event) {
|
||||
case "join":
|
||||
joinFenxiao(id_array);
|
||||
break;
|
||||
case 'cancel':
|
||||
//下架
|
||||
cancelFenxiao(id_array);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
//配置参与状态
|
||||
function modifyFenxiao(goods_id, is_fenxiao, data) {
|
||||
if(is_fenxiao == 0){
|
||||
var fenxiao_tip = "如果商品尚未设置佣金规则,首次开启默认按照分销等级发放佣金,是否继续开启?";
|
||||
}else{
|
||||
var fenxiao_tip = "是否设置商品不参与分销?";
|
||||
}
|
||||
layer.confirm(fenxiao_tip,{
|
||||
btn: ['确定', '取消'],
|
||||
cancel: function(index, layero){
|
||||
if(is_fenxiao == 1){
|
||||
$(data).prop("checked",true);
|
||||
}else{
|
||||
$(data).prop("checked",false);
|
||||
}
|
||||
form.render();
|
||||
layer.close(index);
|
||||
return false;
|
||||
}
|
||||
}, function () {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
$.ajax({
|
||||
url: ns.url("fenxiao://shop/goods/modify"),
|
||||
data: {goods_id: goods_id, is_fenxiao:is_fenxiao},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
},function () {
|
||||
if(is_fenxiao == 1){
|
||||
$(data).prop("checked",true);
|
||||
form.render();
|
||||
}else{
|
||||
$(data).prop("checked",false);
|
||||
form.render();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function joinFenxiao(goods_ids){
|
||||
layer.confirm('批量参与分销的商品,如果之前未配置佣金规则,则默认按照分销等级发放佣金,是否继续?', {title: '提示'}, function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("fenxiao://shop/goods/setGoodsIsFenxiao"),
|
||||
data: {goods_ids: goods_ids.toString(), is_fenxiao: 1},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function cancelFenxiao(goods_ids) {
|
||||
layer.confirm('是否设置商品不参与分销?', {title: '提示'}, function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("fenxiao://shop/goods/setGoodsIsFenxiao"),
|
||||
data: {goods_ids: goods_ids.toString()},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user