初始上传
This commit is contained in:
755
addon/pintuan/shop/view/pintuan/add.html
Executable file
755
addon/pintuan/shop/view/pintuan/add.html
Executable file
@@ -0,0 +1,755 @@
|
||||
<style>
|
||||
.layui-form-item .layui-input-inline.end-time{float: none;}
|
||||
.goods_list .layui-table-body{max-height: 480px !important;}
|
||||
.goods-title{display: flex;align-items: center;}
|
||||
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
|
||||
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
|
||||
.goods-title .goods-name{flex: 1;line-height: 1.6;width: 0;white-space: break-spaces;}
|
||||
.form-wrap {position: relative;}
|
||||
.examples {cursor: pointer; margin-left: 5px;}
|
||||
.layui-carousel>[carousel-item]>* {background: #fff !important;}
|
||||
.layui-carousel {position: absolute; top: 10px; left: 1330px; width: 300px !important; height: 610px !important; background: #fff;}
|
||||
.goods_num {padding-left: 20px;}
|
||||
.ladder .layui-form-label + .layui-input-block {display: flex}
|
||||
.ladder .layui-form-label + .layui-input-block .layui-form-mid.right {margin-left: 10px}
|
||||
</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" style="display: inline-block; margin-left: 0px;">
|
||||
<input type="text" name="pintuan_name" value="{$pintuan_name}" lay-verify="required" autocomplete="off" class="layui-input len-long" maxlength="40">
|
||||
</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-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input" 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">
|
||||
<input type="radio" name="pintuan_type" value="ordinary" title="普通拼团" checked lay-filter="pintuan_type">
|
||||
<input type="radio" name="pintuan_type" value="ladder" title="阶梯拼团" lay-filter="pintuan_type">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pintuan-type ordinary">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>参团人数:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="pintuan_num" value="2" lay-verify="required|sum" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>最少两人成团</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pintuan-type ladder" style="display: none">
|
||||
<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"><span class="required">*</span>参团人数:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第一级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_1" value="" lay-verify="ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第二级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_2" value="" lay-verify="ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn add-ladder">添加拼团阶梯</button>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>最少两人成团,最多支持三级阶梯</p>
|
||||
</div>
|
||||
</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">
|
||||
<select class="pintuan-day"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">日</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<select class="pintuan-hour"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">时</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<select class="pintuan-minute"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">分</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>提交订单后,在该时间范围内拼团成功才可购买</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">限制购买:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="buy_num" value="1" lay-verify="num" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>本次活动中一次最多可购买的商品数量,默认为1</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pintuan-type ordinary layui-form-item">
|
||||
<label class="layui-form-label">团长优惠:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="is_promotion" title="团长享受优惠价" lay-skin="primary" lay-filter="is_promotion">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>开启团长(开团人)优惠后,团长将享受更优惠价格,有助于提高开团率和成团率</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods_list">
|
||||
<label class="layui-form-label">活动商品:</label>
|
||||
<div class="layui-input-block">
|
||||
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
|
||||
<button class="layui-btn" onclick="addGoods()">选择商品</button>
|
||||
<span class="goods_num">已选商品(<span id="goods_num" style="color: red">0</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否单独购买:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_single_buy" value="1" title="是">
|
||||
<input type="radio" name="is_single_buy" value="0" title="否" checked>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="word-aux">
|
||||
<p>说明:设置单独购买,是可以选择不走拼团,直接提交订单购买商品 <a onclick="showDemo()" class="examples text-color">查看示例</a></p>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否虚拟成团:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_virtual_buy" value="1" title="是">
|
||||
<input type="radio" name="is_virtual_buy" value="0" title="否" checked>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="word-aux">
|
||||
<p>说明:虚拟成团则代表在拼团时间结束后,如果还未拼单成功,那么系统将会默认拼团成功。</p>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">是否推荐:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_recommend" value="1" title="是">
|
||||
<input type="radio" name="is_recommend" value="0" title="否" checked>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="is_virtual_goods" value="0">
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">活动规则:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="remark" class="layui-textarea len-long" maxlength="300"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backPintuanList()">返回</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-price">拼团价格</button>
|
||||
</script>
|
||||
<script type="text/html" id="toolbarOperationOne">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-price">拼团价格</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-discounts-price">团长优惠价</button>
|
||||
</script>
|
||||
<script>
|
||||
var goodsId = {}, selectedGoodsId = [], sku_list = [],is_promotion=0,table;
|
||||
layui.use(['form', 'laydate','carousel'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false,
|
||||
currentDate = new Date(),
|
||||
minDate = "";
|
||||
|
||||
var carousel = layui.carousel;
|
||||
currentDate.setDate(currentDate.getDate() + 30);
|
||||
carousel.render({
|
||||
elem: '#carousel',
|
||||
width: '100%',
|
||||
arrow: 'always'
|
||||
});
|
||||
form.render();
|
||||
|
||||
renderTable(sku_list); // 初始化表格
|
||||
|
||||
for (var i = 0; i <= 30; i++) {
|
||||
if (i < 10) {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
if (i == 1) {
|
||||
var html = '<option value="' + i + '" selected>0' + i + '</option>';
|
||||
}
|
||||
$(".pintuan-day").append(html);
|
||||
}
|
||||
for (var i = 0; i <= 23; i++) {
|
||||
if (i < 10) {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
$(".pintuan-hour").append(html);
|
||||
}
|
||||
for (var i = 0; i <= 59; i++) {
|
||||
if (i < 10) {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
$(".pintuan-minute").append(html);
|
||||
}
|
||||
|
||||
form.render('select');
|
||||
|
||||
//开始时间
|
||||
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" autocomplete="off" readonly><i class=" iconrili iconfont calendar"></i> ');
|
||||
laydate.render({
|
||||
elem: '#end_time',
|
||||
type: 'datetime',
|
||||
min: minDate
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
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 '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
num: function(value) {
|
||||
if (value < 1 || value % 1 != 0) {
|
||||
return '请输入大于0的正整数!';
|
||||
}
|
||||
},
|
||||
sum: function(value) {
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ordinary') {
|
||||
if (value < 2 || value % 1 != 0) {
|
||||
return '参团人数不能小于2,且必须是整数!';
|
||||
}
|
||||
}
|
||||
},
|
||||
ladderNum: function(value, item){
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ladder') {
|
||||
if (value < 2 || value % 1 != 0) {
|
||||
return '参团人数不能小于2,且必须是整数!';
|
||||
}
|
||||
var prevVal = $(item).parents('.pintuan-ladder').prev('.pintuan-ladder').find('input').val();
|
||||
if (prevVal != undefined && parseInt(prevVal) >= parseInt(value)) {
|
||||
return '参团人数不能小于等于上一个阶梯的人数';
|
||||
}
|
||||
}
|
||||
},
|
||||
pintuan_price: function(value, item) {
|
||||
var price = $(item).parents("tr").find(".goods-price").text();
|
||||
if (Number(value) > Number(price)) {
|
||||
return '拼团价格不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '拼团价格不能为空';
|
||||
}
|
||||
if (Number(value) <= 0) {
|
||||
return '拼团价格必须大于0';
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '拼团价格最多保留两位小数';
|
||||
}
|
||||
},
|
||||
promotion_price: function(value, item) {
|
||||
var price = $(item).parents("tr").find(".goods-price").text();
|
||||
if (Number(value) > Number(price)) {
|
||||
return '团长优惠价不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '团长优惠价不能为空';
|
||||
}
|
||||
if (Number(value) <= 0) {
|
||||
return '团长优惠价必须大于0';
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '团长优惠价最多保留两位小数';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听团长优惠是否被选中
|
||||
*/
|
||||
form.on('checkbox(is_promotion)', function(data){
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
form.on('radio(pintuan_type)', function(data){
|
||||
$('.pintuan-type').hide();
|
||||
$('.pintuan-type.' + data.value).show();
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
$('.add-ladder').click(function () {
|
||||
if ($('.pintuan-ladder').length >= 3) {
|
||||
layer.msg('最多添加三个阶梯');
|
||||
return;
|
||||
}
|
||||
var h = `<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第三级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_3" value="" lay-verify="required|ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
<a href="javascript:;" class="text-color delete">删除</a>
|
||||
</div>
|
||||
</div>`;
|
||||
$(this).parents('.layui-form-item').before(h);
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
$('body').off('click', '.pintuan-ladder .delete').on('click', '.pintuan-ladder .delete', function () {
|
||||
$(this).parents('.layui-form-item').remove();
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
|
||||
if (!Object.keys(goodsId).length) {
|
||||
layer.msg("请选择活动商品!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
data.field.goods_ids = selectedGoodsId.split(',');
|
||||
|
||||
var skuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
Object.values(item.sku_id).forEach(function (skuItem,skuIndex) {
|
||||
skuId.push(skuItem.sku);
|
||||
});
|
||||
});
|
||||
data.field.sku_ids = skuId;
|
||||
|
||||
if (data.field.pintuan_type == 'ladder') {
|
||||
data.field.pintuan_num = data.field.pintuan_num_1;
|
||||
}
|
||||
|
||||
var skuLisArr = [];
|
||||
sku_list.forEach(function(item,index) {
|
||||
var sku_detail = {};
|
||||
sku_detail.sku_id = item.sku_id;
|
||||
sku_detail.goods_id = item.goods_id;
|
||||
sku_detail.pintuan_price = item.pintuan_price || 0;
|
||||
sku_detail.pintuan_price_2 = item.pintuan_price_2 || 0;
|
||||
sku_detail.pintuan_price_3 = item.pintuan_price_3 || 0;
|
||||
sku_detail.promotion_price = item.promotion_price || 0;
|
||||
skuLisArr.push(sku_detail);
|
||||
});
|
||||
data.field.sku_list = skuLisArr;
|
||||
|
||||
var day = $(".pintuan-day option:selected").text(),
|
||||
hour = $(".pintuan-hour option:selected").text(),
|
||||
minute = $(".pintuan-minute option:selected").text();
|
||||
|
||||
var pintuan_time = Number(day) * 24 * 60 + Number(hour) * 60 + Number(minute);
|
||||
data.field.pintuan_time = pintuan_time;
|
||||
|
||||
var time = new Date(data.field.end_time).getTime() - new Date(data.field.start_time).getTime();
|
||||
if (time == 0) {
|
||||
layer.msg("拼团有效期不能为0!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
if (time < (pintuan_time * 60 * 1000)) {
|
||||
layer.msg("拼团有效期不能大于活动时长!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
|
||||
data.field.is_promotion = data.field.is_promotion == undefined ? 0 : 1;
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("pintuan://shop/pintuan/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("pintuan://shop/pintuan/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(sku_list) {
|
||||
var cols = [[
|
||||
{
|
||||
width: "3%",
|
||||
type: 'checkbox',
|
||||
unresize: 'false'
|
||||
},
|
||||
{
|
||||
field: 'sku_name',
|
||||
title: '商品名称',
|
||||
width: '30%',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
var html = '';
|
||||
html += ` <div class="goods-title">
|
||||
<div class="goods-img">
|
||||
<img layer-src src="${data.sku_image ? ns.img(data.sku_image) : ''}" alt="">
|
||||
</div>
|
||||
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" data-sku_id="${data.sku_id}" title="${data.sku_name}">${data.sku_name}</p>
|
||||
</div>`;
|
||||
return html;
|
||||
}
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '15%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" title="'+ data.price +'">¥<span class="goods-price">' + data.price +'</span ></p>';
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation ',
|
||||
width: '7% ',
|
||||
align: 'right',
|
||||
unresize: 'false '
|
||||
}]
|
||||
];
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ordinary') {
|
||||
let col = [
|
||||
{
|
||||
title: '拼团价 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price',
|
||||
width: $('[name="is_promotion"]').is(':checked') ? '25%' : '45%'
|
||||
}
|
||||
];
|
||||
if ($('[name="is_promotion"]').is(':checked')) {
|
||||
col.push({
|
||||
title: '团长价(元)',
|
||||
unresize: 'false',
|
||||
align: 'center',
|
||||
templet: '#promotion_price',
|
||||
width: '20%'
|
||||
})
|
||||
}
|
||||
cols[0].splice(3, 0, ...col);
|
||||
} else if ($('[name="pintuan_type"]:checked').val() == 'ladder') {
|
||||
let col = [
|
||||
{
|
||||
title: '阶梯一 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price',
|
||||
width: $('.pintuan-ladder').length == 3 ? '15%' : '25%'
|
||||
},
|
||||
{
|
||||
title: '阶梯二 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price_2',
|
||||
width: $('.pintuan-ladder').length == 3 ? '15%' : '20%'
|
||||
}
|
||||
];
|
||||
if ($('.pintuan-ladder').length == 3) {
|
||||
col.push({
|
||||
title: '阶梯三 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price_3',
|
||||
width: '15%'
|
||||
})
|
||||
}
|
||||
cols[0].splice(3, 0, ...col);
|
||||
}
|
||||
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page:false,
|
||||
limit:Number.MAX_VALUE,
|
||||
cols: cols,
|
||||
data: sku_list,
|
||||
toolbar: '#toolbarOperation'
|
||||
});
|
||||
|
||||
/**
|
||||
* 批量操作
|
||||
*/
|
||||
table.toolbar(function(obj) {
|
||||
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
switch (obj.event) {
|
||||
case "pintuan-price":
|
||||
editInput(0,obj);
|
||||
break;
|
||||
case "pintuan-discounts-price":
|
||||
editInput(1,obj);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editInput(textIndex=0,data) {
|
||||
var text = [{
|
||||
name: '拼团价格',
|
||||
value: 'pintuan_price'
|
||||
},{
|
||||
name: '团长优惠价',
|
||||
value: 'promotion_price'
|
||||
}];
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
title:"修改"+text[textIndex].name,
|
||||
area:['600px'],
|
||||
btn:["保存","返回"],
|
||||
content: `
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>${text[textIndex].name}:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bargain_edit_input" lay-verify="required" autocomplete="off" class="layui-input len-mid" placeholder="请输入${text[textIndex].name}">
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
yes: function(index, layero){
|
||||
var val = $("input[name='bargain_edit_input']").val();
|
||||
if (!val){
|
||||
layer.msg("请输入" + text[textIndex].name);
|
||||
return false;
|
||||
}
|
||||
data.data.forEach(function (item,index) {
|
||||
sku_list.forEach(function (skuItem,skuIndex) {
|
||||
if (item.sku_id == skuItem.sku_id){
|
||||
sku_list[skuIndex][text[textIndex].value] = val;
|
||||
}
|
||||
})
|
||||
});
|
||||
renderTable(sku_list);
|
||||
layer.closeAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加商品
|
||||
*/
|
||||
function addGoods(){
|
||||
goodsSelect(function (data) {
|
||||
|
||||
let newGoodsId = {};
|
||||
let new_sku_list = [];
|
||||
|
||||
for (var key in data) {
|
||||
|
||||
newGoodsId['goods_'+ data[key].goods_id] = {};
|
||||
newGoodsId['goods_'+ data[key].goods_id].sku_id = {};
|
||||
newGoodsId['goods_'+ data[key].goods_id].spu_id = data[key].goods_id;
|
||||
|
||||
for (var sku in data[key].sku_list) {
|
||||
var item = data[key].sku_list[sku];
|
||||
|
||||
newGoodsId['goods_'+ data[key].goods_id].sku_id['sku_'+item.sku_id]={};
|
||||
newGoodsId['goods_'+ data[key].goods_id].sku_id['sku_'+item.sku_id].sku = item.sku_id;
|
||||
sku_list.forEach((old_item)=>{
|
||||
if(item.sku_id == old_item.sku_id){
|
||||
item.pintuan_price = old_item.pintuan_price;
|
||||
item.pintuan_price_2 = old_item.pintuan_price_2;
|
||||
item.pintuan_price_3 = old_item.pintuan_price_3;
|
||||
item.promotion_price = old_item.promotion_price;
|
||||
}
|
||||
})
|
||||
new_sku_list.push(item);
|
||||
}
|
||||
}
|
||||
goodsId = newGoodsId;
|
||||
sku_list = new_sku_list;
|
||||
renderTable(sku_list);
|
||||
|
||||
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
|
||||
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
selectedGoodsId = spuId.toString();
|
||||
$("#goods_num").html(sku_list.length)
|
||||
|
||||
}, selectedGoodsId);
|
||||
}
|
||||
|
||||
function delRow(obj,id) {
|
||||
for (var i = 0; i < sku_list.length; i++){
|
||||
if (sku_list[i].sku_id == parseInt(id)){
|
||||
sku_list.splice(i,1);
|
||||
}
|
||||
}
|
||||
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
delete item.sku_id['sku_'+id];
|
||||
if (!Object.keys(item.sku_id).length){
|
||||
delete goodsId['goods_'+item.spu_id];
|
||||
}
|
||||
});
|
||||
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
selectedGoodsId = spuId.toString();
|
||||
$(obj).parents("tr").remove();
|
||||
$("#goods_num").html(sku_list.length)
|
||||
}
|
||||
|
||||
function bargainPintuanPrice(index,event, key) {
|
||||
for (var i = 0; i < sku_list.length; i++){
|
||||
if (sku_list[i].sku_id == index)
|
||||
sku_list[i][key] = event.srcElement.value;
|
||||
}
|
||||
}
|
||||
|
||||
function backPintuanList() {
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/lists");
|
||||
}
|
||||
|
||||
function showDemo(){
|
||||
layer.open({
|
||||
title: '查看示例',
|
||||
type: 1,
|
||||
area: ['600px', '660px'],
|
||||
content: '<img style="margin:20px 45px;" src="__STATIC__/img/single_buy.png" >',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price ? d.pintuan_price : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price')" onporpertychange="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price_2">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price_2 ? d.pintuan_price_2 : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price_2')" onporpertychange="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price_2')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price_3">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price_3 ? d.pintuan_price_3 : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price_3')" onporpertychange="bargainPintuanPrice({{ d.sku_id }},event, 'pintuan_price_3')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="promotion_price">
|
||||
<input type="number" class="layui-input len-short promotion-price" value="{{d.promotion_price ? d.promotion_price : '' }}" lay-verify="promotion_price" min="0.00" oninput="bargainPintuanPrice({{ d.sku_id }},event, 'promotion_price')" onporpertychange="bargainPromotionPrice({{ d.sku_id }},event, 'promotion_price')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delRow(this,{{d.sku_id}})">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
168
addon/pintuan/shop/view/pintuan/detail.html
Executable file
168
addon/pintuan/shop/view/pintuan/detail.html
Executable file
@@ -0,0 +1,168 @@
|
||||
<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.pintuan_name}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>活动状态:</label>
|
||||
<span>{if condition="$info.status == 0"}未开始{/if}{if condition="$info.status == 1"}进行中{/if}{if condition="$info.status == 2"}已结束{/if}{if condition="$info.status == 3"}已失效{/if}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>拼团类型:</label>
|
||||
<span>{$info.pintuan_type == 'ordinary' ? '普通拼团' : '阶梯拼团'}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>拼团人数:</label>
|
||||
<span>{$info.pintuan_num}人团</span>
|
||||
{if $info.pintuan_type == 'ladder'}<span> {$info.pintuan_num_2}人团</span>{/if}
|
||||
{if $info.pintuan_type == 'ladder' && $info.pintuan_num_3 > 0}<span> {$info.pintuan_num_3}人团</span>{/if}
|
||||
</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.buy_num}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>是否是单独购买:</label>
|
||||
<span>{$info.is_single_buy == 0 ? '否' : '是'}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>是否是虚拟成团:</label>
|
||||
<span>{$info.is_virtual_buy == 0 ? '否' : '是'}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>是否有团长优惠:</label>
|
||||
<span>{$info.is_promotion == 0 ? '否' : '是'}</span>
|
||||
</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-stat-view todo-list">
|
||||
<div class="promotion-stat-item" >
|
||||
<div class="promotion-stat-item-title">开团数</div>
|
||||
<div class="promotion-stat-item-value">{$info.group_num}</div>
|
||||
</div>
|
||||
<div class="promotion-stat-item" >
|
||||
<div class="promotion-stat-item-title">成团数</div>
|
||||
<div class="promotion-stat-item-value">{$info.success_group_num}</div>
|
||||
</div>
|
||||
|
||||
<div class="promotion-stat-item" >
|
||||
<div class="promotion-stat-item-title">订单数</div>
|
||||
<div class="promotion-stat-item-value">{$info.order_num}</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>
|
||||
|
||||
<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.sku_image) }}" alt="">
|
||||
</div>
|
||||
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.sku_name }}</p>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var list = {:json_encode($info.sku_list, JSON_UNESCAPED_UNICODE)};
|
||||
layui.use('table', function() {
|
||||
new Table({
|
||||
elem: '#promotion_list',
|
||||
cols: [
|
||||
[{
|
||||
field: 'sku_name',
|
||||
title: '商品名称',
|
||||
width: '26%',
|
||||
unresize: 'false',
|
||||
templet: "#promotion_list_item_box_html"
|
||||
}, {
|
||||
title: '商品价格(元)',
|
||||
unresize: 'false',
|
||||
align: 'left',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}
|
||||
{if $info.pintuan_type == 'ordinary'}
|
||||
, {
|
||||
title: '拼团价格(元)',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '¥' + data.pintuan_price;
|
||||
}
|
||||
},
|
||||
{if condition="$info.is_promotion == 1"}
|
||||
{
|
||||
title: '团长优惠价(元)',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
return '¥' + data.promotion_price;
|
||||
}
|
||||
}
|
||||
{/if}
|
||||
{/if}
|
||||
{if $info.pintuan_type == 'ladder'}
|
||||
,{
|
||||
title: '{$info.pintuan_num}人团(元)',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '¥' + data.pintuan_price;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '{$info.pintuan_num_2}人团(元)',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
return '¥' + data.pintuan_price_2;
|
||||
}
|
||||
}
|
||||
{if condition="$info.pintuan_num_3 > 0"}
|
||||
,{
|
||||
title: '{$info.pintuan_num_3}人团(元)',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
return '¥' + data.pintuan_price_3;
|
||||
}
|
||||
}
|
||||
{/if}
|
||||
{/if}
|
||||
]
|
||||
],
|
||||
data: list
|
||||
});
|
||||
});
|
||||
</script>
|
||||
758
addon/pintuan/shop/view/pintuan/edit.html
Executable file
758
addon/pintuan/shop/view/pintuan/edit.html
Executable file
@@ -0,0 +1,758 @@
|
||||
<style>
|
||||
.layui-form-item .layui-input-inline.end-time{float: none;}
|
||||
.goods_list .layui-table-body{max-height: 480px !important;}
|
||||
.forbidden{cursor:not-allowed;background-color: #eee;}
|
||||
.goods-title{display: flex;align-items: center;}
|
||||
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
|
||||
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
|
||||
.goods-title .goods-name{flex: 1;line-height: 1.6;}
|
||||
.form-wrap {position: relative;}
|
||||
.examples {cursor: pointer; margin-left: 5px; line-height: 36px;}
|
||||
.layui-carousel>[carousel-item]>* {background: #fff !important;}
|
||||
.layui-carousel {position: absolute; top: 10px; left: 1330px; width: 300px !important; height: 610px !important; background: #fff;}
|
||||
.ladder .layui-form-label + .layui-input-block {display: flex}
|
||||
.ladder .layui-form-label + .layui-input-block .layui-form-mid.right {margin-left: 10px}
|
||||
</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="pintuan_name" value="{$pintuan_info.data.pintuan_name}" lay-verify="required" autocomplete="off" class="layui-input len-long" maxlength="40">
|
||||
</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-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="start_time" name="start_time" value="{:date('Y-m-d H:i:s', $pintuan_info.data.start_time)}" lay-verify="required" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="end_time" name="end_time" value="{:date('Y-m-d H:i:s', $pintuan_info.data.end_time)}" lay-verify="required|time" class="layui-input" autocomplete="off" readonly>
|
||||
<input type="hidden" value="{$pintuan_info.data.end_time}" id="old_end_time">
|
||||
<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">
|
||||
<input type="radio" name="pintuan_type" value="ordinary" disabled title="普通拼团" {if $pintuan_info.data.pintuan_type eq 'ordinary'}checked{/if} lay-filter="pintuan_type">
|
||||
<input type="radio" name="pintuan_type" value="ladder" disabled title="阶梯拼团" {if $pintuan_info.data.pintuan_type eq 'ladder'}checked{/if} lay-filter="pintuan_type">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pintuan-type ordinary" {if $pintuan_info.data.pintuan_type neq 'ordinary'}style="display: none"{/if}>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>参团人数:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="pintuan_num" value="{$pintuan_info.data.pintuan_num}" lay-verify="required|sum" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>最少两人成团</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pintuan-type ladder" {if $pintuan_info.data.pintuan_type neq 'ladder'}style="display: none"{/if}>
|
||||
<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"><span class="required">*</span>参团人数:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第一级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_1" disabled value="{$pintuan_info.data.pintuan_num}" lay-verify="required|ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第二级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_2" disabled value="{$pintuan_info.data.pintuan_num_2}" lay-verify="required|ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
</div>
|
||||
</div>
|
||||
{if $pintuan_info.data.pintuan_num_3 > 0}
|
||||
<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第二级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_3" disabled value="{$pintuan_info.data.pintuan_num_3}" lay-verify="required|ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn add-ladder">添加拼团阶梯</button>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>最少两人成团,最多支持三级阶梯</p>
|
||||
</div>
|
||||
</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">
|
||||
<select class="pintuan-day"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">日</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<select class="pintuan-hour"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">时</div>
|
||||
<div class="layui-input-inline len-short">
|
||||
<select class="pintuan-minute"></select>
|
||||
</div>
|
||||
<div class="layui-form-mid">分</div>
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>提交订单后,在该时间范围内拼团成功才可购买</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">限制购买:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="buy_num" value="{$pintuan_info.data.buy_num}" lay-verify="num" autocomplete="off" class="layui-input len-short">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>本次活动中一次最多可购买的商品数量</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item pintuan-type ordinary" {if $pintuan_info.data.pintuan_type neq 'ordinary'}style="display: none"{/if}>
|
||||
<label class="layui-form-label">团长优惠:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="is_promotion" {$pintuan_info.data.is_promotion == 1 ? 'checked' : ''} value="{$pintuan_info.data.is_promotion}" title="团长享受优惠价" lay-skin="primary" lay-filter="is_promotion">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>开启团长(开团人)优惠后,团长将享受更优惠价格,有助于提高开团率和成团率</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods_list">
|
||||
<label class="layui-form-label">活动商品:</label>
|
||||
<div class="layui-input-block">
|
||||
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否单独购买:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_single_buy" value="1" title="是" {$pintuan_info.data.is_single_buy == 1 ? 'checked' : ''}>
|
||||
<input type="radio" name="is_single_buy" value="0" title="否" {$pintuan_info.data.is_single_buy == 0 ? 'checked' : ''}>
|
||||
</div>
|
||||
<a onclick="showDemo()" class="examples text-color">查看示例</a>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否虚拟成团:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_virtual_buy" value="1" title="是" {$pintuan_info.data.is_virtual_buy == 1 ? 'checked' : ''}>
|
||||
<input type="radio" name="is_virtual_buy" value="0" title="否" {$pintuan_info.data.is_virtual_buy == 0 ? 'checked' : ''}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">是否推荐:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_recommend" value="1" title="是" {$pintuan_info.data.is_recommend == 1 ? 'checked' : ''}>
|
||||
<input type="radio" name="is_recommend" value="0" title="否" {$pintuan_info.data.is_recommend == 0 ? 'checked' : ''}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">活动规则:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="remark" class="layui-textarea len-long" maxlength="300">{$pintuan_info.data.remark}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backPintuanList()">返回</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="pintuan_id" value="{$pintuan_info.data.pintuan_id}" />
|
||||
<input type="hidden" class="pintuan-time" value="{$pintuan_info.data.pintuan_time}" />
|
||||
<input type="hidden" name="goods_id" class="goods-id" value="{$pintuan_info.data.goods_id}" />
|
||||
<input type="hidden" name="is_virtual_goods" class="is-virtual-goods" value="{$pintuan_info.data.is_virtual_goods}" />
|
||||
<input type="hidden" class="start-time-pri" value="{$pintuan_info.data.start_time}" />
|
||||
<input type="hidden" class="end-time-pri" value="{$pintuan_info.data.end_time}" />
|
||||
|
||||
<!-- <div class="layui-carousel" id="carousel">
|
||||
<div carousel-item>
|
||||
<img src="__STATIC__/img/pintuan.png" >
|
||||
<img src="__STATIC__/img/pintuan_detail.png" >
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-price">拼团价格</button>
|
||||
</script>
|
||||
<script type="text/html" id="toolbarOperationOne">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-price">拼团价格</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="pintuan-discounts-price">团长优惠价</button>
|
||||
</script>
|
||||
<script>
|
||||
var start_time_pri = ns.time_to_date($(".start-time-pri").val()),
|
||||
end_time_pri = ns.time_to_date($(".end-time-pri").val());
|
||||
var pintuan_time = $(".pintuan-time").val(), //总分钟数
|
||||
day_time = pintuan_time / (24 * 60), //天数
|
||||
houe_time = (pintuan_time % (24 * 60)) / 60, //小时
|
||||
second_time = (pintuan_time % (24 * 60)) % 60; //分钟
|
||||
|
||||
var sku_list = [];
|
||||
sku_list = {:json_encode($pintuan_info.data.sku_list, JSON_UNESCAPED_UNICODE)};
|
||||
|
||||
var pintuan_info = {:json_encode($pintuan_info.data,JSON_UNESCAPED_UNICODE)},is_promotion = 0;
|
||||
sku_list.forEach(function (item,index) {
|
||||
item.is_delete = item.pintuan_price ? 1 : 2;
|
||||
});
|
||||
|
||||
var is_virtual = [];
|
||||
layui.use(['form', 'laydate','carousel'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false,
|
||||
minDate = "";
|
||||
var carousel = layui.carousel;
|
||||
|
||||
carousel.render({
|
||||
elem: '#carousel'
|
||||
,width: '100%'
|
||||
,arrow: 'always'
|
||||
});
|
||||
|
||||
form.render();
|
||||
renderTable(sku_list); // 初始化表格
|
||||
|
||||
for (var i = 0; i <= 30; i++) {
|
||||
if (i < 10) {
|
||||
if (i == day_time) {
|
||||
var html = '<option value="' + i + '" selected>0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
}
|
||||
} else {
|
||||
if (i == day_time) {
|
||||
var html = '<option value="' + i + '" selected>' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
}
|
||||
$(".pintuan-day").append(html);
|
||||
}
|
||||
for (var i = 0; i <= 23; i++) {
|
||||
if (i < 10) {
|
||||
if (i == houe_time) {
|
||||
var html = '<option value="' + i + '" selected>0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
}
|
||||
} else {
|
||||
if (i == houe_time) {
|
||||
var html = '<option value="' + i + '" selected>' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
}
|
||||
$(".pintuan-hour").append(html);
|
||||
}
|
||||
for (var i = 0; i <= 59; i++) {
|
||||
if (i < 10) {
|
||||
if (i == second_time) {
|
||||
var html = '<option value="' + i + '" selected>0' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">0' + i + '</option>';
|
||||
}
|
||||
} else {
|
||||
if (i == second_time) {
|
||||
var html = '<option value="' + i + '" selected>' + i + '</option>';
|
||||
} else {
|
||||
var html = '<option value="' + i + '">' + i + '</option>';
|
||||
}
|
||||
}
|
||||
$(".pintuan-minute").append(html);
|
||||
}
|
||||
form.render('select');
|
||||
|
||||
var now_time = ((new Date()).getTime())/1000;
|
||||
var start_time = ((new Date($("#start_time").val())).getTime())/1000;
|
||||
var old_end_time = ((new Date($("#end_time").val())).getTime())/1000;
|
||||
if(now_time <= start_time){
|
||||
//开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: start_time_pri,
|
||||
done: function(value) {
|
||||
minDate = value;
|
||||
reRender();
|
||||
}
|
||||
});
|
||||
}
|
||||
if(now_time <= old_end_time){
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: end_time_pri
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新渲染结束时间
|
||||
* */
|
||||
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" autocomplete="off" readonly><i class=" iconrili iconfont calendar"></i> ');
|
||||
laydate.render({
|
||||
elem: '#end_time',
|
||||
type: 'datetime',
|
||||
min: minDate
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
time: function(value) {
|
||||
var now_time = ((new Date()).getTime())/1000;
|
||||
var start_time = ((new Date($("#start_time").val())).getTime())/1000;
|
||||
var end_time = ((new Date(value)).getTime())/1000;
|
||||
var old_end_time = $("#old_end_time").val();
|
||||
|
||||
if(old_end_time > end_time){
|
||||
return '结束时间不能小于之前设置的结束时间!'
|
||||
}
|
||||
if (now_time > end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
if (start_time > end_time) {
|
||||
return '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
num: function(value) {
|
||||
if (value < 1 || value % 1 != 0) {
|
||||
return '请输入大于0的正整数!';
|
||||
}
|
||||
},
|
||||
sum: function(value) {
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ordinary') {
|
||||
if (value < 2 || value % 1 != 0) {
|
||||
return '参团人数不能小于2,且必须是整数!';
|
||||
}
|
||||
}
|
||||
},
|
||||
ladderNum: function(value, item){
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ladder') {
|
||||
if (value < 2 || value % 1 != 0) {
|
||||
return '参团人数不能小于2,且必须是整数!';
|
||||
}
|
||||
var prevVal = $(item).parents('.pintuan-ladder').prev('.pintuan-ladder').find('input').val();
|
||||
if (prevVal != undefined && parseInt(prevVal) >= parseInt(value)) {
|
||||
return '参团人数不能小于等于上一个阶梯的人数';
|
||||
}
|
||||
}
|
||||
},
|
||||
pintuan_price: function(value, item) {
|
||||
var price = $(item).parents("tr").find(".goods-price").text();
|
||||
if (Number(value) > Number(price)) {
|
||||
return '拼团价格不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '拼团价格不能为空';
|
||||
}
|
||||
if (Number(value) <= 0) {
|
||||
return '拼团价格必须大于0';
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '拼团价格最多保留两位小数';
|
||||
}
|
||||
},
|
||||
promotion_price: function(value, item) {
|
||||
var price = $(item).parents("tr").find(".goods-price").text();
|
||||
if (Number(value) > Number(price)) {
|
||||
return '团长优惠价不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '团长优惠价不能为空';
|
||||
}
|
||||
if (Number(value) <= 0) {
|
||||
return '团长优惠价必须大于0';
|
||||
}
|
||||
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '团长优惠价最多保留两位小数';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听团长优惠是否被选中
|
||||
*/
|
||||
form.on('checkbox(is_promotion)', function(data){
|
||||
if (data.elem.checked) {
|
||||
$(".team-leader").removeClass("layui-hide");
|
||||
$(".goods-empty").attr("colspan", 4);
|
||||
$("input[name='is_promotion']").val(1);
|
||||
is_promotion = 1;
|
||||
} else {
|
||||
$(".team-leader").addClass("layui-hide");
|
||||
$(".goods-empty").attr("colspan", 3);
|
||||
$("input[name='is_promotion']").val(0);
|
||||
is_promotion = 0;
|
||||
}
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
$('.add-ladder').click(function () {
|
||||
if ($('.pintuan-ladder').length >= 3) {
|
||||
layer.msg('最多添加三个阶梯');
|
||||
return;
|
||||
}
|
||||
var h = `<div class="layui-form-item pintuan-ladder">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">第三级阶梯人数</div>
|
||||
<input type="number" name="pintuan_num_3" value="" lay-verify="required|ladderNum" autocomplete="off" class="layui-input len-short">
|
||||
<div class="layui-form-mid right">人</div>
|
||||
<a href="javascript:;" class="text-color delete">删除</a>
|
||||
</div>
|
||||
</div>`;
|
||||
$(this).parents('.layui-form-item').before(h);
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
$('body').off('click', '.pintuan-ladder .delete').on('click', '.pintuan-ladder .delete', function () {
|
||||
$(this).parents('.layui-form-item').remove();
|
||||
renderTable(sku_list);
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
data.field.sku_ids = [];
|
||||
data.field.goods_id = sku_list[0].goods_id;
|
||||
sku_list.forEach(function (item,index) {
|
||||
if (item.is_delete == 2) return false;
|
||||
data.field.sku_ids.push(item.sku_id);
|
||||
});
|
||||
if (data.field.sku_ids.length == 0) {
|
||||
layer.msg("请选择参与活动商品!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
var skuLisArr = [];
|
||||
sku_list.forEach(function(item,index) {
|
||||
var sku_detail = {};
|
||||
sku_detail.sku_id = item.sku_id;
|
||||
sku_detail.goods_id = item.goods_id;
|
||||
sku_detail.pintuan_price = item.pintuan_price || 0;
|
||||
sku_detail.pintuan_price_2 = item.pintuan_price_2 || 0;
|
||||
sku_detail.pintuan_price_3 = item.pintuan_price_3 || 0;
|
||||
sku_detail.promotion_price = item.promotion_price || 0;
|
||||
sku_detail.is_delete = item.is_delete || 1;
|
||||
skuLisArr.push(sku_detail);
|
||||
});
|
||||
data.field.sku_list = skuLisArr;
|
||||
|
||||
var day = $(".pintuan-day option:selected").text(),
|
||||
hour = $(".pintuan-hour option:selected").text(),
|
||||
minute = $(".pintuan-minute option:selected").text();
|
||||
|
||||
var pintuan_time = Number(day) * 24 * 60 + Number(hour) * 60 + Number(minute);
|
||||
data.field.pintuan_time = pintuan_time;
|
||||
|
||||
var time = new Date(data.field.end_time).getTime() - new Date(data.field.start_time).getTime();
|
||||
if (time < (pintuan_time * 60 * 1000)) {
|
||||
layer.msg("拼团有效期不能大于活动时长!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
|
||||
data.field.is_promotion = data.field.is_promotion == undefined ? 0 : 1;
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("pintuan://shop/pintuan/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("pintuan://shop/pintuan/lists");
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(sku_list) {
|
||||
var cols = [[
|
||||
{
|
||||
width: "3%",
|
||||
type: 'checkbox',
|
||||
unresize: 'false'
|
||||
},
|
||||
{
|
||||
field: 'sku_name',
|
||||
title: '商品名称',
|
||||
width: '30%',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
var html = '';
|
||||
html += ` <div class="goods-title">
|
||||
<div class="goods-img">
|
||||
<img layer-src src="${data.sku_image ? ns.img(data.sku_image) : ''}" alt="">
|
||||
</div>
|
||||
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" data-sku_id="${data.sku_id}" title="${data.sku_name}">${data.sku_name}</p>
|
||||
</div>`;
|
||||
return html;
|
||||
}
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
align: 'right',
|
||||
width: '15%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" title="'+ data.price +'">¥<span class="goods-price">' + data.price +'</span ></p>';
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation ',
|
||||
width: '7% ',
|
||||
align: 'right',
|
||||
unresize: 'false '
|
||||
}]
|
||||
];
|
||||
if ($('[name="pintuan_type"]:checked').val() == 'ordinary') {
|
||||
let col = [
|
||||
{
|
||||
title: '拼团价 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price',
|
||||
width: $('[name="is_promotion"]').is(':checked') ? '25%' : '45%'
|
||||
}
|
||||
];
|
||||
if ($('[name="is_promotion"]').is(':checked')) {
|
||||
col.push({
|
||||
title: '团长价(元)',
|
||||
unresize: 'false',
|
||||
align: 'center',
|
||||
templet: '#promotion_price',
|
||||
width: '20%'
|
||||
})
|
||||
}
|
||||
cols[0].splice(3, 0, ...col);
|
||||
} else if ($('[name="pintuan_type"]:checked').val() == 'ladder') {
|
||||
let col = [
|
||||
{
|
||||
title: '阶梯一 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price',
|
||||
width: $('.pintuan-ladder').length == 3 ? '15%' : '25%'
|
||||
},
|
||||
{
|
||||
title: '阶梯二 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price_2',
|
||||
width: $('.pintuan-ladder').length == 3 ? '15%' : '20%'
|
||||
}
|
||||
];
|
||||
if ($('.pintuan-ladder').length == 3) {
|
||||
col.push({
|
||||
title: '阶梯三 (元)',
|
||||
unresize: 'false ',
|
||||
align: 'center',
|
||||
templet: '#pintuan_price_3',
|
||||
width: '15%'
|
||||
})
|
||||
}
|
||||
cols[0].splice(3, 0, ...col);
|
||||
}
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page:false,
|
||||
limit:Number.MAX_VALUE,
|
||||
cols: cols,
|
||||
data: sku_list,
|
||||
toolbar: '#toolbarOperation'
|
||||
});
|
||||
/**
|
||||
* 批量操作
|
||||
*/
|
||||
table.toolbar(function(obj) {
|
||||
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
switch (obj.event) {
|
||||
case "pintuan-price":
|
||||
editInput(0,obj);
|
||||
break;
|
||||
case "pintuan-discounts-price":
|
||||
editInput(1,obj);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editInput(textIndex=0,data) {
|
||||
var text = [{
|
||||
name: '拼团价格',
|
||||
value: 'pintuan_price'
|
||||
},{
|
||||
name: '团长优惠价',
|
||||
value: 'promotion_price'
|
||||
}];
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
title:"修改"+text[textIndex].name,
|
||||
area:['600px'],
|
||||
btn:["保存","返回"],
|
||||
content: `
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>${text[textIndex].name}:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bargain_edit_input" lay-verify="required" autocomplete="off" class="layui-input len-mid" placeholder="请输入${text[textIndex].name}">
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
yes: function(index, layero){
|
||||
var val = $("input[name='bargain_edit_input']").val();
|
||||
if (!val){
|
||||
layer.msg("请输入" + text[textIndex].name);
|
||||
return false;
|
||||
}
|
||||
data.data.forEach(function (item,index) {
|
||||
sku_list.forEach(function (skuItem,skuIndex) {
|
||||
if (item.sku_id == skuItem.sku_id){
|
||||
sku_list[skuIndex][text[textIndex].value] = val;
|
||||
}
|
||||
})
|
||||
});
|
||||
renderTable(sku_list);
|
||||
layer.closeAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function bargainPintuanPrice(index,event,field) {
|
||||
sku_list[index][field] = event.srcElement.value;
|
||||
}
|
||||
|
||||
$("body").off("click",".no-participation").on("click",".no-participation",function(){
|
||||
$(this).text("参与");
|
||||
$(this).parents("tr").find("input").each(function (index,item) {
|
||||
$(item).attr("readonly",true);
|
||||
$(item).attr("disabled",true);
|
||||
$(item).addClass("forbidden");
|
||||
$(item).attr("lay-verify","");
|
||||
});
|
||||
|
||||
$(this).addClass("participation").removeClass("no-participation");
|
||||
sku_list[$(this).parents("tr").attr("data-index")].is_delete = 2;
|
||||
});
|
||||
|
||||
$("body").off("click",".participation").on("click",".participation",function(){
|
||||
$(this).text("不参与");
|
||||
$(this).parents("tr").find("input").each(function (index,item) {
|
||||
$(item).attr("readonly",false);
|
||||
$(item).attr("disabled",false);
|
||||
$(item).removeClass("forbidden");
|
||||
if($(item).hasClass(".pintuan-price")){
|
||||
$(item).attr("lay-verify","pintuan_price");
|
||||
}else{
|
||||
$(item).attr("lay-verify","promotion_price");
|
||||
}
|
||||
});
|
||||
|
||||
$(this).removeClass("participation").addClass("no-participation");
|
||||
sku_list[$(this).parents("tr").attr("data-index")].is_delete = 1;
|
||||
});
|
||||
|
||||
function backPintuanList() {
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/lists");
|
||||
}
|
||||
function showDemo(){
|
||||
layer.open({
|
||||
title: '查看示例',
|
||||
type: 1,
|
||||
area: ['600px', '660px'],
|
||||
content: '<img style="margin:20px 45px;" src="__STATIC__/img/single_buy.png" >',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price ? d.pintuan_price : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price')" onporpertychange="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price_2">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price_2 ? d.pintuan_price_2 : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price_2')" onporpertychange="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price_2')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="pintuan_price_3">
|
||||
<input type="number" class="layui-input len-short pintuan-price" value="{{d.pintuan_price_3 ? d.pintuan_price_3 : '' }}" lay-verify="pintuan_price" min="0.00" oninput="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price_3')" onporpertychange="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'pintuan_price_3')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="promotion_price">
|
||||
<input type="number" class="layui-input len-short promotion-price" value="{{d.promotion_price ? d.promotion_price : '' }}" lay-verify="promotion_price" min="0.00" oninput="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'promotion_price')" onporpertychange="bargainPintuanPrice({{ d.LAY_TABLE_INDEX }},event, 'promotion_price')"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
{{# if(!d.pintuan_price){ }}
|
||||
<a class="layui-btn participation">参与</a>
|
||||
{{# }else{ }}
|
||||
<a class="layui-btn no-participation">不参与</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
242
addon/pintuan/shop/view/pintuan/group.html
Executable file
242
addon/pintuan/shop/view/pintuan/group.html
Executable file
@@ -0,0 +1,242 @@
|
||||
<style>
|
||||
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
|
||||
.layui-layout-admin .screen{margin-bottom: 15px;}
|
||||
</style>
|
||||
|
||||
{if condition="$pintuan_id"}
|
||||
<input type="hidden" class="pintuan-id" value="{$pintuan_id}" />
|
||||
{else/}
|
||||
<input type="hidden" class="pintuan-id" value="" />
|
||||
{/if}
|
||||
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-form layui-colla-content layui-form layui-show" lay-filter="order_list">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="goods_name">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">团长昵称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="nickname">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">拼团状态:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" lay-filter="status">
|
||||
<option value="">全部</option>
|
||||
<option value="3">拼团成功</option>
|
||||
<option value="2">组团中</option>
|
||||
<option value="1">拼团失败</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<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>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
<table id="team_list" lay-filter="team_list"></table>
|
||||
|
||||
<!-- 商品 -->
|
||||
<script type="text/html" id="goods">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
{{# if(d.goods_image){ }}
|
||||
<img layer-src src="{{ns.img(d.goods_image.split(',')[0],'small')}}"/>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.goods_name}}">{{d.goods_name}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 会员 -->
|
||||
<script type="text/html" id="member_info">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
{{# if(d.headimg){ }}
|
||||
<img layer-src src="{{ns.img(d.headimg)}}"/>
|
||||
{{# } }}
|
||||
</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 type="text/html" id="status">
|
||||
{{# if(d.status == 1){ }}
|
||||
拼团失败
|
||||
{{# }else if(d.status == 2){ }}
|
||||
组团中
|
||||
{{# }else if(d.status == 3){ }}
|
||||
拼团成功
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="check">详情</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'element', 'laydate'], function() {
|
||||
var table,
|
||||
form = layui.form,
|
||||
laydate = layui.laydate;
|
||||
|
||||
form.render();
|
||||
|
||||
//渲染时间
|
||||
laydate.render({
|
||||
elem: '#start_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#team_list',
|
||||
url: ns.url("pintuan://shop/pintuan/group"),
|
||||
where: {
|
||||
"pintuan_id": $(".pintuan-id").val()
|
||||
},
|
||||
cols: [
|
||||
[ {
|
||||
title: '团长信息',
|
||||
unresize: 'false',
|
||||
width: '17%',
|
||||
templet: '#member_info'
|
||||
},{
|
||||
title: '拼团商品',
|
||||
unresize: 'false',
|
||||
width: '22%',
|
||||
templet: '#goods'
|
||||
}, {
|
||||
title: '开团时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet:function(data){
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
}, {
|
||||
title: '成团人数/当前人数',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: function(data) {
|
||||
return data.pintuan_num + ' / ' + data.pintuan_count;
|
||||
}
|
||||
}, {
|
||||
title: '结束时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: function(data) {
|
||||
return ns.time_to_date(data.end_time);
|
||||
}
|
||||
}, {
|
||||
title: '拼团状态',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: '#status'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'check': //查看
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/grouporder?group_id="+ data.group_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
//监听筛选事件
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
function datePick(date_num,event_obj){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
$(event_obj).addClass('selected');
|
||||
|
||||
Date.prototype.Format = function (fmt,date_num) { //author: meizz
|
||||
this.setDate(this.getDate()-date_num);
|
||||
var o = {
|
||||
"M+": this.getMonth() + 1, //月份
|
||||
"d+": this.getDate(), //日
|
||||
"H+": this.getHours(), //小时
|
||||
"m+": this.getMinutes(), //分
|
||||
"s+": this.getSeconds(), //秒
|
||||
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
|
||||
"S": this.getMilliseconds() //毫秒
|
||||
};
|
||||
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
for (var k in o)
|
||||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||||
return fmt;
|
||||
};
|
||||
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
|
||||
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
|
||||
$("input[name=start_time]").val(before_time,0);
|
||||
$("input[name=end_time]").val(now_time,date_num-1);
|
||||
}
|
||||
</script>
|
||||
193
addon/pintuan/shop/view/pintuan/group_order.html
Executable file
193
addon/pintuan/shop/view/pintuan/group_order.html
Executable file
@@ -0,0 +1,193 @@
|
||||
<style>
|
||||
.layui-table[lay-skin=line] {margin-top: 15px; border-width: 0;}
|
||||
.title-pic {
|
||||
flex-shrink: 0;
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-form tips-wrap">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">团长信息:</label>
|
||||
<div class="table-title layui-input-inline">
|
||||
<div class="title-pic">
|
||||
<img layer-src src="{:img($info['headimg'])}"/>
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color" title="{$info['nickname']}">{$info['nickname']}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品信息:</label>
|
||||
<div class="table-title layui-input-inline">
|
||||
<div class="title-pic">
|
||||
<img layer-src src="{:img($info['sku_image'])}"/>
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color" title="{$info['sku_name']}">{$info['sku_name']}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">拼团价格:</label>
|
||||
<div class="layui-input-inline">¥{$info.pintuan_price}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">开团时间:</label>
|
||||
<div class="layui-input-inline">{:time_to_date($info.create_time)}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">成团人数/当前人数:</label>
|
||||
<div class="layui-input-inline">{$info.pintuan_num} / {$info.pintuan_count}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否虚拟成团:</label>
|
||||
<div class="layui-input-inline">{if $info.is_virtual_buy == 1} 是 {else/} 否 {/if}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">结束时间:</label>
|
||||
<div class="layui-input-inline">{:time_to_date($info.end_time)}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">拼团状态:</label>
|
||||
<div class="layui-input-inline">
|
||||
{if $info.status == 1}
|
||||
拼团失败
|
||||
{elseif $info.status == 2}
|
||||
组团中
|
||||
{else/}
|
||||
拼团成功
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 列表 -->
|
||||
<table id="order_list" lay-filter="order_list"></table>
|
||||
|
||||
<!-- 参与人 -->
|
||||
<script type="text/html" id="member_info">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
{{# if(d.member_img){ }}
|
||||
<img layer-src src="{{ns.img(d.member_img)}}"/>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color" title="{{d.nickname}}">{{d.nickname}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<!-- 商品 -->
|
||||
<script type="text/html" id="goods">
|
||||
<div class="table-title">
|
||||
<div class="title-pic">
|
||||
{{# if(d.sku_image){ }}
|
||||
<img layer-src src="{{ns.img(d.sku_image.split(',')[0],'small')}}"/>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color">{{d.sku_name}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 信息标签 -->
|
||||
<script type="text/html" id="information">
|
||||
<p class="layui-elip">支付方式:{{d.pay_type_name}}</p>
|
||||
<p class="layui-elip">来源:{{d.order_from_name}}</p>
|
||||
</script>
|
||||
|
||||
<!-- 余额标签 -->
|
||||
<script type="text/html" id="money">
|
||||
<p class="layui-elip">¥{{d.order_money}}</p>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<a class="layui-btn" lay-event="check">详情</a>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var group_id = "{$group_id}";
|
||||
layui.use(['form'], function() {
|
||||
var table, form = layui.form;
|
||||
form.render();
|
||||
|
||||
table = new Table({
|
||||
elem: '#order_list',
|
||||
url: ns.url("pintuan://shop/pintuan/groupOrder"),
|
||||
where: {
|
||||
"group_id": group_id
|
||||
},
|
||||
cols: [
|
||||
[{
|
||||
title: '参与人',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet:'#member_info'
|
||||
},{
|
||||
field: 'order_no',
|
||||
title: '订单号',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
}, {
|
||||
title: '商品信息',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet:'#goods'
|
||||
}, {
|
||||
title: '下单时间',
|
||||
unresize: 'false',
|
||||
width: '17%',
|
||||
templet: function(data) {
|
||||
return ns.time_to_date(data.pay_time);
|
||||
}
|
||||
}, {
|
||||
title: '下单金额',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: '#money'
|
||||
}, {
|
||||
field: 'order_status_name',
|
||||
title: '订单状态',
|
||||
unresize: 'false',
|
||||
width: '8%'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
align: 'right',
|
||||
unresize: 'false',
|
||||
}]
|
||||
],
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
|
||||
switch (obj.event) {
|
||||
case 'check': //查看
|
||||
var newWin = window.open('about:blank');
|
||||
newWin.location.href = ns.href("shop/order/detail", {"order_id": data.order_id});
|
||||
break;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
504
addon/pintuan/shop/view/pintuan/lists.html
Executable file
504
addon/pintuan/shop/view/pintuan/lists.html
Executable file
@@ -0,0 +1,504 @@
|
||||
<style>
|
||||
.screen{margin-bottom: 15px;}
|
||||
.contraction span {cursor: pointer;display: inline-block;width: 17px;height: 17px;text-align: center;line-height: 14px;user-select: none;}
|
||||
.sku-list {overflow: hidden;padding: 0 45px;}
|
||||
.sku-list li .img-wrap {vertical-align: middle;margin-right: 8px;width: 20%;height: 80px;text-align: center;line-height: 70px;}
|
||||
.sku-list li .img-wrap img {max-width: 100%;max-height: 100%;}
|
||||
.sku-list li .info-wrap span.sku-name {-webkit-line-clamp: 2;margin-bottom: 5px;}
|
||||
.sku-list li .info-wrap span {display: -webkit-box;margin-bottom: 5px;overflow: hidden;text-overflow: ellipsis;white-space: normal;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 1;}
|
||||
.sku-list li {float: left;display: flex;padding: 10px;margin-right: 10px;margin-bottom: 10px;border: 1px solid #EFEFEF;width: 294px;height: 110px;align-items: center;}
|
||||
.body-content {padding-top: 15px!important;}
|
||||
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
|
||||
</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="goods_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="pintuan_tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" lay-id="">全部</li>
|
||||
<li lay-id="6">未开始</li>
|
||||
<li lay-id="1">进行中</li>
|
||||
<li lay-id="2">已结束</li>
|
||||
<li lay-id="3">已关闭</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="pintuan_list" lay-filter="pintuan_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 推广 -->
|
||||
{include file="app/shop/view/component/promote_show.html"}
|
||||
|
||||
<!-- 商品 -->
|
||||
<script type="text/html" id="goods">
|
||||
<div class="table-title">
|
||||
|
||||
<div class="contraction" data-id="{{d.pintuan_id}}" data-open="0">
|
||||
<span>+</span>
|
||||
</div>
|
||||
|
||||
<div class="title-pic">
|
||||
{{# if(d.goods_image){ }}
|
||||
<img layer-src="{{ns.img(d.goods_image.split(',')[0],'big')}}" src="{{ns.img(d.goods_image.split(',')[0],'small')}}"/>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color-sub">{{d.goods_name}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
<!-- 状态 -->
|
||||
<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-pintuan-id="{{d.pintuan_id}}">
|
||||
<div class="popup-qrcode-wrap" style="display: none"><img class="popup-qrcode-loadimg" src="__STATIC__/loading/loading.gif"/></div>
|
||||
<div class="table-btn">
|
||||
{{# if(d.status == 1){ }}
|
||||
<a class="layui-btn text-color" lay-event="select">推广</a>
|
||||
{{# } }}
|
||||
<a class="layui-btn" lay-event="detail">详情</a>
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
{{# if(d.status == 0){ }}
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<a class="layui-btn" lay-event="team">拼团列表</a>
|
||||
<a class="layui-btn" lay-event="invalid">关闭</a>
|
||||
{{# }else if(d.status == 2){ }}
|
||||
<a class="layui-btn" lay-event="team">拼团列表</a>
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
{{# }else if(d.status == 3){ }}
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="invalid">批量关闭</button>
|
||||
</script>
|
||||
|
||||
<!-- 商品sku -->
|
||||
<script type="text/html" id="skuList">
|
||||
<tr class="js-list-{{d.index}}" id="sku_img_{{d.index}}">
|
||||
<td colspan="9">
|
||||
<ul class="sku-list">
|
||||
{{# for(var i=0; i<d.list.length; i++){ }}
|
||||
<li>
|
||||
<div class="img-wrap">
|
||||
<img layer-src src="{{ns.img(d.list[i].sku_image)}}">
|
||||
</div>
|
||||
<div class="info-wrap">
|
||||
<span class="sku-name" title="{{d.list[i].sku_name}}">{{d.list[i].sku_name}}</span>
|
||||
<span class="price">商品价格:¥{{d.list[i].price}}</span>
|
||||
<span class="price">拼团价:¥{{d.list[i].pintuan_price}}</span>
|
||||
</div>
|
||||
</li>
|
||||
{{# } }}
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl;
|
||||
$(function () {
|
||||
$("body").off("click", ".contraction").on("click", ".contraction", function () {
|
||||
|
||||
var pintuan_id = $(this).attr("data-id");
|
||||
var open = $(this).attr("data-open");
|
||||
var tr = $(this).parent().parent().parent().parent();
|
||||
var index = tr.attr("data-index");
|
||||
if (open == 1) {
|
||||
$(this).children("span").text("+");
|
||||
$(".js-list-" + index).remove();
|
||||
} else {
|
||||
$(this).children("span").text("-");
|
||||
$.ajax({
|
||||
url: ns.url("pintuan://shop/pintuan/getSkuList"),
|
||||
data: {pintuan_id: pintuan_id},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
|
||||
var sku_list = $("#skuList").html();
|
||||
var data = {
|
||||
list: res.data,
|
||||
index: index
|
||||
};
|
||||
laytpl(sku_list).render(data, function (html) {
|
||||
tr.after(html);
|
||||
});
|
||||
layer.photos({
|
||||
photos: '.img-wrap',
|
||||
anim: 5
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
$(this).attr("data-open", (open == 0 ? 1 : 0));
|
||||
});
|
||||
layui.use(['form', 'element','laytpl', 'laydate'], function () {
|
||||
laytpl = layui.laytpl;
|
||||
var table,
|
||||
form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
element = layui.element,
|
||||
pingtuanAll = [],
|
||||
repeat_flag = false; //防重复标识
|
||||
form.render();
|
||||
|
||||
//开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
element.on('tab(pintuan_tab)', function () {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
'status': this.getAttribute('lay-id')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#pintuan_list',
|
||||
url: ns.url("pintuan://shop/pintuan/lists"),
|
||||
cols: [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
width: '3%',
|
||||
}, {
|
||||
title: '拼团商品',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: '#goods'
|
||||
}, {
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
width: '8%',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field:'pintuan_price',
|
||||
title: '拼团价格',
|
||||
unresize: 'false',
|
||||
width: '8%',
|
||||
sort:true,
|
||||
templet: function (data) {
|
||||
return '¥' + data.pintuan_price;
|
||||
}
|
||||
}, {
|
||||
field: 'group_num',
|
||||
title: '开团组数',
|
||||
unresize: 'false',
|
||||
sort:true,
|
||||
width: '8%'
|
||||
}, {
|
||||
field: 'success_group_num',
|
||||
title: '成团组数',
|
||||
unresize: 'false',
|
||||
sort:true,
|
||||
width: '8%'
|
||||
}, {
|
||||
field: 'order_num',
|
||||
title: '购买人数',
|
||||
unresize: 'false',
|
||||
sort:true,
|
||||
width: '8%'
|
||||
}, {
|
||||
title: '活动时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: '#time'
|
||||
}, {
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '8%',
|
||||
templet: '#status'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
toolbar: '#toolbarOperation',
|
||||
});
|
||||
|
||||
table.on("sort",function (obj) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
order:obj.field,
|
||||
sort:obj.type
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 监听工具栏操作
|
||||
table.toolbar(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'delete':
|
||||
deletePintuanAll(data)
|
||||
break;
|
||||
case 'invalid':
|
||||
invalidPintuanAll(data)
|
||||
break;
|
||||
}
|
||||
})
|
||||
|
||||
//批量关闭
|
||||
function invalidPintuanAll(data){
|
||||
if(data.length <= 0) return;
|
||||
var pintuanIdAll = [];
|
||||
for (var i in data){
|
||||
pintuanIdAll.push(data[i].pintuan_id);
|
||||
}
|
||||
|
||||
layer.confirm('确定要关闭拼团活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("pintuan://shop/pintuan/invalidAll"),
|
||||
data: {
|
||||
pintuan_id: pintuanIdAll
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
table.reload();
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
//批量删除
|
||||
function deletePintuanAll(data){
|
||||
if(data.length <= 0) return;
|
||||
var pintuanIdAll = [];
|
||||
for (var i in data){
|
||||
pintuanIdAll.push(data[i].pintuan_id);
|
||||
}
|
||||
layer.confirm('确定要删除拼团活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("pintuan://shop/pintuan/deleteAll"),
|
||||
data: {
|
||||
pintuan_id: pintuanIdAll
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function (data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/edit", {"pintuan_id": data.pintuan_id});
|
||||
break;
|
||||
case 'detail': //详情
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/detail", {"pintuan_id": data.pintuan_id});
|
||||
break;
|
||||
case 'team': //开团团队
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/group", {"pintuan_id": data.pintuan_id});
|
||||
break;
|
||||
case 'delete': //删除
|
||||
deletePintuan(data.pintuan_id);
|
||||
break;
|
||||
case 'select': //推广
|
||||
pintuanUrl(data);
|
||||
break;
|
||||
case 'invalid': //使失效
|
||||
invalidPintuan(data.pintuan_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deletePintuan(pintuan_id) {
|
||||
layer.confirm('确定要删除该拼团活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("pintuan://shop/pintuan/delete"),
|
||||
data: {
|
||||
pintuan_id: pintuan_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 invalidPintuan(pintuan_id) {
|
||||
|
||||
layer.confirm('确定要关闭拼团活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("pintuan://shop/pintuan/invalid"),
|
||||
data: {
|
||||
pintuan_id: pintuan_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 pintuanUrl(data){
|
||||
new PromoteShow({
|
||||
url:ns.url("pintuan://shop/pintuan/pintuanUrl"),
|
||||
param:{pintuan_id:data.pintuan_id},
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function add() {
|
||||
location.hash = ns.hash("pintuan://shop/pintuan/add");
|
||||
}
|
||||
</script>
|
||||
BIN
addon/pintuan/shop/view/public/img/zone_preview.png
Executable file
BIN
addon/pintuan/shop/view/public/img/zone_preview.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 152 KiB |
Reference in New Issue
Block a user