191 lines
8.6 KiB
HTML
191 lines
8.6 KiB
HTML
![]() |
|
|||
|
|
|||
|
<div class="layui-row">
|
|||
|
<div class="layui-col-md4">
|
|||
|
<button class="layui-btn layui-btn-sm" id="addRedemptionCard">增加</button>
|
|||
|
<button class="layui-btn layui-btn-danger layui-btn-sm" id="batchDeleteRedemptionCard">批量删除</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<table id="redemptionCardTable" lay-filter="redemptionCardTable">
|
|||
|
|
|||
|
</table>
|
|||
|
|
|||
|
<script type="text/html" id="barDemo">
|
|||
|
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
|||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
|
|||
|
</script>
|
|||
|
|
|||
|
|
|||
|
<script>
|
|||
|
layui.use(['table', 'layer',['form']], function(){
|
|||
|
var table = layui.table;
|
|||
|
var layer = layui.layer;
|
|||
|
var form = layui.form;
|
|||
|
// 渲染表格
|
|||
|
table.render({
|
|||
|
elem: '#redemptionCardTable',
|
|||
|
url: '/admin/redemption-cards/', // 数据接口URL
|
|||
|
page: true, // 开启分页
|
|||
|
limit: 10, // 每页显示的条数
|
|||
|
method: 'post', // 使用POST请求
|
|||
|
where: { // 这里传入的是额外的请求参数,LayUI会将这些参数合并到请求数据中
|
|||
|
action: 'fetch', // 指定操作类型
|
|||
|
},
|
|||
|
contentType: 'application/json', // 设置发送请求的内容类型为JSON
|
|||
|
cols: [[
|
|||
|
{type: 'checkbox', fixed: 'left'},
|
|||
|
{field: 'code', title: '卡密', sort: true},
|
|||
|
{field: 'card_type', title: '卡类型', templet: function(d){
|
|||
|
return d.card_type === 'member' ? '会员卡' : '额度卡';
|
|||
|
}},
|
|||
|
{field: 'created_date', title: '生成日期', sort: true, templet: function(d){
|
|||
|
return layui.util.toDateString(d.created_date, 'yyyy-MM-dd HH:mm:ss');
|
|||
|
}},
|
|||
|
{field: 'expiry_date', title: '到期时间', sort: true, templet: function(d){
|
|||
|
return layui.util.toDateString(d.expiry_date, 'yyyy-MM-dd HH:mm:ss');
|
|||
|
}},
|
|||
|
{field: 'is_used', title: '是否已使用', templet: function(d) { return d.is_used ? '是' : '否'; }},
|
|||
|
|
|||
|
{field: 'validity_period', title: '额度'},
|
|||
|
{field: 'used_by_openid', title: '使用者OpenID'},
|
|||
|
{title: '操作', toolbar: '#barDemo'}
|
|||
|
]]
|
|||
|
});
|
|||
|
|
|||
|
// 监听工具条
|
|||
|
// 监听工具条
|
|||
|
table.on('tool(redemptionCardTable)', function(obj){
|
|||
|
var data = obj.data; // 获得当前行数据
|
|||
|
if(obj.event === 'edit'){
|
|||
|
// 编辑操作
|
|||
|
console.log('编辑卡密', data);
|
|||
|
// 打开编辑窗口的代码...
|
|||
|
} else if(obj.event === 'delete'){
|
|||
|
// 删除操作
|
|||
|
layer.confirm('真的删除行么', function(index){
|
|||
|
axios.post('/admin/redemption-cards/', JSON.stringify({action: 'delete', id: data.id}), {
|
|||
|
headers: {'Content-Type': 'application/json'}
|
|||
|
}).then(function(response){
|
|||
|
if(response.data.status === 'success'){
|
|||
|
layer.msg('删除成功', {icon: 1});
|
|||
|
layui.table.reload('redemptionCardTable'); // 重新加载表格
|
|||
|
} else {
|
|||
|
layer.msg('删除失败', {icon: 2});
|
|||
|
}
|
|||
|
}).catch(function(error){
|
|||
|
layer.msg('删除过程中出错', {icon: 2});
|
|||
|
console.error('删除失败', error);
|
|||
|
});
|
|||
|
layer.close(index); // 关闭确认弹窗
|
|||
|
// 向服务端发送删除指令的代码...
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 监听添加卡密按钮点击事件
|
|||
|
document.getElementById('addRedemptionCard').onclick = function() {
|
|||
|
layer.open({
|
|||
|
type: 1,
|
|||
|
title: '添加卡密管理',
|
|||
|
area: ['500px', '400px'],
|
|||
|
content: '<form class="layui-form" lay-filter="addRedemptionCardForm">' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<label class="layui-form-label">卡密前缀</label>' +
|
|||
|
'<div class="layui-input-inline">' +
|
|||
|
'<input style="display: none" type="text" name="action" value="add">' +
|
|||
|
'<input type="text" name="code_prefix" lay-verify="required" placeholder="请输入卡密前缀" autocomplete="off" class="layui-input">' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<label class="layui-form-label">卡类型</label>' +
|
|||
|
'<div class="layui-input-inline">' +
|
|||
|
'<select name="card_type" lay-verify="required">' +
|
|||
|
'<option value="">请选择卡类型</option>' +
|
|||
|
'<option value="member">会员卡</option>' +
|
|||
|
'<option value="quota">额度卡</option>' +
|
|||
|
'</select>' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<label class="layui-form-label">数量</label>' +
|
|||
|
'<div class="layui-input-inline">' +
|
|||
|
'<input type="number" name="quantity" lay-verify="required" placeholder="请输入数量" autocomplete="off" class="layui-input">' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<label class="layui-form-label">有效期</label>' +
|
|||
|
'<div class="layui-input-inline">' +
|
|||
|
'<input type="date" name="expiry_date" lay-verify="required" placeholder="请选择有效期" autocomplete="off" class="layui-input">' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<label class="layui-form-label">额度</label>' +
|
|||
|
'<div class="layui-input-inline">' +
|
|||
|
'<input type="text" name="validity_period" lay-verify="required" placeholder="额度" autocomplete="off" class="layui-input">' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'<div class="layui-form-item">' +
|
|||
|
'<div class="layui-input-block">' +
|
|||
|
'<button class="layui-btn" lay-submit lay-filter="addRedemptionCard">添加</button>' +
|
|||
|
'</div>' +
|
|||
|
'</div>' +
|
|||
|
'</form>',
|
|||
|
success: function(layero, index) {
|
|||
|
form.render();
|
|||
|
layui.form.on('submit(addRedemptionCard)', function(data){
|
|||
|
axios.post('/admin/redemption-cards/', JSON.stringify(data.field), {
|
|||
|
headers: {'Content-Type': 'application/json'}
|
|||
|
}).then(function(response){
|
|||
|
if(response.data.status === 'success'){
|
|||
|
layer.msg('操作成功', {icon: 1, time: 1000}, function(){
|
|||
|
layer.close(index); // 关闭弹窗
|
|||
|
layui.table.reload('redemptionCardTable'); // 重新加载表格
|
|||
|
});
|
|||
|
} else {
|
|||
|
// 操作失败
|
|||
|
layer.msg(response.data.message, {icon: 2});
|
|||
|
layer.close(index); // 关闭弹窗
|
|||
|
}
|
|||
|
}).catch(function(error){
|
|||
|
layer.msg('服务器出错了', {icon: 2});
|
|||
|
console.error('操作失败', error);
|
|||
|
});
|
|||
|
return false; // 阻止表单跳转。
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
// 监听批量删除按钮点击事件
|
|||
|
document.getElementById('batchDeleteRedemptionCard').onclick = function() {
|
|||
|
var checkStatus = table.checkStatus('redemptionCardTable');
|
|||
|
var selectedData = checkStatus.data;
|
|||
|
var ids = selectedData.map(function(item) {
|
|||
|
return item.id;
|
|||
|
});
|
|||
|
if (selectedData.length === 0) {
|
|||
|
layer.msg('请选择要删除的卡密', {icon: 5});
|
|||
|
} else {
|
|||
|
layer.confirm('确认删除选中的卡密吗?', function(index){
|
|||
|
// 发送批量删除请求...
|
|||
|
axios.post('/admin/redemption-cards/', JSON.stringify({ids: ids,action:'batch_delete'}), {
|
|||
|
headers: {'Content-Type': 'application/json'}
|
|||
|
}).then(function(response){
|
|||
|
if(response.data.status === 'success'){
|
|||
|
layer.msg('批量删除成功', {icon: 1});
|
|||
|
layui.table.reload('redemptionCardTable'); // 重新加载表格
|
|||
|
} else {
|
|||
|
layer.msg('批量删除失败', {icon: 2});
|
|||
|
}
|
|||
|
}).catch(function(error){
|
|||
|
console.error('批量删除失败', error);
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
});
|
|||
|
</script>
|