baji/app/admin/view/GoodsExtend/goodsextendlist.html
2025-03-03 14:47:45 +08:00

646 lines
28 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{include file="Public:header2"/}
<style>
.layui-table-view .layui-table[lay-size=lg] .layui-table-cell {
height: 60px;
line-height: 40px;
}
th>div {
height: 40px !important;
}
</style>
<body>
<div class="layui-fluid">
<div class="layui-card">
<form method="get" class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item" id="select">
<div class="layui-inline">
<div class="layui-input-block" style="margin-left: 0px">
<input type="text" name="title" value="{$Request.get.title}" placeholder="请输入奖品标题"
autocomplete="off" class="layui-input">
</div>
</div>
<input type="hidden" name="goods_id" value="{$goods_id}">
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin mmm" lay-submit
lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
<button class="layui-btn" onclick="return goodslist_editAlll()">批量设置</button>
</div>
<div class="layui-inline">
<div>当前第{$num}箱,共{$goods_model['stock']}箱,当前已抽{$reward_num_count}。</div>
</div>
<div class="layui-inline">
<div id="top-page"></div>
</div>
</div>
</form>
<div class="layui-card-body">
<table class="layui-table" lay-filter="goods_extend" id="goods_extend" style="text-align:center">
</table>
</div>
</div>
</div>
{include file="Public:footer"/}
<script type="text/html" id="formModel">
<form id="EditForm" lay-filter="EditForm" class="layui-form" style="padding-right: 20px;padding-left: 20px;">
<div class="layui-row" style="margin-top: 15px;">
<div class="layui-col-xs3">
<select name="rawrd_type" lay-filter="rawrd_type" id="rawrd_type" style="width:99%;">
<!-- <option value="1">保底抽数</option> -->
<option value="2">指定抽数</option>
<!-- <option value="3">范围抽数</option> -->
</select>
</div>
<div class="layui-col-xs9">
<div style="width: 98%;padding-left: 1%;">
<div id="rawrd_type_div">
<input type="number" lay-filter="reward_num" name="reward_num" placeholder="" autocomplete="off" class="layui-input" min="0" step="1" value="" lay-affix="number">
</div>
<div id="rawrd_type_div3" style="display: none;">
<div class="layui-input-inline" style="width:45%;">
<input type="number" lay-filter="reward_num1" name="reward_num1" placeholder="" autocomplete="off" class="layui-input" min="0" step="1" lay-affix="number">
</div>
-
<div class="layui-input-inline" style="width:45%;">
<input type="number" lay-filter="reward_num2" name="reward_num2" placeholder="" autocomplete="off" class="layui-input" min="0" step="1" lay-affix="number">
</div>
</div>
</div>
</div>
</div>
</form>
</script>
<script type="text/javascript">
var tableData = {$list|json_encode|raw};
var goodId = {$goods_id};
function convertUnicodeToString(unicodeString) {
return unicodeString.replace(/\\u[\dA-F]{4}/gi, function (match) {
return String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16));
});
}
function isNumber(value) {
const regex = /^-?\d+(\.\d+)?$/;
return regex.test(value);
}
function updateQueryParam(url, param, value) {
let urlObj = new URL(url);
urlObj.searchParams.set(param, value);
return urlObj.toString();
}
var table = null;
var form = null;
layui.use(['layer', 'table', 'layer', 'form', 'laypage'], function () {
var $ = layui.$;
table = layui.table;
form = layui.form;
var laypage = layui.laypage;
laypage.render({
elem: 'top-page',
layout: ['prev','page','next'],
groups: 5,
limit:1,
//
curr:{$num},
count: {$goods_model['stock']}, // 数据总数
prev: '上一箱',
next: '下一箱',
// first: '第一箱',
// last: '最后一项',
jump: function(obj, first){
//obj包含了当前分页的所有参数比如
// console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
//首次不执行
if(!first){
//do something
// console.log(obj.curr);
var load = layer.load(2);
window.location.href=updateQueryParam(window.location.href, "num", obj.curr);//window.location.href.replace("");
}
}
// curr:2
});
const columns = [
{ field: 'id', title: 'ID', type: "checkbox" },
{ title: '序号', type: "numbers", width: 80 },
{ field: 'goods_id', title: '盒子Id', hide: true },
{ field: 'prize_code', title: '奖品编号', hide: true },
// { field: 'id', title: '奖品Id', width: 80 },
{ field: 'title', title: '奖品名称', minwidth: 200, sort: true, templet: (d) => convertUnicodeToString(d.title) },
{ field: 'imgurl', title: '奖品图片', width: 120, templet: (d) => { return `<img src="${d.imgurl}" style="width:60px;height:60px;">` } },
{ field: 'money', title: '奖品兑换价', width: 110, sort: true },
{ field: 'stock', title: '奖品数量', width: 110, sort: true },
{ field: 'surplus_stock', title: '剩余数量', width: 110, sort: true },
{ field: 'price', title: '价格', hide: true },
{ field: 'sort', title: '排序', width: 80, sort: true },
{ field: 'shang_id', title: 'Shang ID', hide: true },
{ field: 'type', title: 'Type', hide: true },
{
field: 'shang', title: '奖赏类型', width: 110, templet: (d) => {
return ` <div ><button class="layui-btn layui-btn-info layui-btn-radius layui-btn-sm">${convertUnicodeToString(d.shang)}</button></div>`
}, sort: true
},
{
field: 'goods_extend_rawrd_type', title: '抽奖类型', width: 130, sort: true, templet: (d) => {
if (d.shang_id >= 10 && d.shang_id <= 33) {
if (d.goods_extend_rawrd_type == 0) {
return '无';
} else if (d.goods_extend_rawrd_type == 1) {
return '保底抽数'
} else if (d.goods_extend_rawrd_type == 2) {
return '指定抽数'
} else if (d.goods_extend_rawrd_type == 3) {
return '抽奖范围'
} else if (d.goods_extend_rawrd_type == 4) {
return '指定用户'
}
return d.goods_extend_reward_num;
}
return '无';
}
},
{
field: 'goods_extend_reward_num', title: '抽奖次数', width: 130, sort: true, templet: (d) => {
if (d.shang_id >= 10 && d.shang_id <= 33) {
if (d.goods_extend_rawrd_type == 0) {
return '无';
}
if (d.goods_extend_rawrd_type == 1) {
return "最少" + d.goods_extend_reward_num + "抽才出现";
}
if (d.goods_extend_rawrd_type == 2) {
return "第" + d.goods_extend_reward_num + "抽必出";
}
if (d.goods_extend_rawrd_type == 3) {
return d.goods_extend_reward_num + "抽~" + d.goods_extend_reward_num_1 + "抽";
}
return d.goods_extend_reward_num;
}
return ``;
}
},
{
field: '', type: "space", title: '操作', width: 150, templet: (d) => {
if (d.shang_id >= 10 && d.shang_id <= 33) {
return ` <a style="text-decoration:none" title="编辑" onclick="goodslist_edit(${d.id},${d.goods_extend_reward_num})" class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">
<i class="layui-icon layui-icon-edit"></i>编辑
</a>
<a style="text-decoration:none" title="重置" onclick="goodslist_del('${d.prize_code}',${d.id})" class="layui-btn layui-btn-radius layui-bg-red layui-btn-xs">
<i class="layui-icon layui-icon-edit"></i>重置
</a>`;
}
return '';
}
},
// { field: 'goods_extend', title: 'Goods Extend' }
];
table.render({
elem: '#goods_extend',
cols: [columns],
data: tableData,
limit: tableData.length,
text: "暂无数据",
size: "lg",
even: true,
height: 'full-180',
done: function (res, curr, count) {
console.log(res, curr, count);
console.log(res.data, tableData);
// 禁用特定行的复选框
for (const index in res.data) {
let item = res.data[index];
// console.log(item);
if (!(item.shang_id >= 10 && item.shang_id <= 33)) {
// console.log();
// document.querySelectorAll('tr[data-index="' + index + '"] td[data-field="id"]')[0].innerHTML = "";
document.querySelectorAll('tr[data-index="' + index + '"] td[data-field="id"] div')[0].style.display = "none";
// var checkbox = document.querySelectorAll('tr[data-index="' + index + '"] input[type="checkbox"]')[0];
// checkbox.disabled = true;
}
}
}
});
table.on('checkbox(goods_extend)', (obj) => {
if (obj.type === 'one' && obj.tr.attr('data-index') == 1) {
obj.checked = false; // 强制取消选中
layui.form.render('checkbox'); // 重新渲染复选框
} else {
}
});
})
var tempvalue = 0;
//编辑奖品
function goodslist_edit(id, content) {
if (content == 0) {
content = "";
}
let tempdatax = tableData.find(it => it.id == id);
if (tempdatax == null) {
layer.msg('数据错误');
// return ;
}
let maxStock = 0;
tableData.map(it => maxStock += it.stock);
console.log(content);
layer.open({
type: 1,
area: ['50%', '40%'],
title: "设置抽奖",
content: $('#formModel').html(),
btn: ['确定', '关闭'],
success: function (layero, index, that) {
// 弹层的最外层元素的 jQuery 对象
console.log(layero);
form.on('select(rawrd_type)', function (data) {
console.log('a');
var elem = data.elem; // 获得 select 原始 DOM 对象
var value = data.value; // 获得被选中的值
var othis = data.othis; // 获得 select 元素被替换后的 jQuery 对象
if (tempvalue == value) {
return;
}
if (tempvalue > 0 && tempvalue != 3 && value < 3) {
return;
}
tempvalue = value;
if (value == 3) {
form.val("EditForm", {
reward_num: 0,
reward_num1: 0,
reward_num2: 0
});
$(layero).find("#rawrd_type_div").hide();
$(layero).find("#rawrd_type_div3").show();
} else {
form.val("EditForm", {
reward_num: 0,
reward_num1: 0,
reward_num2: 0
});
$(layero).find("#rawrd_type_div3").hide();
$(layero).find("#rawrd_type_div").show();
}
// layer.msg(this.innerHTML + ' 的 value: '+ value); // this 为当前选中 <option> 元素对象
});
// 弹层的索引值
console.log(index);
// 弹层内部原型链中的 this --- 2.8+
console.log(that);
var shuju = {
rawrd_type: 2,
reward_num: 0,
reward_num1: 0,
reward_num2: 0
};
if (tempdatax != null) {
if (tempdatax.goods_extend_rawrd_type != 0) {
shuju.rawrd_type = tempdatax.goods_extend_rawrd_type;
}
shuju.reward_num = tempdatax.goods_extend_reward_num;
shuju.reward_num1 = tempdatax.goods_extend_reward_num;
shuju.reward_num2 = tempdatax.goods_extend_reward_num_1;
}
form.val("EditForm", shuju);
tempvalue = 0;
if (tempdatax.goods_extend_rawrd_type == 3) {
$(layero).find("#rawrd_type_div").hide();
$(layero).find("#rawrd_type_div3").show();
} else {
$(layero).find("#rawrd_type_div3").hide();
$(layero).find("#rawrd_type_div").show();
}
form.render();
},
btn1: function (index, layero, that) {
var tdata = form.val("EditForm");
console.log(tdata);
console.log(layero);
var postData = {
reward_num: 0,
reward_num_1: 0,
rawrd_type: 0,
};
//#region 验证
if (tdata.rawrd_type == 3) {
if (tdata.reward_num1 < 0 || tdata.reward_num2 < 0) {
layer.msg('抽奖次数不能小于0');
return;
}
if (tdata.reward_num1 > tdata.reward_num2) {
layer.msg('抽奖范围设置错误');
return;
}
postData.reward_num = parseInt(tdata.reward_num1);
postData.reward_num_1 = parseInt(tdata.reward_num2);
} else {
if (tdata.reward_num < 0) {
layer.msg('抽奖次数不能小于0');
return;
}
if (tdata.reward_num >= maxStock) {
layer.msg('抽奖次数不能大于等于总奖品数量');
return elem.focus();
}
postData.reward_num = parseInt(tdata.reward_num);
postData.reward_num_1 = 0;
}
//#endregion
// reward_num_1
postData.rawrd_type = parseInt(tdata.rawrd_type);
console.log(postData);
save([id], postData, () => {
let tempdata = tableData.find(it => it.id == id);
if (tempdata != null) {
tempdata.goods_extend_rawrd_type = postData.rawrd_type;
tempdata.goods_extend_reward_num = postData.reward_num;
tempdata.goods_extend_reward_num_1 = postData.reward_num_1;
}
table.reload('goods_extend', {
data: tableData
});
layer.close(index);
});
// layer.close(index);
},
btn2: function (index, layero, that) {
layer.close(index);
},
})
return;
}
//编辑奖品
function goodslist_editAlll() {
// debugger
var checkStatus = table.checkStatus('goods_extend');
if (checkStatus.data.length == 0) {
layer.msg('请选择要修改的数据');
return false;
}
let maxStock = 0;
tableData.map(it => maxStock += it.stock);
let tempDate = checkStatus.data.filter(it => it.shang_id >= 10 && it.shang_id <= 33);
console.log(tempDate);
if (tempDate.length == 0) {
layer.msg('请选择要修改的数据');
return false;
}
console.log(tempDate);
let ids = tempDate.map(it => it.id);
console.log(ids);
layer.open({
type: 1,
area: ['50%', '40%'],
title: "设置抽奖",
content: $('#formModel').html(),
btn: ['确定', '关闭'],
success: function (layero, index, that) {
// 弹层的最外层元素的 jQuery 对象
console.log(layero);
form.on('select(rawrd_type)', function (data) {
var elem = data.elem; // 获得 select 原始 DOM 对象
var value = data.value; // 获得被选中的值
var othis = data.othis; // 获得 select 元素被替换后的 jQuery 对象
if (tempvalue == value) {
return;
}
if (tempvalue != 3 && value < 3) {
return;
}
tempvalue = value;
if (value == 3) {
form.val("EditForm", {
reward_num: 0,
reward_num1: 0,
reward_num2: 0
});
$(layero).find("#rawrd_type_div").hide();
$(layero).find("#rawrd_type_div3").show();
} else {
form.val("EditForm", {
reward_num: 0,
reward_num1: 0,
reward_num2: 0
});
$(layero).find("#rawrd_type_div3").hide();
$(layero).find("#rawrd_type_div").show();
}
// layer.msg(this.innerHTML + ' 的 value: '+ value); // this 为当前选中 <option> 元素对象
});
// 弹层的索引值
console.log(index);
// 弹层内部原型链中的 this --- 2.8+
console.log(that);
var shuju = {
rawrd_type: 2,
reward_num: 0,
reward_num1: 0,
reward_num2: 0
};
form.val("EditForm", shuju);
form.render();
},
btn1: function (index, layero, that) {
var tdata = form.val("EditForm");
console.log(tdata);
console.log(layero);
var postData = {
reward_num: 0,
reward_num_1: 0,
rawrd_type: 0,
};
//#region 验证
if (tdata.rawrd_type == 3) {
if (tdata.reward_num1 < 0 || tdata.reward_num2 < 0) {
layer.msg('抽奖次数不能小于0');
return;
}
if (tdata.reward_num1 > tdata.reward_num2) {
layer.msg('抽奖范围设置错误');
return;
}
postData.reward_num = parseInt(tdata.reward_num1);
postData.reward_num_1 = parseInt(tdata.reward_num2);
} else {
if (tdata.reward_num < 0) {
layer.msg('抽奖次数不能小于0');
return;
}
if (tdata.reward_num >= maxStock) {
layer.msg('抽奖次数不能大于等于总奖品数量');
return elem.focus();
}
postData.reward_num = parseInt(tdata.reward_num);
postData.reward_num_1 = 0;
}
//#endregion
// reward_num_1
postData.rawrd_type = parseInt(tdata.rawrd_type);
console.log(postData);
save(ids, postData, () => {
for (const iterator of ids) {
console.log(iterator);
let tempdata = tableData.find(it => it.id == iterator);
if (tempdata != null) {
tempdata.goods_extend_rawrd_type = postData.rawrd_type;
tempdata.goods_extend_reward_num = postData.reward_num;
tempdata.goods_extend_reward_num_1 = postData.reward_num_1;
}
}
table.reload('goods_extend', {
data: tableData
});
layer.close(index);
});
// layer.close(index);
},
btn2: function (index, layero, that) {
layer.close(index);
},
})
return false;
}
//编辑奖品
function goodslist_editAll() {
let content = "";
var checkStatus = table.checkStatus('goods_extend');
if (checkStatus.data.length == 0) {
layer.msg('请选择要修改的数据');
return false;
}
let maxStock = 0;
tableData.map(it => maxStock += it.stock);
let tempDate = checkStatus.data.filter(it => it.shang_id >= 10 && it.shang_id <= 33);
console.log(tempDate);
if (tempDate.length == 0) {
layer.msg('请选择要修改的数据');
return false;
}
console.log(tempDate);
let ids = tempDate.map(it => it.id);
// let idsx = tempDate.map(it =>{ return {id:it.id,prize_code}});
console.log(ids);
layer.prompt({
title: '请输入最低抽奖次数-批量设置', success: function (layero, index, that) {
// 弹层的最外层元素的 jQuery 对象
//变成数字
let t = $(layero[0]).find("input[class=\"layui-layer-input\"]")[0];
if (t != null) {
t.value = content;
t.addEventListener('input', function () {
this.value = this.value.replace(/[^0-9]/g, '');
});
}
},
}, function (value, index, elem) {
console.log(elem);
if (value === '') {
return elem.focus();
}
if (!isNumber(value)) {
layer.msg('请输入数字');
return elem.focus();
}
if (value < 0) {
layer.msg('请输入大于0的数');
return elem.focus();
}
let formattedNum = parseInt(value);
console.log(formattedNum);
if (formattedNum >= maxStock) {
layer.msg('最低抽奖次数不能大于等于总奖品数量');
return elem.focus();
}
save(ids, value, () => {
for (const iterator of ids) {
console.log(iterator);
let tempdata = tableData.find(it => it.id == iterator);
if (tempdata != null) {
tempdata.goods_extend_reward_num = formattedNum;
tempdata.LAY_CHECKED = false;
}
}
table.reload('goods_extend', {
data: tableData
});
layer.close(index);
});
});
return false;
}
function save(ids, content, cal) {
var url = "{:url('/admin/goodsextendlist_edit')}";
var $ = layui.$;
var load = layer.load(2);
$.post(url, { ids: ids, value: content, goodid: goodId }, function (data) {
console.log(data);
layer.close(load);
if (cal) { cal() };
})
}
function goodslist_del(prize_code, id) {
var url = "{:url('/admin/goodsextendlist_del')}";
var $ = layui.$;
var load = layer.load(2);
$.post(url, { goods_list_id: id }, function (data) {
console.log(data);
layer.close(load);
let tempdata = tableData.find(it => it.id == id);
if (tempdata != null) {
tempdata.goods_extend_rawrd_type = 0;
tempdata.goods_extend_reward_num = 0;
tempdata.goods_extend_reward_num_1 = 0;
}
table.reload('goods_extend', {
data: tableData
});
})
}
</script>
</body>
</html>