初始上传
This commit is contained in:
429
app/shop/view/memberlevel/add_level.html
Executable file
429
app/shop/view/memberlevel/add_level.html
Executable file
@@ -0,0 +1,429 @@
|
||||
<style>
|
||||
.coupon-box{
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.coupon-box .layui-form{
|
||||
padding: 0!important;
|
||||
}
|
||||
|
||||
.layui-layer-page .layui-layer-content{
|
||||
overflow: auto !important;
|
||||
}
|
||||
|
||||
.del-btn {
|
||||
cursor: pointer;
|
||||
}
|
||||
.level-equity .layui-input {
|
||||
display: inline-block;
|
||||
}
|
||||
.gods-box table:first-of-type{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.gods-box table:last-of-type{
|
||||
margin-top: 0;
|
||||
display: block;
|
||||
max-height: 323px;
|
||||
overflow: auto;
|
||||
}
|
||||
.coupon-box .single-filter-box{
|
||||
padding-top: 0;
|
||||
}
|
||||
.align-center{
|
||||
text-align: center!important;
|
||||
}
|
||||
.coupon-box td,th{
|
||||
padding: 15px 10px !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.gods-box .layui-table#goods tbody{
|
||||
width: 100%;
|
||||
}
|
||||
[name="growth"]::placeholder {
|
||||
font-size: 12px;
|
||||
}
|
||||
</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">
|
||||
<label class="layui-form-label"><span class="required">*</span>等级名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="level_name" type="text" lay-verify="required" class="layui-input len-long" maxlength="40">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级说明:</label>
|
||||
<div class="layui-input-block len-long">
|
||||
<textarea name="remark" class="layui-textarea" maxlength="150"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级封面背景色:</label>
|
||||
<div class="layui-input-block flex">
|
||||
<input name="bg_color" type="hidden" value="#333333" class="layui-input len-short" id="bg_color_input">
|
||||
<div id="bg_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级文字颜色:</label>
|
||||
<div class="layui-input-block ">
|
||||
<input name="level_text_color" type="hidden" value="#ffffff" class="layui-input len-short" id="level_text_color_input">
|
||||
<div id="level_text_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">背景图:</label>
|
||||
<div class="layui-input-block img-upload">
|
||||
<div class="upload-img-block">
|
||||
<div class="upload-img-box">
|
||||
<div class="upload-default" id="imgUpload">
|
||||
<div class="upload">
|
||||
<i class="iconfont iconshangchuan"></i>
|
||||
<p>点击上传</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div>
|
||||
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
|
||||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
|
||||
</div>
|
||||
<div class="replace_img js-replace">点击替换</div>
|
||||
</div>
|
||||
<input type="hidden" name="level_picture" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="word-aux">
|
||||
<p>尺寸:1000*525像素,小于1M,支持jpg、png、jpeg格式,上传背景图后,手机端将不会展示背景颜色,优先展示背景图</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gratis-wrap">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>所需成长值:</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="growth" type="number" lay-verify="required|growth" min="0" class="layui-input len-short" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
|
||||
</div>
|
||||
{if $growth_up > 0}
|
||||
<div class="word-aux">所设成长值需大于{:round($growth_up)}</div>
|
||||
{/if}
|
||||
<div class="word-aux">修改等级所需成长值后,部分客户会因无法达到该成长值要求而发生会员等级的变化</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common card-brief level-equity" >
|
||||
<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-block">
|
||||
<input type="checkbox" name="is_free_shipping" value="1" lay-skin="switch" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>消费折扣:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="consume_discount" min="0" max="100" lay-verify="fl" autocomplete="off" class="layui-input len-short"> %
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">积分回馈倍率:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="point_feedback" min="0" max="100" lay-verify="jf" autocomplete="off" class="layui-input len-short"> 倍
|
||||
</div>
|
||||
<div class="word-aux">回馈积分 = 消费金额 * 积分回馈倍率</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-block">
|
||||
<input name="send_point" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">赠送红包:</label>
|
||||
<div class="layui-input-block len-long">
|
||||
<input name="send_balance" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">赠送优惠券:</label>
|
||||
<div class="layui-input-block">
|
||||
<div id="coupon_list"></div>
|
||||
<button class="layui-btn" id="select_coupon">选择优惠券</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-body">
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
|
||||
<script>
|
||||
var coupon_id = [], addCoupon;
|
||||
var form,colorpicker;
|
||||
var coupon_select = new CouponSelect({
|
||||
tableElem:'#coupon_list',
|
||||
selectElem:'#select_coupon',
|
||||
})
|
||||
|
||||
layui.use(['form', 'laytpl', 'colorpicker'], function() {
|
||||
form = layui.form;
|
||||
colorpicker = layui.colorpicker;
|
||||
var laytpl = layui.laytpl,
|
||||
repeat_flag = false; //防重复标识
|
||||
form.render();
|
||||
|
||||
var logo_upload = new Upload({
|
||||
elem: '#imgUpload'
|
||||
});
|
||||
|
||||
colorpicker.render({
|
||||
elem: '#bg_color', //绑定元素
|
||||
color: "#333333",
|
||||
done: function(color) {
|
||||
$("#bg_color_input").attr("value", color);
|
||||
}
|
||||
});
|
||||
|
||||
colorpicker.render({
|
||||
elem: '#level_text_color', //绑定元素
|
||||
color: "#ffffff",
|
||||
done: function(color) {
|
||||
$("#level_text_color_input").attr("value", color);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听保存
|
||||
*/
|
||||
form.on('submit(save)', function(data) {
|
||||
data.field.send_coupon = coupon_select.getSelectedData().selectedIds.toString();
|
||||
data.field.growth = parseInt(data.field.growth);
|
||||
if (repeat_flag) return false;
|
||||
|
||||
repeat_flag = true;
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/addlevel"),
|
||||
data: data.field,
|
||||
dataType: 'JSON', //服务器返回json格式数据
|
||||
type: 'POST', //http请求类型
|
||||
success: function(res) {
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
layer.confirm('添加成功', {
|
||||
title:'操作提示',
|
||||
btn: ['返回列表', '继续添加'],
|
||||
closeBtn: 0,
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("shop/memberlevel/levellist")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
num: function(value) {
|
||||
var arrmen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrmen.length == 2) {
|
||||
val = arrmen[1];
|
||||
}
|
||||
|
||||
if (value == "") {
|
||||
return false;
|
||||
}
|
||||
if (value < 0 || val.length > 2) {
|
||||
return '请输入大于0的数,保留小数点后两位'
|
||||
}
|
||||
},
|
||||
fl: function(value, item) {
|
||||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||||
str = str.substring(0, str.length - 1);
|
||||
|
||||
if (isNaN(parseFloat(value))) {
|
||||
return "请设置" + str;
|
||||
}
|
||||
|
||||
if (value <= 0) {
|
||||
return str + "不能小于等于0";
|
||||
}
|
||||
|
||||
if (value > 100) {
|
||||
return str + "不能大于100";
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return str + "最多可保留两位小数";
|
||||
}
|
||||
},
|
||||
jf: function(value, item) {
|
||||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||||
str = str.substring(0, str.length - 1);
|
||||
|
||||
if (value < 0) {
|
||||
return str + "不能小于0";
|
||||
}
|
||||
|
||||
if (value > 100) {
|
||||
return str + "不能大于100";
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return str + "最多可保留两位小数";
|
||||
}
|
||||
},
|
||||
growth: function (value, item) {
|
||||
let min = parseInt("{$growth_up}");
|
||||
if (isNaN(parseInt(value))) return "请设置成长值";
|
||||
|
||||
if (value > 99999999) return '成长值最大99999999';
|
||||
|
||||
if (parseInt(value) <= min) {
|
||||
return "成长值必须大于" + min;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function back(){
|
||||
location.hash = ns.hash("shop/memberlevel/levellist");
|
||||
}
|
||||
|
||||
//添加付费规则
|
||||
function addRule() {
|
||||
let level_select = {:json_encode($level_time, JSON_UNESCAPED_UNICODE)};
|
||||
$('#level-rule tr').each(function (i, e) {
|
||||
if($(e).find('select').val() && $(e).find('select').val() != undefined){
|
||||
delete level_select[$(e).find('select').val()];
|
||||
}
|
||||
});
|
||||
|
||||
var select_html = '';
|
||||
for (let i in level_select){
|
||||
select_html += '<option value="'+i+'">'+level_select[i]+'</option>';
|
||||
}
|
||||
|
||||
var html = `
|
||||
<tr>
|
||||
<td>
|
||||
<div class="len-short">
|
||||
<select lay-filter="selectRule">
|
||||
${select_html}
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<input type="text" value="0" lay-verify="num" class="layui-input len-short price" placeholder="价格/元">
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript:void(0)" class="text-color" onclick="deleteRule(this)">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
$('#level-rule tbody').append(html);
|
||||
if($('#level-rule tr').length == 5){
|
||||
$('#add_rule_btn').hide()
|
||||
}
|
||||
form.render();
|
||||
form.on('select(selectRule)', function(data){
|
||||
let num = 0;
|
||||
$('#level-rule tr').each(function (i, e) {
|
||||
if($(e).find('select').val() == data.value){
|
||||
num++;
|
||||
$('.delete-rule').removeClass('delete-rule');
|
||||
$(e).find('select').addClass('delete-rule');
|
||||
}
|
||||
})
|
||||
if(num > 1) deleteRule($('.delete-rule'));
|
||||
});
|
||||
|
||||
form.verify({
|
||||
num: function (value) {
|
||||
var arrmen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrmen.length == 2) {
|
||||
val = arrmen[1];
|
||||
}
|
||||
|
||||
if (value == "") {
|
||||
return false;
|
||||
}
|
||||
if (value <= 0 || val.length > 2) {
|
||||
return '请输入大于0的数,保留小数点后两位'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function deleteRule(obj) {
|
||||
$(obj).parents('tr').remove();
|
||||
if($('#level-rule tr').length < 5){
|
||||
$('#add_rule_btn').show()
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
454
app/shop/view/memberlevel/edit_level.html
Executable file
454
app/shop/view/memberlevel/edit_level.html
Executable file
@@ -0,0 +1,454 @@
|
||||
<style>
|
||||
.coupon-box{
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.coupon-box .layui-form{
|
||||
padding: 0!important;
|
||||
}
|
||||
|
||||
.layui-layer-page .layui-layer-content{
|
||||
overflow: auto !important;
|
||||
}
|
||||
|
||||
.del-btn {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.level-equity .layui-input {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.gods-box table:first-of-type{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.gods-box table:last-of-type{
|
||||
margin-top: 0;
|
||||
display: block;
|
||||
max-height: 323px;
|
||||
overflow: auto;
|
||||
}
|
||||
.coupon-box .single-filter-box{
|
||||
padding-top: 0;
|
||||
}
|
||||
.coupon-box td,th{
|
||||
padding: 15px 10px !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.gods-box .layui-table#goods tbody{
|
||||
width: 100%;
|
||||
}
|
||||
</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">
|
||||
<label class="layui-form-label"><span class="required">*</span>等级名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="level_name" value="{$level_info.level_name}" type="text" lay-verify="required" class="layui-input len-long" maxlength="40">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级说明:</label>
|
||||
<div class="layui-input-block len-long">
|
||||
<textarea name="remark" class="layui-textarea" maxlength="150">{$level_info.remark}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级封面背景色:</label>
|
||||
<div class="layui-input-block flex">
|
||||
<input name="bg_color" type="hidden" value="{$level_info.bg_color}" class="layui-input len-short" id="bg_color_input">
|
||||
<div id="bg_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">等级文字颜色:</label>
|
||||
<div class="layui-input-block ">
|
||||
<input name="level_text_color" type="hidden" value="{$level_info.level_text_color}" class="layui-input len-short" id="level_text_color_input">
|
||||
<div id="level_text_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">背景图:</label>
|
||||
<div class="layui-input-block img-upload">
|
||||
<div class="upload-img-block">
|
||||
<div class="upload-img-box {if condition="!empty($level_info.level_picture)"}hover{/if} ">
|
||||
<div class="upload-default" id="imgUpload">
|
||||
{if condition="!empty($level_info.level_picture)"}
|
||||
<div id="preview_logoUpload" class="preview_img">
|
||||
<img layer-src src="{:img($level_info.level_picture)}" class="img_prev"/>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="upload">
|
||||
<i class="iconfont iconshangchuan"></i>
|
||||
<p>点击上传</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="operation">
|
||||
<div>
|
||||
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
|
||||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
|
||||
</div>
|
||||
<div class="replace_img js-replace">点击替换</div>
|
||||
</div>
|
||||
<input type="hidden" name="level_picture" value="{$level_info.level_picture}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="word-aux">
|
||||
<p>尺寸:1000*525像素,小于1M,支持jpg、png、jpeg格式,上传背景图后,手机端将不会展示背景颜色,优先展示背景图</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gratis-wrap {if $level_info['level_type'] == 1}layui-hide{/if}">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>所需成长值:</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="growth" value="{:round($level_info.growth)}" type="number" {if $level_info['level_type'] == 0}lay-verify="required|growth"{/if} min="0" class="layui-input len-short" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
|
||||
</div>
|
||||
{if $growth_up > 0 && $growth_down > 0}
|
||||
<div class="word-aux">所设成长值需在{:round($growth_up + 1)}~{:round($growth_down - 1)}之间</div>
|
||||
{else/}
|
||||
{if $growth_up > 0}
|
||||
<div class="word-aux">所设成长值需大于{:round($growth_up)}</div>
|
||||
{/if}
|
||||
{if $growth_down > 0}
|
||||
<div class="word-aux">所设成长值需小于{:round($growth_down)}</div>
|
||||
{/if}
|
||||
{/if}
|
||||
<div class="word-aux">修改等级所需成长值后,部分客户会因无法达到该成长值要求而发生会员等级的变化</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common card-brief level-equity">
|
||||
<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-block">
|
||||
<input type="checkbox" name="is_free_shipping" value="1" {if $level_info.is_free_shipping == 1} checked {/if} lay-skin="switch" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>消费折扣:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="consume_discount" value="{$level_info.consume_discount}" lay-verify="fl" min="0" max="100" autocomplete="off" class="layui-input len-short"> %
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">积分回馈倍率:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="point_feedback" value="{$level_info.point_feedback}" lay-verify="jf" min="0" max="100" autocomplete="off" class="layui-input len-short"> 倍
|
||||
</div>
|
||||
<div class="word-aux">回馈积分 = 消费金额 * 积分回馈倍率</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-block">
|
||||
<input name="send_point" value="{$level_info.send_point}" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">赠送红包:</label>
|
||||
<div class="layui-input-block len-long">
|
||||
<input name="send_balance" value="{$level_info.send_balance}" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">赠送优惠券:</label>
|
||||
<div class="layui-input-block">
|
||||
<div id="coupon_list"></div>
|
||||
<button class="layui-btn" id="select_coupon">选择优惠券</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="level_id" value="{$level_info.level_id}">
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-body">
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="__STATIC__/ext/colorPicker/js/colorpicker.js"></script>
|
||||
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
|
||||
<script>
|
||||
var coupon_id = [], addCoupon;
|
||||
var form,colorpicker;
|
||||
|
||||
var coupon_select = new CouponSelect({
|
||||
tableElem:'#coupon_list',
|
||||
selectElem:'#select_coupon',
|
||||
selectedIds:'{$level_info.send_coupon}',
|
||||
})
|
||||
|
||||
layui.use(['form', 'laytpl', 'colorpicker'], function() {
|
||||
form = layui.form;
|
||||
colorpicker = layui.colorpicker;
|
||||
var laytpl = layui.laytpl,
|
||||
repeat_flag = false; //防重复标识
|
||||
form.render();
|
||||
|
||||
/*couponId();*/
|
||||
|
||||
var logo_upload = new Upload({
|
||||
elem: '#imgUpload'
|
||||
});
|
||||
colorpicker.render({
|
||||
elem: '#bg_color', //绑定元素
|
||||
color: "{$level_info.bg_color}",
|
||||
done: function(color) {
|
||||
$("#bg_color_input").attr("value", color);
|
||||
}
|
||||
});
|
||||
|
||||
colorpicker.render({
|
||||
elem: '#level_text_color', //绑定元素
|
||||
color: "{$level_info.level_text_color}",
|
||||
done: function(color) {
|
||||
$("#level_text_color_input").attr("value", color);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听保存
|
||||
*/
|
||||
form.on('submit(save)', function(data) {
|
||||
data.field.send_coupon = coupon_select.getSelectedData().selectedIds.toString();
|
||||
data.field.growth = parseInt(data.field.growth);
|
||||
if(repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/editLevel"),
|
||||
data: data.field,
|
||||
type: "POST",
|
||||
dataType: "JSON",
|
||||
success: function(res) {
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
layer.confirm('编辑成功', {
|
||||
title:'操作提示',
|
||||
btn: ['返回列表', '继续操作'],
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("shop/memberlevel/levelList")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
num: function(value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
|
||||
if (value == "") {
|
||||
return false;
|
||||
}
|
||||
if (value < 0 || val.length > 2) {
|
||||
return '请输入大于0的数,保留小数点后两位'
|
||||
}
|
||||
},
|
||||
fl: function(value, item) {
|
||||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||||
str = str.substring(0, str.length - 1);
|
||||
|
||||
if (isNaN(parseFloat(value))) {
|
||||
return "请设置" + str;
|
||||
}
|
||||
|
||||
if (value <= 0) {
|
||||
return str + "不能小于等于0";
|
||||
}
|
||||
|
||||
if (value > 100) {
|
||||
return str + "不能大于100";
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return str + "最多可保留两位小数";
|
||||
}
|
||||
},
|
||||
jf: function(value, item) {
|
||||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||||
str = str.substring(0, str.length - 1);
|
||||
|
||||
if (value < 0) {
|
||||
return str + "不能小于0";
|
||||
}
|
||||
|
||||
if (value > 100) {
|
||||
return str + "不能大于100";
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return str + "最多可保留两位小数";
|
||||
}
|
||||
},
|
||||
growth: function (value, item) {
|
||||
let min = parseInt("{$growth_up}");
|
||||
let max = parseInt("{$growth_down}");
|
||||
if (isNaN(parseInt(value))) return "请设置成长值";
|
||||
|
||||
if(value > 99999999) return '成长值最大99999999';
|
||||
|
||||
if (min > 0 && max > 0) {
|
||||
if (value <= min || value >= max) {
|
||||
return '成长值需设置为' + min + '~' + max + '之间的值';
|
||||
}
|
||||
} else {
|
||||
if (value <= min) {
|
||||
return '成长值不能小于等于' + min;
|
||||
}
|
||||
if (max > 0 && value >= max) {
|
||||
return '成长值不能大于等于' + max;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
function back(){
|
||||
location.hash = ns.hash("shop/memberlevel/levelList");
|
||||
}
|
||||
|
||||
//添加付费规则
|
||||
function addRule() {
|
||||
let level_select = {:json_encode($level_time, JSON_UNESCAPED_UNICODE)};
|
||||
$('#level-rule tr').each(function (i, e) {
|
||||
if($(e).find('select').val() && $(e).find('select').val() != undefined){
|
||||
delete level_select[$(e).find('select').val()];
|
||||
}
|
||||
});
|
||||
|
||||
var select_html = '';
|
||||
for (let i in level_select){
|
||||
select_html += '<option value="'+i+'">'+level_select[i]+'</option>';
|
||||
}
|
||||
|
||||
var html = `
|
||||
<tr>
|
||||
<td>
|
||||
<div class="len-short">
|
||||
<select lay-filter="selectRule">
|
||||
${select_html}
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<input type="text" value="0" lay-verify="num" class="layui-input len-short price" placeholder="价格/元">
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript:void(0)" class="text-color" onclick="deleteRule(this)">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
$('#level-rule tbody').append(html);
|
||||
if($('#level-rule tr').length == 5){
|
||||
$('#add_rule_btn').hide()
|
||||
}
|
||||
form.render();
|
||||
form.on('select(selectRule)', function(data){
|
||||
let num = 0;
|
||||
$('#level-rule tr').each(function (i, e) {
|
||||
if($(e).find('select').val() == data.value){
|
||||
num++;
|
||||
$('.delete-rule').removeClass('delete-rule');
|
||||
$(e).find('select').addClass('delete-rule');
|
||||
}
|
||||
})
|
||||
if(num > 1) deleteRule($('.delete-rule'));
|
||||
});
|
||||
|
||||
form.verify({
|
||||
num: function (value) {
|
||||
var arrmen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrmen.length == 2) {
|
||||
val = arrmen[1];
|
||||
}
|
||||
|
||||
if (value == "") {
|
||||
return false;
|
||||
}
|
||||
if (value <= 0 || val.length > 2) {
|
||||
return '请输入大于0的数,保留小数点后两位'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function deleteRule(obj) {
|
||||
$(obj).parents('tr').remove();
|
||||
if($('#level-rule tr').length < 5){
|
||||
$('#add_rule_btn').show()
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
301
app/shop/view/memberlevel/level_list.html
Executable file
301
app/shop/view/memberlevel/level_list.html
Executable file
@@ -0,0 +1,301 @@
|
||||
<style>
|
||||
.vip-name{
|
||||
color: #b38f47;
|
||||
}
|
||||
.level-equity{
|
||||
line-height: 1.6;
|
||||
}
|
||||
.stat-list{color: #999;}
|
||||
.stat-list .textcourse{cursor: pointer;}
|
||||
.layui-table-view .layui-table .layui-table-cell .titleVip{color: #b38f47;}
|
||||
.main-wrap .stat-list{padding: 0 20px;}
|
||||
.stat-list .levellistTip{height: 48px;line-height: 48px;background: #FFF5ED;color: #666;font-weight: 400;padding: 0 16px;box-sizing:border-box;}
|
||||
</style>
|
||||
|
||||
<!-- 搜索框 -->
|
||||
{if $is_update}
|
||||
<div class="stat-list">
|
||||
<div class="levellistTip bg-color-light-9">
|
||||
<span class="iconfont icongantanhao tanhao text-color"></span>
|
||||
你已手动修改了等级规则,新会员已生效,老会员未实时生效,如需对所有会员一起生效,请
|
||||
<span onclick="memberlevel()" class="text-color textcourse">更新会员等级</span>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
{/if}
|
||||
<table id="level_list" lay-filter="level_list"></table>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
{{# if(d.level_id > 0){ }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
{{# } }}
|
||||
{{# if(d.is_show == 1 && d.status == 0){ }}
|
||||
<a class="layui-btn" lay-event="sale">启用</a>
|
||||
{{# } }}
|
||||
{{# if(d.is_show == 1 && d.status == 1){ }}
|
||||
<a class="layui-btn" lay-event="offsale">停用</a>
|
||||
{{# } }}
|
||||
{{# if(d.is_add == 1){ }}
|
||||
<a class="layui-btn" lay-event="add">待配置</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var table, form , repeat_flag = false; //防重复标识
|
||||
layui.use(['form'], function() {
|
||||
form = layui.form;
|
||||
|
||||
table = new Table({
|
||||
elem: '#level_list',
|
||||
url: ns.url("shop/memberlevel/levelList"),
|
||||
page: false,
|
||||
cols: [
|
||||
[{
|
||||
title: '会员等级',
|
||||
width: '10%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
return "<span class='vip-name'>" + data.level_vip + '</span>';
|
||||
}
|
||||
}, {
|
||||
field: 'level_name',
|
||||
title: '等级名称',
|
||||
width: '13%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
if (parseInt(data.level_id) > 0) {
|
||||
return data.level_name;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
field: 'growth',
|
||||
title: '成长值',
|
||||
width: '15%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
if (parseInt(data.level_id) > 0) {
|
||||
return parseInt(data.growth);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
field: '',
|
||||
title: '等级权益',
|
||||
width: '20%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
if (parseInt(data.level_id) > 0) {
|
||||
var text = '<div class="level-equity">';
|
||||
if (data.is_free_shipping == 1) text += '<div>购物享商品包邮</div>';
|
||||
if (data.consume_discount != 100) text += '<div>购物享' + (data.consume_discount / 10) + '折优惠</div>';
|
||||
if (data.point_feedback > 0) text += '<div>购物享' + data.point_feedback + '倍积分回馈</div>';
|
||||
text += '</div>'
|
||||
return text;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
field: '',
|
||||
title: '等级礼包',
|
||||
width: '20%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
if (parseInt(data.level_id) > 0) {
|
||||
var text = '<div class="level-equity">';
|
||||
if (data.send_point > 0) text += '<div>获赠' + data.send_point + '积分</div>';
|
||||
if (data.send_balance > 0) text += '<div>获赠' + data.send_balance + '元红包</div>';
|
||||
if (data.send_coupon != '') text += '<div>获赠' + data.send_coupon.split(',').length + '张优惠券</div>';
|
||||
text += '</div>'
|
||||
return text;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
field: 'member_num',
|
||||
title: '持有人数',
|
||||
width: '10%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
if (parseInt(data.level_id) > 0) {
|
||||
return parseInt(data.member_num);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
unresize: 'false',
|
||||
toolbar: '#operation',
|
||||
align: 'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 工具栏操作,编辑、删除
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data,
|
||||
event = obj.event;
|
||||
|
||||
switch (event) {
|
||||
case 'add':
|
||||
location.hash = ns.hash("shop/memberlevel/addlevel");
|
||||
break;
|
||||
case 'edit':
|
||||
location.hash = ns.hash("shop/memberlevel/editLevel?level_id=" + data.level_id);
|
||||
break;
|
||||
case 'del':
|
||||
delMemberLevel(data.level_id);
|
||||
break;
|
||||
case 'sale':
|
||||
saleMemberCard(data.level_id);
|
||||
break;
|
||||
case 'offsale':
|
||||
offsaleMemberCard(data.level_id);
|
||||
break;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 停用状态
|
||||
*/
|
||||
function offsaleMemberCard(level_id) {
|
||||
layer.confirm('停用等级将对已有会员造成影响,如需停用请提前公告,以免造成不必要客诉,请谨慎操作。', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/statuslevel"),
|
||||
data: {
|
||||
level_id: level_id,
|
||||
status: 0,
|
||||
type: 'level'
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
function saleMemberCard(level_id) {
|
||||
layer.confirm('启用等级后,会员等级将重新计算,原会员可能会发生等级变动,变动将在一段时间内完成 !', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/statuslevel"),
|
||||
data: {
|
||||
status: 1,
|
||||
level_id: level_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload( {
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
// 删除方法
|
||||
function delMemberLevel(level_id) {
|
||||
if(repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
|
||||
layer.confirm('确定要删除该等级吗?', function(index) {
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ns.url("shop/memberlevel/deleteLevel"),
|
||||
data: {level_id},
|
||||
dataType: 'JSON',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
|
||||
if(res.code == 0){
|
||||
table.reload();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 点击跳转添加会员卡页面
|
||||
*/
|
||||
function addLevel() {
|
||||
location.hash = ns.hash("shop/memberlevel/addLevel");
|
||||
}
|
||||
|
||||
//更新会员等级
|
||||
function memberlevel(){
|
||||
layer.confirm('更新会员等级会对所有会员的等级进行更新,需要一定的时间,并且更新过程中无法编辑等级,建议完成所有规则调整后,再进行更新', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/startlevel"),
|
||||
data: {
|
||||
status: 0
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
listenerHash(); // 刷新页面
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
123
app/shop/view/memberlevel/level_records.html
Executable file
123
app/shop/view/memberlevel/level_records.html
Executable file
@@ -0,0 +1,123 @@
|
||||
<style>
|
||||
.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{line-height: 2}
|
||||
</style>
|
||||
|
||||
<!-- 搜索框 -->
|
||||
<div class="single-filter-box">
|
||||
<div class="layui-form">
|
||||
|
||||
<div class="layui-input-inline">
|
||||
<select name="change_type">
|
||||
<option value="">请选择变更方式</option>
|
||||
{foreach $level_change_type as $k => $v}
|
||||
<option value="{$k}">{$v}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_text" placeholder="请输入会员名称/手机号" autocomplete="off" class="layui-input">
|
||||
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
|
||||
<i class="layui-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="member_info">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
<img layer-src src="{{ns.img(d.headimg)}}" onerror="this.src = '{:img('public/static/img/default_img/head.png')}' "/>
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color" title="{{d.nickname}}">{{d.nickname}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<table id="records_list" lay-filter="records_list"></table>
|
||||
|
||||
<script>
|
||||
layui.use(['form'], function() {
|
||||
var table, form = layui.form;
|
||||
|
||||
/**
|
||||
* 加载表格
|
||||
*/
|
||||
table = new Table({
|
||||
elem: '#records_list',
|
||||
url: ns.url("shop/memberlevel/levelrecords"),
|
||||
cols: [
|
||||
[{
|
||||
field: 'level_name',
|
||||
title: '会员信息',
|
||||
width: '16%',
|
||||
unresize: 'false',
|
||||
templet: '#member_info'
|
||||
},{
|
||||
field: 'before_level_name',
|
||||
title: '变更前',
|
||||
width: '12%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
let html = '类型:';
|
||||
html += data.before_level_type == 0 ? '免费卡': '付费卡';
|
||||
html += '<br>名称:'+data.before_level_name;
|
||||
return html
|
||||
}
|
||||
},{
|
||||
field: 'after_level_name',
|
||||
title: '变更后',
|
||||
width: '12%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
let html = '类型:';
|
||||
html += data.after_level_type == 0 ? '免费卡': '付费卡';
|
||||
html += '<br>名称:'+data.after_level_name;
|
||||
return html
|
||||
}
|
||||
}, {
|
||||
field: 'change_time',
|
||||
title: '变更时间',
|
||||
width: '15%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.change_time);
|
||||
}
|
||||
|
||||
},{
|
||||
field: 'action_type',
|
||||
title: '操作人类型',
|
||||
width: '10%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
return data.action_type == 'user' ? '后台用户': '会员自身';
|
||||
}
|
||||
},{
|
||||
field: 'action_name',
|
||||
title: '操作人',
|
||||
width: '10%',
|
||||
unresize: 'false'
|
||||
}, {
|
||||
field:'change_type_name',
|
||||
title: '变更方式',
|
||||
width: '10%',
|
||||
unresize: 'false',
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload( {
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
275
app/shop/view/memberlevel/order.html
Executable file
275
app/shop/view/memberlevel/order.html
Executable file
@@ -0,0 +1,275 @@
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-form layui-colla-content layui-form layui-show" lay-filter="order_list" action="javascript:;">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单号:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="order_no">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">购买人昵称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="nickname">
|
||||
</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="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单状态:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" lay-filter="status">
|
||||
<option value="">全部</option>
|
||||
<option value="0">待支付</option>
|
||||
<option value="1">已支付</option>
|
||||
<option value="-1">已关闭</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 订单列表 -->
|
||||
<table id="order_list" lay-filter="order_list"></table>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
{{# if(d.order_status == 0 ){ }}
|
||||
<a class="layui-btn" lay-event="offlinepay">线下支付</a>
|
||||
{{# } }}
|
||||
<a class="layui-btn" lay-event="detail">详情</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 用户信息 -->
|
||||
<script type="text/html" id="member_info">
|
||||
<div class="table-title">
|
||||
<div class='title-pic'>
|
||||
{{# if(d.headimg){ }}
|
||||
<img layer-src src="{{ns.img(d.headimg)}}" onerror="this.src = '{:img('public/static/img/default_img/head.png')}' "/>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class='title-content'>
|
||||
<p class="multi-line-hiding">{{d.nickname}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var table, laydate, form;
|
||||
|
||||
layui.use(['form', 'laydate'], function() {
|
||||
laydate = layui.laydate;
|
||||
form = layui.form;
|
||||
|
||||
form.render();
|
||||
|
||||
//渲染时间
|
||||
laydate.render({
|
||||
elem: '#start_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 加载表格
|
||||
*/
|
||||
table = new Table({
|
||||
elem: '#order_list',
|
||||
url: ns.url("shop/memberlevel/order"),
|
||||
cols: [
|
||||
[{
|
||||
field: 'order_no',
|
||||
title: '订单号',
|
||||
width: '14%',
|
||||
unresize: 'false'
|
||||
},
|
||||
{
|
||||
title: '购买人信息',
|
||||
width: '12%',
|
||||
templet: "#member_info"
|
||||
},
|
||||
{
|
||||
field: 'level_name',
|
||||
title: '卡名称',
|
||||
width: '12%',
|
||||
unresize: 'false'
|
||||
}, {
|
||||
title: '订单类型',
|
||||
width: '8%',
|
||||
templet: function (data) {
|
||||
return (data.order_type == 1 ? '开卡' : '续费');
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '购买时长',
|
||||
width: '8%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
switch (data.period_unit) {
|
||||
case 'week':
|
||||
str = '一周';
|
||||
break;
|
||||
case 'month':
|
||||
str = '一月';
|
||||
break;
|
||||
case 'quarter':
|
||||
str = '一季';
|
||||
break;
|
||||
case 'year':
|
||||
str = '一年';
|
||||
break;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '订单金额',
|
||||
width: '8%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
return data.order_money;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '下单时间',
|
||||
width: '10%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '订单状态',
|
||||
width: '8%',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
switch (data.order_status) {
|
||||
case 0:
|
||||
str = '待支付';
|
||||
break;
|
||||
case 1:
|
||||
str = '已支付';
|
||||
break;
|
||||
case -1:
|
||||
str = '已关闭';
|
||||
break;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
unresize: 'false',
|
||||
toolbar: '#operation',
|
||||
align: 'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 工具栏操作,编辑、删除
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data,
|
||||
event = obj.event;
|
||||
|
||||
switch (event) {
|
||||
case 'offlinepay':
|
||||
$.ajax({
|
||||
url: ns.url("shop/memberlevel/offlinepay"),
|
||||
data: {
|
||||
out_trade_no: data.out_trade_no
|
||||
},
|
||||
type: "POST",
|
||||
dataType: "JSON",
|
||||
success: function(res) {
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 'detail':
|
||||
location.hash = ns.hash("shop/memberlevel/orderdetail?order_id=" + data.order_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload( {
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function datePick(date_num,event_obj){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
$(event_obj).addClass('selected');
|
||||
|
||||
Date.prototype.Format = function (fmt,date_num) { //author: meizz
|
||||
this.setDate(this.getDate()-date_num);
|
||||
var o = {
|
||||
"M+": this.getMonth() + 1, //月份
|
||||
"d+": this.getDate(), //日
|
||||
"H+": this.getHours(), //小时
|
||||
"m+": this.getMinutes(), //分
|
||||
"s+": this.getSeconds(), //秒
|
||||
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
|
||||
"S": this.getMilliseconds() //毫秒
|
||||
};
|
||||
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
for (var k in o)
|
||||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||||
return fmt;
|
||||
};
|
||||
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
|
||||
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
|
||||
$("input[name=start_time]").val(before_time,0);
|
||||
$("input[name=end_time]").val(now_time,date_num-1);
|
||||
}
|
||||
</script>
|
||||
122
app/shop/view/memberlevel/order_detail.html
Executable file
122
app/shop/view/memberlevel/order_detail.html
Executable file
@@ -0,0 +1,122 @@
|
||||
<style>
|
||||
.layui-colla-content li { line-height: 30px; }
|
||||
</style>
|
||||
|
||||
<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-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.order_no}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">交易号:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.out_trade_no}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单类型:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.order_type == 1 ? '开卡' : '续费'}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单状态:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">
|
||||
{switch name="$order.data.order_status"}
|
||||
{case value="0"}待支付{/case}
|
||||
{case value="1"}已支付{/case}
|
||||
{case value="-1"}已关闭{/case}
|
||||
{/switch}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">客户头像:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">
|
||||
<img class="member_img" src="{:img($order.data.headimg)}" width="40px" onerror="this.src = '{:img('public/static/img/default_img/head.png')}' ">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">客户昵称:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.nickname}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">会员卡名称:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.level_name}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">购买时长:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">
|
||||
{switch name="$order.data.period_unit"}
|
||||
{case value="week"}一周{/case}
|
||||
{case value="month"}一月{/case}
|
||||
{case value="quarter"}一季{/case}
|
||||
{case value="year"}一年{/case}
|
||||
{/switch}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单金额:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.order_money}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下单时间:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{:time_to_date($order.data.create_time)}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $order.data.order_status eq 1}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">支付方式:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{$order.data.pay_type_name}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">支付时间:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<p class="input-text len-mid">{:date('Y-m-d H:i:s', $order.data.pay_time)}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn layui-btn-primary" onclick="backMemberRechargeOrderList()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function backMemberRechargeOrderList() {
|
||||
location.hash = ns.hash("memberrecharge://shop/memberrecharge/order_lists");
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user