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(''); }, // 移除加载动画 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); });