Ai_Admin/templates/membership-types.html
2024-06-05 05:10:50 +08:00

330 lines
15 KiB
HTML
Raw Permalink 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.

<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>