define(['jquery', 'layui','pearTab','pearMenu','pearFrame','pearFullscreen','pearTheme'], function($, layui, pearTab,pearMenu,pearFrame,fullscreen,pearTheme) { "use strict"; const element = layui.element, form = layui.form; let bodyFrame; let sideMenu; let bodyTab; let config; let logout = function() {}; let msgInstance; const body = $('body'); const pearAdmin = { render : function(initConfig) { applyConfig(initConfig); }, menuRender : function(param) { sideMenu = pearMenu.render({ elem: 'sideMenu', async: param.menu.async !== undefined ? param.menu.async : true, theme: "dark-theme", height: '100%', method: param.menu.method, control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, // control defaultMenu: 0, accordion: param.menu.accordion, url: param.menu.data, data: param.menu.data, parseData: false, change: function() { compatible(); }, done: function() { sideMenu.isCollapse = param.menu.collapse; sideMenu.selectItem(param.menu.select); pearAdmin.collapse(param); } }); }, bodyRender : function(param) { body.on("click", ".refresh", function() { refresh(); }) if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { bodyTab = pearTab.render({ container: 'content', elem: 'contentTabs', roll: true, tool: true, width: '100%', height: '100%', session: param.tab.session, index: 0, tabMax: param.tab.max, preload: param.tab.preload, closeEvent: function(id) { sideMenu.selectItem(id); }, data: [{ id: param.tab.index.id, url: param.tab.index.href, title: param.tab.index.title, close: false }], success: function(id) { if (param.tab.session) { setTimeout(function() { sideMenu.selectItem(id); //bodyTab.positionTab(); }, 500) } } }); bodyTab.click(function(id) { if (!param.tab.keepState) { bodyTab.refresh(false); } //bodyTab.positionTab(); sideMenu.selectItem(id); }) sideMenu.click(function(dom, data, change) { bodyTab.addTabOnly({ id: data.menuId, title: data.menuTitle, url: data.menuUrl, icon: data.menuIcon, close: true }, 300); change !== false && compatible(); }) } else { bodyFrame = pearFrame.render({ elem: 'content', title: '首页', url: param.tab.index.href, width: '100%', height: '100%' }); sideMenu.click(function(dom, data) { bodyFrame.changePage(data.menuUrl, true); compatible() }) } }, keepLoad : function(param) { compatible() setTimeout(function() { $(".loader-main").fadeOut(200); }, param.other.keepLoad) }, themeRender : function(option) { if (option.theme.allowCustom === false) { $(".setting").remove(); } const colorId = localStorage.getItem("theme-color"); const currentColor = getColorById(colorId); localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); pearTheme.changeTheme(); let menu = localStorage.getItem("theme-menu"); if (menu === null) { menu = option.theme.defaultMenu; } else { if (option.theme.allowCustom === false) { menu = option.theme.defaultMenu; } } let header = localStorage.getItem("theme-header"); if (header === null) { header = option.theme.defaultHeader; } else { if (option.theme.allowCustom === false) { header = option.theme.defaultHeader; } } let banner = localStorage.getItem("theme-banner"); if (banner === null) { banner = option.theme.banner; } else { if (option.theme.allowCustom === false) { banner = option.theme.banner; } } let autoHead = localStorage.getItem("auto-head"); if (autoHead === null) { autoHead = option.other.autoHead; } else { if (option.theme.allowCustom === false) { autoHead = option.other.autoHead; } } let muiltTab = localStorage.getItem("muilt-tab"); if (muiltTab === null) { muiltTab = option.tab.enable; } else { if (option.theme.allowCustom === false) { muiltTab = option.tab.enable; } } let control = localStorage.getItem("control"); if (control === null) { control = option.menu.control; } else { if (option.theme.allowCustom === false) { control = option.menu.control; } } let footer = localStorage.getItem("footer"); if( footer === null) { footer = option.other.footer; }else{ if (option.theme.allowCustom === false) { footer = option.other.footer; } } localStorage.setItem("muilt-tab", muiltTab); localStorage.setItem("theme-banner", banner); localStorage.setItem("theme-menu", menu); localStorage.setItem("theme-header", header); localStorage.setItem("control", control); localStorage.setItem("footer", footer); this.menuSkin(menu); this.headerSkin(header); this.bannerSkin(banner); this.footer(footer); }, footer : function(footer){ const bodyDOM = $(".pear-admin .layui-body"); const footerDOM = $(".pear-admin .layui-footer"); if (footer === true || footer === "true") { footerDOM.removeClass("close"); bodyDOM.css("bottom", footerDOM.outerHeight()); } else { footerDOM.addClass("close"); bodyDOM.css("bottom", ""); } }, bannerSkin : function(theme) { const pearAdmin = $(".pear-admin"); pearAdmin.removeClass("banner-layout"); if (theme === true || theme === "true") { pearAdmin.addClass("banner-layout"); } }, collapse : function(param) { if (param.menu.collapse) { if ($(window).width() >= 768) { collapse() } } }, menuSkin : function(theme) { const pearAdmin = $(".pear-admin .layui-side"); pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); pearAdmin.addClass(theme); }, headerSkin : function(theme) { const pearAdmin = $(".pear-admin .layui-header"); pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); pearAdmin.removeClass("auto-theme"); pearAdmin.addClass(theme); }, logout : function(callback) { logout = callback; }, message : function(callback) { if (callback != null) { msgInstance.click(callback); } }, collapseSide : function() { collapse() }, refreshThis : function() { refresh() }, refresh : function(id) { $("iframe[id='"+ id +"']").attr('src', $("iframe[id='"+ id +"']").attr('src')); }, addTab : function(id, title, url) { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.addTabOnly({ id: id, title: title, url: url, icon: null, close: true }, 400); } else { return; } }, closeTab : function(id) { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.delTabByElem('content', id, function(currentId){ sideMenu.selectItem(currentId); }); } else { return; } }, closeCurrentTab : function() { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.delCurrentTabByElem('content', function(id){ sideMenu.selectItem(id); }); } else { return; } }, closeOtherTab : function() { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.delOtherTabByElem('content', function(id){ sideMenu.selectItem(id); }); } else { return; } }, closeAllTab : function() { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.delAllTabByElem('content', function(id){ sideMenu.selectItem(id); }); } else { return; } }, changeTabTitle : function(id, title) { bodyTab.changeTabTitleById('content', id ,title); }, changeIframe : function(id, title, url) { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { return; } else { sideMenu.selectItem(id); bodyFrame.changePage(url, true); } }, jump : function(id, title, url) { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { pearAdmin.addTab(id, title, url) } else { pearAdmin.changeIframe(id, title, url) } }, }; function refresh() { const refreshA = $(".refresh a"); refreshA.removeClass("layui-icon-refresh-1"); refreshA.addClass("layui-anim"); refreshA.addClass("layui-anim-rotate"); refreshA.addClass("layui-anim-loop"); refreshA.addClass("layui-icon-loading"); if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) bodyTab.refresh(true); else bodyFrame.refresh(true); setTimeout(function() { refreshA.addClass("layui-icon-refresh-1"); refreshA.removeClass("layui-anim"); refreshA.removeClass("layui-anim-rotate"); refreshA.removeClass("layui-anim-loop"); refreshA.removeClass("layui-icon-loading"); }, 600) } function collapse() { sideMenu.collapse(); const admin = $(".pear-admin"); const left = $(".layui-icon-spread-left") const right = $(".layui-icon-shrink-right") if (admin.is(".pear-mini")) { left.addClass("layui-icon-shrink-right") left.removeClass("layui-icon-spread-left") admin.removeClass("pear-mini"); sideMenu.isCollapse = false; } else { right.addClass("layui-icon-spread-left") right.removeClass("layui-icon-shrink-right") admin.addClass("pear-mini"); sideMenu.isCollapse = true; } } body.on('refresh', '.pear-menu', function () { sideMenu.refresh(); }) body.on("click", ".logout", function() { if (logout() && bodyTab) { bodyTab.clear(); } }) body.on("click", ".collapse,.pear-cover", function() { collapse(); }); body.on("click", ".menuSearch", function () { // 过滤菜单 const filterHandle = function (filterData, val) { if (!val) return []; const filteredMenus = []; filterData = $.extend(true, {}, filterData); $.each(filterData, function (index, item) { if (item.childlist && item.childlist.length) { var childlist = filterHandle(item.childlist, val) var obj = $.extend({}, item, { childlist: childlist }); if (childlist && childlist.length) { filteredMenus.push(obj); } else if (item.title.indexOf(val) >= 0) { item.childlist = []; // 父级匹配但子级不匹配,就去除子级 filteredMenus.push($.extend({}, item)); } } else if (item.title.indexOf(val) >= 0) { filteredMenus.push(item); } }) return filteredMenus; } // 树转路径 const tiledHandle = function (data) { const tiledMenus = []; const treeTiled = function (data, content) { let path = ""; const separator = " / "; // 上级路径 if (!content) content = ""; $.each(data, function (index, item) { if (item.childlist && item.childlist.length) { path += content + item.title + separator; const childPath = treeTiled(item.childlist, path); path += childPath; if (!childPath) path = ""; // 重置路径 } else { path += content + item.title tiledMenus.push({ path: path, info: item }); path = ""; //重置路径 } }) return path; }; treeTiled(data); return tiledMenus; } // 创建搜索列表 const createList = function (data) { let _listHtml = ''; $.each(data, function (index, item) { _listHtml += '