admin/addon/coupon/shop/view/coupon/coupon_select.html

215 lines
5.6 KiB
HTML

{extend name="app/shop/view/base.html"/}
{block name="resources"}
<style>
.coupon-list {
padding: 0 20px;
}
</style>
{/block}
{block name="body"}
<div class="coupon-list">
<div class="single-filter-box">
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="coupon_name" placeholder="请输入优惠券名称" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-submit lay-filter="search">
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="coupon_list" lay-filter="coupon_list"></table>
</div>
{/block}
{block name="script"}
<script type="text/html" id="checkbox">
{{# if($.inArray(d.coupon_type_id.toString(), selected_id_arr) != -1){ }}
<input type="checkbox" data-coupon-id="{{d.coupon_type_id}}" name="coupon_checkbox" lay-skin="primary" lay-filter="coupon_checkbox" checked>
{{# }else{ }}
<input type="checkbox" data-coupon-id="{{d.coupon_type_id}}" name="coupon_checkbox" lay-skin="primary" lay-filter="coupon_checkbox">
{{# } }}
<input type="hidden" data-coupon-id="{{d.coupon_type_id}}" name="coupon_json" value='{{ JSON.stringify(d) }}' />
</script>
<script>
var table, form, laytpl,
select_id = "{$select_id}", //选中商品id
selected_id_arr = select_id.length ? select_id.split(',') : [],
select_list = []; //选中商品所有数据
goodsIdArr = selected_id_arr;
$(function () {
layui.use(['form', 'laytpl'], function () {
form = layui.form;
laytpl = layui.laytpl;
table = new Table({
elem: '#coupon_list',
url: ns.url("coupon://shop/coupon/couponSelect"),
where: {
app_module: ns.appModule,
site_id: ns.siteId
},
cols: [
[
{
unresize: 'false',
width: '10%',
templet: '#checkbox'
}, {
field: 'coupon_name',
title: '优惠券名称',
unresize: 'false',
width: '20%'
}, {
field: 'reward',
title: '优惠券类型',
unresize: 'false',
width: '20%',
templet: function(data) {
if(data.type == 'reward'){
return '满减';
}else{
return '折扣';
}
}
}, {
title: '<span style="padding-right: 15px;">优惠金额/折扣</span>',
unresize: 'false',
width: '20%',
align: 'right',
templet: function(data) {
if(data.type == 'reward'){
return '<span style="padding-right: 15px;">¥'+ data.money +'</span>';
}else{
return '<span style="padding-right: 15px;">'+ data.discount +'折</span>';
}
}
}, {
unresize: 'false',
width: '10%'
}, {
field: 'count',
title: '发放数量',
unresize: 'false',
width: '20%'
}
]
],
callback : function () {
// 更新商品复选框状态
for (var i=0;i<goodsIdArr.length;i++) {
var selected_coupons = $("input[name='coupon_checkbox'][data-coupon-id='" + goodsIdArr[i] + "']");
if (selected_coupons.length) {
$("input[name='coupon_checkbox'][data-coupon-id='" + goodsIdArr[i] + "']").prop("checked", true);
}
}
form.render();
initData();
}
});
/**
* 监听搜索
*/
form.on('submit(search)', function (data) {
data.field.app_module = ns.appModule;
data.field.site_id = ns.siteId;
table.reload({
page: {
curr: 1
},
where: data.field
});
});
// 勾选商品
form.on('checkbox(coupon_checkbox)', function(data) {
var coupon_id = $(data.elem).attr("data-coupon-id"), json = {};
form.render();
var couponLen = $("input[name='coupon_checkbox'][data-coupon-id="+ coupon_id +"]:checked").length;
if (couponLen){
json = JSON.parse($("input[name='coupon_json'][data-coupon-id="+ coupon_id +"]").val());
delete json.LAY_INDEX;
delete json.LAY_TABLE_INDEX;
delete json.create_time;
select_list.push(json);
goodsIdArr.push(coupon_id);
} else{
select_list.remove(coupon_id);
goodsIdArr.remove(coupon_id);
}
});
//初始化数据
function initData(){
var couponLen = $("input[name='coupon_checkbox'][data-coupon-id]:checked").length;
for (var i = 0; i < couponLen; i++){
var couponId = $("input[name='coupon_checkbox'][data-coupon-id]:checked").eq(i).attr("data-coupon-id");
var ident = false;
for (var k = 0; k < select_list.length; k++){
if(select_list[k].coupon_type_id == couponId){
ident = true;
break;
}
}
if (ident) return;
json = JSON.parse($("input[name='coupon_json'][data-coupon-id="+ couponId +"]").val());
delete json.LAY_INDEX;
delete json.LAY_TABLE_INDEX;
delete json.create_time;
select_list.push(json);
}
}
});
});
function selectCoupon(callback) {
var res = select_list;
callback(res);
}
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i].coupon_type_id){
if (this[i].coupon_type_id == parseInt(val)) return i;
} else {
if (this[i] == val) return i;
}
}
return -1;
};
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
select_list.__proto__ = Array.prototype;
function removeDuplicates(arr){
if (!Array.isArray(arr)) {
console.log('type error!');
return
}
var array = [];
for (var i = 0; i < arr.length; i++) {
if (array.indexOf(arr[i]) === -1) {
array.push(arr[i])
}
}
return array;
}
</script>
{/block}