初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,459 @@
<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;
}
.colorSelector{
position: relative;
width: 20px;
height: 20px;
border-radius: 3px;
border: 1px solid #d7d7d7;
display: inline-block;
cursor: pointer;
vertical-align: middle;
padding: 2px;
}
.colorSelector div{
width: 100%;
height: 100%;
border-radius: 3px;
}
.flexbox-fix-btn .btn{
margin-top: 0;
line-height: 1;
}
</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="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>付费方式:</label>
<div class="layui-input-block">
<input type="radio" name="charge_type" value="0" title="付款" checked>
<input type="radio" name="charge_type" value="1" title="充值">
</div>
<div class="word-aux">充值卡不能设置为推荐会员卡</div>
</div>
<div class="layui-form-item charge-rule">
<label class="layui-form-label"><span class="required">*</span>付费规则:</label>
<div class="layui-input-block">
<table class="layui-table len-long" lay-skin="nob" id="level-rule">
<colgroup>
<col width="30%">
<col width="50%">
<col width="20%">
</colgroup>
<thead>
<tr>
<th>有效期</th>
<th class="align-center">价格</th>
<th>操作</th>
</tr>
</thead>
<tbody></tbody>
</table>
<a href="javascript:void(0)" class="text-color" onclick="addRule()" id="add_rule_btn">添加规则</a>
</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 class="word-aux">开卡礼包仅首次购卡发放</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__/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',
})
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();
if (repeat_flag) return false;
let level = {};
$('#level-rule tr').each(function (i, e) {
if($(e).find('.price').val() != undefined){
level[$(e).find('select').val()] = $(e).find('.price').val();
}
})
if(JSON.stringify(level) == '{}'){
layer.msg('请设置付费规则');
return false;
}
data.field.charge_rule = JSON.stringify(level);
repeat_flag = true;
$.ajax({
url: ns.url("supermember://shop/membercard/add"),
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("supermember://shop/membercard/lists")
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 + "最多可保留两位小数";
}
}
});
});
function back(){
location.hash = ns.hash("supermember://shop/membercard/lists");
}
//添加付费规则
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>

View File

@@ -0,0 +1,59 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label">协议:</label>
<div class="layui-input-inline">
<input type="text" name="title" required lay-verify="required" placeholder="请输入协议标题" value="{$document_info.data.title}" autocomplete="off" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容:</label>
<div class="layui-input-inline">
<script id="editor" type="text/plain" class="special-length" style="height:300px;"></script>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
<input type="hidden" name="" id="agreementContent" value="{$document_info.data.content}" />
</div>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.config.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.all.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/lang/zh-cn/zh-cn.js"></script>
<script>
//实例化富文本
var ue = UE.getEditor('editor');
if($("#agreementContent").val()){
ue.ready(function() {
ue.setContent($("#agreementContent").val());
});
}
layui.use('form', function() {
var form = layui.form,
repeat_flag = false; //防重复标识
form.render();
//表单提交
form.on('submit(save)', function(data) {
if(repeat_flag) return false;
repeat_flag = true;
$.ajax({
url: ns.url("supermember://shop/membercard/agreement"),
data: {
'title': data.field.title,
'content': ue.getContent(),
},
dataType: 'JSON', //服务器返回json格式数据
type: 'POST', //HTTP请求类型
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
}
});
});
});
</script>

View File

