layui.define(['config', 'layer'], function (exports) {
|
var config = layui.config;
|
var layer = layui.layer;
|
var popupRightIndex, popupCenterIndex, popupCenterParam;
|
|
var admin = {
|
isRefresh: false,
|
// 设置侧栏折叠
|
flexible: function (expand) {
|
var isExapnd = $('.layui-layout-admin').hasClass('admin-nav-mini');
|
if (isExapnd == !expand) {
|
return;
|
}
|
if (expand) {
|
$('.layui-layout-admin').removeClass('admin-nav-mini');
|
} else {
|
$('.layui-layout-admin').addClass('admin-nav-mini');
|
}
|
admin.onResize();
|
},
|
// 设置导航栏选中
|
activeNav: function (url) {
|
$('.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child dd').removeClass('layui-this');
|
$('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-this');
|
if (url && url != '') {
|
$('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-nav-itemed');
|
var $a = $('.layui-layout-admin .layui-side .layui-nav>.layui-nav-item>.layui-nav-child>dd>a[href="#!' + url + '"]');
|
$a.parent('dd').addClass('layui-this');
|
$a.parent('li').addClass('layui-this');
|
$a.parent('dd').parent('.layui-nav-child').parent('.layui-nav-item').addClass('layui-nav-itemed');
|
}
|
},
|
// 右侧弹出
|
popupRight: function (path) {
|
var param = new Object();
|
param.path = path;
|
param.id = 'adminPopupR';
|
param.title = false;
|
param.anim = 2;
|
param.isOutAnim = false;
|
param.closeBtn = false;
|
param.offset = 'r';
|
param.shadeClose = true;
|
param.area = '336px';
|
param.skin = 'layui-layer-adminRight';
|
param.end = function () {
|
layer.closeAll('tips');
|
};
|
popupRightIndex = admin.open(param);
|
return popupRightIndex;
|
},
|
// 关闭右侧弹出
|
closePopupRight: function () {
|
layer.close(popupRightIndex);
|
},
|
// 中间弹出
|
popupCenter: function (param) {
|
param.id = 'adminPopupC';
|
popupCenterParam = param;
|
popupCenterIndex = admin.open(param);
|
return popupCenterIndex;
|
},
|
// 关闭中间弹出并且触发finish回调
|
finishPopupCenter: function () {
|
layer.close(popupCenterIndex);
|
popupCenterParam.finish ? popupCenterParam.finish() : '';
|
},
|
// 关闭中间弹出
|
closePopupCenter: function () {
|
layer.close(popupCenterIndex);
|
},
|
// 封装layer.open
|
open: function (param) {
|
var sCallBack = param.success;
|
param.type = 1;
|
param.area = param.area ? param.area : '450px';
|
param.offset = param.offset ? param.offset : '120px';
|
param.resize ? param.resize : false;
|
param.shade ? param.shade : .2;
|
param.success = function (layero, index) {
|
sCallBack ? sCallBack(layero, index) : '';
|
$(layero).children('.layui-layer-content').load(param.path);
|
};
|
return layer.open(param);
|
},
|
// 封装ajax请求,返回数据类型为json
|
req: function (url, data, success, method, noHeaderToken) {
|
if ('put' == method.toLowerCase()) {
|
method = 'PUT';
|
} else if ('delete' == method.toLowerCase()) {
|
method = 'DELETE';
|
}
|
//add by owen ajax 执行前置处理器
|
admin.ajax({
|
url: config.base_server + url,
|
data: data,
|
type: method,
|
dataType: 'json',
|
contentType: "application/json",
|
success: success,
|
beforeSend: function (xhr) {
|
if (!noHeaderToken) {
|
let token = config.getToken();
|
if (token) {
|
xhr.setRequestHeader('Authorization', 'Bearer ' + token.access_token);
|
}
|
}
|
let isolationVersion = config.isolationVersion;
|
if (isolationVersion) {
|
xhr.setRequestHeader('kidgrow-version', isolationVersion);
|
}
|
xhr.setRequestHeader('timestamp', new Date().getTime());
|
}
|
});
|
},
|
|
// 封装ajax请求
|
ajax: function (param) {
|
var successCallback = param.success;
|
param.success = function (result, status, xhr) {
|
// 判断登录过期和没有权限
|
var jsonRs;
|
if ('json' == param.dataType.toLowerCase()) {
|
jsonRs = result;
|
} else if ('html' == param.dataType.toLowerCase() || 'text' == param.dataType.toLowerCase()) {
|
jsonRs = admin.parseJSON(result);
|
}
|
if (jsonRs) {
|
if (jsonRs.code == 401) {
|
config.removeToken();
|
var msg=jsonRs.msg;
|
if(msg.includes("Access token expired")){
|
layer.msg('登录过期', {icon: 2, time: 1500}, function () {
|
location.replace('/login.html');
|
}, 5000);
|
}else if(msg.includes("Invalid access token")){
|
layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
|
location.replace('/login.html');
|
}, 5000);
|
}
|
return;
|
} else if (jsonRs.code == 403) {
|
layer.msg('没有权限', {icon: 2});
|
layer.closeAll('loading');
|
return;
|
}
|
}
|
successCallback(result, status, xhr);
|
};
|
param.error = function (xhr) {
|
param.success({code: xhr.status, msg: xhr.statusText});
|
};
|
//发送同步ajax请求
|
param.async = false;
|
$.ajax(param);
|
},
|
// 判断是否有权限
|
hasPerm: function (auth) {
|
var permissions = admin.getTempData("permissions");
|
if (permissions){
|
for (var i = 0; i < permissions.length; i++) {
|
if (auth == permissions[i]) {
|
return true;
|
}
|
}
|
}
|
return false;
|
},
|
// 窗口大小改变监听
|
onResize: function () {
|
if (config.autoRender) {
|
if ($('.layui-table-view').length > 0) {
|
setTimeout(function () {
|
admin.events.refresh();
|
}, 800);
|
}
|
}
|
},
|
// 显示加载动画
|
showLoading: function (element) {
|
$(element).append('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop admin-loading"></i>');
|
},
|
// 移除加载动画
|
removeLoading: function (element) {
|
$(element + '>.admin-loading').remove();
|
},
|
// 缓存临时数据
|
putTempData: function (key, value) {
|
if (value) {
|
layui.sessionData('tempData', {key: key, value: value});
|
} else {
|
layui.sessionData('tempData', {key: key, remove: true});
|
}
|
},
|
// 获取缓存临时数据
|
getTempData: function (key) {
|
return layui.sessionData('tempData')[key];
|
},
|
// 滑动选项卡
|
rollPage: function (d) {
|
var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
|
var left = $tabTitle.scrollLeft();
|
if ('left' === d) {
|
$tabTitle.scrollLeft(left - 120);
|
} else if ('auto' === d) {
|
var autoLeft = 0;
|
$tabTitle.children("li").each(function () {
|
if ($(this).hasClass('layui-this')) {
|
return false;
|
} else {
|
autoLeft += $(this).outerWidth();
|
}
|
});
|
$tabTitle.scrollLeft(autoLeft - 47);
|
} else {
|
$tabTitle.scrollLeft(left + 120);
|
}
|
},
|
refresh: function () {
|
admin.isRefresh = true;
|
Q.refresh();
|
},
|
// 判断是否为json
|
parseJSON: function (str) {
|
if (typeof str == 'string') {
|
try {
|
var obj = JSON.parse(str);
|
if (typeof obj == 'object' && obj) {
|
return obj;
|
}
|
} catch (e) {
|
}
|
}
|
}
|
};
|
|
// ewAdmin提供的事件
|
admin.events = {
|
flexible: function (e) { // 折叠侧导航
|
var expand = $('.layui-layout-admin').hasClass('admin-nav-mini');
|
admin.flexible(expand);
|
},
|
refresh: function () { // 刷新主体部分
|
admin.refresh();
|
},
|
back: function () { //后退
|
history.back();
|
},
|
theme: function () { // 设置主题
|
admin.popupRight('pages/tpl/theme.html');
|
},
|
fullScreen: function (e) { // 全屏
|
var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore';
|
var ti = $(this).find('i');
|
|
var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false;
|
if (isFullscreen) {
|
var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
|
if (efs) {
|
efs.call(document);
|
} else if (window.ActiveXObject) {
|
var ws = new ActiveXObject('WScript.Shell');
|
ws && ws.SendKeys('{F11}');
|
}
|
ti.addClass(ac).removeClass(ic);
|
} else {
|
var el = document.documentElement;
|
var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen;
|
if (rfs) {
|
rfs.call(el);
|
} else if (window.ActiveXObject) {
|
var ws = new ActiveXObject('WScript.Shell');
|
ws && ws.SendKeys('{F11}');
|
}
|
ti.addClass(ic).removeClass(ac);
|
}
|
},
|
// 左滑动tab
|
leftPage: function () {
|
admin.rollPage("left");
|
},
|
// 右滑动tab
|
rightPage: function () {
|
admin.rollPage();
|
},
|
// 关闭当前选项卡
|
closeThisTabs: function () {
|
var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
|
if ($title.find('li').first().hasClass('layui-this')) {
|
return;
|
}
|
$title.find('li.layui-this').find(".layui-tab-close").trigger("click");
|
},
|
// 关闭其他选项卡
|
closeOtherTabs: function () {
|
$('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find(".layui-tab-close").trigger("click");
|
},
|
// 关闭所有选项卡
|
closeAllTabs: function () {
|
$('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find(".layui-tab-close").trigger("click");
|
},
|
// 关闭所有弹窗
|
closeDialog: function () {
|
layer.closeAll('page');
|
}
|
};
|
|
// 所有ew-event
|
$('body').on('click', '*[ew-event]', function () {
|
var event = $(this).attr('ew-event');
|
var te = admin.events[event];
|
te && te.call(this, $(this));
|
});
|
|
// 移动设备遮罩层点击事件
|
$('.site-mobile-shade').click(function () {
|
admin.flexible(true);
|
});
|
|
// 侧导航折叠状态下鼠标经过显示提示
|
$('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
|
var tipText = $(this).find('cite').text();
|
if (document.body.clientWidth > 750) {
|
layer.tips(tipText, this);
|
}
|
}).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
|
layer.closeAll('tips');
|
});
|
|
// 侧导航折叠状态下点击展开
|
$('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
|
if (document.body.clientWidth > 750) {
|
layer.closeAll('tips');
|
admin.flexible(true);
|
}
|
});
|
|
// 所有lay-tips处理
|
$('body').on('mouseenter', '*[lay-tips]', function () {
|
var tipText = $(this).attr('lay-tips');
|
var dt = $(this).attr('lay-direction');
|
layer.tips(tipText, this, {tips: dt || 1, time: -1});
|
}).on('mouseleave', '*[lay-tips]', function () {
|
layer.closeAll('tips');
|
});
|
|
exports('admin', admin);
|
});
|