/** * date:2020/02/27 * author:Mr.Chung * version:2.0 * description:layuimini 主体框架扩展 */ layui.define(["jquery", "miniMenu", "element","miniTab", "miniTheme"], function (exports) { var $ = layui.$, layer = layui.layer, miniMenu = layui.miniMenu, miniTheme = layui.miniTheme, element = layui.element , miniTab = layui.miniTab; if (!/http(s*):\/\//.test(location.href)) { var tips = "请先将项目部署至web容器(Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示"; return layer.alert(tips); } var miniAdmin = { /** * 后台框架初始化 * @param options.iniUrl 后台初始化接口地址 * @param options.clearUrl 后台清理缓存接口 * @param options.urlHashLocation URL地址hash定位 * @param options.bgColorDefault 默认皮肤 * @param options.multiModule 是否开启多模块 * @param options.menuChildOpen 是否展开子菜单 * @param options.loadingTime 初始化加载时间 * @param options.pageAnim iframe窗口动画 * @param options.maxTabNum 最大的tab打开数量 */ render: function (options) { options.iniUrl = options.iniUrl || null; options.clearUrl = options.clearUrl || null; options.urlHashLocation = options.urlHashLocation || false; options.bgColorDefault = options.bgColorDefault || 0; options.multiModule = options.multiModule || false; options.menuChildOpen = options.menuChildOpen || false; options.loadingTime = options.loadingTime || 1; options.pageAnim = options.pageAnim || false; options.maxTabNum = options.maxTabNum || 20; $.getJSON(options.iniUrl, function (data) { if (data == null) { miniAdmin.error('暂无菜单信息') } else { miniAdmin.renderLogo(data.logoInfo); miniAdmin.renderClear(options.clearUrl); miniAdmin.renderHome(data.homeInfo); miniAdmin.renderAnim(options.pageAnim); miniAdmin.listen(); miniMenu.render({ menuList: data.menuInfo, multiModule: options.multiModule, menuChildOpen: options.menuChildOpen }); miniTab.render({ filter: 'layuiminiTab', urlHashLocation: options.urlHashLocation, multiModule: options.multiModule, menuChildOpen: options.menuChildOpen, maxTabNum: options.maxTabNum, menuList: data.menuInfo, homeInfo: data.homeInfo, listenSwichCallback: function () { miniAdmin.renderDevice(); } }); miniTheme.render({ bgColorDefault: options.bgColorDefault, listen: true, }); miniAdmin.deleteLoader(options.loadingTime); } }).fail(function () { miniAdmin.error('菜单接口有误'); }); }, /** * 初始化logo * @param data */ renderLogo: function (data) { var html = 'logo

' + data.title + '

'; $('.layuimini-logo').html(html); }, /** * 初始化首页 * @param data */ renderHome: function (data) { sessionStorage.setItem('layuiminiHomeHref', data.href); $('#layuiminiHomeTabId').html('' + data.title + ''); $('#layuiminiHomeTabId').attr('lay-id', data.href); $('#layuiminiHomeTabIframe').html(''); }, /** * 初始化缓存地址 * @param clearUrl */ renderClear: function (clearUrl) { $('.layuimini-clear').attr('data-href',clearUrl); }, /** * 初始化iframe窗口动画 * @param anim */ renderAnim: function (anim) { if (anim) { $('#layuimini-bg-color').after(''); } }, fullScreen: function () { var el = document.documentElement; var rfs = el.requestFullScreen || el.webkitRequestFullScreen; if (typeof rfs != "undefined" && rfs) { rfs.call(el); } else if (typeof window.ActiveXObject != "undefined") { var wscript = new ActiveXObject("WScript.Shell"); if (wscript != null) { wscript.SendKeys("{F11}"); } } else if (el.msRequestFullscreen) { el.msRequestFullscreen(); } else if (el.oRequestFullscreen) { el.oRequestFullscreen(); } else if (el.webkitRequestFullscreen) { el.webkitRequestFullscreen(); } else if (el.mozRequestFullScreen) { el.mozRequestFullScreen(); } else { miniAdmin.error('浏览器不支持全屏调用!'); } }, /** * 退出全屏 */ exitFullScreen: function () { var el = document; var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen; if (typeof cfs != "undefined" && cfs) { cfs.call(el); } else if (typeof window.ActiveXObject != "undefined") { var wscript = new ActiveXObject("WScript.Shell"); if (wscript != null) { wscript.SendKeys("{F11}"); } } else if (el.msExitFullscreen) { el.msExitFullscreen(); } else if (el.oRequestFullscreen) { el.oCancelFullScreen(); }else if (el.mozCancelFullScreen) { el.mozCancelFullScreen(); } else if (el.webkitCancelFullScreen) { el.webkitCancelFullScreen(); } else { miniAdmin.error('浏览器不支持全屏调用!'); } }, /** * 初始化设备端 */ renderDevice: function () { if (miniAdmin.checkMobile()) { $('.layuimini-tool i').attr('data-side-fold', 1); $('.layuimini-tool i').attr('class', 'fa fa-outdent'); $('.layui-layout-body').removeClass('layuimini-mini'); $('.layui-layout-body').addClass('layuimini-all'); } }, /** * 初始化加载时间 * @param loadingTime */ deleteLoader: function (loadingTime) { setTimeout(function () { $('.layuimini-loader').fadeOut(); }, loadingTime * 1000) }, /** * 成功 * @param title * @returns {*} */ success: function (title) { return layer.msg(title, {icon: 1, shade: this.shade, scrollbar: false, time: 2000, shadeClose: true}); }, /** * 失败 * @param title * @returns {*} */ error: function (title) { return layer.msg(title, {icon: 2, shade: this.shade, scrollbar: false, time: 3000, shadeClose: true}); }, /** * 判断是否为手机 * @returns {boolean} */ checkMobile: function () { var ua = navigator.userAgent.toLocaleLowerCase(); var pf = navigator.platform.toLocaleLowerCase(); var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf)) || (/ucweb.*linux/i.test(ua)); var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid; var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua); var clientWidth = document.documentElement.clientWidth; if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) { return false; } else { return true; } }, /** * 监听 */ listen: function () { /** * 清理 */ $('body').on('click', '[data-clear]', function () { var loading = layer.load(0, {shade: false, time: 2 * 1000}); sessionStorage.clear(); // 判断是否清理服务端 var clearUrl = $(this).attr('data-href'); if (clearUrl != undefined && clearUrl != '' && clearUrl != null) { $.getJSON(clearUrl, function (data, status) { layer.close(loading); if (data.code != 1) { return miniAdmin.error(data.msg); } else { return miniAdmin.success(data.msg); } }).fail(function () { layer.close(loading); return miniAdmin.error('清理缓存接口有误'); }); } else { layer.close(loading); return miniAdmin.success('清除缓存成功'); } }); /** * 刷新 */ $('body').on('click', '[data-refresh]', function () { $(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload(); miniAdmin.success('刷新成功'); }); /** * 监听提示信息 */ $("body").on("mouseenter", ".layui-nav-tree .menu-li", function () { if (miniAdmin.checkMobile()) { return false; } var classInfo = $(this).attr('class'), tips = $(this).prop("innerHTML"), isShow = $('.layuimini-tool i').attr('data-side-fold'); if (isShow == 0 && tips) { tips = "" ; window.openTips = layer.tips(tips, $(this), { tips: [2, '#2f4056'], time: 300000, skin:"popup-tips", success:function (el) { var left = $(el).position().left - 10 ; $(el).css({ left:left }); element.render(); } }); } }); $("body").on("mouseleave", ".popup-tips", function () { if (miniAdmin.checkMobile()) { return false; } var isShow = $('.layuimini-tool i').attr('data-side-fold'); if (isShow == 0) { try { layer.close(window.openTips); } catch (e) { console.log(e.message); } } }); /** * 全屏 */ $('body').on('click', '[data-check-screen]', function () { var check = $(this).attr('data-check-screen'); if (check == 'full') { miniAdmin.fullScreen(); $(this).attr('data-check-screen', 'exit'); $(this).html(''); } else { miniAdmin.exitFullScreen(); $(this).attr('data-check-screen', 'full'); $(this).html(''); } }); /** * 点击遮罩层 */ $('body').on('click', '.layuimini-make', function () { miniAdmin.renderDevice(); }); } }; exports("miniAdmin", miniAdmin); });