初始上传

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

226
addon/egg/shop/controller/Egg.php Executable file
View File

@@ -0,0 +1,226 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\egg\shop\controller;
use app\model\games\Games;
use app\model\member\MemberLevel;
use app\shop\controller\BaseShop;
/**
* 砸金蛋控制器
*/
class Egg extends BaseShop
{
//游戏类型
private $game_type = 'egg';
private $game_type_name = '砸金蛋';
private $game_url = '/pages_promotion/game/smash_eggs';
/*
* 砸金蛋活动列表
*/
public function lists()
{
//获取续签信息
if (request()->isJson()) {
$model = new Games();
$condition = [
[ 'site_id', '=', $this->site_id ],
[ 'game_type', '=', $this->game_type ]
];
$status = input('status', '');//砸金蛋状态
if ($status !== '') {
$condition[] = [ 'status', '=', $status ];
}
//游戏活动名称
$game_name = input('game_name', '');
if ($game_name) {
$condition[] = [ 'game_name', 'like', '%' . $game_name . '%' ];
}
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && !$end_time) {
$condition[] = [ 'end_time', '>=', date_to_time($start_time) ];
} elseif (!$start_time && $end_time) {
$condition[] = [ 'start_time', '<=', date_to_time($end_time) ];
} elseif ($start_time && $end_time) {
$start_timestamp = date_to_time($start_time);
$end_timestamp = date_to_time($end_time);
$sql = "start_time between {$start_timestamp} and {$end_timestamp}";
$sql .= " or end_time between {$start_timestamp} and {$end_timestamp}";
$sql .= " or (start_time <= {$start_timestamp} and end_time >= {$end_timestamp})";
$condition[] = [ '', 'exp', \think\facade\Db::raw($sql) ];
}
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$list = $model->getGamesPageList($condition, $page, $page_size, 'game_id desc');
return $list;
} else {
return $this->fetch("egg/lists");
}
}
/**
* 添加活动
*/
public function add()
{
if (request()->isJson()) {
//获取商品信息
$game_data = [
'site_id' => $this->site_id,
'game_name' => input('game_name', ''),
'game_type' => $this->game_type,
'game_type_name' => $this->game_type_name,
'level_id' => input('level_id', ''),
'level_name' => input('level_name', ''),
'points' => input('points', ''),
'start_time' => strtotime(input('start_time', '')),
'end_time' => strtotime(input('end_time', '')),
'remark' => input('remark', ''),
'winning_rate' => input('winning_rate', ''),
'no_winning_desc' => input('no_winning_desc', ''),
'is_show_winner' => input('is_show_winner', ''),
'join_type' => input('join_type', ''),
'join_frequency' => input('join_frequency', '')
];
$award_json = input('award_json', '');
$model = new Games();
return $model->addGames($game_data, $award_json);
} else {
//会员等级
$member_level_model = new MemberLevel();
$member_level_list = $member_level_model->getMemberLevelList([ [ 'site_id', '=', $this->site_id ] ], 'level_id, level_name', 'growth asc');
$this->assign('member_level_list', $member_level_list[ 'data' ]);
return $this->fetch("egg/add");
}
}
/**
* 编辑活动
*/
public function edit()
{
$model = new Games();
$game_id = input('game_id');
if (request()->isJson()) {
$game_data = [
'game_id' => $game_id,
'site_id' => $this->site_id,
'game_name' => input('game_name', ''),
'level_id' => input('level_id', ''),
'level_name' => input('level_name', ''),
'points' => input('points', ''),
'start_time' => strtotime(input('start_time', '')),
'end_time' => strtotime(input('end_time', '')),
'remark' => input('remark', ''),
'winning_rate' => input('winning_rate', ''),
'no_winning_desc' => input('no_winning_desc', ''),
'is_show_winner' => input('is_show_winner', ''),
'join_type' => input('join_type', ''),
'join_frequency' => input('join_frequency', '')
];
$award_json = input('award_json', '');
$delete_award_ids = input('delete_award_ids', '');
return $model->editGames([ [ 'site_id', '=', $this->site_id ], [ 'game_id', '=', $game_id ] ], $game_data, $award_json, $delete_award_ids);
} else {
//会员等级
$member_level_model = new MemberLevel();
$member_level_list = $member_level_model->getMemberLevelList([ [ 'site_id', '=', $this->site_id ] ], 'level_id, level_name', 'growth asc');
$this->assign('member_level_list', $member_level_list[ 'data' ]);
//获取游戏详情
$info = $model->getGamesDetail($this->site_id, $game_id);
$this->assign('info', $info[ 'data' ]);
if (empty($info[ 'data' ])) $this->error('未获取到活动数据', href_url('egg://shop/egg/lists'));
return $this->fetch("egg/edit");
}
}
/*
* 砸金蛋详情
*/
public function detail()
{
$egg_model = new Games();
$game_id = input('game_id', '');
//获取砸金蛋信息
$info = $egg_model->getGamesDetail($this->site_id, $game_id)[ 'data' ] ?? [];
if (empty($info)) $this->error('未获取到活动数据', href_url('egg://shop/egg/lists'));
$info[ 'status_name' ] = $egg_model->status[ $info[ 'status' ] ] ?? '';
$this->assign('info', $info);
return $this->fetch("egg/detail");
}
/*
* 删除砸金蛋活动
*/
public function delete()
{
$game_id = input('game_id', '');
$site_id = $this->site_id;
$egg_model = new Games();
return $egg_model->deleteGames($site_id, $game_id);
}
/*
* 结束砸金蛋活动
*/
public function finish()
{
$game_id = input('game_id', '');
$site_id = $this->site_id;
$egg_model = new Games();
return $egg_model->finishGames($site_id, $game_id);
}
/*
* 重启砸金蛋活动
*/
public function start()
{
$game_id = input('game_id', '');
$egg_model = new Games();
return $egg_model->startGames($game_id);
}
/**
* 游戏推广
* return
*/
public function gameUrl()
{
$game_id = input('game_id', '');
$app_type = input('app_type', '');
$model = new Games();
$res = $model->gameUrlQrcode($this->game_url, [ 'id' => $game_id ], 'egg', $app_type, $this->site_id);
return $res;
}
}

