Ai_Admin/templates/membership-types.html

330 lines
15 KiB
HTML
Raw Normal View History

2024-06-05 05:10:50 +08:00
<body>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" id="addMembershipType">添加</button>
</div>
<div class="layui-tab layui-tab-brief" lay-filter="membershipTab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="membership">会员充值</li>
<li lay-id="quota">额度充值</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<table class="layui-hide" id="membershipTable" lay-filter="membershipTableFilter"></table>
</div>
<div class="layui-tab-item">
<table class="layui-hide" id="quotaTable" lay-filter="quotaTableFilter"></table>
</div>
</div>
</div>
<script type="text/html" id="operationBar">
<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', 'element',['form']], function(){
var table = layui.table;
var layer = layui.layer;
var element = layui.element;
var form = layui.form;
// 初始化会员充值表格
table.render({
elem: '#membershipTable',
url: '/admin/membership-types/', // 数据接口URL
page: true, // 开启分页
method: 'post', // 使用POST请求
where: { // 这里传入的是额外的请求参数LayUI会将这些参数合并到请求数据中
action: 'fetch', // 指定操作类型
is_quota: false // 仅获取会员充值数据
},
contentType: 'application/json', // 设置发送请求的内容类型为JSON
cols: [[
{field: 'id', title: 'id'},
{field: 'type', title: '卡类型'},
{field: 'title', title: '标题'},
{field: 'description', title: '描述'},
{field: 'price', title: '价格'},
{field: 'duration_days', title: '有效天数'},
{field: 'coins', title: '额度'}, // 修改字段
{title: '操作', align: 'center', toolbar: '#operationBar'}
]]
});
// 初始化额度充值表格
table.render({
elem: '#quotaTable',
url: '/admin/membership-types/', // 数据接口URL
page: true, // 开启分页
method: 'post', // 使用POST请求
where: { // 这里传入的是额外的请求参数LayUI会将这些参数合并到请求数据中
action: 'fetch', // 指定操作类型
is_quota: true // 仅获取额度充值数据
},
contentType: 'application/json', // 设置发送请求的内容类型为JSON
cols: [[
{field: 'id', title: 'id'},
{field: 'type', title: '卡类型'},
{field: 'title', title: '标题'},
{field: 'description', title: '描述'},
{field: 'price', title: '价格'},
{field: 'coins', title: '充值额度'}, // 修改字段
{title: '操作', align: 'center', toolbar: '#operationBar'}
]]
});
// 监听工具条
table.on('tool(membershipTableFilter)', function(obj){
var data = obj.data; // 获得当前行数据
if(obj.event === 'edit'){
// 编辑操作
console.log('编辑会员卡类型', data);
// 打开编辑窗口的代码
layer.open({
type: 1,
zIndex: 999,
title: '编辑会员卡类型',
area: ['500px', '600px'],
content: '<div id="editMembershipTypeForm" style="padding:20px;">'+
'<form class="layui-form" lay-filter="editMembershipTypeForm">'+
'<input type="text" name="id" value="'+data.id+'" lay-verify="required" style="display: none" class="layui-input">'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">卡类型</label>'+
' <div class="layui-input-block">'+
'<input type="text" name="type" value="'+data.type+'" 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-block">'+
' <input type="text" name="title" value="'+data.title+'" 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-block">'+
' <textarea name="description" lay-verify="required" placeholder="请输入描述" class="layui-textarea">'+data.description+'</textarea>'+
'</div>'+
' </div>'+
' <div class="layui-form-item">'+
' <label class="layui-form-label">价格</label>'+
' <div class="layui-input-block">'+
' <input type="text" name="price" value="'+data.price+'" lay-verify="required|number" placeholder="请输入价格" autocomplete="off" class="layui-input">'+
' </div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">有效天数</label>'+
' <div class="layui-input-block">'+
' <input type="text" name="duration_days" value="'+data.duration_days+'" lay-verify="required|number" placeholder="请输入有效天数" autocomplete="off" class="layui-input">'+
'</div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">额度</label>'+ // 修改字段
' <div class="layui-input-block">'+
' <input type="text" name="coins" value="'+data.coins+'" lay-verify="required|number" placeholder="请输入额度" autocomplete="off" class="layui-input">'+
'</div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">会员/额度</label>'+ // 新增字段
' <div class="layui-input-block">'+
' <input type="checkbox" name="is_quota" lay-skin="switch" lay-text="是|否" '+(data.is_quota ? 'checked' : '')+'>'+
'</div>'+
' </div>'+
'</form>'+
'</div>',
success: function(layero, index){
// 将当前行数据填充到表单中
form.render();
},
btn: ['保存', '取消'],
yes: function(index, form){
axios.post('/admin/membership-types/', {
action: 'edit',
id: $('input[name="id"]').val(),
type: $('input[name="type"]').val(),
title: $('input[name="title"]').val(),
description: $('textarea[name="description"]').val(),
price: $('input[name="price"]').val(),
duration_days: $('input[name="duration_days"]').val(),
coins: $('input[name="coins"]').val(), // 修改字段
is_quota: $('input[name="is_quota"]').prop('checked') // 新增字段
},{
headers: {'Content-Type': 'application/json'}
})
.then(function(response) {
// 编辑成功后的操作...
if(response.data.status === 'success'){
layer.msg(response.data.message, {icon: 1, time: 1000}, function(){
layer.close(index); // 关闭弹窗
table.reload('membershipTable'); // 重载表格
table.reload('quotaTable'); // 重载表格
});
} else {
layer.msg(response.data.message, function(){
layer.close(index); // 关闭弹窗
});
}
})
.catch(function(error) {
console.error('编辑失败:', error);
});
},
btn2: function(index, layero){
// 取消操作
layer.close(index);
}
});
} else if(obj.event === 'delete'){
// 删除操作
layer.confirm('真的删除行么', function(index){
axios.post('/admin/membership-types/', {
action: 'delete',
id: data.id
},{
headers: {'Content-Type': 'application/json'}
})
.then(function(response) {
if(response.data.status === 'success'){
layer.msg(response.data.message, {icon: 1, time: 1000}, function(){
table.reload('membershipTable'); // 重载表格
table.reload('quotaTable'); // 重载表格
});
} else {
layer.msg(response.data.message, function(){
table.reload('membershipTable'); // 重载表格
table.reload('quotaTable'); // 重载表格
});
}
})
.catch(function(error) {
console.error('删除失败:', error);
});
layer.close(index);
});
}
});
// 监听添加会员卡类型按钮点击事件
document.getElementById('addMembershipType').onclick = function() {
// 打开添加会员卡类型窗口的代码...
layer.open({
type: 1,
zIndex: 999,
title: '添加会员卡类型',
area: ['500px', '600px'],
content: '<div id="addMembershipTypeForm" style="padding:20px;">'+
'<form class="layui-form" lay-filter="addMembershipTypeForm">'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">卡类型</label>'+
' <div class="layui-input-block">'+
'<input type="text" name="type" 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-block">'+
' <input type="text" name="title" 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-block">'+
' <textarea name="description" lay-verify="required" placeholder="请输入描述" class="layui-textarea"></textarea>'+
'</div>'+
' </div>'+
' <div class="layui-form-item">'+
' <label class="layui-form-label">价格</label>'+
' <div class="layui-input-block">'+
' <input type="text" name="price" lay-verify="required|number" placeholder="请输入价格" autocomplete="off" class="layui-input">'+
' </div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">有效天数</label>'+
' <div class="layui-input-block">'+
' <input type="text" name="duration_days" lay-verify="required|number" placeholder="请输入有效天数" autocomplete="off" class="layui-input">'+
'</div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">额度</label>'+ // 修改字段
' <div class="layui-input-block">'+
' <input type="text" name="coins" lay-verify="required|number" placeholder="请输入额度" autocomplete="off" class="layui-input">'+
'</div>'+
' </div>'+
'<div class="layui-form-item">'+
' <label class="layui-form-label">会员/额度</label>'+ // 新增字段
' <div class="layui-input-block">'+
' <input type="checkbox" name="is_quota" lay-skin="switch" lay-text="是|否">'+
'</div>'+
' </div>'+
'</form>'+
'</div>',
success: function(layero, index){
// 将当前行数据填充到表单中
form.render();
},
btn: ['保存', '取消'],
yes: function(index, form){
axios.post('/admin/membership-types/', {
action: 'add',
type: $('input[name="type"]').val(),
title: $('input[name="title"]').val(),
description: $('textarea[name="description"]').val(),
price: $('input[name="price"]').val(),
duration_days: $('input[name="duration_days"]').val(),
coins: $('input[name="coins"]').val(), // 修改字段
is_quota: $('input[name="is_quota"]').prop('checked') // 新增字段
},{
headers: {'Content-Type': 'application/json'}
})
.then(function(response) {
// 添加成功后的操作...
if(response.data.status === 'success'){
layer.msg(response.data.message, {icon: 1, time: 1000}, function(){
layer.close(index); // 关闭弹窗
table.reload('membershipTable'); // 重载表格
table.reload('quotaTable'); // 重载表格
});
} else {
layer.msg(response.data.message, function(){
layer.close(index); // 关闭弹窗
});
}
})
.catch(function(error) {
console.error('添加失败:', error);
});
},
btn2: function(index, layero){
// 取消操作
layer.close(index);
}
});
};
// 监听选项卡切换
element.on('tab(membershipTab)', function(data){
if(data.index === 0){
table.reload('membershipTable', {
where: {
action: 'fetch',
is_quota: false
}
});
} else if(data.index === 1){
table.reload('quotaTable', {
where: {
action: 'fetch',
is_quota: true
}
});
}
});
});
</script>
</body>