@@ -0,0 +1,500 @@
<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;
}
.colorSelector{
position: relative;
width: 20px;
height: 20px;
border-radius: 3px;
border: 1px solid #d7d7d7;
display: inline-block;
cursor: pointer;
vertical-align: middle;
padding: 2px;
}
.colorSelector div{
width: 100%;
height: 100%;
border-radius: 3px;
}
.flexbox-fix-btn .btn{
margin-top: 0;
line-height: 1;
}
</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"><span class="required">*</span>会员卡类型:</label>
<div class="layui-input-block">{$level_info.charge_type == 1 ? '充值卡' : '付费卡'}</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="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>付费方式:</label>
<div class="layui-input-block">
<input type="radio" name="charge_type" value="0" title="付款" {if $level_info['charge_type'] == 0}checked{/if}>
<input type="radio" name="charge_type" value="1" title="充值" {if $level_info['charge_type'] == 1}checked{/if}>
</div>
<div class="word-aux">充值卡不能设置为推荐会员卡</div>
</div>
<div class="layui-form-item charge-rule">
<label class="layui-form-label"><span class="required">*</span>付费规则:</label>
<div class="layui-input-block">
<table class="layui-table len-long" lay-skin="nob" id="level-rule">
<colgroup>
<col width="30%">
<col width="50%">
<col width="20%">
</colgroup>
<thead>
<tr>
<th>有效期</th>
<th class="align-center">价格</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{php}
$level = json_decode($level_info['charge_rule'], true);
{/php}
{if $level}
{foreach $level as $k => $v}
<tr>
<td>
<div class="len-short">
<select lay-filter="selectRule">
{foreach $level_time as $key => $val}
{if $key == $k}
<option value="{$k}">{$val}</option>
{/if}
{/foreach}
</select>
</div>
</td>
<td class="align-center">
<input type="text" value="{$v}" lay-verify="num" class="layui-input len-short price" placeholder="价格/元" style="">
</td>
<td>
<a href="javascript:void(0)" class="text-color" onclick="deleteRule(this)">删除</a>
</td>
</tr>
{/foreach}
{/if}
</tbody>
</table>
<a href="javascript:void(0)" class="text-color " {if $level && count($level) >= 4}style="display:none"{/if} onclick="addRule()" id="add_rule_btn">添加规则</a>
</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 class="word-aux">开卡礼包仅首次购卡发放</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,upload;
var coupon_select = new CouponSelect({
tableElem:'#coupon_list',
selectElem:'#select_coupon',
selectedIds:'{$level_info.send_coupon}',
})
layui.use(['form', 'laytpl', 'colorpicker', 'upload'], function() {
form = layui.form;
upload = layui.upload;
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: "{$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();
if(repeat_flag) return false;
let level = {};
$('#level-rule tr').each(function (i, e) {
if($(e).find('.price').val() != undefined){
level[$(e).find('select').val()] = $(e).find('.price').val();
}
})
if(JSON.stringify(level) == '{}'){
layer.msg('请设置付费规则');
return false;
}
data.field.charge_rule = JSON.stringify(level);
repeat_flag = true;
$.ajax({
url: ns.url("supermember://shop/membercard/edit"),
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("supermember://shop/membercard/lists")
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 + "最多可保留两位小数";
}
}
});
});
function back(){
location.hash = ns.hash("supermember://shop/membercard/lists");
}
//添加付费规则
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>

View File

