初始上传

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,390 @@
<style>
.layui-card-body .content{width: 33.3%;}
.layui-card-body .bottom-title{color: #909399;font-size: 14px;margin-top: 5px;}
.table-bottom .layui-table-page{top: 0;position: static;}
.table-tab .layui-tab-content{margin-bottom: 0;}
.layui-layout-admin .screen{margin-bottom: 15px;}
.align-center {text-align: center!important;}
.layui-table td, .layui-table th {padding: 15px}
</style>
<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">可用积分 <a href="{:href_url('shop/memberaccount/point')}" class="text-color">明细</a></p>
<p class="money">{$total_usable_point}</p>
</div>
<div class="content">
<p class="title">累计发放积分 <a href="{:href_url('shop/memberaccount/point')}" class="text-color">明细</a></p>
<p class="money">{$grant_point}</p>
</div>
<div class="content">
<p class="title">累计使用积分 <a href="{:href_url('shop/memberaccount/point')}" class="text-color">明细</a></p>
<p class="money">{$consume_point}</p>
</div>
</div>
</div>
<div class="layui-card card-common card-brief">
<div class="layui-card-header simple">
<span class="card-title">积分规则</span>
</div>
<div class="layui-card-body" style="padding: 10px 25px!important;">
<table class="layui-table" lay-skin="nob">
<colgroup>
<col width="20%">
<col width="50%">
<col width="15%">
<col width="15%">
</colgroup>
<thead>
<tr>
<th>规则名称</th>
<th>规则详情</th>
<th>更新时间</th>
<th class="align-center">操作</th>
</tr>
</thead>
<tbody>
{foreach name="$rule" item="vo"}
<tr>
<td>{$vo.title}</td>
<td>{$vo.content}</td>
<td>{if $vo.update_time}{:time_to_date($vo.update_time)}{else/}-{/if}</td>
<td class="align-center"><a href="{:href_url($vo.url)}" class="text-color" target="_blank">查看</a></td>
</tr>
{/foreach}
<tr>
</tbody>
</table>
</div>
</div>
<div class="layui-card card-common card-brief">
<div class="layui-card-header simple">
<span class="card-title">积分操作</span>
</div>
<div class="layui-card-body" style="padding: 10px 25px!important;">
<button class="layui-btn" onclick="clearpoint()">积分清零</button>
<button class="layui-btn" onclick="reset()">积分重置</button>
</div>
</div>
<div class="layui-card card-common card-brief">
<div class="layui-card-header simple">
<span class="card-title">积分任务</span>
</div>
<div class="layui-card-body" style="padding: 10px 25px!important;">
<span id="point_task_config_desc"></span>
<a class="text-color" onclick="pointTaskConfig()" href="javascript:;">设置</a>
</div>
</div>
<script id="clear_html" type="text/html">
<div class="layui-form member-form" id="reset_label" lay-filter="form">
<div class="layui-form-item">
<label class="layui-form-label sm">说明</label>
<div class="layui-input-block">
<textarea name="remark" class="layui-textarea len-long" maxlength="150"></textarea>
</div>
<div class="word-aux sm"><p>积分清零后会将会员现有的积分全部清零,请谨慎操作</p></div>
</div>
<div class="form-row sm">
<button class="layui-btn" lay-submit lay-filter='clear_bth'>确定</button>
<button class="layui-btn layui-btn-primary" lay-submit lay-filter='clear_close_bth'>取消</button>
</div>
</div>
</script>
<script id="point_task_config" type="text/html">
<div class="layui-form member-form" lay-filter="form">
<div class="layui-form-item">
<label class="layui-form-label sm">任务状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="开启" {{# if(d.status == 1){ }} checked {{# } }} lay-filter="status">
<input type="radio" name="status" value="0" title="关闭" {{# if(d.status == 0){ }} checked {{# } }} lay-filter="status">
</div>
</div>
<div id="point_status_on" {{# if(d.status == 0){ }}style="display:none;"{{# } }}>
<div class="layui-form-item">
<label class="layui-form-label sm">任务类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="clear" title="清零" {{# if(d.type == 'clear'){ }} checked {{# } }}>
<input type="radio" name="type" value="reset" title="重置" {{# if(d.type == 'reset'){ }} checked {{# } }}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label sm">任务时间</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="hidden" name="time_type" value="1"/>
每年
</div>
<div class="layui-input-inline len-short">
<select name="month" lay-filter="month1">
{{# d.month_arr.forEach((item)=>{ }}
<option value="{{item.id}}" {{# if(d.month == item.id){ }}selected{{# } }}>{{item.name}}</option>
{{# }) }}
</select>
</div>
<div class="layui-input-inline len-short">
<select name="day">
{{# d.day_arr.forEach((item)=>{ }}
<option value="{{item.id}}" {{# if(d.day == item.id){ }}selected{{# } }}>{{item.name}}</option>
{{# }) }}
</select>
</div>
</div>
</div>
</div>
<div class="form-row sm">
<button class="layui-btn" lay-submit lay-filter='point_task_config_save'>确定</button>
<button class="layui-btn layui-btn-primary" lay-filter='point_task_config_cancel'>取消</button>
</div>
</div>
</script>
<script>
var form, laydate, laytpl;
layui.use(['laydate','form', 'element', 'laytpl'], function(){
form = layui.form;
laydate = layui.laydate;
laytpl = layui.laytpl;
});
var clear_tag = false;
var clear_index;
function clearpoint(){
laytpl($("#clear_html").html()).render([], function(html) {
clear_index = layer.open({
title: '积分清零',
skin: 'layer-tips-class',
type: 1,
area: ['600px'],
content: html,
success: function(){
form.on('submit(clear_bth)', function(obj) {
var field = obj.field;
if (clear_tag) return;
clear_tag = true;
$.ajax({
type: 'POST',
url: ns.url("shop/memberaccount/pointclear"),
dataType: 'JSON',
data: field,
success: function(res) {
clear_tag = false;
layer.msg(res.message);
if (res.code >= 0) {
listenerHash(); // 刷新页面
layer.closeAll();
}
}
});
});
form.on('submit(clear_close_bth)', function(obj) {
clear_tag = false;
layer.close(clear_index);
})
}
});
});
form.render();
}
var reset_tag = false;
function reset() {
if (reset_tag) return;
reset_tag = true;
layer.confirm('您确定要将会员现有的积分全部重置吗(重置后会员的积分以及积分记录全都会被删除)', {
btn: ['确定', '取消'] //按钮
}, function (index) {
layer.close(index);
$.ajax({
type: 'POST',
url: ns.url("shop/memberaccount/pointreset"),
dataType: 'JSON',
success: function (res) {
reset_tag = false;
layer.msg(res.message);
if (res.code >= 0) {
listenerHash(); // 刷新页面
}
}
});
}, function () {
reset_tag = false;
layer.closeAll();
});
}
//积分任务设置
var point_task_config = {:json_encode($point_task_config)};
var task_index = null;
function pointTaskConfigDesc(){
var desc = '';
if(point_task_config['status'] == 0){
desc += '无任务';
}else{
switch(Number(point_task_config['time_type'])){
case 1:
var time_arr = point_task_config['time'].split('/');
var month = time_arr[0];
var day = time_arr[1];
desc += '每年'+month+'月'+day+'日';
break;
}
switch(point_task_config['type']){
case 'clear':
desc += '积分清零';
break;
case 'reset':
desc += '积分重置';
break;
}
desc += '<span style="padding-left:10px;"></span>下次任务时间:'+ns.time_to_date(point_task_config['cron_time'], 'Y-m-d');
}
$("#point_task_config_desc").html(desc);
}
pointTaskConfigDesc();
function pointTaskConfig(){
function _render(callback){
_timeToField(point_task_config);
point_task_config.month_arr = _getMonth();
point_task_config.day_arr = _getDay(point_task_config['month1']);
laytpl($("#point_task_config").html()).render(point_task_config, function(html) {
callback(html);
})
}
function _open(html, callback){
task_index = layer.open({
title: '积分任务',
skin: 'layer-tips-class',
type: 1,
area: ['600px'],
content: html,
success: function(){
$(".layui-layer-content").css('height','auto');
form.render();
callback();
}
})
}
function _getMonth(){
var arr = [];
for(let i = 1; i <= 12; i ++){
arr.push({
id : i,
name : i + '月',
})
}
return arr;
}
function _getDay(month) {
month = Number(month);
var day_num = 30;
if([2].indexOf(month) > -1){
day_num = 29;
}else if([1,3,5,7,8,10,12].indexOf(month) > -1){
day_num = 31;
}
var arr = [];
for(let i = 1; i <= day_num; i ++){
arr.push({
id : i,
name : i + '日',
})
}
return arr;
}
function _monthSelect(){
form.on('select(month1)', function (data){
var month = data.value;
var day_arr = _getDay(month);
let html = '';
day_arr.forEach((item)=>{
html += '<option value="'+ item.id +'">'+ item.name +'</option>';
})
$("select[name='day1']").html(html);
form.render();
})
}
function _statusChange(){
form.on('radio(status)', function (data){
var status = data.value;
var dom = $("#point_status_on");
if(status == 1){
dom.show();
}else{
dom.hide();
}
})
}
function _timeToField(field){
switch(Number(field.time_type)){
case 1:
var time_arr = field.time.split('/');
field.month = time_arr[0];
field.day = time_arr[1];
break;
}
}
function _fieldToTime(field){
switch(Number(field.time_type)){
case 1:
field.time = field.month+'/'+field.day;
break;
}
}
function _save(){
form.on('submit(point_task_config_save)', function(data) {
var field = data.field;
_fieldToTime(field);
if (clear_tag) return;
clear_tag = true;
$.ajax({
type: 'POST',
url: ns.url("shop/memberaccount/pointtaskconfig"),
dataType: 'JSON',
data: field,
success: function(res) {
clear_tag = false;
layer.msg(res.message);
if (res.code >= 0) {
point_task_config = res.data;
pointTaskConfigDesc();
layer.close(task_index);
}
}
});
});
}
function _cancel(){
$("button[lay-filter='point_task_config_cancel']").on('click', function() {
layer.close(task_index);
});
}
_render((res)=>{
_open(res, ()=>{
_statusChange();
_monthSelect();
_save();
_cancel();
})
})
}
</script>