layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert'], function(exports) { "use strict"; const $ = layui.jquery, form = layui.form, element = layui.element, yaml = layui.yaml, pearTab = layui.tab, convert = layui.convert, pearMenu = layui.menu, pearFrame = layui.frame, pearTheme = layui.theme, message = layui.message; let bodyFrame; let sideMenu; let bodyTab; let config; let logout = function() {}; let msgInstance; const body = $('body'); const pearAdmin = new function() { // 默认配置 let configType = 'yml'; let configPath = 'pear.config.yml'; this.setConfigPath = function(path) { configPath = path; } this.setConfigType = function(type) { configType = type; } this.setAvatar = function(url, username) { var image = new Image(); image.src = "admin/images/avatar.jpg"; image.onload = function() { $(".layui-nav-img").attr("src", convert.imageToBase64(image)); } $(".layui-nav-img").parent().append(username); } this.render = function(initConfig) { if (initConfig !== undefined) { applyConfig(initConfig); } else { applyConfig(pearAdmin.readConfig()); } } this.readConfig = function() { if (configType === "yml") { return yaml.load(configPath); } else { let data; $.ajax({ url: configPath, type: 'get', dataType: 'json', async: false, success: function(result) { data = result; } }) return data; } } this.messageRender = function(option) { var option = { elem: '.message', url: option.header.message, height: '250px' }; msgInstance = message.render(option); } this.logoRender = function(param) { $(".layui-logo .logo").attr("src", param.logo.image); $(".layui-logo .title").html(param.logo.title); } this.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: param.menu.control ? 'control' : false, // control defaultMenu: 0, accordion: param.menu.accordion, url: param.menu.data, data: param.menu.data, //async为false时,传入菜单数组 parseData: false, change: function() { compatible(); }, done: function() { sideMenu.selectItem(param.menu.select); } }); } this.bodyRender = function(param) { body.on("click", ".refresh", function() { 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 (param.tab.muiltTab) bodyTab.refresh(400); else bodyFrame.refresh(400); 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) }) if (param.tab.muiltTab) { bodyTab = pearTab.render({ elem: 'content', roll: true, tool: true, width: '100%', height: '100%', session: param.tab.session, index: 0, tabMax: param.tab.tabMax, 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) { bodyTab.addTabOnly({ id: data.menuId, title: data.menuTitle, url: data.menuUrl, icon: data.menuIcon, close: true }, 300); 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, data.menuPath, true); compatible() }) } } this.keepLoad = function(param) { compatible() setTimeout(function() { $(".loader-main").fadeOut(200); }, param.other.keepLoad) } this.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-context", currentColor.color); pearTheme.changeTheme(window, option.other.autoHead); let menu = localStorage.getItem("theme-menu"); if (menu === "null") { menu = option.theme.defaultMenu; } else { if (option.theme.allowCustom === false) { menu = option.theme.defaultMenu; } } localStorage.setItem("theme-menu", menu); this.menuSkin(menu); } this.menuSkin = function(theme) { const pearAdmin = $(".pear-admin"); pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); pearAdmin.addClass(theme); } this.logout = function(callback) { logout = callback; } this.message = function(callback) { if(callback!=null){ msgInstance.click(callback); }else{ msgInstance.click(messageTip); } } this.jump = function(id,title,url){ if (config.tab.muiltTab) { bodyTab.addTabOnly({id: id,title: title,url: url,icon: null,close: true}, 300); } else { sideMenu.selectItem(id); bodyFrame.changePage(url, title, true); } } }; var messageTip = function(id, title, context, form) { layer.open({ type: 1, title: '消息', //标题 area: ['390px', '330px'], //宽高 shade: 0.4, //遮罩透明度 content: "