diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 2ecbb3cbc63b233363523f1133b7d58e1cdeaef4..00cb58abeceace7707f910a8a6122664e8585bad 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -130,7 +130,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm setTimeout(function() { sideMenu.selectItem(id); bodyTab.positionTab(); - }, 500) + }, 0) } } }); @@ -156,15 +156,26 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } else { bodyFrame = pearFrame.render({ elem: 'content', - title: '首页', - url: param.tab.index.href, + session: param.tab.session, width: '100%', - height: '100%' + height: '100%', + data: { + id: param.tab.index.id, + title: param.tab.index.title, + url: param.tab.index.href, + }, + done: function(data){ + if(param.tab.session){ + setTimeout(function () { + sideMenu.selectItem(data.id); + }, 0) + } + } }); sideMenu.click(function(dom, data) { - bodyFrame.changePage(data.menuUrl, true); - compatible() + bodyFrame.changePage(data.menuId, data.menuTitle, data.menuUrl, true); + compatible(); }) } } @@ -360,7 +371,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm return; } } - + this.closeOtherTab = function() { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { pearTab.delOtherTabByElem('content', function(id){ @@ -370,7 +381,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm return; } } - + this.closeAllTab = function() { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { pearTab.delAllTabByElem('content', function(id){ @@ -380,17 +391,17 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm return; } } - + this.changeTabTitle = function(id, title) { pearTab.changeTabTitleById('content', id ,title); } - + this.changeIframe = function(id, title, url) { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { return; } else { sideMenu.selectItem(id); - bodyFrame.changePage(url, true); + bodyFrame.changePage(id, title, url, true); } } @@ -401,7 +412,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm pearAdmin.changeIframe(id, title, url) } } - + this.fullScreen = function() { if ($(".fullScreen").hasClass("layui-icon-screen-restore")) { screenFun(2).then(function() { @@ -452,8 +463,9 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } body.on("click", ".logout", function() { - if (logout() && bodyTab) { - bodyTab.clear(); + if(logout()){ + if(bodyTab) bodyTab.clear(); + if(bodyFrame) bodyFrame.clear(); } }) @@ -556,7 +568,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm var $noData = $(".menu-search-no-data"); var $list = $(".menu-search-list"); var menuData = sideMenu.option.data; - + $layer.css("border-radius", "6px"); $input.off("focus").focus(); @@ -564,7 +576,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $input.off("input").on("input", debounce(function(){ var keywords = $input.val().trim(); var filteredMenus = filterHandle(menuData, keywords); - + if(filteredMenus.length){ var tiledMenus = tiledHandle(filteredMenus); var listHtml = createList(tiledMenus); @@ -587,7 +599,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm var menuTitle = $(this).attr("smenu-title"); var menuType = $(this).attr("smenu-type"); var openableWindow = menuType === "1" || menuType === 1; - + if(sideMenu.isCollapse){ collapse(); } @@ -607,7 +619,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $(this).removeClass("this"); }) - // 监听键盘事件 + // 监听键盘事件 // Enter:13 Spacebar:32 UpArrow:38 DownArrow:40 Esc:27 $(document).off("keydown").keydown(function (e) { if (e.keyCode === 13 || e.keyCode === 32) { @@ -653,8 +665,8 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } }) }); - - + + body.on("click", ".fullScreen", function() { if ($(this).hasClass("layui-icon-screen-restore")) { screenFun(2).then(function() { @@ -668,16 +680,19 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }); body.on("click", '[user-menu-id]', function() { + var id = $(this).attr("user-menu-id"); + var title = $(this).attr("user-menu-title"); + var url = $(this).attr("user-menu-url"); if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.addTabOnly({ - id: $(this).attr("user-menu-id"), - title: $(this).attr("user-menu-title"), - url: $(this).attr("user-menu-url"), + id: id, + title: title, + url: url, icon: "", close: true }, 300); } else { - bodyFrame.changePage($(this).attr("user-menu-url"), true); + bodyFrame.changePage(id, title, url, true); } }); @@ -1012,7 +1027,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); } } - + $(window).on('resize', debounce(function () { if (!sideMenu.isCollapse && $(window).width() <= 768) { collapse(); diff --git a/component/pear/module/frame.js b/component/pear/module/frame.js index a318ee7f9582da3f64a29367850c860cd873730c..4a1098d0b142989fdcc8ef15939d1d9cd6b6fd88 100644 --- a/component/pear/module/frame.js +++ b/component/pear/module/frame.js @@ -10,31 +10,45 @@ layui.define(['jquery', 'element'], function (exports) { pearFrame.prototype.render = function (opt) { var option = { elem: opt.elem, - url: opt.url, - title: opt.title, + data: opt.data, + session: opt.session, width: opt.width, height: opt.height, - done: opt.done ? opt.done : function () { console.log("菜单渲染成功"); } + done: opt.done ? opt.done : function (data) { console.log("菜单渲染成功"); } + } + if(option.session){ + var cacheInfo = frameCache(option.elem).get(); + if (cacheInfo) { + option.data = cacheInfo; + } + frameCache(option.elem, option.data).set(); } createFrameHTML(option); $("#" + option.elem).width(option.width); $("#" + option.elem).height(option.height); + option.done(option.data); return new pearFrame(option); } - pearFrame.prototype.changePage = function (url, loading) { + pearFrame.prototype.changePage = function (id, title, url, loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem + " iframe"); $frame.attr("src", url); frameLoading($frame, $frameLoad, loading); + if (this.option.session){ + frameCache(this.option.elem, { id: id, title: title, url: url }).set(); + } } - pearFrame.prototype.changePageByElement = function (elem, url, title, loading) { + pearFrame.prototype.changePageByElement = function (elem, id, url, title, loading) { var $frameLoad = $("#" + elem).find(".pear-frame-loading"); var $frame = $("#" + elem + " iframe"); $frame.attr("src", url); $("#" + elem + " .title").html(title); frameLoading($frame, $frameLoad, loading); + if (this.option.session) { + frameCache(this.option.elem, { id: id, title: title, url: url }).set(); + } } pearFrame.prototype.refresh = function (loading) { @@ -44,8 +58,12 @@ layui.define(['jquery', 'element'], function (exports) { frameLoading($frame, $frameLoad, loading); } + pearFrame.prototype.clear = function(){ + frameCache(this.option.elem).remove(); + } + function createFrameHTML(option) { - var iframe = ""; + var iframe = ""; var loading = '