434
addon/egg/shop/view/egg/add.html Executable file
View File

@@ -0,0 +1,434 @@
<link rel="stylesheet" href="SHOP_CSS/game.css">
<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="game_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-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">
<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="number" min="0" name="points" lay-verify="required" onchange="detectionNumType(this,'integral')" class="layui-input len-short" autocomplete="off" value="1">
</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" title="每天N次" checked>
<input type="radio" name="join_type" value="0" lay-verify="required" title="一人N次">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="number" name="join_frequency" min="0" lay-verify="required" 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"><span class="required">*</span>整体中奖概率:</label>
<div class="layui-input-block">
<input type="text" name="winning_rate" min="0" max="100" lay-verify="winning_rate" onchange="detectionNumType(this,'positiveNumber') " value="1.00" autocomplete="off" class="layui-input len-short"> %
</div>
<div class="word-aux">
<span class="aux-title">注意:</span>
<div class="aux-item">若整体中奖概率为100%,需满足以下条件:</div>
<div class="aux-item">1、奖品对应的活动不能失效奖品状态正常。</div>
<div class="aux-item">2、保持奖品库存需充足活动库存充足当奖项被领取完此时中奖概率已经非100%。</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">未中奖提示语:</label>
<div class="layui-input-block">
<input type="text" name="no_winning_desc" value="很遗憾,未中奖" lay-verify="required" autocomplete="off" 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">
<input type="radio" name="is_show_winner" value="0" lay-verify="required" title="不显示" checked>
<input type="radio" name="is_show_winner" value="1" lay-verify="required" title="显示">
</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项。</div>
</div>
<div class="word-aux">
<button class="layui-btn" onclick="addAward()">添加奖品</button>
</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="backEggList()">返回</button>
</div>
</div>
<!-- 添加奖品 -->
{include file="egg/award_select" /}
<script>
var form,laydate,laytpl,tableData = [],
repeat_flag = false,
awardId = 0,
currentDate = new Date(),
minDate = "";
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.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();
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
flnum: function(value) {
var arrMen = value.split(".");
var val = 0;
if (arrMen.length == 2) {
val = arrMen[1];
}
if (val.length > 2) {
return '保留小数点后两位!'
}
},
int: function(value) {
if (value <= 1 || value % 1 != 0) {
return '请输入大于1的正整数'
}
},
detectionNum: 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";
}
},
winning_rate:function (value) {
if (value.length > 0) {
if (isNaN(value)) {
return '中奖概率输入错误';
}
if ( value < 0 || value > 100) {
return '中奖概率范围:0~100%';
}
}
}
});
/**
* 表单提交
*/
form.on('submit(save)', function(data){
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 (!tableData.length){
layer.msg("奖品奖项不能少于1项。");
return false;
}
data.field.award_json = JSON.stringify(tableData);
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("egg://shop/egg/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("egg://shop/egg/lists");
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
/*
* 渲染表格
* */
renderTable();
function renderTable(data = []){
var table = new Table({
elem: "#award_list",
cols: [
[{
field: 'award_name',
title: '名称',
width: '30%',
unresize: 'false'
},{
field: 'award_type',
title: '奖品',
unresize: 'false',
width: '20%',
templet: function(data) {
var type = data.award_type == 1 ? '积分' : data.award_type == 2 ? '红包' : '优惠券';
return type;
}
}, {
field: 'award_num',
title: '奖品数量',
unresize: 'false',
width: '15%',
}, {
field: 'award_winning_rate',
title: '奖项权重',
unresize: 'false',
width: '15%'
},{
title: '操作',
toolbar: '#operation',
align: 'right',
unresize: 'false'
}]
],
data: data
});
}
//添加奖品
function addAward(){
awardPop();
}
//编辑奖品
function ediAward(el) {
var data = $(el).attr("data-value");
awardPop(JSON.parse(data));
}
//删除奖品
function delAward(data) {
for (var i = 0; i < tableData.length; i++){
if (tableData[i].ident == data){
tableData.splice(i,1);
renderTable(tableData);
}
}
}
function backEggList() {
location.hash = ns.hash("egg://shop/egg/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);
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);
}
//自然整数 包括0
if(type == 'nativeInteger'){
value = parseInt(value);
if(value < 0) value = 0;
$(el).val(value);
}
}
</script>
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" data-value='{{JSON.stringify(d)}}' onclick="ediAward(this)">编辑</a>
<a class="layui-btn" onclick="delAward('{{d.ident}}')">删除</a>
</div>
</script>

View File

@@ -0,0 +1,282 @@
<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" onchange="detectionNumType(this,'positiveInteger')" 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" onchange="detectionNumType(this,'positiveMoney')" value="1" class="layui-input len-mid">
<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,'nativeInteger')" 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}}" onchange="detectionNumType(this,'positiveInteger')" 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" onchange="detectionNumType(this,'positiveInteger')" 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,'nativeInteger')" 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 && isInteger(data.field.point) == false){
layer.msg("积分请输入正整数");
return false;
}
//if (data.field.award_type == 2 && isInteger(data.field.balance) == false){
// layer.msg("红包请输入正整数");
//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();
}
function isInteger(obj) {
var r = /^\+?[1-9][0-9]*$/; //正整数
flag=r.test(obj);
return flag;
}
</script>

