初始上传
This commit is contained in:
64
addon/cards/api/controller/Cards.php
Executable file
64
addon/cards/api/controller/Cards.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\api\controller;
|
||||
|
||||
use app\api\controller\BaseApi;
|
||||
use app\model\games\Games;
|
||||
use app\model\games\Record;
|
||||
|
||||
/**
|
||||
* 刮刮卡
|
||||
*/
|
||||
class Cards extends BaseApi
|
||||
{
|
||||
|
||||
/**
|
||||
* 基础信息
|
||||
*/
|
||||
public function info()
|
||||
{
|
||||
$game_id = $this->params[ 'id' ] ?? 0;
|
||||
$game = new Games();
|
||||
$info = $game->getGamesInfo([ [ 'game_id', '=', $game_id ], [ 'site_id', '=', $this->site_id ], [ 'game_type', '=', 'cards' ] ], 'game_id,game_name,points,start_time,end_time,status,remark,no_winning_desc,no_winning_img,is_show_winner,level_id,level_name,join_type,join_frequency');
|
||||
if (!empty($info[ 'data' ])) {
|
||||
// 中奖名单
|
||||
if ($info[ 'data' ][ 'is_show_winner' ]) {
|
||||
$record = new Record();
|
||||
$record_data = $record->getGamesDrawRecordPageList([ [ 'game_id', '=', $game_id ], [ 'is_winning', '=', 1 ] ], 1, 10, 'create_time desc', 'member_nick_name,award_name,create_time');
|
||||
$info[ 'data' ][ 'draw_record' ] = $record_data[ 'data' ][ 'list' ];
|
||||
}
|
||||
// 剩余次数
|
||||
$token = $this->checkToken();
|
||||
$info[ 'data' ][ 'surplus_num' ] = 0;
|
||||
if ($info[ 'data' ][ 'join_frequency' ] && $token[ 'code' ] == 0) {
|
||||
$surplus_num = $game->getMemberSurplusNum($game_id, $this->member_id, $this->site_id);
|
||||
$info[ 'data' ][ 'surplus_num' ] = $surplus_num[ 'data' ];
|
||||
}
|
||||
}
|
||||
return $this->response($info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖
|
||||
* @return false|string
|
||||
*/
|
||||
public function lottery()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$game_id = $this->params[ 'id' ];
|
||||
|
||||
$game = new Games();
|
||||
$res = $game->lottery($game_id, $this->member_id, $this->site_id);
|
||||
return $this->response($res);
|
||||
}
|
||||
}
|
||||
47
addon/cards/config/diy_view.php
Executable file
47
addon/cards/config/diy_view.php
Executable file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
return [
|
||||
|
||||
// 自定义模板页面类型,格式:[ 'title' => '页面类型名称', 'name' => '页面标识', 'path' => '页面路径', 'value' => '页面数据,json格式' ]
|
||||
'template' => [],
|
||||
|
||||
// 后台自定义组件——装修
|
||||
'util' => [],
|
||||
|
||||
// 自定义页面路径
|
||||
'link' => [
|
||||
[
|
||||
'name' => 'CARDS_GAME',
|
||||
'title' => '刮刮乐',
|
||||
'parent' => 'INTERACTION_PROMOTION',
|
||||
'wap_url' => '',
|
||||
'web_url' => '',
|
||||
'sort' => 1
|
||||
]
|
||||
],
|
||||
|
||||
// 自定义图标库
|
||||
'icon_library' => [],
|
||||
|
||||
// uni-app 组件,格式:[ 'name' => '组件名称/文件夹名称', 'path' => '文件路径/目录路径' ],多个逗号隔开,自定义组件名称前缀必须是diy-,也可以引用第三方组件
|
||||
'component' => [],
|
||||
|
||||
// uni-app 页面,多个逗号隔开
|
||||
'pages' => [],
|
||||
|
||||
// 模板信息,格式:'title' => '模板名称', 'name' => '模板标识', 'cover' => '模板封面图', 'preview' => '模板预览图', 'desc' => '模板描述'
|
||||
'info' => [],
|
||||
|
||||
// 主题风格配色,格式可以自由定义扩展,【在uni-app中通过:this.themeStyle... 获取定义的颜色字段,例如:this.themeStyle.main_color】
|
||||
'theme' => [],
|
||||
|
||||
// 自定义页面数据,格式:[ 'title' => '页面名称', 'name' => "页面标识", 'value' => [页面数据,json格式] ]
|
||||
'data' => []
|
||||
];
|
||||
25
addon/cards/config/event.php
Executable file
25
addon/cards/config/event.php
Executable file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
// 事件定义文件
|
||||
return [
|
||||
'bind' => [
|
||||
|
||||
],
|
||||
|
||||
'listen' => [
|
||||
//展示活动
|
||||
'ShowPromotion' => [
|
||||
'addon\cards\event\ShowPromotion',
|
||||
],
|
||||
|
||||
'PromotionType' => [
|
||||
'addon\cards\event\PromotionType',
|
||||
],
|
||||
|
||||
'MemberAccountFromType' => [
|
||||
'addon\cards\event\MemberAccountFromType',
|
||||
],
|
||||
],
|
||||
|
||||
'subscribe' => [
|
||||
],
|
||||
];
|
||||
20
addon/cards/config/info.php
Executable file
20
addon/cards/config/info.php
Executable file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
return [
|
||||
'name' => 'cards',
|
||||
'title' => '刮刮乐',
|
||||
'description' => '刮刮乐管理活动',
|
||||
'type' => 'promotion', //插件类型 system :系统插件(自动安装), promotion:扩展营销插件 tool:工具插件
|
||||
'status' => 1,
|
||||
'author' => '',
|
||||
'version' => '5.5.3',
|
||||
'version_no' => '553250709001',
|
||||
'content' => '',
|
||||
];
|
||||
68
addon/cards/config/menu_shop.php
Executable file
68
addon/cards/config/menu_shop.php
Executable file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 店铺端菜单设置
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS',
|
||||
'title' => '刮刮乐',
|
||||
'url' => 'cards://shop/cards/lists',
|
||||
'parent' => 'PROMOTION_CENTER',
|
||||
'is_show' => 1,
|
||||
'sort' => 100,
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_LIST',
|
||||
'title' => '刮刮乐列表',
|
||||
'url' => 'cards://shop/cards/lists',
|
||||
'is_show' => 0,
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_ADD',
|
||||
'title' => '添加活动',
|
||||
'url' => 'cards://shop/cards/add',
|
||||
'sort' => 1,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_EDIT',
|
||||
'title' => '编辑活动',
|
||||
'url' => 'cards://shop/cards/edit',
|
||||
'sort' => 1,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_DETAIL',
|
||||
'title' => '活动详情',
|
||||
'url' => 'cards://shop/cards/detail',
|
||||
'sort' => 1,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_DELETE',
|
||||
'title' => '删除活动',
|
||||
'url' => 'cards://shop/cards/delete',
|
||||
'sort' => 1,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_CARDS_FINISH',
|
||||
'title' => '关闭活动',
|
||||
'url' => 'cards://shop/cards/finish',
|
||||
'sort' => 1,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
|
||||
]
|
||||
|
||||
],
|
||||
]
|
||||
],
|
||||
|
||||
];
|
||||
1
addon/cards/data/install.sql
Executable file
1
addon/cards/data/install.sql
Executable file
@@ -0,0 +1 @@
|
||||
SET NAMES 'utf8';
|
||||
1
addon/cards/data/uninstall.sql
Executable file
1
addon/cards/data/uninstall.sql
Executable file
@@ -0,0 +1 @@
|
||||
SET NAMES 'utf8';
|
||||
25
addon/cards/event/Install.php
Executable file
25
addon/cards/event/Install.php
Executable file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\event;
|
||||
|
||||
/**
|
||||
* 应用安装
|
||||
*/
|
||||
class Install
|
||||
{
|
||||
/**
|
||||
* 执行安装
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return success();
|
||||
}
|
||||
}
|
||||
44
addon/cards/event/MemberAccountFromType.php
Executable file
44
addon/cards/event/MemberAccountFromType.php
Executable file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\event;
|
||||
|
||||
/**
|
||||
* 会员账户变化来源类型
|
||||
*/
|
||||
class MemberAccountFromType
|
||||
{
|
||||
|
||||
public function handle($data)
|
||||
{
|
||||
$from_type = [
|
||||
'point' => [
|
||||
'cards' => [
|
||||
'type_name' => '刮刮乐',
|
||||
'type_url' => '',
|
||||
],
|
||||
],
|
||||
'balance' => [
|
||||
'cards' => [
|
||||
'type_name' => '刮刮乐',
|
||||
'type_url' => '',
|
||||
],
|
||||
]
|
||||
|
||||
];
|
||||
if ($data == '') {
|
||||
return $from_type;
|
||||
} else {
|
||||
return $from_type[$data] ?? [];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
28
addon/cards/event/PromotionType.php
Executable file
28
addon/cards/event/PromotionType.php
Executable file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\event;
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
*/
|
||||
class PromotionType
|
||||
{
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
* @return array
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return ["name" => "刮刮乐", "type" => "cards"];
|
||||
}
|
||||
}
|
||||
92
addon/cards/event/ShowPromotion.php
Executable file
92
addon/cards/event/ShowPromotion.php
Executable file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\event;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 活动展示
|
||||
*/
|
||||
class ShowPromotion
|
||||
{
|
||||
public $promotion_type = 'time_limit';
|
||||
|
||||
/**
|
||||
* 活动展示
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
public function handle($params = [])
|
||||
{
|
||||
$data = [
|
||||
'shop' => [
|
||||
[
|
||||
//插件名称
|
||||
'name' => 'cards',
|
||||
//店铺端展示分类 shop:营销活动 member:互动营销
|
||||
'show_type' => 'member',
|
||||
//展示主题
|
||||
'title' => '刮刮乐',
|
||||
//展示介绍
|
||||
'description' => '刮刮卡形式的抽奖',
|
||||
//展示图标
|
||||
'icon' => 'addon/cards/icon.png',
|
||||
//跳转链接
|
||||
'url' => 'cards://shop/cards/lists',
|
||||
'summary' => $this->summary($params)
|
||||
]
|
||||
]
|
||||
|
||||
];
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 营销活动概况
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
private function summary($params)
|
||||
{
|
||||
if (empty($params)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if(isset($params['promotion_type']) && $params['promotion_type'] != $this->promotion_type){
|
||||
return [];
|
||||
}
|
||||
|
||||
//获取活动数量
|
||||
if (isset($params[ 'count' ])) {
|
||||
$count = model("promotion_games")->getCount([ [ 'site_id', '=', $params[ 'site_id' ] ], [ 'game_type', '=', 'cards' ] ]);
|
||||
return [
|
||||
'count' => $count
|
||||
];
|
||||
}
|
||||
//获取活动概况,需要获取开始时间与结束时间
|
||||
if (isset($params[ 'summary' ])) {
|
||||
$list = model("promotion_games")->getList([
|
||||
[ '', 'exp', Db::raw('not ( (`start_time` >= ' . $params[ 'end_time' ] . ') or (`end_time` <= ' . $params[ 'start_time' ] . '))') ],
|
||||
[ 'game_type', '=', 'cards' ],
|
||||
[ 'site_id', '=', $params[ 'site_id' ] ],
|
||||
[ 'status', '<>', 2 ],
|
||||
[ 'status', '<>', 3 ]
|
||||
], 'game_name as promotion_name,game_id as promotion_id,start_time,end_time');
|
||||
return !empty($list) ? [
|
||||
'time_limit' => [
|
||||
'count' => count($list),
|
||||
'detail' => $list,
|
||||
'color' => '#FF6666'
|
||||
]
|
||||
] : [];
|
||||
}
|
||||
}
|
||||
}
|
||||
25
addon/cards/event/UnInstall.php
Executable file
25
addon/cards/event/UnInstall.php
Executable file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\event;
|
||||
|
||||
/**
|
||||
* 应用卸载
|
||||
*/
|
||||
class UnInstall
|
||||
{
|
||||
/**
|
||||
* 执行卸载
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return success();
|
||||
}
|
||||
}
|
||||
BIN
addon/cards/icon.png
Executable file
BIN
addon/cards/icon.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 982 B |
69
addon/cards/model/share/WchatShare.php
Executable file
69
addon/cards/model/share/WchatShare.php
Executable file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\model\share;
|
||||
|
||||
use app\model\games\Games;
|
||||
use app\model\share\WchatShareBase as BaseModel;
|
||||
|
||||
/**
|
||||
* 分享
|
||||
*/
|
||||
class WchatShare extends BaseModel
|
||||
{
|
||||
protected $config = [
|
||||
[
|
||||
'title' => '刮刮乐分享',
|
||||
'config_key' => 'WCHAT_SHARE_CONFIG_GAME_CARDS_DETAIL',
|
||||
'path' => ['/pages_promotion/game/cards'],
|
||||
'method_prefix' => 'gameDetail',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* 刮刮乐分享数据
|
||||
* @param $param
|
||||
* @return array
|
||||
*/
|
||||
protected function gameDetailShareData($param)
|
||||
{
|
||||
$site_id = $param['site_id'] ?? 0;
|
||||
//跳转路径
|
||||
parse_str(parse_url($param['url'])['query'] ?? '', $query);
|
||||
|
||||
if(isset($query['id'])){
|
||||
$id = $query['id'];
|
||||
$game = new Games();
|
||||
$game_info = $game->getGamesInfo([['game_id', '=', $id], ['site_id', '=', $site_id], ['game_type', '=', 'cards']], 'game_id,game_name,points,start_time,end_time,status,remark,no_winning_desc,no_winning_img,is_show_winner,level_id,level_name,join_type,join_frequency')['data'];
|
||||
if(!empty($game_info)){
|
||||
$title = $game_info['game_name'];
|
||||
$desc = "参与刮刮乐,赢大奖";
|
||||
$link = $this->getShareLink($param);
|
||||
$image_url = img('addon/cards/icon.png');
|
||||
|
||||
$data = [
|
||||
'title' => $title,
|
||||
'desc' => $desc,
|
||||
'link' => $link,
|
||||
'imgUrl' => $image_url,
|
||||
];
|
||||
return [
|
||||
'permission' => [
|
||||
'hideOptionMenu' => false,
|
||||
'hideMenuItems' => [],
|
||||
],
|
||||
'data' => $data,//分享内容
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
221
addon/cards/shop/controller/Cards.php
Executable file
221
addon/cards/shop/controller/Cards.php
Executable file
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\cards\shop\controller;
|
||||
|
||||
use app\model\games\Games;
|
||||
use app\model\member\MemberLevel;
|
||||
use app\shop\controller\BaseShop;
|
||||
|
||||
/**
|
||||
* 刮刮乐控制器
|
||||
*/
|
||||
class Cards extends BaseShop
|
||||
{
|
||||
//游戏类型
|
||||
private $game_type = 'cards';
|
||||
private $game_type_name = '刮刮乐';
|
||||
private $game_url = '/pages_promotion/game/cards';
|
||||
|
||||
/*
|
||||
* 刮刮乐活动列表
|
||||
*/
|
||||
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('cards/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('cards/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);
|
||||
if (empty($info[ 'data' ])) $this->error('未获取到活动数据', href_url('cards://shop/cards/lists'));
|
||||
$this->assign('info', $info[ 'data' ]);
|
||||
|
||||
return $this->fetch('cards/edit');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 刮刮乐详情
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$cards_model = new Games();
|
||||
|
||||
$game_id = input('game_id', '');
|
||||
//获取刮刮乐信息
|
||||
$info = $cards_model->getGamesDetail($this->site_id, $game_id)[ 'data' ] ?? [];
|
||||
if (empty($info)) $this->error('未获取到活动数据', href_url('cards://shop/cards/lists'));
|
||||
$info[ 'status_name' ] = $cards_model->status[ $info[ 'status' ] ] ?? '';
|
||||
$this->assign('info', $info);
|
||||
return $this->fetch('cards/detail');
|
||||
}
|
||||
|
||||
/*
|
||||
* 删除刮刮乐活动
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$game_id = input('game_id', '');
|
||||
$cards_model = new Games();
|
||||
return $cards_model->deleteGames($this->site_id, $game_id);
|
||||
}
|
||||
|
||||
/*
|
||||
* 结束刮刮乐活动
|
||||
*/
|
||||
public function finish()
|
||||
{
|
||||
$game_id = input('game_id', '');
|
||||
|
||||
$cards_model = new Games();
|
||||
return $cards_model->finishGames($this->site_id, $game_id);
|
||||
}
|
||||
|
||||
/*
|
||||
* 重启刮刮乐活动
|
||||
*/
|
||||
public function start()
|
||||
{
|
||||
$game_id = input('game_id', '');
|
||||
|
||||
$cards_model = new Games();
|
||||
return $cards_model->startGames($game_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏推广
|
||||
* return
|
||||
*/
|
||||
public function gameUrl()
|
||||
{
|
||||
$game_id = input('game_id', '');
|
||||
$app_type = input('app_type', 'all');
|
||||
$model = new Games();
|
||||
$res = $model->gameUrlQrcode($this->game_url, [ 'id' => $game_id ], 'cards', $app_type, $this->site_id);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
433
addon/cards/shop/view/cards/add.html
Executable file
433
addon/cards/shop/view/cards/add.html
Executable file
@@ -0,0 +1,433 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/game.css">
|
||||
<style>
|
||||
.layui-table-body{max-height: 480px !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="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="backCardsList()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 添加奖品 -->
|
||||
{include file="cards/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("cards://shop/cards/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("cards://shop/cards/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",
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
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 backCardsList() {
|
||||
location.hash = ns.hash("cards://shop/cards/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);
|
||||
}
|
||||
//自然整数 包括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>
|
||||
282
addon/cards/shop/view/cards/award_select.html
Executable file
282
addon/cards/shop/view/cards/award_select.html
Executable 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"></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,'positiveNumber')" 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"></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"></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,'positiveNumber')" 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,'positiveNumber')">
|
||||
<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>
|
||||
241
addon/cards/shop/view/cards/detail.html
Executable file
241
addon/cards/shop/view/cards/detail.html
Executable file
@@ -0,0 +1,241 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/game.css">
|
||||
<link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
|
||||
<style>
|
||||
.layui-table-body{max-height: 480px !important;}
|
||||
</style>
|
||||
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">基本信息</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="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;
|
||||
}
|
||||
}, {
|
||||
field:'award_num',
|
||||
title: '奖品数量',
|
||||
|
||||
}, {
|
||||
field:'award_winning_rate',
|
||||
title: '奖项权重'
|
||||
}]
|
||||
],
|
||||
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>
|
||||
455
addon/cards/shop/view/cards/edit.html
Executable file
455
addon/cards/shop/view/cards/edit.html
Executable file
@@ -0,0 +1,455 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/game.css">
|
||||
<style>
|
||||
.layui-table-body{max-height: 480px !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="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>
|
||||
<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="backCardsList()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 添加奖品 -->
|
||||
{include file="cards/award_select" /}
|
||||
<script>
|
||||
var form,laydate,laytpl,tableData = {:json_encode($info.game_award)},
|
||||
repeat_flag = false,
|
||||
awardId = 0,
|
||||
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";
|
||||
}
|
||||
},
|
||||
winning_rate:function (value) {
|
||||
var reg = /^\d{0,2}(.?\d{0,2})$/;
|
||||
if (value.length > 0) {
|
||||
if (isNaN(value)) {
|
||||
return '中奖概率输入错误';
|
||||
}
|
||||
if (!reg.test(value) || 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("cards://shop/cards/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("cards://shop/cards/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",
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
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 backCardsList() {
|
||||
location.hash = ns.hash("cards://shop/cards/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>
|
||||
362
addon/cards/shop/view/cards/lists.html
Executable file
362
addon/cards/shop/view/cards/lists.html
Executable file
@@ -0,0 +1,362 @@
|
||||
<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>
|
||||
var laytpl;
|
||||
layui.use(['form','laytpl' , 'element','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: '#cards_list',
|
||||
url: ns.url("cards://shop/cards/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("cards://shop/cards/detail", {"game_id": data.game_id});
|
||||
break;
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("cards://shop/cards/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("cards://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("cards://shop/cards/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("cards://shop/cards/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("cards://shop/cards/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("cards://shop/cards/gameUrl"),
|
||||
param:{game_id:data.game_id},
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
location.hash = ns.hash("cards://shop/cards/add");
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user