3.0.3.RELEASE

develop
就眠仪式 2020-09-30 12:57:03 +08:00
parent 85bd06ea72
commit 1586fffb26
6 changed files with 93 additions and 118 deletions

View File

@ -12,24 +12,26 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
var bodyFrame; var bodyFrame;
var sideMenu; var sideMenu;
var bodyTab; var bodyTab;
var config;
var pearAdmin = new function() { var pearAdmin = new function() {
this.render = function(option) { this.render = function() {
readConfig().then(function(param){ readConfig().then(function(param) {
config = param;
pearAdmin.logoRender(param); pearAdmin.logoRender(param);
pearAdmin.menuRender(param,option); pearAdmin.menuRender(param);
pearAdmin.bodyRender(param); pearAdmin.bodyRender(param);
pearAdmin.themeRender(param); pearAdmin.themeRender(param);
pearAdmin.keepLoad(param); pearAdmin.keepLoad(param);
}) })
} }
this.logoRender = function(param) { this.logoRender = function(param) {
$(".layui-logo .logo").attr("src", param.logo.image); $(".layui-logo .logo").attr("src", param.logo.image);
$(".layui-logo .title").html(param.logo.title); $(".layui-logo .title").html(param.logo.title);
} }
this.menuRender = function(param,option) { this.menuRender = function(param) {
sideMenu = pearMenu.render({ sideMenu = pearMenu.render({
elem: 'sideMenu', elem: 'sideMenu',
async: true, async: true,
@ -38,15 +40,17 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
control: param.menu.control ? 'control' : false, // control control: param.menu.control ? 'control' : false, // control
defaultMenu: 0, defaultMenu: 0,
accordion: param.menu.accordion, accordion: param.menu.accordion,
url: param.menu.data+"?currentUser="+option.currentUser, url: param.menu.data,
parseData: false, parseData: false,
change:function(){ change: function() {
compatible(); compatible();
},
done() {
sideMenu.selectItem(param.menu.select);
} }
}) })
sideMenu.selectItem(param.menu.select);
} }
this.bodyRender = function(param) { this.bodyRender = function(param) {
if (param.tab.muiltTab) { if (param.tab.muiltTab) {
bodyTab = pearTab.render({ bodyTab = pearTab.render({
@ -68,8 +72,8 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
}] }]
}); });
bodyTab.click(function(id) { bodyTab.click(function(id) {
if(!param.tab.keepState){ if (!param.tab.keepState) {
bodyTab.refresh(false); bodyTab.refresh(false);
} }
bodyTab.positionTab(); bodyTab.positionTab();
sideMenu.selectItem(id); sideMenu.selectItem(id);
@ -128,22 +132,20 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
}) })
} }
} }
this.keepLoad = function(param) { this.keepLoad = function(param) {
compatible() compatible()
setTimeout(function() { setTimeout(function() {
$(".loader-main").fadeOut(200); $(".loader-main").fadeOut(200);
}, param.other.keepLoad) }, param.other.keepLoad)
} }
this.themeRender = function(option) { this.themeRender = function(option) {
if (option.theme.allowCustom == false) { if (option.theme.allowCustom == false) {
$(".setting").remove(); $(".setting").remove();
} }
var colorId = localStorage.getItem("theme-color"); var colorId = localStorage.getItem("theme-color");
var menu = localStorage.getItem("theme-menu"); var menu = localStorage.getItem("theme-menu");
console.log("主题标识:"+colorId);
console.log("菜单主题:"+menu);
var color = getColorById(colorId); var color = getColorById(colorId);
if (menu == "null") { if (menu == "null") {
menu = option.theme.defaultMenu; menu = option.theme.defaultMenu;
@ -157,13 +159,13 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
this.colorSet(color.color); this.colorSet(color.color);
this.menuSkin(menu); this.menuSkin(menu);
} }
this.menuSkin = function(theme) { this.menuSkin = function(theme) {
$(".pear-admin").removeClass("light-theme"); $(".pear-admin").removeClass("light-theme");
$(".pear-admin").removeClass("dark-theme"); $(".pear-admin").removeClass("dark-theme");
$(".pear-admin").addClass(theme); $(".pear-admin").addClass(theme);
} }
this.colorSet = function(color) { this.colorSet = function(color) {
var style = ''; var style = '';
// 自 定 义 菜 单 配 色 // 自 定 义 菜 单 配 色
@ -238,9 +240,9 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
}); });
} }
}); });
$("body").on("click",'[user-menu-id]',function(){ $("body").on("click", '[user-menu-id]', function() {
if(getData().tab.muiltTab){ if (config.tab.muiltTab) {
bodyTab.addTabOnly({ bodyTab.addTabOnly({
id: $(this).attr("user-menu-id"), id: $(this).attr("user-menu-id"),
title: $(this).attr("user-menu-title"), title: $(this).attr("user-menu-title"),
@ -248,7 +250,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
icon: "", icon: "",
close: true close: true
}, 300); }, 300);
}else{ } else {
bodyFrame.changePage($(this).attr("user-menu-url"), "", true); bodyFrame.changePage($(this).attr("user-menu-url"), "", true);
} }
}) })
@ -278,7 +280,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
'<ul>\n' + bgColorHtml + '</ul>\n' + '<ul>\n' + bgColorHtml + '</ul>\n' +
'</div>\n' + '</div>\n' +
'</div>'; '</div>';
layer.open({ layer.open({
type: 1, type: 1,
offset: 'r', offset: 'r',
@ -293,6 +295,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
content: html + buildColorHtml() + buildLinkHtml(), content: html + buildColorHtml() + buildLinkHtml(),
success: function(layero, index) { success: function(layero, index) {
form.render(); form.render();
var color = localStorage.getItem("theme-color"); var color = localStorage.getItem("theme-color");
var menu = localStorage.getItem("theme-menu"); var menu = localStorage.getItem("theme-menu");
@ -317,7 +320,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
} }
}); });
}) })
$('body').on('click', '[data-select-bgcolor]', function() { $('body').on('click', '[data-select-bgcolor]', function() {
var theme = $(this).attr('data-select-bgcolor'); var theme = $(this).attr('data-select-bgcolor');
$('[data-select-bgcolor]').removeClass("layui-this"); $('[data-select-bgcolor]').removeClass("layui-this");
@ -325,7 +328,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
localStorage.setItem("theme-menu", theme); localStorage.setItem("theme-menu", theme);
pearAdmin.menuSkin(theme); pearAdmin.menuSkin(theme);
}); });
$('body').on('click', '.select-color-item', function() { $('body').on('click', '.select-color-item', function() {
$(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); $(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok");
$(this).addClass("layui-icon").addClass("layui-icon-ok"); $(this).addClass("layui-icon").addClass("layui-icon-ok");
@ -334,38 +337,27 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
var color = getColorById(colorId); var color = getColorById(colorId);
pearAdmin.colorSet(color.color); pearAdmin.colorSet(color.color);
}); });
function getData() { function readConfig() {
$.ajaxSettings.async = false; var defer = $.Deferred();
var data = null;
$.getJSON("pear.config.json?fresh=" + Math.random(), function(result) { $.getJSON("pear.config.json?fresh=" + Math.random(), function(result) {
data = result; defer.resolve(result)
}); });
$.ajaxSettings.async = true; return defer.promise();
return data;
}
function readConfig(){
var defer = $.Deferred();
$.getJSON("pear.config.json?fresh=" + Math.random(), function(result) {
defer.resolve(result)
});
return defer.promise();
} }
function getColorById(id) { function getColorById(id) {
var color; var color;
var flag = false; var flag = false;
var data = getData(); $.each(config.colors, function(i, value) {
$.each(data.colors, function(i, value) {
if (value.id == id) { if (value.id == id) {
color = value; color = value;
flag = true; flag = true;
} }
}) })
if (flag == false || data.theme.allowCustom == false) { if (flag == false || config.theme.allowCustom == false) {
$.each(data.colors, function(i, value) { $.each(config.colors, function(i, value) {
if (value.id == data.theme.defaultColor) { if (value.id == config.theme.defaultColor) {
color = value; color = value;
} }
}) })
@ -375,7 +367,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
function buildLinkHtml() { function buildLinkHtml() {
var links = ""; var links = "";
$.each(getData().links, function(i, value) { $.each(config.links, function(i, value) {
links += '<a class="more-menu-item" href="' + value.href + '" target="_blank">' + links += '<a class="more-menu-item" href="' + value.href + '" target="_blank">' +
'<i class="' + value.icon + '" style="font-size: 19px;"></i> ' + value.title + '<i class="' + value.icon + '" style="font-size: 19px;"></i> ' + value.title +
'</a>' '</a>'
@ -385,14 +377,14 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
function buildColorHtml() { function buildColorHtml() {
var colors = ""; var colors = "";
$.each(getData().colors, function(i, value) { $.each(config.colors, function(i, value) {
colors += "<span class='select-color-item' color-id='" + value.id + "' style='background-color:" + value.color + colors += "<span class='select-color-item' color-id='" + value.id + "' style='background-color:" + value.color +
";'></span>"; ";'></span>";
}) })
return "<div class='select-color'><div class='select-color-title'>主题色</div><div class='select-color-content'>" + return "<div class='select-color'><div class='select-color-title'>主题色</div><div class='select-color-content'>" +
colors + "</div></div>" colors + "</div></div>"
} }
function compatible() { function compatible() {
if ($(window).width() <= 768) { if ($(window).width() <= 768) {
sideMenu.collaspe(); sideMenu.collaspe();
@ -407,7 +399,7 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
} }
} }
} }
function screenFun(num) { function screenFun(num) {
num = num || 1; num = num || 1;
num = num * 1; num = num * 1;
@ -440,7 +432,6 @@ layui.define(['table', 'jquery', 'element', 'form', 'tab', 'menu', 'frame'],
res("返回值"); res("返回值");
}); });
} }
exports('admin', pearAdmin); exports('admin', pearAdmin);
}) })

View File

@ -1,9 +1,3 @@
/**
* Layui图标选择器
* @author wujiawei0926@yeah.net
* @version 1.1
*/
layui.define(['laypage', 'form'], function (exports) { layui.define(['laypage', 'form'], function (exports) {
"use strict"; "use strict";
@ -17,9 +11,6 @@ layui.define(['laypage', 'form'], function (exports) {
BODY = 'body', BODY = 'body',
TIPS = '请选择图标'; TIPS = '请选择图标';
/**
* 渲染组件
*/
IconPicker.prototype.render = function(options){ IconPicker.prototype.render = function(options){
var opts = options, var opts = options,
// DOM选择器 // DOM选择器

View File

@ -25,58 +25,56 @@ layui.define(['table', 'jquery', 'element'], function(exports) {
theme: opt.theme, theme: opt.theme,
data: opt.data ? opt.data : [], data: opt.data ? opt.data : [],
change: opt.change ? opt.change : function() { change: opt.change ? opt.change : function() {
console.log("切换")
}, },
done: opt.done ? opt.done : function() {} done: opt.done ? opt.done : function() {}
} }
// 根 据 请 求 方 式 获 取 数 据
if (option.async) { if (option.async) {
option.data = getData(option.url); getData(option.url).then(function(data){
if (option.parseData != false) { option.data = data;
option.parseData(option.data); if (option.parseData != false) {
} option.parseData(option.data);
}
if (option.data.length > 0) {
if (option.control != false) {
createMenuAndControl(option);
} else {
createMenu(option);
}
}
element.init();
downShow(option);
option.done();
});
} }
return new pearMenu(opt);
if (option.data.length > 0) {
if (option.control != false) {
createMenuAndControl(option);
} else {
createMenu(option);
}
}
element.init();
downShow(option);
option.done();
return new pearMenu(option);
} }
pearMenu.prototype.click = function(clickEvent) { pearMenu.prototype.click = function(clickEvent) {
var _this = this; var _this = this;
$("#" + _this.option.elem + " .site-demo-active").parent().click(function() { $("body").on("click","#" + _this.option.elem + " .site-demo-active",function(){
var dom = $(this).children(".site-demo-active"); var dom = $(this);
var data = { var data = {
menuId: dom.attr("menu-id"), menuId: dom.attr("menu-id"),
menuTitle: dom.attr("menu-title"), menuTitle: dom.attr("menu-title"),
menuPath: dom.attr("menu-title"), menuPath: dom.attr("menu-title"),
menuIcon: dom.attr("menu-icon"), menuIcon: dom.attr("menu-icon"),
menuUrl: dom.attr("menu-url") menuUrl: dom.attr("menu-url")
}; };
var doms = hash(dom); var doms = hash(dom);
if (doms.text() != '') { if (doms.text() != '') {
data['menuPath'] = doms.find("span").text() + " / " + data['menuPath']; data['menuPath'] = doms.find("span").text() + " / " + data['menuPath'];
} }
var domss = hash(doms); var domss = hash(doms);
if (domss.text() != '') { if (domss.text() != '') {
data['menuPath'] = domss.find("span").text() + " / " + data['menuPath']; data['menuPath'] = domss.find("span").text() + " / " + data['menuPath'];
} }
var domsss = hash(domss); var domsss = hash(domss);
if (domsss.text() != '') { if (domsss.text() != '') {
data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath']; data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath'];
} }
clickEvent(dom, data); clickEvent(dom, data);
}); })
} }
function hash(dom) { function hash(dom) {
@ -91,7 +89,6 @@ layui.define(['table', 'jquery', 'element'], function(exports) {
} }
pearMenu.prototype.selectItem = function(pearId) { pearMenu.prototype.selectItem = function(pearId) {
if (this.option.control != false) { if (this.option.control != false) {
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".layui-side-scroll ").find("ul").css({ $("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".layui-side-scroll ").find("ul").css({
display: "none" display: "none"
@ -144,19 +141,15 @@ layui.define(['table', 'jquery', 'element'], function(exports) {
} }
} }
/** 同 步 请 求 获 取 数 据 */ function getData(url){
function getData(url) { var defer = $.Deferred();
$.ajaxSettings.async = false; $.get(url+"?fresh=" + Math.random(), function(result) {
var data = null; defer.resolve(result)
$.get(url+"&fresh=" + Math.random(), function(result) {
data = result;
}); });
$.ajaxSettings.async = true; return defer.promise();
return data;
} }
function createMenu(option) { function createMenu(option) {
var menuHtml = '<ul lay-filter="' + option.elem + var menuHtml = '<ul lay-filter="' + option.elem +
'" class="layui-nav arrow pear-menu layui-nav-tree pear-nav-tree">' '" class="layui-nav arrow pear-menu layui-nav-tree pear-nav-tree">'

View File

@ -7,14 +7,14 @@
"data": "admin/data/menu.json", "data": "admin/data/menu.json",
"accordion": true, "accordion": true,
"control": false, "control": false,
"select": "0" "select": "10"
}, },
"tab": { "tab": {
"muiltTab": true, "muiltTab": true,
"keepState": true, "keepState": true,
"tabMax": 30, "tabMax": 30,
"index": { "index": {
"id": "0", "id": "10",
"href": "view/console/console1.html", "href": "view/console/console1.html",
"title": "首页" "title": "首页"
} }

View File

@ -6,7 +6,6 @@
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css"> <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
<link rel="stylesheet" href="../../admin/css/other/icon.css"> <link rel="stylesheet" href="../../admin/css/other/icon.css">
<link rel="stylesheet" href="../../component/pear/css/pear.css" /> <link rel="stylesheet" href="../../component/pear/css/pear.css" />
<script src="iconfont.js"></script>
<!-- jQuery --> <!-- jQuery -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script> <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
<!-- 代码高亮 --> <!-- 代码高亮 -->

View File

@ -208,6 +208,7 @@
<script src="../../component/pear/pear.js"></script> <script src="../../component/pear/pear.js"></script>
<script> <script>
layui.use(['select','code','element'], function() { layui.use(['select','code','element'], function() {
let select = layui.select;
layui.code(); layui.code();
}); });