@@ -0,0 +1,302 @@
<link rel="stylesheet" href="SUPERMEMBER_CSS/supermember.css">
<style>
.layui-card-body .content{width: 25%;padding-top: 15px}
.layui-card-body .bottom-title{color: #909399;font-size: 14px;margin-top: 5px;}
.load { display: flex; width: 100%; height: 400px; justify-content: center; align-items: center; }
</style>
<div class="nav panel-content">
<div class="nav-screen">
<div class="screen-tab">
<div class="tab-item bgcolorse activeTab" onclick="datePick(1, this);return false;">今日</div>
<div class="tab-item" onclick="datePick(2, this);return false;">昨日</div>
<div class="tab-item" onclick="datePick(7, this);return false;">近七天</div>
</div>
<form class="layui-form layui-show" lay-filter="order_list">
<div class="screen-time layui-form-item">
<div class="layui-inline">
<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>
</div>
</div>
</form>
</div>
<div class="layui-card-body">
<div class="content">
<p class="title">售卡数</p>
<p class="money" id="sale_num">0</p>
</div>
<div class="content">
<p class="title">售卡金额</p>
<p class="money" id="sale_money">0</p>
</div>
<div class="content">
<p class="title">累计售卡数</p>
<p class="money" id="total_num">0</p>
</div>
<div class="content">
<p class="title">累计售卡金额</p>
<p class="money" id="total_money">0</p>
</div>
</div>
</div>
<div class="section">
<div class="section-left">
<div class="membership">
<div>会员持卡总数量</div>
<div id="has_card_member">0</div>
</div>
<div class="member-detail">
<div class="load">
<i style="font-size: 30px;" class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>
</div>
</div>
</div>
<div class="section-right">
<div class="membership">
<div>普通会员与会员卡用户占比</div>
</div>
<div class="load mycenter">
<i style="font-size: 30px;" class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>
</div>
<div id="main" style="width:600px;height:600px;margin-top: 100px;margin-left: 100px;"></div>
</div>
</div>
<script type="text/html" id="card_list">
{{# d.forEach(function(item, index){ }}
<div class="member-detail-item vip-list" data-level-id="{{ item.level_id }}">
<div class="base-data-name">
{{# if (index == 0){ }}
<span><img src="SUPERMEMBER_IMG/one.png"></span>
{{# } else if(index == 1) { }}
<span><img src="SUPERMEMBER_IMG/two.png"></span>
{{# } else if(index == 2) { }}
<span><img src="SUPERMEMBER_IMG/three.png"></span>
{{# } else { }}
<span>{{ index+1 }}</span>
{{# } }}
{{ item.level_name }}
</div>
<div class="base-data-name">{{ item.member_num }}</div>
</div>
{{# }) }}
</script>
<script src="SHOP_JS/echarts.min.js"></script>
<script type="text/javascript">
var laytpl;
var form;
//初始化时间
var startTime = new Date(new Date().setHours(0, 0, 0, 0));
var endTime = new Date();
//开始时间转换为时间戳
var start_times = $('input[name="start_time"]').val()
var start_time = new Date(start_times ? start_times : startTime).getTime()
//结束时间转换为时间戳
var end_times = $('input[name="end_time"]').val()
var end_time = new Date(end_times ? end_times : endTime).getTime()
$('.screen-tab .tab-item').click(function() {
$(this).addClass("bgcolorse activeTab").siblings().removeClass('bgcolorse activeTab');
start_times = $('input[name="start_time"]').val()
end_times = $('input[name="end_time"]').val()
sendAjax(start_times,end_times)
});
$('.vip-list').click(function(data){
let levelId = $(this).attr('data-level-id')
location.hash = ns.hash("shop/member/memberlist",{levelId:levelId});
})
function sendAjax(starTimes,enTimes){
if(starTimes){start_times = starTimes}else{start_times = $('input[name="start_time"]').val()}
if(enTimes){end_times = enTimes}else{end_times = $('input[name="end_time"]').val()}
$.ajax({
url: ns.url("supermember://shop/membercard/salesStatistics"),
data: {
start_time: start_times,
end_time: end_times
},
dataType: 'JSON', //服务器返回json格式数据
type: 'POST', //http请求类型
success: function(res) {
if (res.code == 0) {
$('#sale_num').html(res.data.sale_num);
$('#sale_money').html(res.data.sale_money);
} else {
layer.msg(res.message);
}
}
});
}
layui.use(['form', 'laydate', 'laytpl'], function() {
var laydate = layui.laydate;
form = layui.form;
laytpl = layui.laytpl;
form.render();
//渲染时间
laydate.render({
elem: '#start_time',
type: 'datetime',
value: startTime,
done: function(value, date, endDate) {
$(".screen-tab .tab-item").removeClass("bgcolorse activeTab");
start_times = value
let start_time = ns.date_to_time(value);
let end_time = ns.date_to_time($('#end_time').val());
if(end_time > start_time){
sendAjax(start_times,'')
}else {
$('#end_time').val('');
}
}
});
laydate.render({
elem: '#end_time',
type: 'datetime',
value: endTime,
done: function(value, date, endDate) {
$(".screen-tab .tab-item").removeClass("bgcolorse activeTab");
end_times = value
let start_time = ns.date_to_time($('#start_time').val());
let end_time = ns.date_to_time(value);
if(end_time > start_time){
sendAjax('',end_times)
}else {
$('#start_time').val('');
}
}
});
});
/**
* 七天时间
*/
function datePick(date_num, event_obj) {
$(".date-picker-btn").removeClass("selected");
$(event_obj).addClass('selected');
var now_date = new Date();
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;
};
if (date_num == 2) {
var now_time = new Date().Format("yyyy-MM-dd 23:59:59", date_num - 1); //当前日期
} else {
// var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss", 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);
}
var names = [];
var nums = [];
names.push('普通会员')
if($('#main').length) {
var myChart = echarts.init(document.getElementById('main'));
var option = {
color: ['#ff7a14', '#47b73d', '#fcc36e', '#448ffd', "#228b22", "#00adac", "#000086", "#a963a1", "#cf675a", "#607e82"],//饼图颜色
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
legend: {
orient: 'horizontal',
left: 'center',
bottom: 260,
itemGap: 50,
data: names
},
series: [{
width: 265,
height: 265,
top: 0,
x: "center",
name: '会员比例',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '12',
color: '#333'
}
},
labelLine: {
show: false
},
data: nums
}]
};
// myChart.setOption(option);
}
getMemberCardStat()
function getMemberCardStat(){
$.ajax({
url: ns.url("supermember://shop/membercard/stat"),
data: {
start_time: start_times,
end_time: end_times
},
dataType: 'JSON', //服务器返回json格式数据
type: 'POST', //http请求类型
success: function(res) {
$('.mycenter').css("display", 'none')
$("#total_num").html(res.total_num)
$("#total_money").html(res.total_money)
$("#has_card_member").html(res.has_card_member)
laytpl($('#card_list').html()).render(res.card_list, function (string) {
$('.member-detail').html(string);
});
nums.push({
value: res.no_has_card_member,
name: '普通会员'
});
for(var i=0;i<res.card_list.length;i++){
names.push(res.card_list[i].level_name)
nums.push({
value: res.card_list[i].member_num,
name: res.card_list[i].level_name
});
}
myChart.setOption(option);
}
});
}
</script>

View File

@@ -0,0 +1,316 @@
<style>
.recommend-mark{color: #fff;line-height: 1;padding: 3px 6px;border-radius: 3px;font-size: 12px;margin-right: 3px;}
.layui-layout-admin .screen{margin-bottom: 15px;}
.layui-table-box, .layui-table-header, .layui-table-header .layui-table-cell { overflow: unset; }
.prompt-block .prompt-box {cursor: default}
.prompt-block .prompt-box a {cursor: pointer}
</style>
<div class="single-filter-box" style="display: block;">
<button class="layui-btn" onclick="addLevel()">添加会员卡</button>
<p class="layui-btn" onclick="location.hash = ns.hash('supermember://shop/membercard/agreement')">开卡协议</p>
</div>
<!-- 搜索框 -->
<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" placeholder="请输入会员卡名称" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="form-row">
<button type="button" class="layui-btn" lay-filter="search" lay-submit>筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<table id="level_list" lay-filter="level_list"></table>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
{{# if(d.charge_type == 0){ }}
{{# if(d.is_recommend == 0){ }}
<a class="layui-btn" lay-event="recommend">推荐</a>
{{# } else { }}
<a class="layui-btn" lay-event="cancelRecommend">取消推荐</a>
{{# } }}
{{# } }}
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="del">删除</a>
{{# if(d.status == 0){ }}
<a class="layui-btn" lay-event="sale">发售</a>
{{# } else { }}
<a class="layui-btn" lay-event="offsale">下架</a>
{{# } }}
</div>
</script>
<script>
layui.use(['form'], function() {
var table,
form = layui.form,
repeat_flag = false; //防重复标识
table = new Table({
elem: '#level_list',
url: ns.url("supermember://shop/membercard/lists"),
page:false,
cols: [
[{
field: 'level_name',
title: '会员卡名称',
width: '15%',
unresize: 'false',
templet: function(data){
if (data.is_recommend) {
return '<span class="recommend-mark bg-color">推荐</span>' + data.level_name
} else {
return data.level_name;
}
}
}, {
title: '付费类型',
unresize: 'false',
width: '10%',
templet: function (data) {
var str = '';
if (data.charge_type == 1) {
str = '<span style="color: green">充值卡</span>';
} else if (data.charge_type == 0) {
str = '<span style="color: red">付费卡</span>';
}
return str;
}
},{
field: 'growth',
title: '价格',
width: '16%',
unresize: 'false',
templet: function(data){
var charge_rule = JSON.parse(data.charge_rule),
price = '<div class="level-equity">';
if (charge_rule.week) price += '<div>周卡' + charge_rule.week + '元</div>';
if (charge_rule.month) price += '<div>月卡' + charge_rule.month + '元</div>';
if (charge_rule.quarter) price += '<div>季卡' + charge_rule.quarter + '元</div>';
if (charge_rule.year) price += '<div>年卡' + charge_rule.year + '元</div>';
price += '</div>'
return price;
}
},{
field: '',
title: '权益',
width: '18%',
unresize: 'false',
templet: function (data) {
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;
}
},
{
field: 'member_num',
title: '持有人数',
width: '8%',
unresize: 'false',
align: 'center'
},
{
title: '状态',
width: '10%',
unresize: 'false',
templet: function (data) {
return data.status == 1 ? '发售中' : '已下架';
}
},{
title: '操作',
unresize: 'false',
toolbar: '#operation',
align:'right'
}]
]
});
/**
* 工具栏操作,编辑、删除
*/
table.tool(function(obj) {
var data = obj.data,
event = obj.event;
switch (event) {
case 'edit':
location.hash = ns.hash("supermember://shop/membercard/edit?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;
case 'recommend':
recommendMemberCard(data.level_id, 1);
break;
case 'cancelRecommend':
recommendMemberCard(data.level_id, 0);
break;
}
});
/**
* 搜索功能
*/
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("supermember://shop/membercard/delete"),
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 offsaleMemberCard(level_id) {
layer.confirm('此操作不会影响到已购卡用户!确定下架该会员卡吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("supermember://shop/membercard/status"),
data: {
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;
});
}
function saleMemberCard(level_id) {
layer.confirm('确定发售该会员卡吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("supermember://shop/membercard/status"),
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;
});
}
function recommendMemberCard(level_id, recommend) {
let message = recommend == 1 ? '设置后前端推荐开卡处将默认展示该卡,是否继续设置?' : '是否取消推荐?';
layer.confirm(message, function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("supermember://shop/membercard/recommend"),
data: {
level_id: level_id,
recommend: recommend
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg('设置成功');
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
});
/**
* 点击跳转添加会员卡页面
*/
function addLevel() {
location.hash = ns.hash("supermember://shop/membercard/add");
}
function showDemo(){
layer.open({
title: false,
type: 1,
area: ['760px', '570px'],
content: '<img src="SUPERMEMBER_IMG/demo.png">'
})
}
</script>

View File

@@ -0,0 +1,277 @@
<link rel="stylesheet" href="SUPERMEMBER_CSS/order_list.css"/>
<div class="layui-card card-common card-brief panel-content">
<div class="layui-card-header simple">
<span class="card-title">购卡概况</span>
</div>
<div class="layui-card-body">
<div class="content">
<p class="title">累计购卡人数</p>
<p class="money">{$buyer_num}</p>
</div>
<div class="content">
<p class="title">累计购卡金额</p>
<p class="money">{$order_money}</p>
</div>
</div>
</div>
<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" placeholder="请输入订单号" autocomplete="off">
</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" placeholder="请输入购买人昵称" autocomplete="off">
</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="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>
<div class="layui-tab table-tab " lay-filter="order_tab">
<div class="layui-tab-content">
<div id="order_list"></div>
</div>
<div id="order_page"></div>
</div>
<script src="SUPERMEMBER_JS/order_list.js"></script>
<script>
var form,laypage,element,laydate;
var is_refresh = false;
layui.use(['laypage','laydate','form', 'element'], function(){
form = layui.form;
laypage = layui.laypage;
element = layui.element;
laydate = layui.laydate;
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");
}
});
//监听Tab切换以改变地址hash值
element.on('tab(order_tab)', function(){
$(".all-selected-checkbox input").prop("checked",false);
var hash_data = getHashList();
hash_data.page = 1;
setHashOrderList(hash_data);
});
//监听筛选事件
form.on('submit(search)', function(data){
is_refresh = true;
data.field.page = 1;
setHashOrderList(data.field);
return false;
});
getHashData();
getOrderList();//筛选
});
function setHashOrderList(data){
localStorage.setItem('formSubmit','search'); // 表单搜索标识,防止页面重新加载
var hash = ['url=supermember://shop/membercard/order'];
for (let key in data) {
if (data[key] != '' && data[key] != 'all') {
hash.push(`${key}=${data[key]}`)
}
}
location.hash = hash.join('&');
getOrderList();
}
var order = new Order();
function getOrderList(){
var url = ns.url("supermember://shop/membercard/order", getHashArr().join('&'));
$.ajax({
type : 'get',
dataType: 'json',
url :url,
success : function(res){
if(res.code == 0){
order.setData(res.data);
$("#order_list").html(order.fetch());
form.render();
laypage_util = new Page({
elem: 'order_page',
count: res.data.count,
curr: getHashPage(),
limit:getHashData()['page_size'] || 10,
callback: function(obj){
var hash_data = getHashData();
hash_data.page = obj.curr;
hash_data.page_size = obj.limit;
setHashOrderList(hash_data);
}
});
}else{
layer.msg(res.message);
}
}
});
}
// 通过hash获取页数
function getHashPage(){
var page = 1;
var startTime = '';
var endTime = '';
var hash_arr = getHashArr();
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
switch(item_arr[0]){
case "page":
page = item_arr[1];
break;
case "start_time":
startTime = ns.date_to_time(item_arr[1].split("%")[0]);
break;
case "end_time":
endTime = ns.date_to_time(item_arr[1].split("%")[0]);
break;
}
}
});
var _time = (endTime - startTime) / (24 * 60 * 60);
if (_time == 6) {
$(".date-picker-btn-seven").addClass("selected");
$(".date-picker-btn-thirty").removeClass("selected");
} else if (_time == 29) {
$(".date-picker-btn-thirty").addClass("selected");
$(".date-picker-btn-seven").removeClass("selected");
} else {
$(".date-picker-btn-seven").removeClass("selected");
$(".date-picker-btn-thirty").removeClass("selected");
}
return page;
}
//从hash中获取数据
function getHashData(){
var hash_arr = getHashArr();
var form_json = {
"start_time" : "",
"end_time" : "",
"nickname" : "",
"order_no" : "",
'page_size':'',
"page" : ""
};
if(hash_arr.length > 0){
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
$.each(form_json,function(key, form_val){
if(item_arr[0] == key){
form_json[key] = item_arr[1];
}
})
}
})
}
return form_json;
}
function getHashList(){
var hash_arr = getHashArr();
var form_json = {
"start_time" : "",
"end_time" : "",
"nickname" : "",
"order_no" : "",
'page_size':'',
"page" : ""
};
if(hash_arr.length > 0){
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
$.each(form_json,function(key, form_val){
if(item_arr[0].indexOf(key) != "-1"){
form_json[key] = item_arr[1];
}
})
}
})
}
return form_json;
}
/**
* 七天时间
*/
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>

View 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 mid">订单号:</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 mid">交易号:</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 mid">订单类型:</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 mid">订单状态:</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 mid">客户头像:</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 mid">客户昵称:</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 mid">会员卡名称:</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 mid">购买时长:</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 mid">订单金额:</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 mid">下单时间:</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 mid">支付方式:</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 mid">支付时间:</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="backSuperMemberCardIndex()">返回</button>
</div>
</div>
</div>
<script>
function backSuperMemberCardIndex() {
location.hash = ns.hash("supermember://shop/membercard/order");
}
</script>