1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-26 20:52:44 +08:00
2023-12-09 09:01:18 +08:00

207 lines
6.7 KiB
JavaScript

layui.extend({
kgDropdown: '/static/lib/layui/extends/kg-dropdown',
helper: '/static/lib/layui/extends/helper',
});
layui.use(['jquery', 'form', 'element', 'layer', 'kgDropdown'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var $token = $('meta[name="csrf-token"]');
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader('X-Csrf-Token', $token.attr('content'));
},
statusCode: {
400: function (xhr) {
var res = JSON.parse(xhr.responseText);
layer.msg(res.msg, {icon: 2, anim: 6});
},
401: function () {
layer.msg('操作之前请先登录', {icon: 2, anim: 6});
},
403: function () {
layer.msg('操作受限', {icon: 2, anim: 6});
},
404: function () {
layer.msg('资源不存在', {icon: 2, anim: 6});
},
500: function (xhr) {
var res = JSON.parse(xhr.responseText);
layer.msg(res.msg, {icon: 2, anim: 6});
}
}
});
setInterval(function () {
$.ajax({
type: 'POST',
url: '/token/refresh',
success: function (res) {
$token.attr('content', res.token);
}
});
}, 300000);
form.on('submit(go)', function (data) {
var submit = $(this);
var orgText = $(this).text();
submit.text('提交中···').attr('disabled', 'disabled').addClass('layui-btn-disabled');
$.ajax({
type: 'POST',
url: data.form.action,
data: data.field,
success: function (res) {
if (res.msg) {
layer.msg(res.msg, {icon: 1, time: 1500});
}
if (res.location) {
var target = res.target || 'self';
setTimeout(function () {
if (target === 'parent') {
parent.location.href = res.location;
} else {
window.location.href = res.location;
}
}, 1000);
}
setTimeout(function () {
submit.text(orgText).removeAttr('disabled').removeClass('layui-btn-disabled');
}, 1500);
},
error: function () {
submit.text(orgText).removeAttr('disabled').removeClass('layui-btn-disabled');
}
});
return false;
});
form.on('switch(go)', function (data) {
var postData = {};
var name = $(this).attr('name');
var checked = $(this).is(':checked');
var value = checked ? 1 : 0;
var url = $(this).data('url');
var onTips = $(this).data('on-tips');
var offTips = $(this).data('off-tips');
var tips = '确定要执行操作?';
if (value === 1 && onTips) {
tips = onTips;
} else if (value === 0 && offTips) {
tips = offTips;
}
postData[name] = value;
layer.confirm(tips, {
cancel: function (index) {
layer.close(index);
data.elem.checked = !checked;
form.render();
}
}, function () {
$.ajax({
type: 'POST',
url: url,
data: postData,
success: function (res) {
layer.msg(res.msg, {icon: 1});
},
error: function (xhr) {
var json = JSON.parse(xhr.responseText);
layer.msg(json.msg, {icon: 2});
data.elem.checked = !checked;
form.render();
}
});
}, function () {
data.elem.checked = !checked;
form.render();
});
});
form.on('checkbox(all)', function (data) {
$('input:checkbox[class="item"]').each(function (index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('checkbox(item)', function (data) {
var allChecked = $('input:checkbox[class="item"]:not(:checked)').length === 0;
$('input:checkbox[class="all"]').prop('checked', allChecked);
form.render('checkbox');
});
$('.kg-priority').on('change', function () {
var priority = $(this).val();
var url = $(this).data('url');
$.ajax({
type: 'POST',
url: url,
data: {priority: priority},
success: function (res) {
layer.msg(res.msg, {icon: 1});
}
});
});
$('.kg-batch').on('click', function () {
var url = $(this).data('url');
var tips = $(this).data('tips');
var defaultTips = '确定要执行批量操作吗?';
var ids = [];
$('input:checkbox[class="item"]:checked').each(function (index, item) {
ids.push(item.value);
});
if (ids.length === 0) {
layer.msg('没有选中任何条目', {icon: 2});
return false;
}
tips = tips || defaultTips;
layer.confirm(tips, function () {
$.ajax({
type: 'POST',
url: url,
data: {'ids': ids},
success: function (res) {
layer.msg(res.msg, {icon: 1});
if (res.location) {
setTimeout(function () {
window.location.href = res.location;
}, 1500);
} else {
window.location.reload();
}
}
});
});
});
$('.kg-delete,.kg-restore').on('click', function () {
var url = $(this).data('url');
var tips = $(this).hasClass('kg-delete') ? '确定要删除吗?' : '确定要还原吗?';
layer.confirm(tips, function () {
$.ajax({
type: 'POST',
url: url,
success: function (res) {
layer.msg(res.msg, {icon: 1});
if (res.location) {
setTimeout(function () {
window.location.href = res.location;
}, 1500);
} else {
window.location.reload();
}
}
});
});
});
$('.kg-back').on('click', function () {
window.history.back();
});
});