View File

@@ -0,0 +1,238 @@
<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.game_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>{:date('Y-m-d H:i:s',$info.end_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>{$info.points}</span>
</div>
<div class="promotion-view-item">
<label>参与次数:</label>
<span>{if $info.join_type == 1} 每天{$info.join_frequency}次{else/} 一人{$info.join_frequency}次{/if}</span>
</div>
<!-- 中奖配置 -->
<div class="promotion-view-item">
<label>整体中奖概率:</label>
<span>{$info.winning_rate}%</span>
</div>
<div class="promotion-view-item">
<label>未中奖提示语:</label>
<span>{$info.no_winning_desc}</span>
</div>
<div class="promotion-view-item">
<label>中奖名单是否显示:</label>
<span>{if $info.is_show_winner == 0} 不显示{else/}显示{/if}</span>
</div>
</div>
<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>
</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='promotion-view-list'>
<table id="promotion_list"></table>
</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='promotion-view-list'>
<!-- 搜索框 -->
<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>
</div>
</div>
</div>
<script>
var promotion_list = {:json_encode($info.game_award, JSON_UNESCAPED_UNICODE)};
layui.use(['form', 'element','laydate'], function() {
new Table({
elem: '#promotion_list',
cols: [
[{
field: 'award_name',
title: '名称',
width: '20%',
}, {
title: '奖品',
templet: function(data) {
var type = data.award_type == 1 ? '积分' : data.award_type == 2 ? '红包' : '优惠券';
return type;
},
width: '20%',
}, {
field:'award_num',
title: '奖品数量',
width: '20%',
}, {
field:'award_winning_rate',
title: '奖项权重',
width: '20%'
}]
],
data: promotion_list
});
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("shop/gamesrecords/lists"),
where:{
'game_id':"{$info.game_id}"
},
cols: [
[{
field:'member_nick_name',
title: '会员昵称',
unresize: 'false',
width:'45%'
}, {
field: '',
title: '中奖信息',
unresize: 'false',
templet: function(data){
if(data.is_winning == 1){
if(data.award_type == 1){
return data.award_name + "【"+data.point+"积分】";
}
if(data.award_type == 2){
return data.award_name + "【"+data.balance+"红包】";
}
if(data.award_type == 3){
return data.award_name + "【"+data.relate_name+"】";
}
}else{
return '未中奖';
}
}
}, {
title: '抽奖时间',
unresize: 'false',
templet: function(data){
return ns.time_to_date(data.create_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>

458
addon/egg/shop/view/egg/edit.html Executable file
View File

@@ -0,0 +1,458 @@
<link rel="stylesheet" href="SHOP_CSS/game.css">
<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="game_name" lay-verify="required" maxlength="15" placeholder="最多可填写15个字" autocomplete="off" class="layui-input len-long" value="{$info.game_name}">
</div>
</div>
<div class="layui-form-item">
<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">
<label class="layui-form-label">活动说明:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" maxlength="150">{$info.remark}</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="全部会员" {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-block">
<input type="number" min="0" name="points" lay-verify="required" onchange="detectionNumType(this,'integral')" value="{$info.points}" class="layui-input len-short" autocomplete="off">
</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" title="每天N次" {if $info.join_type == 1} checked{/if}>
<input type="radio" name="join_type" value="0" lay-verify="required" title="一人N次" {if $info.join_type == 0} checked{/if}>
</div>
</div>
<div class="layui-form-item">
<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">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>整体中奖概率:</label>
<div class="layui-input-block">
<input type="text" name="winning_rate" min="0" max="100" value="{$info.winning_rate}" onchange="detectionNumType(this,'positiveNumber')" lay-verify="winning_rate" autocomplete="off" class="layui-input len-short"> %
</div>
<div class="word-aux">
<span class="aux-title">注意:</span>
<div class="aux-item">若整体中奖概率为100%,需满足以下条件:</div>
<div class="aux-item">1、奖品对应的活动不能失效奖品状态正常。</div>
<div class="aux-item">2、保持奖品库存需充足活动库存充足当奖项被领取完此时中奖概率已经非100%。</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">未中奖提示语:</label>
<div class="layui-input-block">
<input type="text" name="no_winning_desc" value="{$info.no_winning_desc}" lay-verify="required" autocomplete="off" 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">
<input type="radio" name="is_show_winner" value="0" lay-verify="required" title="不显示" {if $info.is_show_winner == 0} checked{/if}>
<input type="radio" name="is_show_winner" value="1" lay-verify="required" title="显示" {if $info.is_show_winner == 1} checked{/if}>
</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项。</div>
</div>
<div class="word-aux">
<button class="layui-btn" onclick="addAward()">添加奖品</button>
</div>
</div>
</div>
</div>
<input type="hidden" name="game_id" value="{$info.game_id}">
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backEggList()">返回</button>
</div>
</div>
<!-- 添加奖品 -->
{include file="egg/award_select" /}
<script>
var form,laydate,laytpl,tableData = {:json_encode($info.game_award)},
awardId = 0,
repeat_flag = false,
minDate = "",
deleteAwardIds = [];
layui.use(['form', 'laydate', 'laytpl'], function() {
form = layui.form;
laydate = layui.laydate;
laytpl = layui.laytpl;
form.render();
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
value: ns.time_to_date("{$info.start_time}"),
done: function(value) {
minDate = value;
reRender();
}
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
value: ns.time_to_date("{$info.end_time}")
});
initTableData();
/**
* 重新渲染结束时间
* */
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.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();
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
flnum: function(value) {
var arrMen = value.split(".");
var val = 0;
if (arrMen.length == 2) {
val = arrMen[1];
}
if (val.length > 2) {
return '保留小数点后两位!'
}
},
int: function(value) {
if (value <= 1 || value % 1 != 0) {
return '请输入大于1的正整数'
}
},
detectionNum: 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";
}
// var arrMen = value.split(".");
// var val = 0;
// if (arrMen.length == 2) {
// val = arrMen[1];
// }
// if (val.length > 2) {
// return str + "最多可保留两位小数";
// }
},
winning_rate:function (value) {
if (value.length > 0) {
if (isNaN(value)) {
return '中奖概率输入错误';
}
if ( value < 0 || value > 100) {
return '中奖概率范围:0~100%';
}
}
}
});
/**
* 表单提交
*/
form.on('submit(save)', function(data){
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();
}
data.field.award_json = JSON.stringify(tableData);
data.field.delete_award_ids = deleteAwardIds.toString();
if (!tableData.length){
layer.msg("奖品奖项不能少于1项。");
return false;
}
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("egg://shop/egg/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("egg://shop/egg/lists");
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
/*
* 渲染表格
* */
renderTable(tableData);
function renderTable(data = []){
var table = new Table({
elem: "#award_list",
cols: [
[{
field: 'award_name',
title: '名称',
width: '30%',
unresize: 'false'
},{
field: 'award_type',
title: '奖品',
unresize: 'false',
width: '20%',
templet: function(data) {
var type = data.award_type == 1 ? '积分' : data.award_type == 2 ? '红包' : '优惠券';
return type;
}
}, {
field: 'award_num',
title: '奖品数量',
unresize: 'false',
width: '15%',
}, {
field: 'award_winning_rate',
title: '奖项权重',
unresize: 'false',
width: '15%',
},{
title: '操作',
toolbar: '#operation',
align: 'right',
unresize: 'false'
}]
],
data: data
});
}
//添加奖品
function addAward(){
awardPop();
}
//编辑奖品
function ediAward(el) {
var data = $(el).attr("data-value");
awardPop(JSON.parse(data));
}
//删除奖品
function delAward(data) {
for (var i = 0; i < tableData.length; i++){
if (tableData[i].ident == data){
deleteAwardIds.push((tableData[i].award_id));
tableData.splice(i,1);
renderTable(tableData);
}
}
}
//初始化数据
function initTableData(){
for (var i = 0; i < tableData.length; i++){
tableData[i].ident = ++awardId;
}
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 backEggList() {
location.hash = ns.hash("egg://shop/egg/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);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
//自然整数 包括0
if(type == 'nativeInteger'){
value = parseInt(value);
if(value < 0) value = 0;
$(el).val(value);
}
}
</script>
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" data-value='{{JSON.stringify(d)}}' onclick="ediAward(this)">编辑</a>
<a class="layui-btn" onclick="delAward('{{d.ident}}')">删除</a>
</div>
</script>

View File

@@ -0,0 +1,359 @@
<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="game_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="cards_list" lay-filter="cards_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="detail">详情</a>
{{# if(d.status == 0){ }}
<a class="layui-btn text-color" lay-event="select">推广</a>
<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 text-color" lay-event="select">推广</a>
<a class="layui-btn" lay-event="close">关闭</a>
{{# }else if(d.status == 2){ }}
<a class="layui-btn" lay-event="del">删除</a>
{{# }else if(d.status == 3){ }}
<a class="layui-btn" lay-event="del">删除</a>
<a class="layui-btn" lay-event="start">重启</a>
{{# } }}
</div>
</div>
</script>
<!-- 推广 -->
{include file="app/shop/view/component/promote_show.html"}
<script>
layui.use(['form','laytpl','element','laydate'], function() {
var table,
form = layui.form,
laytpl = layui.laytpl,
laydate = layui.laydate,
element = layui.element,
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: '#cards_list',
url: ns.url("egg://shop/egg/lists"),
cols: [
[{
field:'game_name',
title: '活动名称',
unresize: 'false',
width:'15%'
},{
title: '中奖概率',
unresize: 'false',
templet: function(data) {
return data.winning_rate + '%';
}
}, {
field: 'points',
title: '每次消耗积分',
unresize: 'false'
}, {
title: '参与次数',
unresize: 'false',
templet: function(data) {
if(data.join_type == 1){
return '每天' + data.join_frequency + '次';
}else{
return data.join_frequency + '次';
}
}
}, {
field:'join_num',
title: '抽奖人数',
unresize: 'false'
}, {
field:'winning_num',
title: '中奖人数',
unresize: 'false'
}, {
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("egg://shop/egg/detail", {"game_id": data.game_id});
break;
case 'edit': //编辑
location.hash = ns.hash("egg://shop/egg/edit", {"game_id": data.game_id});
break;
case 'del': //删除
deleteCards(data.game_id);
break;
case 'close': // 结束
closeCards(data.game_id);
break;
case 'record': //参与记录
location.hash = ns.hash("egg://shop/record/lists", {"game_id": data.game_id});
break;
case 'select'://推广
gameUrl(data);
break;
case 'start'://重启
start(data.game_id);
break;
}
});
/**
* 删除
*/
function deleteCards(game_id) {
layer.confirm('确定要删除该砸金蛋活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("egg://shop/egg/delete"),
data: {
game_id: game_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 closeCards(game_id) {
layer.confirm('确定要结束该砸金蛋活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("egg://shop/egg/finish"),
data: {
game_id: game_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(game_id) {
layer.confirm('确定要重启该砸金蛋活动吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("egg://shop/egg/start"),
data: {
game_id: game_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){
new PromoteShow({
url:ns.url("egg://shop/egg/gameUrl"),
param:{game_id:data.game_id},
})
}
});
function add() {
location.hash = ns.hash("egg://shop/egg/add");
}
</script>