初始上传
This commit is contained in:
285
addon/divideticket/shop/controller/Divideticket.php
Executable file
285
addon/divideticket/shop/controller/Divideticket.php
Executable file
@@ -0,0 +1,285 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\divideticket\shop\controller;
|
||||
|
||||
use app\shop\controller\BaseShop;
|
||||
use addon\divideticket\model\Divideticket as DivideticketModel;
|
||||
use addon\divideticket\model\DivideticketFriendsGroup;
|
||||
|
||||
/**
|
||||
* 好友瓜分券
|
||||
* Class DivideTicket
|
||||
* @package addon\divideticket\shop\controller
|
||||
*/
|
||||
class Divideticket extends BaseShop
|
||||
{
|
||||
/**
|
||||
* 活动列表
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
$divideticket_model = new DivideticketModel();
|
||||
|
||||
if (request()->isJson()) {
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
$name = input('name', '');
|
||||
$status = input('status', '');
|
||||
|
||||
$condition = [];
|
||||
if ($status !== "") {
|
||||
$condition[] = [ 'status', '=', $status ];
|
||||
}
|
||||
//类型
|
||||
$validity_type = input('validity_type', '');
|
||||
if ($validity_type) {
|
||||
$validity_start_time = input('validity_start_time', '');
|
||||
$validity_end_time = input('validity_end_time', '');
|
||||
switch ( $validity_type ) {
|
||||
case 1: //固定
|
||||
$condition[] = [ 'validity_end_time', 'between', [ $validity_start_time, $validity_end_time ] ];
|
||||
break;
|
||||
case 2:
|
||||
$condition[] = [ 'fixed_term', 'between', [ $validity_start_time, $validity_end_time ] ];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$condition[] = [ 'site_id', '=', $this->site_id ];
|
||||
$condition[] = [ 'name', 'like', '%' . $name . '%' ];
|
||||
$data = $divideticket_model->getDivideticketPageList($condition, $page, $page_size);
|
||||
return $data;
|
||||
} else {
|
||||
$divideticket_status = $divideticket_model->getDivideticketStatus();
|
||||
$this->assign('divideticket_status', $divideticket_status);
|
||||
return $this->fetch("divideticket/lists");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加活动
|
||||
* @return mixed
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$data = [
|
||||
'site_id' => $this->site_id,
|
||||
'name' => input('name', ''),//活动名称
|
||||
'goods_type' => input('goods_type', 1),
|
||||
'goods_ids' => input('goods_ids', ''),
|
||||
'money' => input('money', 0),//瓜分金额
|
||||
'start_time' => strtotime(input('start_time', '')), // 活动开始时间
|
||||
'end_time' => strtotime(input('end_time', '')), // 活动结束时间
|
||||
'divide_num' => input('divide_num', 0),//瓜分人数
|
||||
'image' => input('image', 0),//优惠券图片
|
||||
'inventory' => input('inventory', ''),//库存
|
||||
'count' => input('inventory', ''),//发放数量
|
||||
'is_limit' => input('at_least', 0) > 0 ? 1 : 0,//使用门槛
|
||||
'at_least' => input('at_least', 0),//满多少元可以使用
|
||||
'divide_time' => input('divide_time', 1),//瓜分有效期
|
||||
'validity_end_time' => strtotime(input('validity_end_time', '')),//有效期结束时间
|
||||
'validity_type' => input('validity_type', ''),//有效期类型 0固定时间 1领取之日起
|
||||
'fixed_term' => input('fixed_term', ''),//领取之日起N天内有效
|
||||
'is_simulation' => input('is_simulation', 0),//是否模拟好友
|
||||
'is_new' => input('is_new', 0),//仅新人限制
|
||||
'divide_type' => input('divide_type', ''),//瓜分方式
|
||||
'create_time' => time(),//创建时间
|
||||
'remark' => input('remark', ''),//活动规则
|
||||
];
|
||||
$divideticket_model = new DivideticketModel();
|
||||
$res = $divideticket_model->addDivideticket($data);
|
||||
return $res;
|
||||
} else {
|
||||
return $this->fetch("divideticket/add");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑活动
|
||||
* @return mixed
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$divideticket_model = new DivideticketModel();
|
||||
if (request()->isJson()) {
|
||||
$data = [
|
||||
'coupon_id' => input('coupon_id', ''),
|
||||
'site_id' => $this->site_id,
|
||||
'name' => input('name', ''),//活动名称
|
||||
'goods_type' => input('goods_type', 1),
|
||||
'goods_ids' => input('goods_ids', ''),
|
||||
'money' => input('money', 0),//瓜分金额
|
||||
'divide_time' => input('divide_time', 1),//瓜分有效期
|
||||
'start_time' => strtotime(input('start_time', '')), // 活动开始时间
|
||||
'end_time' => strtotime(input('end_time', '')), // 活动结束时间
|
||||
'divide_num' => input('divide_num', 0),//瓜分人数
|
||||
'image' => input('image', 0),//优惠券图片
|
||||
'inventory' => input('inventory', ''),//发放数量
|
||||
'is_limit' => input('at_least', 0) > 0 ? 1 : 0,//使用门槛
|
||||
'at_least' => input('at_least', 0),//满多少元可以使用
|
||||
'validity_end_time' => strtotime(input('validity_end_time', '')),//有效期结束时间
|
||||
'validity_type' => input('validity_type', ''),//有效期类型 0固定时间 1领取之日起
|
||||
'fixed_term' => input('fixed_term', ''),//领取之日起N天内有效
|
||||
'is_simulation' => input('is_simulation', 0),//是否模拟好友
|
||||
'is_new' => input('is_new', 0),//仅新人限制
|
||||
'divide_type' => input('divide_type', ''),//瓜分方式
|
||||
'remark' => input('remark', ''),//活动规则
|
||||
];
|
||||
$res = $divideticket_model->editDivideticket($data);
|
||||
return $res;
|
||||
} else {
|
||||
$coupon_id = input('coupon_id', 0);
|
||||
$this->assign('coupon_id', $coupon_id);
|
||||
$condition = [
|
||||
[ 'coupon_id', '=', $coupon_id ],
|
||||
[ 'site_id', '=', $this->site_id ],
|
||||
];
|
||||
$coupon_info = $divideticket_model->getDivideticketInfo($condition);
|
||||
if (empty($coupon_info[ 'data' ])) $this->error('未获取到优惠券数据', href_url('divideticket://shop/divideticket/lists'));
|
||||
$this->assign('coupon_info', $coupon_info[ 'data' ]);
|
||||
return $this->fetch("divideticket/edit");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
* @return mixed|void
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$coupon_id = input('coupon_id', 0);
|
||||
$this->assign('coupon_id', $coupon_id);
|
||||
$condition = [
|
||||
[ 'coupon_id', '=', $coupon_id ],
|
||||
[ 'site_id', '=', $this->site_id ],
|
||||
];
|
||||
$divideticket_model = new DivideticketModel();
|
||||
$info = $divideticket_model->getDivideticketInfo($condition)[ 'data' ] ?? [];
|
||||
if (empty($info)) $this->error('未获取到优惠券数据', href_url('divideticket://shop/divideticket/lists'));
|
||||
$info[ 'status_name' ] = $divideticket_model->getDivideticketStatus()[ $info[ 'status' ] ] ?? '';
|
||||
$this->assign('info', $info);
|
||||
return $this->fetch("divideticket/detail");
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动推广
|
||||
*/
|
||||
public function spreadDivideticket()
|
||||
{
|
||||
$coupon_id = input('coupon_id', '');
|
||||
$app_type = input('app_type', 'all');
|
||||
$divideticket_model = new DivideticketModel();
|
||||
|
||||
$res = $divideticket_model->urlQrcode('/pages_promotion/divideticket/index', [ 'cid' => $coupon_id ], 'divideticket', $app_type, $this->site_id);
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭活动
|
||||
*/
|
||||
public function close()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$coupon_id = input('coupon_id', 0);
|
||||
$data = [
|
||||
'coupon_id' => $coupon_id,
|
||||
'site_id' => $this->site_id,
|
||||
];
|
||||
$divideticket_model = new DivideticketModel();
|
||||
return $divideticket_model->closeDividetocket($data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除活动
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$coupon_id = input('coupon_id', 0);
|
||||
$data = [
|
||||
'coupon_id' => $coupon_id,
|
||||
'site_id' => $this->site_id,
|
||||
];
|
||||
$divideticket_model = new DivideticketModel();
|
||||
return $divideticket_model->deleteDividetocket($data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 运营
|
||||
*/
|
||||
public function operate()
|
||||
{
|
||||
$coupon_id = input('coupon_id', '0');
|
||||
if (request()->isJson()) {
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
|
||||
$condition = [];
|
||||
$condition[] = [ 'a.site_id', '=', $this->site_id ];
|
||||
|
||||
if ($coupon_id) {
|
||||
$condition[] = [ 'a.promotion_id', '=', $coupon_id ];
|
||||
}
|
||||
|
||||
$alias = 'a';
|
||||
$join = [
|
||||
[ 'promotion_friends_coupon p', 'a.promotion_id = p.coupon_id', 'left' ],
|
||||
[ 'member m', 'a.header_id = m.member_id', 'left' ],
|
||||
];
|
||||
$field = 'a.*,p.name,m.username,m.nickname,m.headimg';
|
||||
|
||||
$divideticket_group_model = new DivideticketFriendsGroup();
|
||||
$data = $divideticket_group_model->getDivideticketFriendsGroupPageList($condition, $page, $page_size, '', $field, $alias, $join);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
$this->assign('coupon_id', $coupon_id);
|
||||
return $this->fetch("divideticket/operate");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 邀请人
|
||||
*/
|
||||
public function groupMember()
|
||||
{
|
||||
$group_id = input('group_id', '0');
|
||||
if (request()->isJson()) {
|
||||
$divideticket_group_model = new DivideticketFriendsGroup();
|
||||
$condition = [];
|
||||
$condition[] = [ 'a.group_id', '=', $group_id ];
|
||||
$condition[] = [ 'a.site_id', '=', $this->site_id ];
|
||||
$field = 'a.*,p.divide_num,p.money';
|
||||
$join = [
|
||||
[ 'promotion_friends_coupon p', 'a.promotion_id = p.coupon_id', 'left' ],
|
||||
];
|
||||
$data = $divideticket_group_model->getDivideticketFriendsGroupInfo($condition, $field, $alias = 'a', $join);
|
||||
$member_arr[ 'code' ] = 0;
|
||||
$member_arr[ 'data' ][ 'list' ] = $data[ 'data' ][ 'member_list' ] ?? [];
|
||||
if ($member_arr[ 'data' ][ 'list' ]) {
|
||||
foreach ($member_arr[ 'data' ][ 'list' ] as $k => $v) {
|
||||
$member_arr[ 'data' ][ 'list' ][ $k ][ 'divide_num' ] = $data[ 'data' ][ 'divide_num' ];
|
||||
$member_arr[ 'data' ][ 'list' ][ $k ][ 'money' ] = $data[ 'data' ][ 'money' ];
|
||||
}
|
||||
}
|
||||
return $member_arr;
|
||||
} else {
|
||||
$this->assign('group_id', $group_id);
|
||||
return $this->fetch("divideticket/group_member");
|
||||
}
|
||||
}
|
||||
}
|
||||
635
addon/divideticket/shop/view/divideticket/add.html
Executable file
635
addon/divideticket/shop/view/divideticket/add.html
Executable file
@@ -0,0 +1,635 @@
|
||||
<style>
|
||||
.goods_num {padding-left: 20px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" lay-verify="required|len" class="layui-input len-long" autocomplete="off" maxlength="40">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>活动名称最多为25个字符</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动内容:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline len-short">
|
||||
<input type="number" name="divide_num" value="" placeholder="" autocomplete="off" class="layui-input len-short" lay-verify="required|divide_num|count">
|
||||
</div>
|
||||
<div class="layui-form-mid">名好友,瓜分</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<input type="number" name="money" value="" placeholder="" autocomplete="off" class="layui-input len-short" lay-verify="required|money">
|
||||
</div>
|
||||
<div class="layui-form-mid">元</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>瓜分人数建议5人以下,超过5人存在被微信封禁的风险。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分券总量:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="inventory" lay-verify="required|couponNum" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">张</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>修改总量时只能增加不能减少,请谨慎设置</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分有效期:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="divide_time" lay-verify="required|divide_time" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">小时</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动开始时间:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<input type="text" class="layui-input" name="start_time" lay-verify="required" id="start_time" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动结束时间:</label>
|
||||
<div class="layui-input-block len-mid end_time">
|
||||
<input type="text" class="layui-input" name="end_time" lay-verify="required|time" id="end_time" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>结束时间不能小于开始时间,也不能小于当前时间</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>满多少元可以使用:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="at_least" min="0" lay-verify="required|number" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">元</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>价格不能小于0,无门槛请设为0</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>是否模拟好友:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_simulation" value="1" title="是">
|
||||
<input type="radio" name="is_simulation" value="0" title="否" checked>
|
||||
</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="is_new" value="1" title="是">
|
||||
<input type="radio" name="is_new" value="0" title="否" checked>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>开启后,每人只能参与一次</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分方式:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="divide_type" value="0" title="固定金额" checked>
|
||||
<input type="radio" name="divide_type" value="1" title="随机金额">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">优惠券图片:</label>
|
||||
<div class="layui-input-block img-upload">
|
||||
<div class="upload-img-block">
|
||||
<div class="upload-img-box">
|
||||
<div class="upload-default" id="couponImg">
|
||||
<div class="upload">
|
||||
<i class="iconfont iconshangchuan"></i>
|
||||
<p>点击上传</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div>
|
||||
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
|
||||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
|
||||
</div>
|
||||
<div class="replace_img js-replace">点击替换</div>
|
||||
</div>
|
||||
<input type="hidden" name="image"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>建议尺寸:325*95像素,图片上传默认不限制大小</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">有效期类型:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="validity_type" value="0" lay-filter="filter" checked="checked" title="固定时间">
|
||||
<input type="radio" name="validity_type" value="1" lay-filter="filter" title="领取之日起">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item end-time">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="validity_end_time" lay-verify="time|validity_end_time" id="validity_end_time" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item fixed-term layui-hide">
|
||||
<label class="layui-form-label">领取之日起:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" min="1" max="365" value="10" name="fixed_term" lay-verify="days|int" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">天有效</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>不能小于0,且必须为整数</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动商品:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="goods_type" lay-filter="goods_type" value="1" title="全部商品参与" checked>
|
||||
<input type="radio" name="goods_type" lay-filter="goods_type" value="2" title="指定商品参与">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods_list" style="display:none">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table id="selected_goods_list"></table>
|
||||
<button class="layui-btn" onclick="addGoods()">选择商品</button> <span class="goods_num">已选商品(<span id="goods_num" class="text-color">0</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="remark" class="layui-textarea len-long" value="" lay-verify="required" maxlength="150"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="goods_ids">
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backDivideticketList()">返回</button>
|
||||
<a id="couponImage"></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delGoods({{d.goods_id}})">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var submitRule, delRule;
|
||||
var goods_list = [], selectedGoodsId = [], goods_id = [], table;
|
||||
var saveData = null;
|
||||
var totalUploadNum = 0;
|
||||
var completeUploadNum = 0;
|
||||
var upload;
|
||||
|
||||
$('input[name="fixed_term"]').change(function () {
|
||||
var time_time = $('input[name="fixed_term"]').val();
|
||||
$('.time-bbb').html('有效期:领取之日起' + time_time + '日内有效');
|
||||
});
|
||||
|
||||
layui.use(['form', 'laydate', 'form'], function () {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false; //防重复标识
|
||||
currentDate = new Date(); //当前时间
|
||||
form.render();
|
||||
|
||||
currentDate.setDate(currentDate.getDate() + 30); //当前时间+30之后的时间戳
|
||||
|
||||
// 时间模块
|
||||
laydate.render({
|
||||
elem: '#validity_end_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: currentDate,
|
||||
done: function (value) {
|
||||
$('.time-aaa').html('有效期:' + value);
|
||||
}
|
||||
});
|
||||
|
||||
// 开始时间
|
||||
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
|
||||
});
|
||||
}
|
||||
|
||||
var date = new Date(currentDate);
|
||||
var y = date.getFullYear();
|
||||
var m = date.getMonth() + 1;
|
||||
m = m < 10 ? ('0' + m) : m;
|
||||
var d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
var h = date.getHours();
|
||||
var minute = date.getMinutes();
|
||||
var second = date.getSeconds();
|
||||
minute = minute < 10 ? ('0' + minute) : minute;
|
||||
var time = y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
|
||||
$('.time-aaa').html('有效期:' + time);
|
||||
var time_time = $('input[name="fixed_term"]').val();
|
||||
$('.time-bbb').html('有效期:领取之日起' + time_time + '日内有效');
|
||||
|
||||
renderTable(goods_list); // 初始化表格
|
||||
|
||||
//监听活动商品类型
|
||||
form.on('radio(goods_type)', function (data) {
|
||||
var value = data.value;
|
||||
|
||||
if (value == 1) {
|
||||
$(".goods_list").hide();
|
||||
$('.max_price').html('全场商品');
|
||||
}
|
||||
if (value == 2) {
|
||||
$(".goods_list").show();
|
||||
$('.max_price').html('指定商品');
|
||||
}
|
||||
});
|
||||
|
||||
//监听瓜分次数限制
|
||||
form.on('radio(divide_frequency)', function (data) {
|
||||
var value = data.value;
|
||||
if (value == 0) {
|
||||
$('#divide_frequency_limit').hide();
|
||||
}
|
||||
});
|
||||
|
||||
// 监听单选按钮
|
||||
form.on('radio(filter)', function (data) {
|
||||
if (data.value == 0) {
|
||||
$('.end-time').removeClass('layui-hide');
|
||||
$('.fixed-term').addClass('layui-hide');
|
||||
$('.time-aaa').css('display', 'block');
|
||||
$('.time-bbb').css('display', 'none');
|
||||
} else {
|
||||
$('.fixed-term').removeClass('layui-hide');
|
||||
$('.end-time').addClass('layui-hide');
|
||||
$('.time-bbb').css('display', 'block');
|
||||
$('.time-aaa').css('display', 'none');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
len: function (value) {
|
||||
if (value.length > 25) {
|
||||
return "活动名称最多为25个字符!";
|
||||
}
|
||||
},
|
||||
days: function (value) {
|
||||
if (value == '') {
|
||||
return;
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
},
|
||||
number: function (value) {
|
||||
if (value < 0) {
|
||||
return '请输入大于或等于0的数!'
|
||||
}
|
||||
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 != 0) {
|
||||
return '请输入整数!'
|
||||
}
|
||||
if (value < 0) {
|
||||
return '请输入大于0的数!'
|
||||
}
|
||||
},
|
||||
money: function (value) {
|
||||
if(value<=0){
|
||||
return "瓜分金额不能小于等于0";
|
||||
}
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '保留小数点后两位'
|
||||
}
|
||||
},
|
||||
divide_num:function (value){
|
||||
if(value <= 1){
|
||||
return '瓜分人数必须大于1人';
|
||||
}
|
||||
},
|
||||
validity_end_time: function (value) {
|
||||
var validity_type = $('[name="validity_type"]:checked').val();
|
||||
if (validity_type == 0) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var validity_end_time = (new Date(value)).getTime();
|
||||
|
||||
if (now_time > validity_end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
var end_time = (new Date($("#end_time").val())).getTime();
|
||||
|
||||
if(validity_end_time < end_time){
|
||||
return '有效期时间不能小于活动结束时间';
|
||||
}
|
||||
}
|
||||
},
|
||||
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 '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
count: function (value) {
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
if (value <= 0) {
|
||||
return '数量不能小于0';
|
||||
}
|
||||
},
|
||||
divide_time:function (value){
|
||||
if (value > 24) {
|
||||
return '有效期不能大于24小时';
|
||||
}
|
||||
if(value<=0){
|
||||
return '有效期不能小于等于0';
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
},
|
||||
couponNum:function(value){
|
||||
if(value<=0){
|
||||
return "瓜分券总量不能小于等于0"
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
upload = new Upload({
|
||||
elem: '#couponImg',
|
||||
auto:false,
|
||||
bindAction:'#couponImage',
|
||||
callback: function(res) {
|
||||
uploadComplete('image', res.data.pic_path);
|
||||
}
|
||||
});
|
||||
|
||||
function uploadComplete(field, pic_path) {
|
||||
saveData.field[field] = pic_path;
|
||||
completeUploadNum += 1;
|
||||
if(completeUploadNum == totalUploadNum){
|
||||
saveFunc();
|
||||
}
|
||||
}
|
||||
|
||||
function saveFunc(){
|
||||
var data = saveData;
|
||||
// 删除图片
|
||||
if (!data.field.image) upload.delete();
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("divideticket://shop/divideticket/add"),
|
||||
data: data.field,
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('添加成功', {
|
||||
title: '操作提示',
|
||||
btn: ['返回列表', '继续添加'],
|
||||
closeBtn: 0,
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/lists")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function (data) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
if (data.field.is_show == undefined) {
|
||||
data.field.is_show = 0;
|
||||
}
|
||||
|
||||
if (data.field.goods_type != 1) {
|
||||
if (data.field.goods_ids == '') {
|
||||
layer.msg("请选择商品");
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveData = data;
|
||||
var obj = $("img.img_prev[data-prev='1']");
|
||||
totalUploadNum = obj.length;
|
||||
if(totalUploadNum > 0){
|
||||
obj.each(function(){
|
||||
var actionId = $(this).attr('data-action-id');
|
||||
$(actionId).click();
|
||||
})
|
||||
}else{
|
||||
saveFunc();
|
||||
}
|
||||
});
|
||||
|
||||
submitRule = function () {
|
||||
var money = $("#money").val().trim(),
|
||||
discount_money = $("#discount_money").val().trim();
|
||||
|
||||
if (Number(money) == "0" || Number(discount_money) == "0") {
|
||||
layer.msg("金额不能为空!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
if (Number(money) < 0 || Number(discount_money) < 0) {
|
||||
layer.msg("金额不能小于0!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
if (Number(money) * 100 % 1 != 0 || Number(discount_money) * 100 % 1 != 0) {
|
||||
layer.msg("金额最多保留小数点后两位!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0; i < $(".discount-box .discount").length; i++) {
|
||||
var money_num = $(".discount-box .discount").eq(i).find(".money-num").text();
|
||||
if (money == money_num) {
|
||||
layer.msg("该金额规则已添加,不可重复添加!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
delRule = function (obj) {
|
||||
$(obj).parent().parent().remove();
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(goods_list) {
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
cols: [
|
||||
[{
|
||||
field: 'goods_name',
|
||||
title: '商品名称',
|
||||
unresize: 'false',
|
||||
width: '50%'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格(元)',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '20%',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'goods_stock',
|
||||
title: '库存',
|
||||
unresize: 'false',
|
||||
align: 'center',
|
||||
width: '20%'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}],
|
||||
],
|
||||
data: goods_list,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除选中商品
|
||||
function delGoods(id) {
|
||||
var i, j;
|
||||
$.each(goods_list, function (index, item) {
|
||||
var goods_id = item.goods_id;
|
||||
|
||||
if (id == Number(goods_id)) {
|
||||
i = index;
|
||||
}
|
||||
});
|
||||
goods_list.splice(i, 1);
|
||||
renderTable(goods_list);
|
||||
|
||||
$.each(selectedGoodsId, function (index, item) {
|
||||
if (id == Number(item)) {
|
||||
j = index;
|
||||
}
|
||||
});
|
||||
selectedGoodsId.splice(j, 1);
|
||||
goods_id = selectedGoodsId;
|
||||
$("#goods_num").html(goods_id.length);
|
||||
$("input[name='goods_ids']").val(goods_id.toString());
|
||||
}
|
||||
|
||||
/* 商品 */
|
||||
function addGoods() {
|
||||
goodsSelect(function (data) {
|
||||
|
||||
goods_id = [];
|
||||
goods_list = [];
|
||||
|
||||
for (var key in data) {
|
||||
goods_id.push(data[key].goods_id);
|
||||
goods_list.push(data[key]);
|
||||
}
|
||||
|
||||
renderTable(goods_list);
|
||||
$("input[name='goods_ids']").val(goods_id.toString());
|
||||
selectedGoodsId = goods_id;
|
||||
$("#goods_num").html(goods_id.length)
|
||||
}, selectedGoodsId, {mode: "spu"});
|
||||
}
|
||||
|
||||
function backDivideticketList() {
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/lists");
|
||||
}
|
||||
</script>
|
||||
138
addon/divideticket/shop/view/divideticket/detail.html
Executable file
138
addon/divideticket/shop/view/divideticket/detail.html
Executable file
@@ -0,0 +1,138 @@
|
||||
<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.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>满{$info.at_least}元</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>活动内容:</label>
|
||||
<span>{$info.divide_num}名好友,瓜分{$info.money}元</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>瓜分券总量:</label>
|
||||
<span>{$info.inventory}张</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>瓜分有效期:</label>
|
||||
<span>{$info.divide_time}小时</span>
|
||||
</div>
|
||||
|
||||
<div class="promotion-view-item">
|
||||
<label>是否模拟好友:</label>
|
||||
<span>{if $info.is_simulation==1}是{else/}否{/if}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>仅新人参与限制:</label>
|
||||
<span>{if $info.is_new==1}是{else/}否{/if}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>瓜分方式:</label>
|
||||
<span>{if $info.divide_type == 0}固定金额{else/}随机金额{/if}</span>
|
||||
</div>
|
||||
{if $info.goods_type == 1}
|
||||
<div class="promotion-view-item">
|
||||
<label>活动商品:</label>
|
||||
<span>全部商品参与</span>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="promotion-view-item-line">
|
||||
<label class="promotion-view-item-custom-label">横幅图片:</label>
|
||||
<div class="promotion-view-item-custom-box img-upload">
|
||||
<div class="upload-img-block icon">
|
||||
<div class="upload-img-box">
|
||||
{if condition="$info.image"}
|
||||
<img layer-src src="{:img($info.image)}" >
|
||||
{else/}
|
||||
<img layer-src src="__STATIC__/img/shape.png" />
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{if !empty($info.remark)}
|
||||
<div class="promotion-view">
|
||||
<div class="promotion-view-item-line">
|
||||
<label class="promotion-view-item-custom-label">活动说明:</label>
|
||||
<div class="promotion-view-item-custom-box">{$info.remark}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{if $info.goods_type != 1}
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">活动商品</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class='promotion-view-list'>
|
||||
<table id="promotion_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<script type='text/html' id="promotion_list_item_box_html">
|
||||
<div class="promotion-list-item-title">
|
||||
<div class="promotion-list-item-title-icon">
|
||||
<img src="{{ ns.img(d.goods_image) }}" alt="">
|
||||
</div>
|
||||
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.goods_name }}</p>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var promotion_list = {:json_encode($info.goods_list, JSON_UNESCAPED_UNICODE)};
|
||||
layui.use('table', function() {
|
||||
new Table({
|
||||
elem: '#promotion_list',
|
||||
cols: [
|
||||
[{
|
||||
field: 'goods_name',
|
||||
title: '商品名称',
|
||||
unresize: 'false',
|
||||
width: '60%',
|
||||
templet: '#promotion_list_item_box_html'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格(元)',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'goods_stock',
|
||||
title: '库存',
|
||||
unresize: 'false',
|
||||
align: 'center',
|
||||
width: '20%'
|
||||
}],
|
||||
],
|
||||
data: promotion_list
|
||||
});
|
||||
});
|
||||
</script>
|
||||
643
addon/divideticket/shop/view/divideticket/edit.html
Executable file
643
addon/divideticket/shop/view/divideticket/edit.html
Executable file
@@ -0,0 +1,643 @@
|
||||
<style>
|
||||
.goods_num {padding-left: 20px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="{$coupon_info.name}" lay-verify="required|len" class="layui-input len-long" autocomplete="off" maxlength="40">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>活动名称最多为25个字符</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动内容:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline len-short">
|
||||
<input type="number" name="divide_num" value="{$coupon_info.divide_num}" placeholder="" autocomplete="off" class="layui-input len-short" lay-verify="required|count" {if $coupon_info.status == 1}disabled {/if}>
|
||||
</div>
|
||||
<div class="layui-form-mid">名好友,瓜分</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<input type="number" name="money" value="{$coupon_info.money}" placeholder="" autocomplete="off" class="layui-input len-short" lay-verify="required|money" {if $coupon_info.status == 1}disabled {/if}>
|
||||
</div>
|
||||
<div class="layui-form-mid">元</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>瓜分人数建议5人以下,超过5人存在被微信封禁的风险。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分券总量:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="inventory" value="{$coupon_info.inventory}" lay-verify="required|grantcount" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">张</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>修改总量时只能增加不能减少,请谨慎设置</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分有效期:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="divide_time" value="{$coupon_info.divide_time}" lay-verify="required|divide_time" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">小时</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动开始时间:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<input type="text" class="layui-input" value="{:date('Y-m-d H:i:s',$coupon_info.start_time)}" name="start_time" lay-verify="required" id="start_time" autocomplete="off" readonly {if $coupon_info.status == 1}disabled {/if} >
|
||||
<i class="iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动结束时间:</label>
|
||||
<div class="layui-input-block len-mid end_time">
|
||||
<input type="text" class="layui-input" value="{:date('Y-m-d H:i:s',$coupon_info.end_time)}" name="end_time" lay-verify="required|time|overtime" id="end_time" autocomplete="off" readonly>
|
||||
<i class="iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>结束时间不能小于开始时间,也不能小于当前时间</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>满多少元可以使用:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="at_least" value="{$coupon_info.at_least}" min="0" lay-verify="required|number|money" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">元</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>价格不能小于0,无门槛请设为0</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>是否模拟好友:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_simulation" value="1" title="是" {if $coupon_info.is_simulation==1} checked {/if}>
|
||||
<input type="radio" name="is_simulation" value="0" title="否" {if $coupon_info.is_simulation==0} checked {/if}>
|
||||
</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="is_new" value="1" title="是" {if $coupon_info.is_new==1} checked {/if}>
|
||||
<input type="radio" name="is_new" value="0" title="否" {if $coupon_info.is_new==0} checked {/if}>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>开启后,每人只能参与一次</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>瓜分方式:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="divide_type" value="0" title="固定金额" {if $coupon_info.divide_type==0} checked {/if}>
|
||||
<input type="radio" name="divide_type" value="1" title="随机金额" {if $coupon_info.divide_type==1} checked {/if}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">优惠券图片:</label>
|
||||
<div class="layui-input-block img-upload">
|
||||
<div class="upload-img-block">
|
||||
<div class="upload-img-box {notempty name=" $coupon_info['image']"}hover{/notempty}">
|
||||
<div class="upload-default " id="couponImg">
|
||||
{if condition="$coupon_info.image"}
|
||||
<div id="preview_couponImg" class="preview_img">
|
||||
<img layer-src src="{:img($coupon_info.image)}" class="img_prev" />
|
||||
</div>
|
||||
{else/}
|
||||
<div class="upload">
|
||||
<i class="iconfont iconshangchuan"></i>
|
||||
<p>点击上传</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div>
|
||||
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
|
||||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
|
||||
</div>
|
||||
<div class="replace_img js-replace">点击替换</div>
|
||||
</div>
|
||||
<input type="hidden" class="layui-input" name="image" value="{$coupon_info.image}" />
|
||||
</div>
|
||||
<!-- <p id="couponImg" class=" {if condition="$coupon_info.image"} replace {else/} no-replace{/if}">替换</p>
|
||||
<i class="del {if condition="$coupon_info.image"}show{/if}">x</i> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>建议尺寸:325*95像素,图片上传默认不限制大小</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">有效期类型:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="validity_type" value="0" lay-filter="validity_type" title="固定时间" {if !empty($coupon_info) && $coupon_info.validity_type == 0}checked{/if}>
|
||||
<input type="radio" name="validity_type" value="1" lay-filter="validity_type" title="领取之日起" {if !empty($coupon_info) && $coupon_info.validity_type == 1}checked{/if}>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item end-time" {if !empty($coupon_info) && $coupon_info.validity_type != 0}style="display: none;"{/if}>
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="validity_end_time" value="{:date('Y-m-d H:i:s',$coupon_info.validity_end_time)}" lay-verify="time|validity_end_time" id="validity_end_time" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item fixed-term" {if !empty($coupon_info) && $coupon_info.validity_type != 1}style="display: none;"{/if}>
|
||||
<label class="layui-form-label">领取之日起:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" min="1" max="365" value="{$coupon_info.fixed_term}" name="fixed_term" lay-verify="days|int" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<span class="layui-form-mid">天有效</span>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>不能小于0,且必须为整数</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动商品:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="goods_type" lay-filter="goods_type" value="1" title="全部商品参与" {if $coupon_info.goods_type==1} checked {/if}>
|
||||
<input type="radio" name="goods_type" lay-filter="goods_type" value="2" title="指定商品参与" {if $coupon_info.goods_type==2} checked {/if}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $coupon_info.goods_type == 1}
|
||||
<div class="layui-form-item goods_list" style="display:none">
|
||||
{else /}
|
||||
<div class="layui-form-item goods_list">
|
||||
{/if}
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<table id="selected_goods_list"></table>
|
||||
<button class="layui-btn" onclick="addGoods()">选择商品</button> <span class="goods_num">已选商品(<span id="goods_num" class="text-color">{$coupon_info.goods_list_count}</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="remark" class="layui-textarea len-long" lay-verify="required" maxlength="150">{$coupon_info.remark}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="goods_ids">
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backDivideticketList()">返回</button>
|
||||
<a id="couponImage"></a>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="site_id" value="{$coupon_info.site_id}" />
|
||||
<input type="hidden" name="coupon_id" value="{$coupon_info.coupon_id}" />
|
||||
</div>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delGoods({{d.goods_id}})">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var submitRule;
|
||||
var delRule, selectedGoodsId = [],
|
||||
goods_id = [],
|
||||
table;
|
||||
var goods_list = {:json_encode($coupon_info.goods_list, JSON_UNESCAPED_UNICODE)};
|
||||
var inventory = {$coupon_info.inventory};
|
||||
var overtime = {$coupon_info.end_time};
|
||||
var saveData = null;
|
||||
var totalUploadNum = 0;
|
||||
var completeUploadNum = 0;
|
||||
var upload;
|
||||
|
||||
$('input[name="fixed_term"]').change(function () {
|
||||
var time_time = $('input[name="fixed_term"]').val();
|
||||
$('.time-bbb').html('有效期:领取之日起' + time_time + '日内有效');
|
||||
});
|
||||
|
||||
$.each(goods_list, function(index, item) {
|
||||
var id = item.goods_id;
|
||||
selectedGoodsId.push(id);
|
||||
goods_id.push(id);
|
||||
});
|
||||
|
||||
$("input[name='goods_ids']").val(goods_id.toString());
|
||||
|
||||
layui.use(['form', 'laydate', 'form'], function () {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false; //防重复标识
|
||||
currentDate = new Date(); //当前时间
|
||||
form.render();
|
||||
|
||||
currentDate.setDate(currentDate.getDate() + 10); //10天后的日期
|
||||
|
||||
var now_time = (new Date()).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
var end_time = (new Date($("#end_time").val())).getTime();
|
||||
if(start_time > now_time){
|
||||
// 开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time',//指定元素
|
||||
type: 'datetime',
|
||||
});
|
||||
}
|
||||
if( now_time < end_time){
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time',//指定元素
|
||||
type: 'datetime',
|
||||
});
|
||||
}
|
||||
|
||||
// 时间模块
|
||||
laydate.render({
|
||||
elem: '#validity_end_time', //指定元素
|
||||
type: 'datetime',
|
||||
done: function (value) {
|
||||
$('.time-aaa').html('有效期:' + value);
|
||||
}
|
||||
});
|
||||
|
||||
currentDate.setDate(currentDate.getDate() + 30); //当前时间+30之后的时间戳
|
||||
|
||||
var date = new Date(currentDate);
|
||||
var y = date.getFullYear();
|
||||
var m = date.getMonth() + 1;
|
||||
m = m < 10 ? ('0' + m) : m;
|
||||
var d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
var h = date.getHours();
|
||||
var minute = date.getMinutes();
|
||||
var second = date.getSeconds();
|
||||
minute = minute < 10 ? ('0' + minute) : minute;
|
||||
var time = y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
|
||||
$('.time-aaa').html('有效期:' + time);
|
||||
var time_time = $('input[name="fixed_term"]').val();
|
||||
$('.time-bbb').html('有效期:领取之日起' + time_time + '日内有效');
|
||||
|
||||
renderTable(goods_list); // 初始化表格
|
||||
|
||||
//监听活动商品类型
|
||||
form.on('radio(goods_type)', function (data) {
|
||||
var value = data.value;
|
||||
|
||||
if (value == 1) {
|
||||
$(".goods_list").hide();
|
||||
$('.max_price').html('全场商品');
|
||||
}
|
||||
if (value == 2) {
|
||||
$(".goods_list").show();
|
||||
$('.max_price').html('指定商品');
|
||||
}
|
||||
});
|
||||
|
||||
//监听瓜分次数限制
|
||||
form.on('radio(divide_frequency)', function (data) {
|
||||
var value = data.value;
|
||||
if (value == 0) {
|
||||
$('#divide_frequency_limit').hide();
|
||||
}
|
||||
});
|
||||
|
||||
// 监听单选按钮
|
||||
form.on('radio(validity_type)', function (data) {
|
||||
if (data.value == 0) {
|
||||
// $('.end-time').removeClass('layui-hide');
|
||||
// $('.fixed-term').addClass('layui-hide');
|
||||
$('.end-time').show();
|
||||
$('.fixed-term').hide();
|
||||
$('.time-aaa').css('display', 'block');
|
||||
$('.time-bbb').css('display', 'none');
|
||||
} else {
|
||||
// $('.fixed-term').removeClass('layui-hide');
|
||||
// $('.end-time').addClass('layui-hide');
|
||||
$('.end-time').hide();
|
||||
$('.fixed-term').show();
|
||||
$('.time-bbb').css('display', 'block');
|
||||
$('.time-aaa').css('display', 'none');
|
||||
}
|
||||
});
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
len: function (value) {
|
||||
if (value.length > 25) {
|
||||
return "活动名称最多为25个字符!";
|
||||
}
|
||||
},
|
||||
days: function (value) {
|
||||
if (value == '') {
|
||||
return;
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
},
|
||||
number: function (value) {
|
||||
if (value < 0) {
|
||||
return '请输入大于或等于0的数!'
|
||||
}
|
||||
},
|
||||
int: function (value) {
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数!'
|
||||
}
|
||||
if (value < 0) {
|
||||
return '请输入大于0的数!'
|
||||
}
|
||||
},
|
||||
money: function (value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '保留小数点后两位'
|
||||
}
|
||||
},
|
||||
validity_end_time: function (value) {
|
||||
var validity_type = $('[name="validity_type"]:checked').val();
|
||||
if (validity_type == 0) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var validity_end_time = (new Date(value)).getTime();
|
||||
|
||||
if (now_time > validity_end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
var end_time = (new Date($("#end_time").val())).getTime();
|
||||
|
||||
if(validity_end_time < end_time){
|
||||
return '有效期时间不能小于活动结束时间';
|
||||
}
|
||||
}
|
||||
},
|
||||
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 '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
overtime:function(value){
|
||||
var end_time = (new Date(value)).getTime() / 1000;
|
||||
if(end_time < overtime){
|
||||
return '结束时间不能小于之前设置的时间';
|
||||
}
|
||||
},
|
||||
count: function (value) {
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
if (value <= 0) {
|
||||
return '不能小于0';
|
||||
}
|
||||
},
|
||||
grantcount:function (value){
|
||||
if(value<=0){
|
||||
return "瓜分券总量不能小于等于0"
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
if(value < inventory){
|
||||
return '发放不能小于之前发放数量('+inventory+')只可增加';
|
||||
}
|
||||
},
|
||||
divide_time:function (value){
|
||||
if (value > 24) {
|
||||
return '有效期不能大于24小时';
|
||||
}
|
||||
if(value<=0){
|
||||
return '有效期不能小于等于0';
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '请输入整数';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
upload = new Upload({
|
||||
elem: '#couponImg',
|
||||
auto:false,
|
||||
bindAction:'#couponImage',
|
||||
callback: function(res) {
|
||||
uploadComplete('image', res.data.pic_path);
|
||||
}
|
||||
});
|
||||
|
||||
function uploadComplete(field, pic_path) {
|
||||
saveData.field[field] = pic_path;
|
||||
completeUploadNum += 1;
|
||||
if(completeUploadNum == totalUploadNum){
|
||||
saveFunc();
|
||||
}
|
||||
}
|
||||
|
||||
function saveFunc(){
|
||||
var data = saveData;
|
||||
// 删除图片
|
||||
if (!data.field.image) upload.delete();
|
||||
$.ajax({
|
||||
url: ns.url("divideticket://shop/divideticket/edit"),
|
||||
data: data.field,
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('编辑成功', {
|
||||
title: '操作提示',
|
||||
btn: ['返回列表', '继续编辑'],
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/lists")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function(data) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
if (data.field.goods_type != 1) {
|
||||
if (data.field.goods_ids == '') {
|
||||
layer.msg("请选择商品");
|
||||
return;
|
||||
}
|
||||
}
|
||||
var new_goods_ids = [];
|
||||
goods_list.forEach((item,i)=>{
|
||||
new_goods_ids.push(item.goods_id)
|
||||
});
|
||||
data.field.goods_ids = new_goods_ids.join(',');
|
||||
|
||||
saveData = data;
|
||||
var obj = $("img.img_prev[data-prev='1']");
|
||||
totalUploadNum = obj.length;
|
||||
if(totalUploadNum > 0){
|
||||
obj.each(function(){
|
||||
var actionId = $(this).attr('data-action-id');
|
||||
$(actionId).click();
|
||||
})
|
||||
}else{
|
||||
saveFunc();
|
||||
}
|
||||
});
|
||||
|
||||
submitRule = function () {
|
||||
var money = $("#money").val().trim(),
|
||||
discount_money = $("#discount_money").val().trim();
|
||||
|
||||
if (Number(money) == "0" || Number(discount_money) == "0") {
|
||||
layer.msg("金额不能为空!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
if (Number(money) < 0 || Number(discount_money) < 0) {
|
||||
layer.msg("金额不能小于0!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
if (Number(money) * 100 % 1 != 0 || Number(discount_money) * 100 % 1 != 0) {
|
||||
layer.msg("金额最多保留小数点后两位!", {icon: 5, anim: 6});
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0; i < $(".discount-box .discount").length; i++) {
|
||||
var money_num = $(".discount-box .discount").eq(i).find(".money-num").text();
|
||||
if (money == money_num) {
|
||||
layer.msg("该金额规则已添加,不可重复添加!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
delRule = function (obj) {
|
||||
$(obj).parent().parent().remove();
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(goods_list) {
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
cols: [
|
||||
[{
|
||||
field: 'goods_name',
|
||||
title: '商品名称',
|
||||
unresize: 'false',
|
||||
width: '50%'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格(元)',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '20%',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'goods_stock',
|
||||
title: '库存',
|
||||
unresize: 'false',
|
||||
align: 'center',
|
||||
width: '20%'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}],
|
||||
],
|
||||
data: goods_list,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除选中商品
|
||||
function delGoods(id) {
|
||||
var i, j;
|
||||
$.each(goods_list, function (index, item) {
|
||||
var goods_id = item.goods_id;
|
||||
|
||||
if (id == Number(goods_id)) {
|
||||
i = index;
|
||||
}
|
||||
});
|
||||
goods_list.splice(i, 1);
|
||||
renderTable(goods_list);
|
||||
|
||||
$.each(selectedGoodsId, function (index, item) {
|
||||
if (id == Number(item)) {
|
||||
j = index;
|
||||
}
|
||||
});
|
||||
selectedGoodsId.splice(j, 1);
|
||||
goods_id = selectedGoodsId;
|
||||
$("#goods_num").html(goods_id.length);
|
||||
$("input[name='goods_ids']").val(goods_id.toString());
|
||||
}
|
||||
|
||||
/* 商品 */
|
||||
function addGoods() {
|
||||
goodsSelect(function (data) {
|
||||
|
||||
goods_id = [];
|
||||
goods_list = [];
|
||||
|
||||
for (var key in data) {
|
||||
goods_id.push(data[key].goods_id);
|
||||
goods_list.push(data[key]);
|
||||
}
|
||||
|
||||
renderTable(goods_list);
|
||||
$("input[name='goods_ids']").val(goods_id.toString());
|
||||
selectedGoodsId = goods_id;
|
||||
$("#goods_num").html(goods_id.length)
|
||||
|
||||
}, selectedGoodsId, {mode: "spu"});
|
||||
}
|
||||
|
||||
function backDivideticketList() {
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/lists");
|
||||
}
|
||||
</script>
|
||||
115
addon/divideticket/shop/view/divideticket/group_member.html
Executable file
115
addon/divideticket/shop/view/divideticket/group_member.html
Executable file
@@ -0,0 +1,115 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/goods_lists.css">
|
||||
<style>
|
||||
.layui-layer-page .layui-layer-content {padding: 20px 30px;}
|
||||
.layui-layout-admin .layui-body .body-content{overflow: hidden;}
|
||||
</style>
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="coupon_tab">
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="coupon_list" lay-filter="coupon_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 会员 -->
|
||||
<script type="text/html" id="member_info">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
<img layer-src src="{{ns.img(d.headimg) || '{:img('public/static/img/default_img/head.png')}'}}" onerror="this.src = '{:img('public/static/img/default_img/head.png')}' ">
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.nickname}}">{{d.nickname}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl;
|
||||
layui.use(['form', 'laytpl', 'element'], function () {
|
||||
var table, form = layui.form, element = layui.element, laytpl = layui.laytpl;
|
||||
form.render();
|
||||
|
||||
element.on('tab(coupon_tab)', function () {
|
||||
table.reload({
|
||||
page: {curr: 1},
|
||||
where: {'status': this.getAttribute('lay-id')},
|
||||
})
|
||||
});
|
||||
|
||||
var group_id = {$group_id};
|
||||
// 券名称、发起时间、已参与人数/需成团人数、成团截止时间、操作(参与人列表)
|
||||
table = new Table({
|
||||
elem: '#coupon_list',
|
||||
page: false,
|
||||
url: ns.url("divideticket://shop/divideticket/groupMember", {'group_id': group_id}),
|
||||
cols: [
|
||||
[{
|
||||
title: '会员信息',
|
||||
unresize: 'false',
|
||||
width: '17%',
|
||||
templet: '#member_info'
|
||||
},{
|
||||
title: '活动内容',
|
||||
field: 'name',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return data.divide_num + '人瓜分'+ data.money + '元';
|
||||
}
|
||||
},{
|
||||
title: '瓜分金额',
|
||||
field: 'coupon_money',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
var content = '';
|
||||
if(data.coupon_money == undefined || data.coupon_money == ''){
|
||||
content = '';
|
||||
}else{
|
||||
content = data.coupon_money + '元优惠券';
|
||||
}
|
||||
return content;
|
||||
}
|
||||
},{
|
||||
title: '使用时间',
|
||||
field: 'coupon_use_time',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.coupon_use_time);
|
||||
}
|
||||
},{
|
||||
title: '领券时间',
|
||||
field: 'coupon_fetch_time',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.coupon_fetch_time);
|
||||
}
|
||||
},{
|
||||
title: '状态',
|
||||
field: 'coupon_state',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
var state_name = '';
|
||||
|
||||
if(data.coupon_state == 1){
|
||||
state_name = '未使用';
|
||||
}else if(data.coupon_state == 2){
|
||||
state_name = '已使用';
|
||||
}else if(data.coupon_state == 3){
|
||||
state_name = '已过期';
|
||||
}else if(data.coupon_state == 4){
|
||||
state_name = '已关闭';
|
||||
}
|
||||
|
||||
return state_name;
|
||||
}
|
||||
},]
|
||||
],
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
349
addon/divideticket/shop/view/divideticket/lists.html
Executable file
349
addon/divideticket/shop/view/divideticket/lists.html
Executable file
@@ -0,0 +1,349 @@
|
||||
<style>
|
||||
.screen .layui-colla-content .goods-category-container .layui-input {
|
||||
width: 240px !important;
|
||||
}
|
||||
.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="name" placeholder="请输入活动名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">有效期限:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="validity_type" lay-filter="validity_type">
|
||||
<option value="">全部</option>
|
||||
<option value="1">固定时间</option>
|
||||
<option value="2">相对时间</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline relative-time layui-hide">
|
||||
<div class="layui-input-inline split">从发券</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" class="layui-input len-short" lay-verify="int" id="start_day" placeholder="开始天数" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-input-inline split">至</div>
|
||||
<div class="layui-input-inline end-time">
|
||||
<input type="number" class="layui-input len-short" lay-verify="int" id="end_day" placeholder="结束天数" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline fixed-time layui-hide">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" id="start_date" placeholder="开始时间" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="layui-input-inline split"> - </div>
|
||||
<div class="layui-input-inline end-time">
|
||||
<input type="text" class="layui-input" id="end_date" placeholder="结束时间" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" class="layui-input" name="validity_start_time">
|
||||
<input type="hidden" class="layui-input" name="validity_end_time">
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="coupon_tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" lay-id="">全部</li>
|
||||
{foreach $divideticket_status as $k=>$v}
|
||||
<li data-status="{$k}">{$v}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="coupon_list" lay-filter="coupon_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="validity">
|
||||
{{# if(d.validity_type == 0){ }}
|
||||
失效期:{{ ns.time_to_date(d.validity_end_time) }}
|
||||
{{# }else{ }}
|
||||
领取后,{{ d.fixed_term }}天有效
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 时间 -->
|
||||
<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>
|
||||
|
||||
{include file="app/shop/view/component/promote_show.html"}
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="operation-wrap" data-coupon-id="{{d.coupon_id}}">
|
||||
<div class="popup-qrcode-wrap" style="display: none">
|
||||
<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 == 1){ }}
|
||||
<a class="layui-btn" lay-event="operate">运营</a>
|
||||
<a class="layui-btn text-color" lay-event="select">推广</a>
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn" lay-event="close">关闭</a>
|
||||
{{# } }}
|
||||
<!-- 已结束 -->
|
||||
{{# if(d.status == 2){ }}
|
||||
<a class="layui-btn" lay-event="operate">运营</a>
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
<!-- 未开始 -->
|
||||
{{# if(d.status == 0){ }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
<!-- 已关闭 -->
|
||||
{{# if(d.status == -1){ }}
|
||||
<a class="layui-btn" lay-event="operate">运营</a>
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl;
|
||||
layui.use(['form', 'laytpl', 'laydate', 'element'], function () {
|
||||
var table,
|
||||
form = layui.form,
|
||||
element = layui.element,
|
||||
laydate = layui.laydate,
|
||||
validityType = 0,
|
||||
repeat_flag = false; //防重复标识
|
||||
|
||||
laytpl = layui.laytpl,
|
||||
form.render();
|
||||
|
||||
element.on('tab(coupon_tab)', function () {
|
||||
table.reload({
|
||||
page: {curr: 1},
|
||||
where: {
|
||||
'status': this.getAttribute('data-status')
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#coupon_list',
|
||||
url: ns.url("divideticket://shop/divideticket/lists"),
|
||||
cols: [
|
||||
[{
|
||||
field: 'name',
|
||||
title: '活动名称',
|
||||
unresize: 'false',
|
||||
width: '13%'
|
||||
}, {
|
||||
title: '<span style="padding-right: 15px;">券内容</span>',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
align: 'left',
|
||||
templet: function (data) {
|
||||
return '<span style="padding-right: 15px;"> '+ data.divide_num +' 名好友,瓜分 ¥' + data.money + '元</span>';
|
||||
}
|
||||
}, {
|
||||
field: 'success_count',
|
||||
title: '成团数',
|
||||
unresize: 'false',
|
||||
width: '6%',
|
||||
}, {
|
||||
title: '剩余库存',
|
||||
unresize: 'false',
|
||||
width: '6%',
|
||||
templet: function (data) {
|
||||
return data.inventory;
|
||||
}
|
||||
}, {
|
||||
title: '活动时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: '#time'
|
||||
}, {
|
||||
title: '有效期限',
|
||||
unresize: 'false',
|
||||
templet: '#validity',
|
||||
width: '15%'
|
||||
}, {
|
||||
field: 'status_name',
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '8%'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/edit", {"coupon_id": data.coupon_id});
|
||||
break;
|
||||
case 'detail': //编辑
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/detail", {"coupon_id": data.coupon_id});
|
||||
break;
|
||||
case 'del': //删除
|
||||
layer.confirm('确定要删除该好友瓜分券吗?', function (index) {
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("divideticket://shop/divideticket/delete"),
|
||||
data: data,
|
||||
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;
|
||||
});
|
||||
break;
|
||||
case 'close': //关闭
|
||||
layer.confirm('确定要关闭吗?', function (index) {
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("divideticket://shop/divideticket/close", {"coupon_id": data.coupon_id}),
|
||||
data: data,
|
||||
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;
|
||||
});
|
||||
break;
|
||||
case 'select': //推广
|
||||
spreadDivideticket(data);
|
||||
break;
|
||||
case 'operate': //运营
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/operate", {"coupon_id": data.coupon_id});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// 搜索
|
||||
form.on('submit(search)', function (data) {
|
||||
if (validityType == 2) {
|
||||
data.field.validity_start_time = $("#start_day").val();
|
||||
data.field.validity_end_time = $("#end_day").val();
|
||||
}
|
||||
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
form.on('select(validity_type)', function (data) {
|
||||
switch (data.value) {
|
||||
case '':
|
||||
$(".relative-time").addClass("layui-hide");
|
||||
$(".fixed-time").addClass("layui-hide");
|
||||
break;
|
||||
case '1':
|
||||
laydate.render({
|
||||
elem: '#start_date', //指定元素
|
||||
type: 'datetime',
|
||||
done: function (value, date, endDate) {
|
||||
$("input[name='validity_start_time']").val(ns.date_to_time(value));
|
||||
}
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_date', //指定元素
|
||||
type: 'datetime',
|
||||
done: function (value, date, endDate) {
|
||||
$("input[name='validity_end_time']").val(ns.date_to_time(value));
|
||||
}
|
||||
});
|
||||
$(".relative-time").addClass("layui-hide");
|
||||
$(".fixed-time").removeClass("layui-hide");
|
||||
break;
|
||||
case '2':
|
||||
validityType = 2;
|
||||
$(".relative-time").removeClass("layui-hide");
|
||||
$(".fixed-time").addClass("layui-hide");
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
form.verify({
|
||||
int: function (value) {
|
||||
if (value < 0) {
|
||||
return '发券天数不能小于0!';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function spreadDivideticket(data){
|
||||
new PromoteShow({
|
||||
url:ns.url("divideticket://shop/divideticket/spreadDivideticket"),
|
||||
param:{notice_id:data.coupon_id},
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/add");
|
||||
}
|
||||
</script>
|
||||
114
addon/divideticket/shop/view/divideticket/operate.html
Executable file
114
addon/divideticket/shop/view/divideticket/operate.html
Executable file
@@ -0,0 +1,114 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/goods_lists.css">
|
||||
<style>
|
||||
.layui-layer-page .layui-layer-content {padding: 20px 30px;}
|
||||
.layui-layout-admin .layui-body .body-content{overflow: hidden;}
|
||||
</style>
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="coupon_tab">
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="coupon_list" lay-filter="coupon_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="operation">
|
||||
<div class="operation-wrap" data-coupon-id="{{d.coupon_id}}">
|
||||
<div class="popup-qrcode-wrap" style="display: none">
|
||||
<img class="popup-qrcode-loadimg" src="__STATIC__/loading/loading.gif"/>
|
||||
</div>
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="cat">查看邀请记录</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl;
|
||||
layui.use(['form', 'laytpl', 'element'], function () {
|
||||
var table, form = layui.form, element = layui.element, laytpl = layui.laytpl;
|
||||
form.render();
|
||||
|
||||
element.on('tab(coupon_tab)', function () {
|
||||
table.reload({
|
||||
page: {curr: 1},
|
||||
where: {'status': this.getAttribute('lay-id')},
|
||||
})
|
||||
});
|
||||
var coupon_id = {$coupon_id};
|
||||
// 券名称、发起时间、已参与人数/需成团人数、成团截止时间、操作(参与人列表)
|
||||
table = new Table({
|
||||
elem: '#coupon_list',
|
||||
url: ns.url("divideticket://shop/divideticket/operate",{'coupon_id':coupon_id}),
|
||||
cols: [
|
||||
[{
|
||||
title: '会员昵称',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
var name = '';
|
||||
if(data.nickname){
|
||||
name = data.nickname;
|
||||
}else{
|
||||
name = data.username;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}, {
|
||||
field: 'name',
|
||||
title: '券名称',
|
||||
unresize: 'false',
|
||||
width: '13%'
|
||||
}, {
|
||||
field: 'start_time',
|
||||
title: '发起时间',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.start_time);
|
||||
}
|
||||
}, {
|
||||
title: '已参与人数/需成团人数',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: function (data) {
|
||||
return data.exist_num + ' / ' + data.num;
|
||||
}
|
||||
}, {
|
||||
field: 'end_time',
|
||||
title: '截止时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.end_time);
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'cat': //运营
|
||||
location.hash = ns.hash("divideticket://shop/divideticket/groupMember", {"group_id": data.group_id});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user