初始上传
This commit is contained in:
430
addon/groupbuy/shop/view/groupbuy/add.html
Executable file
430
addon/groupbuy/shop/view/groupbuy/add.html
Executable file
@@ -0,0 +1,430 @@
|
||||
|
||||
<style>
|
||||
.layui-form-item .layui-input-inline.end-time{float: none;}
|
||||
.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;}
|
||||
.form-wrap {position: relative;}
|
||||
.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-inline">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline end-time">
|
||||
<input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item 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="selectGoods()">选择商品</button>
|
||||
<span class="goods_num">已选商品(<span id="goods_num" class="text-color">0</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">活动规则说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="rule" 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="backGroupbuyList()">返回</button>
|
||||
</div>
|
||||
<input type="hidden" name="goods_ids" value="" />
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="group-price">团购价</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="purchase-num">最低购买数量</button>
|
||||
</script>
|
||||
<script>
|
||||
var goodsId = [], selectedGoodsId = '', goods_list = [];
|
||||
layui.use(['form', 'laydate','carousel'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
carousel = layui.carousel,
|
||||
repeat_flag = false,
|
||||
currentDate = new Date(),
|
||||
minDate = "";
|
||||
currentDate.setDate(currentDate.getDate() + 30);
|
||||
carousel.render({
|
||||
elem: '#carousel',
|
||||
width: '100%',
|
||||
arrow: 'always',
|
||||
interval: 3500
|
||||
});
|
||||
form.render();
|
||||
|
||||
renderTable(goods_list); // 初始化表格
|
||||
|
||||
//开始时间
|
||||
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" readonly> ');
|
||||
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 '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
flnum: function(value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '保留小数点后两位!'
|
||||
}
|
||||
if (Number(value) < 0){
|
||||
return '价格不能小于0!';
|
||||
}
|
||||
},
|
||||
buy_num: function(value,item) {
|
||||
var stock = $(item).parents("tr").find(".stock").text();
|
||||
if (Number(value) < 2) {
|
||||
return '最低购买数量不能小于2!'
|
||||
}
|
||||
if (Number(value) > stock) {
|
||||
return '购买数量不能大于库存数!'
|
||||
}
|
||||
},
|
||||
groupbuy_price: function(value, item) {
|
||||
var price = $(item).parents("tr").find(".goods-price").text();
|
||||
if (parseFloat(value) > parseFloat(price)) {
|
||||
return '团购价格不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '团购价格不能为空';
|
||||
}
|
||||
if (parseFloat(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('submit(save)', function(data){
|
||||
if (!goodsId.length) {
|
||||
layer.msg("请选择活动商品!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
data.field.goods_ids = goodsId;
|
||||
var goodsListArr = [];
|
||||
goods_list.forEach(function(item,index) {
|
||||
var goods_detail = {};
|
||||
goods_detail.sku_id = item.sku_id;
|
||||
goods_detail.goods_id = item.goods_id;
|
||||
goods_detail.groupbuy_price = item.groupbuy_price || 0;
|
||||
goods_detail.buy_num = item.buy_num || 0;
|
||||
goodsListArr.push(goods_detail);
|
||||
});
|
||||
data.field.goods_list = goodsListArr;
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("groupbuy://shop/groupbuy/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("groupbuy://shop/groupbuy/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(goods_list) {
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
cols: [
|
||||
[{
|
||||
width: "3%",
|
||||
type: 'checkbox',
|
||||
unresize: 'false'
|
||||
},{
|
||||
title: '商品名称',
|
||||
width: '26%',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
var html = '';
|
||||
html += `
|
||||
<div class="goods-title">
|
||||
<div class="goods-img">
|
||||
<img layer-src src="${data.goods_image ? ns.img(data.goods_image.split(",")[0],'small') : ''}" alt="">
|
||||
</div>
|
||||
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" title="${data.goods_name}">${data.goods_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>';
|
||||
}
|
||||
}, {
|
||||
field: 'goods_stock',
|
||||
title: '库存',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: function(data) {
|
||||
return '<p class="stock">' + data.goods_stock +'</p>';
|
||||
}
|
||||
}, {
|
||||
title: '团购价(元)',
|
||||
unresize: 'false',
|
||||
width: '13%',
|
||||
templet: '#groupbuy_price'
|
||||
}, {
|
||||
title: '最低购买数量',
|
||||
unresize: 'false',
|
||||
width: '13%',
|
||||
templet: '#buy_num'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
data: goods_list,
|
||||
toolbar: '#toolbarOperation'
|
||||
});
|
||||
|
||||
/**
|
||||
* 批量操作
|
||||
*/
|
||||
table.toolbar(function(obj) {
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
switch (obj.event) {
|
||||
case "group-price":
|
||||
editInput(0,obj);
|
||||
break;
|
||||
case "purchase-num":
|
||||
editInput(1,obj);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editInput(textIndex=0,data) {
|
||||
var text = [{
|
||||
name: '团购价',
|
||||
value: 'groupbuy_price'
|
||||
},{
|
||||
name: '最低购买数量',
|
||||
value: 'buy_num'
|
||||
}];
|
||||
|
||||
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) {
|
||||
goods_list.forEach(function (skuItem,skuIndex) {
|
||||
if (item.goods_id == skuItem.goods_id){
|
||||
goods_list[skuIndex][text[textIndex].value] = val;
|
||||
}
|
||||
})
|
||||
});
|
||||
renderTable(goods_list);
|
||||
layer.closeAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加商品
|
||||
*/
|
||||
function selectGoods(){
|
||||
goodsSelect(function (data) {
|
||||
|
||||
goodsId = [];
|
||||
goods_list = [];
|
||||
selectedGoodsId = selectedGoodsId.split(',');
|
||||
|
||||
for (var key in data) {
|
||||
//赋值
|
||||
let exist = selectedGoodsId.indexOf(data[key].goods_id.toString()) > -1;
|
||||
//购买数量
|
||||
if(exist){
|
||||
data[key].buy_num = $("#buy_num_"+data[key].goods_id).val();
|
||||
}else{
|
||||
data[key].buy_num = 2;
|
||||
}
|
||||
//团购价
|
||||
if(exist){
|
||||
data[key].groupbuy_price = $("#groupbuy_price_"+data[key].goods_id).val();
|
||||
}else{
|
||||
data[key].groupbuy_price = '';
|
||||
}
|
||||
|
||||
goodsId.push(data[key].goods_id);
|
||||
goods_list.push(data[key]);
|
||||
}
|
||||
|
||||
renderTable(goods_list);
|
||||
$("input[name='goods_ids']").val(JSON.stringify(goodsId));
|
||||
|
||||
$("#goods_num").html(goodsId.length);
|
||||
|
||||
selectedGoodsId = goodsId.toString();
|
||||
}, selectedGoodsId);
|
||||
}
|
||||
|
||||
function delRow(obj,id) {
|
||||
for (var i = 0; i < goods_list.length; i++){
|
||||
if (goods_list[i].goods_id == parseInt(id)){
|
||||
goods_list.splice(i,1);
|
||||
}
|
||||
}
|
||||
|
||||
if(goodsId.indexOf(id) != -1) goodsId.splice(goodsId.indexOf(id),1);
|
||||
$("#goods_num").html(goodsId.length);
|
||||
selectedGoodsId = goodsId.toString();
|
||||
$(obj).parents("tr").remove();
|
||||
}
|
||||
|
||||
function groupbuyPrice(index,event) {
|
||||
for (var i = 0; i < goods_list.length; i++){
|
||||
if (goods_list[i].goods_id == index)
|
||||
goods_list[i].groupbuy_price = event.srcElement.value;
|
||||
}
|
||||
}
|
||||
function groupbuyBuyNum(index,event) {
|
||||
for (var i = 0; i < goods_list.length; i++){
|
||||
if (goods_list[i].goods_id == index)
|
||||
goods_list[i].buy_num = event.srcElement.value;
|
||||
}
|
||||
}
|
||||
|
||||
function backGroupbuyList() {
|
||||
location.hash = ns.hash("groupbuy://shop/groupbuy/lists");
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="groupbuy_price">
|
||||
<input type="number" class="layui-input len-input groupbuy-price" id="groupbuy_price_{{d.goods_id}}" value="{{d.groupbuy_price}}" lay-verify="groupbuy_price" min="0.00" oninput="groupbuyPrice({{ d.goods_id }},event)" onporpertychange="groupbuyPrice({{ d.goods_id }},event)"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="buy_num">
|
||||
<input type="number" class="layui-input len-input buy-num" id="buy_num_{{d.goods_id}}" value="{{d.buy_num}}" lay-verify="buy_num" min="0.00" oninput="groupbuyBuyNum({{ d.goods_id }},event)" onporpertychange="groupbuyBuyNum({{ d.goods_id }},event)"/>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delRow(this,{{d.goods_id}})">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
261
addon/groupbuy/shop/view/groupbuy/edit.html
Executable file
261
addon/groupbuy/shop/view/groupbuy/edit.html
Executable file
@@ -0,0 +1,261 @@
|
||||
<style>
|
||||
.good-name, .good-price {
|
||||
line-height: 34px;
|
||||
}
|
||||
.layui-form-item .layui-input-inline.end-time{
|
||||
float: none;
|
||||
}
|
||||
.form-wrap {position: relative; height: 650px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品图:</label>
|
||||
<div class="layui-input-inline img-upload">
|
||||
<div class="upload-img-block icon square">
|
||||
<div class="upload-img-box">
|
||||
{if condition="$groupbuy_info.goods_image"}
|
||||
<img layer-src src="{:img(explode(',', $groupbuy_info.goods_image)[0])}" alt="">
|
||||
{else/}
|
||||
<img src="" alt="">
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline good-name">{$groupbuy_info.goods_name}</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品原价:</label>
|
||||
<div class="layui-input-inline good-price">
|
||||
¥<span>{$groupbuy_info.price}</span>
|
||||
</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="groupbuy_price" lay-verify="required|group_price" autocomplete="off" class="layui-input len-short" value="{$groupbuy_info.groupbuy_price}" min="0.00">
|
||||
</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"><span class="required">*</span>最低购买数量:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="buy_num" lay-verify="required|buy_num" autocomplete="off" class="layui-input len-short primary_price" value="{$groupbuy_info.buy_num}">
|
||||
</div>
|
||||
<div class="word-aux">
|
||||
<p>最低购买数量不能小于2</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">
|
||||
<input type="text" id="start_time" name="start_time" value="{:date('Y-m-d H:i:s', $groupbuy_info.start_time)}" lay-verify="required" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline end-time">
|
||||
<input type="text" id="end_time" name="end_time" value="{:date('Y-m-d H:i:s', $groupbuy_info.end_time)}" lay-verify="required|time" class="layui-input len-mid" autocomplete="off" readonly>
|
||||
<input type="hidden" id="old_end_time" value="{$groupbuy_info.end_time}">
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">活动规则说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="rule" class="layui-textarea len-long" maxlength="300">{$groupbuy_info.rule ?? ''}</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="backGroupbuyList()">返回</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="goods_id" value="{$groupbuy_info.goods_id}" />
|
||||
<input type="hidden" name="groupbuy_id" value="{$groupbuy_info.groupbuy_id}" />
|
||||
<input type="hidden" class="start-time-hide" value="{$groupbuy_info.start_time}" />
|
||||
<input type="hidden" class="end-time-hide" value="{$groupbuy_info.end_time}" />
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var goods_id = $("input[name=goods_id]").val();
|
||||
layui.use(['form', 'laydate'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false,
|
||||
minDate = "";
|
||||
form.render();
|
||||
|
||||
var goodsImgstr = "{$groupbuy_info.goods_image}";
|
||||
|
||||
if(goodsImgstr){
|
||||
var goodsImgArr = goodsImgstr.split(",");
|
||||
$("#goodImg").html(`<img src="${ns.img(goodsImgArr[0])}" />`);
|
||||
}
|
||||
|
||||
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: ns.time_to_date($(".start-time-hide").val()),
|
||||
done: function(value) {
|
||||
minDate = value;
|
||||
reRender();
|
||||
}
|
||||
});
|
||||
}
|
||||
if(now_time <= old_end_time){
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: ns.time_to_date($(".end-time-hide").val())
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新渲染结束时间
|
||||
* */
|
||||
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" readonly> ');
|
||||
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 '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
flnum: function(value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '保留小数点后两位!'
|
||||
}
|
||||
if (Number(value) < 0){
|
||||
return '价格不能小于0!';
|
||||
}
|
||||
},
|
||||
buy_num: function(value,item) {
|
||||
var stock = {$groupbuy_info.goods_stock};
|
||||
if (Number(value) < 2) {
|
||||
return '最低购买数量不能小于2'
|
||||
}
|
||||
if (Number(value) > Number(stock)) {
|
||||
return '最低购买数量不能大于库存数!'
|
||||
}
|
||||
},
|
||||
group_price: function(value, item) {
|
||||
var price = {$groupbuy_info.price};
|
||||
if (parseFloat(value) > parseFloat(price)) {
|
||||
return '团购价格不能大于商品价格';
|
||||
}
|
||||
if (value.trim() == "") {
|
||||
return '团购价格不能为空';
|
||||
}
|
||||
if (parseFloat(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('submit(save)', function(data){
|
||||
if (goods_id.length == 0) {
|
||||
layer.msg('请选择参与活动的商品!', {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
|
||||
var groupbuy_price = $(".groupbuy_price").val();
|
||||
var primary_price = $(".good-price span").text();
|
||||
if (primary_price < groupbuy_price) {
|
||||
layer.msg('团购价不能大于原价!', {icon: 5, anim: 6});
|
||||
}
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("groupbuy://shop/groupbuy/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("groupbuy://shop/groupbuy/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
function backGroupbuyList() {
|
||||
location.hash = ns.hash("groupbuy://shop/groupbuy/lists");
|
||||
}
|
||||
</script>
|
||||
417
addon/groupbuy/shop/view/groupbuy/lists.html
Executable file
417
addon/groupbuy/shop/view/groupbuy/lists.html
Executable file
@@ -0,0 +1,417 @@
|
||||
<style>
|
||||
.single-filter-box button {margin-bottom: 20px;}
|
||||
.layui-layout-admin .body-content{padding-top: 15px !important;}
|
||||
.layui-layout-admin .single-filter-box button{margin-bottom: 0;}
|
||||
.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="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="groupbuy_tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" data-status="">全部</li>
|
||||
<li data-status="1">未开始</li>
|
||||
<li data-status="2">进行中</li>
|
||||
<li data-status="3">已结束</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="groupbuy_list" lay-filter="groupbuy_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 商品 -->
|
||||
<script type="text/html" id="goods">
|
||||
<div class="table-title">
|
||||
<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" title="{{d.goods_name}}">{{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 == 1){ }}
|
||||
未开始
|
||||
{{# }else if(d.status == 2){ }}
|
||||
进行中
|
||||
{{# }else if(d.status == 3){ }}
|
||||
已结束
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 推广 -->
|
||||
{include file="app/shop/view/component/promote_show.html"}
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="toolbarAction">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="close">批量关闭</button>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="operation-wrap" data-groupbuy-id="{{d.groupbuy_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 == 2){ }}
|
||||
<a class="layui-btn text-color" lay-event="select">推广</a>
|
||||
{{# } }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
{{# if(d.status == 1){ }}
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# }else if(d.status == 2){ }}
|
||||
<a class="layui-btn" lay-event="close">结束</a>
|
||||
{{# }else if(d.status == 3){ }}
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl;
|
||||
layui.use(['form', 'element', 'laydate','laytpl'], function() {
|
||||
var table,
|
||||
form = layui.form,
|
||||
element = layui.element,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false; //防重复标识
|
||||
laytpl = layui.laytpl,
|
||||
form.render();
|
||||
|
||||
//开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
element.on('tab(groupbuy_tab)', function() {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
'status': this.getAttribute('data-status')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#groupbuy_list',
|
||||
url: ns.url("groupbuy://shop/groupbuy/lists"),
|
||||
cols: [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
width: '3%',
|
||||
},{
|
||||
title: '商品信息',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: '#goods'
|
||||
}, {
|
||||
title: '商品原价',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
align: 'right',
|
||||
templet: function(data) {
|
||||
return '¥'+ data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'groupbuy_price',
|
||||
title: '团购价格',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
sort:true,
|
||||
templet: function(data) {
|
||||
return '¥'+ data.groupbuy_price;
|
||||
}
|
||||
}, {
|
||||
field: 'buy_num',
|
||||
title: '起购量',
|
||||
unresize: 'false',
|
||||
width: '8%'
|
||||
}, {
|
||||
field: 'sell_num',
|
||||
title: '销量',
|
||||
unresize: 'false',
|
||||
sort:true,
|
||||
width: '8%'
|
||||
}, {
|
||||
title: '活动时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: '#time'
|
||||
}, {
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '10%',
|
||||
templet: '#status'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align : 'right'
|
||||
}]
|
||||
],
|
||||
toolbar: '#toolbarAction'
|
||||
});
|
||||
|
||||
table.on("sort",function (obj) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
order:obj.field,
|
||||
sort:obj.type
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
//监听Tab切换
|
||||
element.on('tab(status)', function(data) {
|
||||
var status = $(this).attr("data-status");
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
'status': status
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 监听工具栏操作
|
||||
table.toolbar(function (obj) {
|
||||
var data = obj.data;
|
||||
if(data.length <= 0) return;
|
||||
var groupbuyIdAll = [];
|
||||
for (var i in data){
|
||||
groupbuyIdAll.push(data[i].groupbuy_id);
|
||||
}
|
||||
|
||||
switch (obj.event) {
|
||||
case 'delete':
|
||||
deleteGroupbuyAll(groupbuyIdAll)
|
||||
break;
|
||||
case 'close':
|
||||
closeGroupbuyAll(groupbuyIdAll)
|
||||
break;
|
||||
}
|
||||
})
|
||||
|
||||
function deleteGroupbuyAll(data){
|
||||
layer.confirm('确定要删除团购活动吗?', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("groupbuy://shop/groupbuy/deleteAll"),
|
||||
data: {
|
||||
groupbuy_id: data
|
||||
},
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
function closeGroupbuyAll(data){
|
||||
layer.confirm('确定要结束团购活动吗?', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("groupbuy://shop/groupbuy/finishAll"),
|
||||
data: {
|
||||
groupbuy_id: data
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
table.reload();
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("groupbuy://shop/groupbuy/edit", {"groupbuy_id": data.groupbuy_id});
|
||||
break;
|
||||
case 'del': //删除
|
||||
deleteGroupbuy(data.groupbuy_id);
|
||||
break;
|
||||
case 'select': //推广
|
||||
groupbuyUrl(data);
|
||||
break;
|
||||
case 'close': // 结束
|
||||
closeGroupbuy(data.groupbuy_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deleteGroupbuy(groupbuy_id) {
|
||||
layer.confirm('确定要删除该团购活动吗?', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("groupbuy://shop/groupbuy/delete"),
|
||||
data: {
|
||||
groupbuy_id: groupbuy_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 closeGroupbuy(groupbuy_id) {
|
||||
|
||||
layer.confirm('确定要结束该团购活动吗?', function(index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("groupbuy://shop/groupbuy/finish"),
|
||||
data: {
|
||||
groupbuy_id: groupbuy_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 groupbuyUrl(data){
|
||||
new PromoteShow({
|
||||
url:ns.url("groupbuy://shop/groupbuy/groupbuyUrl"),
|
||||
param:{groupbuy_id:data.groupbuy_id},
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
location.hash = ns.hash("groupbuy://shop/groupbuy/add");
|
||||
}
|
||||
</script>
|
||||
BIN
addon/groupbuy/shop/view/public/img/zone_preview.png
Executable file
BIN
addon/groupbuy/shop/view/public/img/zone_preview.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 150 KiB |
Reference in New Issue
Block a user