初始上传

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,173 @@
<div class="layui-collapse tips-wrap">
<div class="layui-colla-item">
<ul class="layui-colla-content layui-show">
<li>活动名称:{$game_info.activity_name} ({:date('Y-m-d H:i:s',$game_info.start_time)} -- {:date('Y-m-d H:i:s',$game_info.end_time)}) </li>
<li>参与条件:{if $game_info.level_id != 0} {$game_info.level_name} {else/}全体会员 {/if}</li>
<li>奖励发放时间:{if $game_info.join_type == 1} 节日当天{else/} 节日前{$game_info.join_frequency}天{/if}</li>
</ul>
</div>
</div>
<!-- 搜索框 -->
<div class="single-filter-box">
<div class="layui-form">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="member_nick_name" placeholder="会员昵称" class="layui-input" autocomplete="off">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="start_time" id="start_time" placeholder="开始时间" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-input-inline end-time">
<input type="text" name="end_time" id="end_time" placeholder="结束时间" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="search">搜索</button>
</div>
</div>
</div>
<div class="layui-tab table-tab" lay-filter="record_tab">
<!-- <ul class="layui-tab-title">-->
<!-- <li class="layui-this" data-status="">全部</li>-->
<!-- <li data-status="1">中奖</li>-->
<!-- <li data-status="0">未中奖</li>-->
<!-- </ul>-->
<div class="layui-tab-content">
<!-- 列表 -->
<table id="record_list" lay-filter="record_list"></table>
</div>
</div>
<script>
var game_id = "{$festival_id}";
layui.use(['form', 'element','laydate'], function() {
var table,
form = layui.form,
laydate = layui.laydate,
element = layui.element;
form.render();
//开始时间
laydate.render({
elem: '#start_time' //指定元素
});
//结束时间
laydate.render({
elem: '#end_time' //指定元素
});
element.on('tab(record_tab)', function() {
table.reload({
page: {
curr: 1
},
where: {
'status': this.getAttribute('data-status')
}
});
});
table = new Table({
elem: '#record_list',
url: ns.url("scenefestival://shop/record/lists"),
where:{
'festival_id':game_id
},
cols: [
[{
field:'member_nick_name',
title: '会员昵称',
unresize: 'false',
width:'20%'
},
{
field: '',
title: '奖励积分',
width:'20%',
unresize: 'false',
templet: function(data){
var str = data.award_type;
if(str.search("point") != -1 ){
return '奖励积分' + "【"+data.point+"积分】";
}else {
return '--';
}
}
},
{
field: '',
title: '奖励红包',
width:'20%',
unresize: 'false',
templet: function(data){
var str = data.award_type;
if(str.search("balance") != -1 ){
if(data.balance_type == 0){
return '奖励储值余额' + "【"+data.balance+"元】";
}else{
return '奖励现金余额' + "【"+data.balance_money+"元】";
}
}else {
return '--';
}
}
},
{
field: '',
title: '奖励优惠券',
width:'20%',
unresize: 'false',
templet: function(data){
var str = data.award_type;
if(str.search("coupon") != -1 ){
return '奖励优惠券' + "【"+data.coupon_name+"】";
}else {
return '--';
}
}
},
{
title: '领取时间',
unresize: 'false',
templet: function(data){
return ns.time_to_date(data.receive_time);
}
}]
]
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
//监听Tab切换
element.on('tab(status)', function(data) {
var status = $(this).attr("data-status");
table.reload({
page: {
curr: 1
},
where: {
'status': status
}
});
});
});
</script>

View File

@@ -0,0 +1,587 @@
<link rel="stylesheet" href="SHOP_CSS/game.css">
<style>
.choose-item > span {
display: inline-block;
padding: 0 10px;
height: 36px;
line-height: 36px;
text-align: center;
border-radius: 4px;
border: 1px solid #ededed;
position: relative;
cursor: pointer;
margin: 5px 0;
margin-right: 11px;
}
.choose-item > span i {
position: absolute;
bottom: -5px;
right: -6px;
border-radius: 50%;
color: #FFF;
font-size: 14px;
line-height: 1;
}
.holiday-active {
color: #fff;
}
.holiday-hidden {
border: none;
width: .1px;
}
.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 .select-coupon-btn{
margin-top: 10px;
}
.layui-layer-page .layui-layer-content{
overflow-y: scroll!important;
}
</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 type="text" name="activity_name" lay-verify="required" maxlength="15" placeholder="最多可填写15个字" autocomplete="off" class="layui-input len-long">
</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="join_time" value="1" lay-verify="required" lay-filter="join_time" title="传统节日" checked>
<input type="radio" name="join_time" value="0" lay-verify="required" lay-filter="join_time" title="自定义节日">
</div>
</div>
<div class="layui-form-item layui-hide" id="festival_name">
<label class="layui-form-label"><span class="required">*</span>节日名称:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" maxlength="15" placeholder="最多可填写15个字" name="festival_name" class="layui-input len-mid" autocomplete="off">
</div>
</div>
</div>
<div class="layui-form-item layui-hide" id="self_time">
<label class="layui-form-label"><span class="required">*</span>节日日期:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline end-time">
<input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item" id="join_time">
<label class="layui-form-label"><span class="required">*</span>节日日期:</label>
<div class="layui-input-block">
<span class="holiday-name"></span>
<input type="hidden" class="holiday-hidden" lay-verify='holiday'>
<button class="layui-btn" type="button" onclick="choose()">重新选择</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">祝福语:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" maxlength="150"></textarea>
</div>
</div>
<div class="layui-form-item participation-condition">
<label class="layui-form-label">参与条件:</label>
<div class="layui-input-block">
<input type="radio" name="level_id" value="0" lay-filter="participation" title="全部会员" checked>
<input type="radio" name="level_id" value="1" lay-filter="participation" title="部分会员">
</div>
<div class="layui-inline layui-hide">
<label class="layui-form-label"></label>
<div class="layui-input-block">
{foreach $member_level_list as $k =>$v}
<input type="checkbox" class="level-id" value="{$v.level_id}" title="{$v.level_name}" lay-skin="primary">
{/foreach}
</div>
</div>
<div class="word-aux">选择参与的会员等级,默认为所有会员都可参与</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="join_type" value="1" lay-verify="required" lay-filter="join_type" title="活动时间内" checked>
<input type="radio" name="join_type" value="0" lay-verify="required" lay-filter="join_type" title="活动开始前">
<span id="time" class="layui-hide">
<input type="number" name="join_frequency" min="0" max="7" lay-verify="required|join_frequency" onchange="detectionNumType(this,'positiveInteger')" autocomplete="off" class="layui-input len-short" value="1">
</span>
</div>
</div>
<!-- <div class="layui-form-item layui-hide" id="time">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="number" name="join_frequency" min="0" max="7" lay-verify="required|join_frequency" onchange="detectionNumType(this,'positiveInteger')" autocomplete="off" class="layui-input len-short" value="1">天
</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">-->
<!-- <table id="award_list"></table>-->
<!-- </div>-->
<!-- <div class="word-aux">-->
<!-- <span class="aux-title">注意:</span>-->
<!-- <div class="aux-item">1、奖项设置包含优惠券时,请保证优惠券数量充足</div>-->
<!-- <div class="aux-item">2、奖品奖项不能少于1项且不能超过7项。</div>-->
<!-- </div>-->
<!-- <div class="word-aux">-->
<!-- <button class="layui-btn" onclick="addAward()">添加奖品</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-card-body reward-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励内容:</label>
<div class="layui-input-block">
<input type="checkbox" name="type" value="point" title="积分" lay-skin="primary" lay-filter="type" lay-verify="type" checked>
<input type="checkbox" name="type" value="balance" title="余额" lay-skin="primary" lay-filter="type" lay-verify="type">
<input type="checkbox" name="type" value="coupon" title="优惠券" lay-skin="primary" lay-filter="type" lay-verify="type">
</div>
</div>
<div class="point-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励积分:</label>
<div class="layui-input-block">
<input name="point" value="1" type="number" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required|mum" class="layui-input len-short">
</div>
</div>
</div>
<div class="balance-wrap layui-hide">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励红包:</label>
<div class="layui-input-block len-long">
<input type="radio" name="balance_type" value="0" checked title="不可提现" lay-verify="balance_type"><input name="balance" onchange="detectionNumType(this,'positiveNumber')" value="1" type="number" lay-verify="" class="layui-input len-short">
</div>
<!--<label class="layui-form-label"></label>-->
<!--<div class="layui-input-block len-long">-->
<!--<input type="radio" value="1" name="balance_type" title="可提现" lay-verify="balance_type"><input name="balance_money" onchange="detectionNumType(this,'positiveInteger')" value="1" type="number" lay-verify="" class="layui-input len-short" style="margin-left: 14px;">元-->
<!--</div>-->
</div>
<!-- <div class="word-aux"><p>红包为储值余额,仅在消费时可用</p></div>-->
</div>
<div class="coupon-wrap layui-hide">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励优惠券:</label>
<div class="layui-input-block">
<div id="coupon_list"></div>
<div class="word-aux text-color" style="margin-left: 0">
<p>活动优惠券发放,不受优惠券自身数量和领取数量的限制</p>
</div>
<button class="layui-btn" id="select_coupon">选择优惠券</button>
</div>
</div>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backScenefestivalList()">返回</button>
</div>
</div>
<!-- 添加奖品 -->
{include file="scenefestival/award_select"/}
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
<script>
var form,laydate,laytpl,upload,tableData = [],
repeat_flag = false,
awardId = 0,
currentDate = new Date(),
minDate = "",
coupon_id = [], addCoupon;
var coupon_select = new CouponSelect({
tableElem:'#coupon_list',
selectElem:'#select_coupon',
})
layui.use(['form', 'laydate', 'laytpl'], function() {
form = layui.form;
laydate = layui.laydate;
laytpl = layui.laytpl;
currentDate.setDate(currentDate.getDate() + 30);
form.render();
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
value: new Date(),
done: function(value) {
minDate = value;
reRender();
}
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
value: new Date(currentDate)
});
/**
* 重新渲染结束时间
* */
function reRender() {
$("#end_time").remove();
$(".end-time").html('<input type="text" id="end_time" name="end_time" placeholder="请输入结束时间" lay-verify="required|time" class = "layui-input len-mid" autocomplete="off"> ');
laydate.render({
elem: '#end_time',
type: 'datetime',
min: minDate
});
}
//参与条件
form.on('radio(participation)', function(data){
if (parseInt(data.value))
$('.participation-condition .layui-inline').removeClass('layui-hide');
else
$('.participation-condition .layui-inline').addClass('layui-hide');
});
form.on('radio(join_type)', function(data){
if (data.value == 1 ) {
$("#time").addClass('layui-hide');
}else {
$("#time").removeClass('layui-hide');
}
});
form.on('radio(join_time)', function(data){
if (data.value == 1 ) {
$("#join_time").removeClass('layui-hide');
$("#self_time").addClass('layui-hide');
$("#festival_name").addClass('layui-hide');
}else {
$("#join_time").addClass('layui-hide');
$("#self_time").removeClass('layui-hide');
$("#festival_name").removeClass('layui-hide');
}
});
/**
* 表单验证
*/
form.verify({
time: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
var time_type = $('input[name="join_time"]:checked').val();
if(time_type == 0){
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
}
},
holiday:function(){
if($('input[name = "join_time"]:checked').val() == 1 && $('.holiday-hidden').val() != 1){
return "请选择节日日期";
}
},
type: function(){
if ($('.reward-wrap [name="type"]:checked').length == 0) {
return '请选择领奖励内容';
}
},
mum: function(value, item){
if (/^\d{0,10}$/.test(value) === false) {
return '请输入大于0的整数';
}
if (parseInt(value) <= 0) {
return '请输入大于0的整数';
}
},
// float: function(value, item){
// if (/^\d{0,10}$/.test(value) === false) {
// return '请输入大于0的数字支持小数点后两位';
// }
// if (parseInt(value) <= 0) {
// return '请输入大于0的数字支持小数点后两位';
// }
// },
join_frequency: function(value){
if(value > 7){
return '不得超过7天'
}
}
});
form.on('checkbox(type)', function(data) {
$('[name="type"]').each(function(){
var type = $(this).val();
if ($(this).is(':checked')) {
$('.reward-wrap .' + type + '-wrap').removeClass('layui-hide');
if (type == 'point' || type == 'coupon') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|mum');
}
if (type == 'balance') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|float');
}
} else {
$('.reward-wrap .' + type + '-wrap').addClass('layui-hide');
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', '');
}
})
});
/**
* 表单提交
*/
form.on('submit(save)', function(data){
let coupon_selected_ids = coupon_select.getSelectedData().selectedIds;
var type = [];
$('.reward-wrap [name="type"]:checked').each(function(){
type.push($(this).val());
});
if ($.inArray('coupon', type) != -1 && coupon_selected_ids.length == 0) {
layer.msg('请选择优惠券', {icon: 5});
return;
}
if(data.field.join_time == 0 && data.field.festival_name == '') {
layer.msg('请输入节日名称');
return;
}
if(data.field.max_fetch == ''){
layer.msg('请输入邀请奖励上限', {icon: 5});
return;
}else if (data.field.max_fetch < 0){
layer.msg('请输入大于或等于0的整数', {icon: 5});
return;
}
data.field.type = type.toString();
data.field.coupon = coupon_selected_ids.toString();
if (parseInt(data.field.level_id)){
var levelId = [],
levelName = [];
$('.level-id').each(function(){
if($(this).prop('checked')){
levelId.push($(this).val());
levelName.push($(this).attr("title"));
}
});
data.field.level_id = levelId.toString();
data.field.level_name = levelName.toString();
}
if($("input[name='level_id']:checked").val() == 1 && data.field.level_id.length == 0){
layer.msg('请选择会员等级', {icon: 5});
return;
}
if (!data.field.no_winning_img && upload.path != 'public/uniapp/game/no_winning.png') upload.delete();
if(repeat_flag) return;
repeat_flag = true;
if($('.holiday-name').html()){
data.field.holiday_name = $('.holiday-name').html();
data.field.holiday_time =$('.holiday-name').attr('date-time')
}else{
data.field.holiday_name = '';
data.field.holiday_time = '';
}
// console.log($('input[name = "join_time"]:checked').val())
// console.log($('.holiday-hidden').val())
// console.log($('input[name = "join_time"]:checked').val() == 1 && $('.holiday-hidden').val() > 0)
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("scenefestival://shop/scenefestival/add"),
data: data.field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function(index, layero){
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
var upload = new Upload({
elem: '#no_winning_img'
});
});
function backScenefestivalList() {
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
}
//检测数据类型
function detectionNumType(el,type){
var value = $(el).val();
//大于零 且 不是小数
if (value < 0 && type == 'integral')
$(el).val(0);
else if(type == 'integral')
$(el).val(Math.round(value));
//大于1 且 不是小数
if (value < 1 && type == 'positiveInteger'){
$(el).val(1);
} else if (type == 'positiveInteger'){
var val = Math.round(value);
if(Object.is(val,NaN)){
$(el).val(1);
}else{
$(el).val(val);
}
}
//大于零可以是小数
if (type == 'positiveNumber'){
value = parseFloat(value).toFixed(2);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
//大于零可以是小数
if (type == 'positiveMoney'){
value = parseFloat(value).toFixed(2);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
}
// 选择节日日期
function choose() {
var data = {};
laytpl($("#choose_time").html()).render(data, function(html) {
coupon_list = layer.open({
title: '选择节日',
skin: 'layer-tips-class',
type: 1,
area: ['520px', 'auto'],
btn:['确定','取消'],
content: html,
});
form.render();
$('.holiday').each(function(){
if($(this).html() == $('.holiday-name').html()){
$(this).addClass('holiday-active bg-color')
}
});
});
}
function holiday(data){
$('.holiday').removeClass('holiday-active bg-color');
$(data).addClass('holiday-active bg-color');
$('.holiday-name').html($(data).html());
$('.holiday-hidden').val(1);
$('.holiday-name').attr('date-time' , $(data).attr('date-time'))
}
</script>
<script type="text/html" id="choose_time">
<div class="choose-time">
<div class="choose-item">
<p>传统节日</p>
{foreach $jieri_list as $jieri_list_k => $jieri_list_v}
<span class="border-color holiday" date-time="{$jieri_list_v.date}" onclick = "holiday(this)">{$jieri_list_v.holiday_cn}</span>
{/foreach}
</div>
</div>
</script>

View File

@@ -0,0 +1,276 @@
<script type="text/html" id="add_award">
<div class="layui-form form-wrap add-award">
{{# if($.isEmptyObject(d)){ }}
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-block">
<input type="text" maxlength="6" placeholder="最多可输入6个字" value="" name="award_name" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
<div class="layui-form-item award-type">
<label class="layui-form-label">奖品</label>
<div class="layui-input-block">
<div class="layui-input-block coupon">
<input type="radio" name="award_type" value="3" title="优惠券" checked>
<div class="len-mid coupon-box">
<span class="coupon-title">请选择</span>
<div class="coupon-option layui-hide">
<div class="coupon-search">
<i class="layui-icon">&#xe615;</i>
<input type="text" class="layui-input" placeholder="请输入搜索内容">
</div>
<div class="coupon-item-box">
<div class="coupon-item">内容</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="relate_name">
<input type="hidden" name="relate_id">
<div class="layui-input-block">
<input type="radio" name="award_type" value="1" title="积分">
<input type="text" name="point" value="1" class="layui-input len-mid">
<div class="layui-word-aux">积分</div>
</div>
<div class="layui-input-block">
<input type="radio" name="award_type" value="2" title="红包">
<input type="text" name="balance" value="1" class="layui-input len-mid" onchange="detectionNumType(this,'positiveMoney')">
<div class="layui-word-aux"></div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-block">
<input type="text" name="award_num" value="1" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-inline">
<input type="text" name="award_winning_rate" value="1" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
{{# }else{ }}
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-block">
<input type="text" maxlength="6" placeholder="最多可输入6个字" value="{{d.award_name}}" name="award_name" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
<div class="layui-form-item award-type">
<label class="layui-form-label">奖品</label>
<div class="layui-input-block">
<!-- 红包 -->
{{# if(d.award_type == 3){ }}
<div class="layui-input-block coupon">
<input type="radio" name="award_type" value="3" title="优惠券" checked>
<div class="len-mid coupon-box">
<span class="coupon-title">{{d.relate_name}}</span>
<div class="coupon-option layui-hide">
<div class="coupon-search">
<i class="layui-icon">&#xe615;</i>
<input type="text" class="layui-input" placeholder="请输入搜索内容">
</div>
<div class="coupon-item-box"></div>
</div>
</div>
</div>
<input type="hidden" name="relate_name" value="{{d.relate_name}}">
<input type="hidden" name="relate_id" value="{{d.relate_id}}">
{{# }else{ }}
<div class="layui-input-block coupon">
<input type="radio" name="award_type" value="3" title="优惠券" checked>
<div class="len-mid coupon-box">
<span class="coupon-title">请选择</span>
<div class="coupon-option layui-hide">
<div class="coupon-search">
<i class="layui-icon">&#xe615;</i>
<input type="text" class="layui-input" placeholder="请输入搜索内容">
</div>
<div class="coupon-item-box"></div>
</div>
</div>
</div>
<input type="hidden" name="relate_name">
<input type="hidden" name="relate_id">
{{# } }}
<!-- 积分 -->
{{# if(d.award_type == 1){ }}
<div class="layui-input-block">
<input type="radio" name="award_type" value="1" title="积分" checked>
<input type="text" name="point" value="{{d.point}}" class="layui-input len-mid">
<div class="layui-word-aux">积分</div>
</div>
{{# }else{ }}
<div class="layui-input-block">
<input type="radio" name="award_type" value="1" title="积分">
<input type="text" name="point" value="1" class="layui-input len-mid">
<div class="layui-word-aux">积分</div>
</div>
{{# } }}
<!-- 红包 -->
{{# if(d.award_type == 2){ }}
<div class="layui-input-block">
<input type="radio" name="award_type" value="2" title="红包" checked>
<input type="text" name="balance" value="{{d.balance}}" onchange="detectionNumType(this,'positiveMoney')" class="layui-input len-mid">
<div class="layui-word-aux"></div>
</div>
{{# }else{ }}
<div class="layui-input-block">
<input type="radio" name="award_type" value="2" title="红包">
<input type="text" name="balance" value="1" class="layui-input len-mid" onchange="detectionNumType(this,'positiveMoney')">
<div class="layui-word-aux"></div>
</div>
{{# } }}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-block">
<input type="text" name="award_num" value="{{d.award_num}}" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span></label>
<div class="layui-input-inline">
<input type="text" name="award_winning_rate" value="{{d.award_winning_rate}}" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-mid">
</div>
</div>
<input type="hidden" name="ident" value="{{d.ident}}">
{{# } }}
<input type="hidden" name="award_id" value="{{d.award_id}}">
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="addAwardSave">确定</button>
<button class="layui-btn layui-btn-primary" onclick="cancelAward()">取消</button>
</div>
</div>
</script>
<script>
/*
* 奖品弹框
* */
function awardPop(data = {}){
laytpl($('#add_award').html()).render(data,function(html){
layer.open({
type: 1,
title: '添加奖品',
area:['650px','auto'],
content: html,
success: function(layero, index){
form.render();
form.on('submit(addAwardSave)', function(data) {
if (data.field.award_type == 3 && !data.field.relate_name){
layer.msg("请选择优惠券");
return false;
}
if (data.field.award_type == 1 && data.field.point <=0){
layer.msg("积分必须大于0");
return false;
}
if (data.field.award_type == 2 && data.field.balance <=0){
layer.msg("红包必须大于0");
return false;
}
if (tableData.length > 0 && data.field.ident){
for (var i = 0; i < tableData.length; i++){
if(tableData[i].ident == data.field.ident){
tableData[i] = data.field;
break;
}
}
}else{
data.field.ident = ++awardId;
tableData.push(data.field);
}
renderTable(tableData);
layer.closeAll();
})
}
});
});
getCouponData({'status': 1});
//选择框效果
$(".award-type .coupon-title").click(function (e) {
e.stopPropagation(); //阻止事件冒泡
if (!$(this).hasClass("focus")){
$(this).addClass("focus border-color");
$(this).parents(".coupon-box").find(".coupon-option").removeClass("layui-hide");
} else{
$(this).removeClass("focus border-color");
$(this).parents(".coupon-box").find(".coupon-option").addClass("layui-hide");
}
})
}
/*
* 获取优惠券数据
* */
var getCouponIdent = false;
function getCouponData(data = ''){
if (getCouponIdent) return false;
getCouponIdent = true;
$.ajax({
url: ns.url("coupon://shop/coupon/lists"),
dataType: 'json',
data: data,
type: 'post',
success : function(res) {
getCouponIdent = false;
$(".coupon-search input").val();
var data = res.data.list,
html = '';
if (res.code >= 0){
for(var i = 0; i < data.length; i++){
html += '<div class="coupon-item layui-elip" data-coupon_id="'+data[i].coupon_type_id+'">'+ data[i].coupon_name +'</div>';
}
$(".add-award .coupon .coupon-item-box").html(html);
}else {
layer.msg(res.message);
}
}
});
}
//点击搜素对应优惠券
$("body").off("click",".coupon-search i").on("click",".coupon-search i",function (e) {
e.stopPropagation(); //阻止事件冒泡
var data = {'coupon_name': $(".coupon-search input").val(),'status': 1};
getCouponData(data);
});
//选择具体优惠券
$("body").off("click",".add-award .coupon .coupon-item").on("click",".add-award .coupon .coupon-item",function (e) {
e.stopPropagation(); //阻止事件冒泡
$("input[name='relate_name']").val($(this).text());
$("input[name='relate_id']").val($(this).attr('data-coupon_id'));
$(this).parents(".coupon-box").find(".coupon-title").text($(this).text());
$(".coupon-option").addClass("layui-hide");
$(".award-type .coupon-title").removeClass("focus border-color");
});
$("body").off("click",".add-award .coupon-search").on("click",".add-award .coupon-search", function (e) {
e.stopPropagation(); //阻止事件冒泡
});
function cancelAward (){
layer.closeAll();
}
</script>

View File

@@ -0,0 +1,153 @@
<link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
<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="promotion-view">
<div class="promotion-view-item">
<label>活动名称:</label>
<span>{$info.activity_name}</span>
</div>
<div class="promotion-view-item">
<label>活动状态:</label>
<span>{$info.status_name}</span>
</div>
<div class="promotion-view-item">
<label>开始时间:</label>
<span>{:date('Y-m-d H:i:s',$info.start_time)}</span>
</div>
<div class="promotion-view-item">
<label>节日:</label>
<span>{$info.festival_name}</span>
</div>
<div class="promotion-view-item">
<label>结束时间:</label>
<span>{:date('Y-m-d H:i:s',$info.end_time)}</span>
</div>
<div class="promotion-view-item">
<label>添加时间:</label>
<span>{:date('Y-m-d H:i:s',$info.create_time)}</span>
</div>
<div class="promotion-view-item">
<label>参与条件:</label>
<span>{if $info.level_id == 0} 全部会员 {else/} {$info.level_name} {/if}</span>
</div>
<div class="promotion-view-item">
<label>奖励发放时间:</label>
<span>{if $info.join_type == 1} 活动时间内{else/} 活动开始前{$info.join_frequency}天{/if}</span>
</div>
{if in_array('point', $info['award_type'])}
<div class="promotion-view-item">
<label>奖励积分:</label>
<span>{$info.point}</span>
</div>
{/if}
{if in_array('balance', $info['award_type'])}
<div class="layui-form-item">
<label>奖励红包:</label>
<span>{$info.balance}</span>
</div>
{/if}
</div>
{if !empty($info.remark)}
<div class="promotion-view">
<div class="promotion-view-item-line">
<label class="promotion-view-item-custom-label">祝福语:</label>
<div class="promotion-view-item-custom-box">{$info.remark}</div>
</div>
</div>
{/if}
</div>
</div>
{if in_array('coupon', $info['award_type']) && !empty($info['coupon_list'])}
<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='promotion-view-list'>
<table id="promotion_list"></table>
</div>
</div>
</div>
{/if}
<script type='text/html' id="promotion_list_item_box_html">
<div class="promotion-list-item-title">
<div class="promotion-list-item-title-icon">
{{# if(d.image != ''){ }}
<img src="{{ ns.img(d.image) }}">
{{# }else{ }}
<img src="__ROOT__/public/uniapp/game/coupon.png">
{{# } }}
</div>
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.coupon_name }}</p>
</div>
</script>
<script>
var promotion_list = {if !empty($info.coupon_list)}{:json_encode($info.coupon_list, JSON_UNESCAPED_UNICODE)}{/if};
layui.use('table', function() {
new Table({
elem: '#promotion_list',
cols: [
[{
title: '优惠券名称',
width: '30%',
unresize: 'false',
templet: '#promotion_list_item_box_html'
}, {
title: '类型',
templet: function(data) {
return data.type == 'reward' ? '满减': '折扣';
}
}, {
title: '优惠金额/折扣',
templet: function(data) {
return data.type == 'reward' ? data.money : data.discount;
}
}, {
title: '适用商品',
templet: function (data) {
return data.goods_type_name;
}
}, {
field: 'max_fetch',
title: '领取人限制',
}, {
field: 'price',
title: '已领取/发放数',
templet: function(data) {
return data.count == -1 ? data.lead_count+'/不限量': data.lead_count+'/'+data.count;
}
}, {
field: 'stock',
title: '结束时间',
unresize: 'false',
width:'20%',
templet: function(data) {
var str = '';
switch(data.validity_type) {
case 0:
str = ns.time_to_date(data.end_time);
break;
case 1:
str = '领取之日起' + data.fixed_term + '天有效';
break;
default:
str = '长期有效';
break;
}
}
}]
],
data: promotion_list
});
});
</script>

View File

@@ -0,0 +1,596 @@
<link rel="stylesheet" href="SHOP_CSS/game.css">
<style>
.choose-item > span {
display: inline-block;
padding: 0 10px;
height: 36px;
line-height: 36px;
text-align: center;
border-radius: 4px;
border: 1px solid #ededed;
position: relative;
cursor: pointer;
margin: 5px 0;
margin-right: 11px;
}
.choose-item > span i {
position: absolute;
bottom: -5px;
right: -6px;
border-radius: 50%;
color: #FFF;
font-size: 14px;
line-height: 1;
}
.holiday-active {
color: #fff;
}
.holiday-hidden {
border: none;
width: .1px;
}
.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 .select-coupon-btn{
margin-top: 10px;
}
.layui-layer-page .layui-layer-content{
overflow-y: scroll!important;
}
</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 type="text" name="activity_name" lay-verify="required" maxlength="15" placeholder="最多可填写15个字" autocomplete="off" class="layui-input len-long" value="{$info.activity_name}">
</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="join_time" {if($info.join_time) == 1}checked {/if} value="1" lay-verify="required" lay-filter="join_time" title="传统节日">
<input type="radio" name="join_time"{if($info.join_time) == 0}checked {/if} value="0" lay-verify="required" lay-filter="join_time" title="自定义节日">
</div>
</div>
<div class="layui-form-item {if($info.join_time) == 0}layui-hide {/if}" id="join_time">
<label class="layui-form-label">节日日期:</label>
<div class="layui-input-block">
<span class="holiday-name">{$info.festival_name}</span>
<input type="hidden" class="holiday-hidden" lay-verify='holiday' value="">
<button class="layui-btn" type="button" onclick="choose()">重新选择</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">祝福语:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" value="{$info.remark}" maxlength="150">{$info.remark}</textarea>
</div>
</div>
<div class="layui-form-item {if($info.join_time) == 1}layui-hide {/if}" id="festival_name">
<label class="layui-form-label"><span class="required">*</span>节日名称:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" maxlength="15" placeholder="最多可填写15个字" name="festival_name" value="{$info.festival_name}" class="layui-input len-mid" autocomplete="off">
</div>
</div>
</div>
<div class="layui-form-item {if($info.join_time) == 1}layui-hide {/if}" id="self_time">
<label class="layui-form-label"><span class="required">*</span>节日日期:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" value="{:date('Y-m-d H:i:s', $info.start_time)}" id="start_time" name="start_time" lay-verify="required" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline end-time">
<input type="hidden" value="{:date('Y-m-d H:i:s', $info.end_time)}" id="old_end_time">
<input type="text" id="end_time" value="{:date('Y-m-d H:i:s', $info.end_time)}" name="end_time" lay-verify="required|time" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item participation-condition">
<label class="layui-form-label">参与条件:</label>
<div class="layui-input-block">
<input type="radio" name="level_id" value="0" lay-filter="participation" title="全部会员" {if $info.level_id == 0}checked{/if}>
<input type="radio" name="level_id" value="1" lay-filter="participation" title="部分会员" {if $info.level_id != 0}checked{/if}>
</div>
<div class="layui-inline {if $info.level_id == 0}layui-hide{/if}">
<label class="layui-form-label"></label>
<div class="layui-input-block">
{foreach $member_level_list as $k =>$v}
<input type="checkbox" class="level-id" value="{$v.level_id}" title="{$v.level_name}" lay-skin="primary">
{/foreach}
</div>
</div>
<div class="word-aux">选择参与的会员等级,默认为所有会员都可参与</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励发放时间:</label>
<div class="layui-input-inline">
<input type="radio" name="join_type" value="1" lay-verify="required" lay-filter="join_type" title="活动时间内" {if $info.join_type == 1} checked{/if}>
<input type="radio" name="join_type" value="0" lay-verify="required" lay-filter="join_type" title="活动开始前" {if $info.join_type == 0} checked{/if}>
<span id="time" class="{if $info.join_type == 1} layui-hide{/if}">
<input type="number" name="join_frequency" min="0" value="{$info.join_frequency}" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-short">
</span>
</div>
</div>
<!-- <div class="layui-form-item layui-hide" id="time">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="number" name="join_frequency" min="0" value="{$info.join_frequency}" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required" autocomplete="off" class="layui-input len-short"> 次
</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 reward-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励内容:</label>
<div class="layui-input-block">
<input type="checkbox" name="type" value="point" title="积分" lay-skin="primary" lay-filter="type" lay-verify="type" {if in_array('point', $info['award_type']) }checked{/if}>
<input type="checkbox" name="type" value="balance" title="余额" lay-skin="primary" lay-filter="type" lay-verify="type" {if in_array('balance', $info['award_type']) }checked{/if}>
<input type="checkbox" name="type" value="coupon" title="优惠券" lay-skin="primary" lay-filter="type" lay-verify="type" {if in_array('coupon', $info['award_type']) }checked{/if}>
</div>
</div>
<div class="point-wrap {if !in_array('point', $info['award_type']) }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="point" value="{$info.point}" onchange="detectionNumType(this,'positiveInteger')" type="number" id="point" lay-verify="{if in_array('point', $info['award_type']) }required|num{/if}" class="layui-input len-short">
</div>
</div>
</div>
<!-- <div class="balance-wrap {if !in_array('balance', $info['award_type']) }layui-hide{/if}">-->
<!-- <div class="layui-form-item">-->
<!-- <label class="layui-form-label"><span class="required">*</span>奖励红包:</label>-->
<!-- <div class="layui-input-block len-long">-->
<!-- <input name="balance" value="{$info.balance}" type="number" lay-verify="{if in_array('balance', $info['award_type']) }required|float{/if}" class="layui-input len-short">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="word-aux"><p>红包为储值余额,仅在消费时可用</p></div>-->
<!-- </div>-->
<div class="balance-wrap {if !in_array('balance', $info['award_type']) }layui-hide{/if}">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励红包:</label>
<div class="layui-input-block len-long">
<input type="radio" name="balance_type" lay-verify="balance_type" value="0" {if $info.balance_type == 0} checked {/if} title="不可提现"><input name="balance" onchange="detectionNumType(this,'positiveNumber')" value="{$info.balance}" type="number" lay-verify="" class="layui-input len-short">
</div>
<!--<label class="layui-form-label"></label>-->
<!--<div class="layui-input-block len-long">-->
<!--<input type="radio" name="balance_type" lay-verify="balance_type" value="1" {if $info.balance_type == 1} checked {/if} title="可提现">&nbsp&nbsp&nbsp&nbsp<input name="balance_money" onchange="detectionNumType(this,'positiveInteger')" value="{$info.balance_money}" type="number" lay-verify="" class="layui-input len-short">元-->
<!--</div>-->
</div>
<!-- <div class="word-aux"><p>红包为储值余额,仅在消费时可用</p></div>-->
</div>
<div class="coupon-wrap {if !in_array('coupon', $info['award_type']) }layui-hide{/if}">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励优惠券:</label>
<div class="layui-input-block">
<div id="coupon_list"></div>
<div class="word-aux text-color" style="margin-left: 0">
<p>活动优惠券发放,不受优惠券自身数量和领取数量的限制</p>
</div>
<button class="layui-btn" id="select_coupon">选择优惠券</button>
</div>
</div>
</div>
<input type="hidden" name="festival_id" value="{$info.festival_id}">
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backScenefestivalList()">返回</button>
</div>
</div>
</div>
</div>
<!-- 添加奖品 -->
{include file="scenefestival/award_select" /}
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
<script>
var form,laydate,upload,laytpl,repeat_flag = false,
awardId = 0,
minDate = "",
coupon_id = [], addCoupon;
var coupon_select = new CouponSelect({
tableElem:'#coupon_list',
selectElem:'#select_coupon',
selectedIds:'{$info.coupon}',
})
layui.use(['form', 'laydate', 'laytpl'], function() {
form = layui.form;
laydate = layui.laydate;
laytpl = layui.laytpl;
form.render();
initTableData();
var time = "{$info.time}",
start_time = "{$info.start_time}";
if (time < start_time){
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
done: function(value) {
minDate = value;
reRender();
}
});
}
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
});
/**
* 重新渲染结束时间
* */
function reRender() {
$("#end_time").remove();
$(".end-time").html('<input type="text" id="end_time" name="end_time" placeholder="请输入结束时间" lay-verify="required|time" class = "layui-input len-mid" autocomplete="off"> ');
laydate.render({
elem: '#end_time',
type: 'datetime',
min: minDate
});
}
//参与条件
form.on('radio(participation)', function(data){
if (parseInt(data.value))
$('.participation-condition .layui-inline').removeClass('layui-hide');
else
$('.participation-condition .layui-inline').addClass('layui-hide');
});
form.on('radio(join_type)', function(data){
if (data.value == 1 ) {
$("#time").addClass('layui-hide');
}else {
$("#time").removeClass('layui-hide');
}
});
form.on('radio(join_time)', function(data){
if (data.value == 1 ) {
$("#join_time").removeClass('layui-hide');
$("#self_time").addClass('layui-hide');
$("#festival_name").addClass('layui-hide');
}else {
$("#join_time").addClass('layui-hide');
$("#self_time").removeClass('layui-hide');
$("#festival_name").removeClass('layui-hide');
}
});
/**
* 表单验证
*/
form.verify({
time: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
var old_end_time = (new Date($("#old_end_time").val())).getTime();
var time_type = $('input[name="join_time"]:checked').val();
if(time_type == 0){
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
if (old_end_time > end_time){
return '结束时间不能小于之前设置的时间!';
}
}
},
holiday:function(){
if($('input[name = "join_time"]:checked').val() == 1 && $('.holiday-hidden').val() != 1){
return "请选择节日日期";
}
},
type: function(){
if ($('.reward-wrap [name="type"]:checked').length == 0) {
return '请选择领奖励内容';
}
},
mum: function(value, item){
if (/^\d{0,10}$/.test(value) === false) {
return '请输入大于0的整数';
}
if (parseInt(value) <= 0) {
return '请输入大于0的整数';
}
},
float: function(value, item){
if (/^\d{0,10}$/.test(value) === false) {
return '请输入大于0的数字支持小数点后两位';
}
if (parseInt(value) <= 0) {
return '请输入大于0的数字支持小数点后两位';
}
},
join_frequency: function(value){
if(value > 7){
return '不得超过7天'
}
}
});
form.on('checkbox(type)', function(data) {
$('[name="type"]').each(function(){
var type = $(this).val();
if ($(this).is(':checked')) {
$('.reward-wrap .' + type + '-wrap').removeClass('layui-hide');
if (type == 'point' || type == 'coupon') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|mum');
}
if (type == 'balance') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|float');
}
} else {
$('.reward-wrap .' + type + '-wrap').addClass('layui-hide');
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', '');
}
})
})
/**
* 表单提交
*/
form.on('submit(save)', function(data){
let coupon_selected_ids = coupon_select.getSelectedData().selectedIds;
if (parseInt(data.field.level_id)){
var levelId = [],
levelName = [];
$('.level-id').each(function(){
if($(this).prop('checked')){
levelId.push($(this).val());
levelName.push($(this).attr("title"));
}
});
data.field.level_id = levelId.toString();
data.field.level_name = levelName.toString();
}
var type = [];
$('.reward-wrap [name="type"]:checked').each(function(){
type.push($(this).val());
})
if ($.inArray('coupon', type) != -1 && coupon_selected_ids.length == 0) {
layer.msg('请选择优惠券', {icon: 5});
return;
}
if ($.inArray('point', type) != -1 ) {
if($('#point').val() <= 0){
layer.msg('积分请输入正整数', {icon: 5});
return;
}
}
var end_time = (new Date($("#end_time").val())).getTime();
var old_end_time = (new Date($("#old_end_time").val())).getTime();
if(old_end_time > end_time){
layer.msg('结束时间不能小于之前设置的时间!', {icon: 5});
return;
}
data.field.type = type.toString();
data.field.coupon = coupon_selected_ids.toString();
if($("input[name='level_id']:checked").val() == 1 && data.field.level_id.length == 0){
layer.msg('请选择会员等级', {icon: 5});
return;
}
if($('.holiday-name').html()){
data.field.holiday_name = $('.holiday-name').html();
data.field.holiday_time =$('.holiday-name').attr('date-time')
}else{
data.field.holiday_name = '';
data.field.holiday_time = '';
}
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("scenefestival://shop/scenefestival/edit"),
data: data.field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续编辑'],
yes: function(index, layero){
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
var upload = new Upload({
elem: '#no_winning_img'
});
//参与条件
form.on('radio(participation)', function(data){
if (parseInt(data.value))
$('.participation-condition .layui-inline').removeClass('layui-hide');
else
$('.participation-condition .layui-inline').addClass('layui-hide');
});
form.on('radio(join_type)', function(data){
if (data.value == 1 ) {
$("#time").addClass('layui-hide');
}else {
$("#time").removeClass('layui-hide');
}
});
});
//初始化数据
function initTableData(){
var levelIdStr = '{$info.level_id}',
levelIdArr = levelIdStr.split(",");
if (levelIdArr.length >= 1){
$(".participation-condition input.level-id").each(function (index,item) {
for (var i = 0; i < levelIdArr.length; i++){
if (parseInt($(item).val()) == levelIdArr[i]){
$(item).prop('checked',true);
}
}
});
form.render();
}
}
function backScenefestivalList() {
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
}
// 选择节日日期
function choose() {
var data = {};
laytpl($("#choose_time").html()).render(data, function(html) {
layer.open({
title: '选择节日',
skin: 'layer-tips-class',
type: 1,
area: ['520px', 'auto'],
btn:['确定','取消'],
content: html,
success: function (layero, index) {
$('.holiday').each(function(){
if($(this).html() == $('.holiday-name').html()){
$(this).addClass('holiday-active bg-color')
}
});
form.render();
}
});
});
}
function holiday(data){
$('.holiday').removeClass('holiday-active bg-color');
$(data).addClass('holiday-active bg-color');
$('.holiday-name').html($(data).html());
$('.holiday-hidden').val(1);
$('.holiday-name').attr('date-time' , $(data).attr('date-time'))
}
//检测数据类型
function detectionNumType(el,type){
var value = $(el).val();
//大于零 且 不是小数
if (value < 0 && type == 'integral')
$(el).val(0);
else if(type == 'integral')
$(el).val(Math.round(value));
//大于1 且 不是小数
if (value < 1 && type == 'positiveInteger'){
$(el).val(1);
} else if (type == 'positiveInteger'){
var val = Math.round(value);
if(Object.is(val,NaN)){
$(el).val(1);
}else{
$(el).val(val);
}
}
//大于零可以是小数
if (type == 'positiveNumber'){
value = parseFloat(value);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
}
</script>
<script type="text/html" id="choose_time">
<div class="choose-time">
<div class="choose-item">
<p>传统节日</p>
{foreach $jieri_list as $jieri_list_k => $jieri_list_v}
<span class="border-color holiday" date-time="{$jieri_list_v.date}" onclick = "holiday(this)">{$jieri_list_v.holiday_cn}</span>
{/foreach}
</div>
</div>
</script>

View File

@@ -0,0 +1,403 @@
<style>
.layui-table-view td:last-child>div{overflow: inherit;}
.operation-wrap{position: relative;}
.layui-table-box{overflow: inherit;}
.layui-table-body{overflow: inherit;}
.popup-qrcode-wrap{text-align: center;background: #fff;border-radius: 2px;box-shadow: 0 2px 8px 0 rgba(200,201,204,.5);padding: 10px;position: absolute;z-index: 1;top: -70px;left: -190px;display: none;width: 170px;height: 230px;}
.popup-qrcode-wrap:before, .popup-qrcode-wrap:after {left: 100%;top: 50%;border: solid transparent;content: " ";height: 0;width: 0;position: absolute;pointer-events: none;}
.popup-qrcode-wrap:before {border-color: transparent;border-left-color: #e5e5e5;border-width: 8px;margin-top: -29px;}
.popup-qrcode-wrap:after {border-color: transparent;border-left-color: #ffffff;border-width: 7px;margin-top: -31px;}
.popup-qrcode-wrap img{width: 150px;height: 150px;max-width: initial;}
.popup-qrcode-wrap p{font-size: 12px;margin: 5px 0;line-height: 1.8!important;}
.popup-qrcode-wrap a{font-size: 12px;}
.popup-qrcode-wrap input{opacity: 0;position: absolute;}
.popup-qrcode-wrap .popup-qrcode-loadimg {width: 16px!important; height: 16px!important; margin-top: 107px;}
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
</style>
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加节日有礼活动</button>
</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="activity_name" placeholder="请输入活动名称" autocomplete="off" class="layui-input">
</div>
</div>
<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>
</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>
<div class="layui-tab table-tab" lay-filter="cards_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="">全部</li>
<li data-status="0">未开始</li>
<li data-status="1">进行中</li>
<li data-status="2">已结束</li>
<li data-status="3">已关闭</li>
</ul>
<div class="layui-tab-content">
<!-- 列表 -->
<table id="festival_list" lay-filter="festival_list"></table>
</div>
</div>
<!-- 时间 -->
<script id="time" type="text/html">
<div class="layui-elip">开始: {{ns.time_to_date(d.start_time)}}</div>
<div class="layui-elip">结束{{ns.time_to_date(d.end_time)}}</div>
</script>
<!-- 状态 -->
<script type="text/html" id="status">
{{# if(d.status == 0){ }}
未开始
{{# }else if(d.status == 1){ }}
进行中
{{# }else if(d.status == 2){ }}
已结束
{{# }else if(d.status == 3){ }}
已关闭
{{# } }}
</script>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="operation-wrap" data-game-id="{{d.game_id}}">
<div class="popup-qrcode-wrap"><img class="popup-qrcode-loadimg" src="__STATIC__/loading/loading.gif" /></div>
<div class="table-btn">
<!-- <a class="layui-btn" lay-event="select">推广</a>-->
<a class="layui-btn" lay-event="detail">详情</a>
{{# if(d.status == 0){ }}
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="del">删除</a>
{{# }else if(d.status == 1){ }}
<a class="layui-btn" lay-event="close">关闭</a>
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="record">领取记录</a>
{{# }else if(d.status == 2){ }}
<a class="layui-btn" lay-event="del">删除</a>
<a class="layui-btn" lay-event="record">领取记录</a>
{{# }else if(d.status == 3){ }}
<a class="layui-btn" lay-event="del">删除</a>
<a class="layui-btn" lay-event="record">领取记录</a>
{{# } }}
</div>
</div>
</script>
<!-- 游戏推广 -->
<script type="text/html" id="game_url">
{{# if(d.path.h5.status == 1){ }}
<img src="{{ ns.img(d.path.h5.img) }}" alt="推广二维码">
<p class="qrcode-item-description">扫码后直接访问</p>
<a class="text-color" href="javascript:ns.copy('h5_url_{{ d.game_id }}');">复制链接</a>
<a class="text-color" href="{{ ns.img(d.path.h5.img) }}" download>下载二维码</a>
<input class="layui-input" type="text" value="{{ d.path.h5.url }}" id="h5_url_{{ d.game_id }}" readonly>
{{# } }}
</script>
<script>
layui.use(['form', 'element','laytpl','laydate'], function() {
var table,
form = layui.form,
laytpl = layui.laytpl,
element = layui.element,
laydate = layui.laydate,
repeat_flag = false; //防重复标识
form.render();
element.on('tab(cards_tab)', function() {
table.reload({
page: {
curr: 1
},
where: {
'status': this.getAttribute('data-status')
}
});
});
table = new Table({
elem: '#festival_list',
url: ns.url("scenefestival://shop/scenefestival/lists"),
cols: [
[{
field:'activity_name',
title: '活动名称',
unresize: 'false',
width:'15%'
},
{
field:'festival_name',
title: '节日名称',
unresize: 'false',
width:'15%'
},{
title: '参与条件',
unresize: 'false',
width:'15%',
templet: function(data) {
if(data.level_id == 0){
return '全部会员';
}else{
return data.level_name;
}
}
},
{
title: '奖励发放时间',
unresize: 'false',
width:'15%',
templet: function(data) {
if(data.join_type == 1){
return '活动时间内';
}else{
return '活动开始前'+data.join_frequency + '天';
}
}
},
// {
// field:'winning_num',
// title: '领取人数',
// unresize: 'false',
// width:'15%'
// },
{
title: '状态',
unresize: 'false',
templet: '#status'
}, {
title: '活动时间',
unresize: 'false',
width: '14%',
templet: '#time'
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
]
});
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime'
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
//监听Tab切换
element.on('tab(status)', function(data) {
var status = $(this).attr("data-status");
table.reload({
page: {
curr: 1
},
where: {
'status': status
}
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'detail': //详情
location.hash = ns.hash("scenefestival://shop/scenefestival/detail", {"festival_id": data.festival_id});
break;
case 'edit': //编辑
location.hash = ns.hash("scenefestival://shop/scenefestival/edit", {"festival_id": data.festival_id});
break;
case 'del': //删除
deleteFestival(data.festival_id);
break;
case 'close': // 结束
closeFestival(data.festival_id);
break;
case 'record': //领取记录
location.hash = ns.hash("scenefestival://shop/record/lists", {"festival_id": data.festival_id});
break;
case 'select'://推广
gameUrl(data);
break;
case 'start'://重启
start(data.festival_id);
break;
}
});
/**
* 删除
*/
function deleteFestival(festival_id) {
layer.confirm('确定要删除该节日有礼活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("scenefestival://shop/scenefestival/delete"),
data: {
festival_id: festival_id
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload({
page: {
curr: 1
},
});
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
// 结束
function closeFestival(festival_id) {
layer.confirm('确定要关闭该节日有礼活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("scenefestival://shop/scenefestival/finish"),
data: {
festival_id: festival_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 start(festival_id) {
layer.confirm('确定要重启该节日有礼活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("scenefestival://shop/scenefestival/start"),
data: {
festival_id:festival_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 gameUrl(data) {
$(".operation-wrap[data-game-id='" + data.game_id + "'] .popup-qrcode-wrap").css("display", "block");
$.ajax({
type: "POST",
url: ns.url("turntable://shop/turntable/gameUrl"),
data: {
'game_id': data.game_id
},
dataType: 'JSON',
success: function (res) {
if (res.data.path.h5.status == 1) {
res.data.game_id = data.game_id;
laytpl($("#game_url").html()).render(res.data, function (html) {
$(".operation-wrap[data-game-id='" + data.game_id + "'] .popup-qrcode-wrap").html(html).show();
$("body").bind('click',function (e) {
if (!$(e.target).closest(".popup-qrcode-wrap").length) {
$(".operation-wrap[data-game-id='" + data.game_id + "'] .popup-qrcode-wrap").hide();
$("body").unbind('click');
}
});
});
} else {
layer.msg(res.data.path.h5.message);
}
}
});
}
});
function add() {
location.hash = ns.hash("scenefestival://shop/scenefestival/add");
}
</script>