1
0
mirror of https://gitee.com/zhc02/timely_service.git synced 2025-08-01 12:17:59 +08:00
2019-12-16 17:31:10 +08:00

942 lines
38 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* date:2019/06/10
* author:Mr.Chung
* description:layuimini 框架扩展
*/
layui.define(["element", "jquery"], function (exports) {
var element = layui.element,
$ = layui.$,
layer = layui.layer;
// 判断是否在web容器中打开
if (!/http(s*):\/\//.test(location.href)) {
return layer.alert("请先将项目部署至web容器Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示");
}
layuimini = new function () {
/**
* 系统配置
* @param name
* @returns {{BgColorDefault: number, urlSuffixDefault: boolean}|*}
*/
this.config = function (name) {
var config = {
urlHashLocation: true, // URL地址hash定位
urlSuffixDefault: true, // URL后缀
BgColorDefault: 0, // 默认皮肤0开始
checkUrlDefault: false, // 是否判断URL有效
};
if (name == undefined) {
return config;
} else {
return config[name];
}
};
/**
* 初始化
* @param url
*/
this.init = function (url) {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
layuimini.initBgColor();
layuimini.initDevice();
$.getJSON(url, function (data, status) {
if (data == null) {
layuimini.msg_error('暂无菜单信息');
} else {
layuimini.initHome(data.homeInfo);
layuimini.initLogo(data.logoInfo);
layuimini.initClear(data.clearInfo);
layuimini.initMenu(data.menuInfo);
layuimini.initTab();
}
}).fail(function () {
layuimini.msg_error('菜单接口有误');
});
layer.close(loading);
};
/**
* 初始化设备端
*/
this.initDevice = function () {
if (layuimini.checkMobile()) {
$('.layuimini-tool i').attr('data-side-fold', 0);
$('.layuimini-tool i').attr('class', 'fa fa-indent');
$('.layui-layout-body').attr('class', 'layui-layout-body layuimini-mini');
}
};
/**
* 初始化首页信息
* @param data
*/
this.initHome = function (data) {
sessionStorage.setItem('layuiminiHomeHref', data.href);
$('#layuiminiHomeTabId').html('<i class="' + data.icon + '"></i> <span>' + data.title + '</span>');
$('#layuiminiHomeTabId').attr('lay-id', data.href);
$('#layuiminiHomeTabIframe').html('<iframe width="100%" height="100%" frameborder="0" src="' + data.href + '"></iframe>');
};
/**
* 初始化logo信息
* @param data
*/
this.initLogo = function (data) {
var html = '<a href="' + data.href + '">\n' +
'<img src="' + data.image + '" alt="logo">\n' +
'<h1>' + data.title + '</h1>\n' +
'</a>';
$('.layui-layout-admin .layui-logo').html(html);
};
/**
* 初始化清理缓存
* @param data
*/
this.initClear = function (data) {
$('.layuimini-clear').attr('data-href', data.clearUrl);
};
/**
* 初始化背景色
*/
this.initBgColor = function () {
var bgcolorId = sessionStorage.getItem('layuiminiBgcolorId');
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
bgcolorId = layuimini.config('BgColorDefault');
}
var bgcolorData = layuimini.bgColorConfig(bgcolorId);
var styleHtml = '.layui-layout-admin .layui-header{background-color:' + bgcolorData.headerRight + '!important;}\n' +
'.layui-header>ul>.layui-nav-item.layui-this,.layuimini-tool i:hover{background-color:' + bgcolorData.headerRightThis + '!important;}\n' +
'.layui-layout-admin .layui-logo {background-color:' + bgcolorData.headerLogo + '!important;}\n' +
'.layui-side.layui-bg-black,.layui-side.layui-bg-black>.layui-left-menu>ul {background-color:' + bgcolorData.menuLeft + '!important;}\n' +
'.layui-left-menu .layui-nav .layui-nav-child a:hover:not(.layui-this) {background-color:' + bgcolorData.menuLeftHover + ';}\n' +
'.layui-layout-admin .layui-nav-tree .layui-this, .layui-layout-admin .layui-nav-tree .layui-this>a, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this a {\n' +
' background-color: ' + bgcolorData.menuLeftThis + ' !important;\n' +
'}';
$('#layuimini-bg-color').html(styleHtml);
};
/**
* 初始化菜单栏
* @param data
*/
this.initMenu = function (data) {
var headerMenuHtml = '',
headerMobileMenuHtml = '',
leftMenuHtml = '',
headerMenuCheckDefault = 'layui-this',
leftMenuCheckDefault = 'layui-this';
window.menuParameId = 1;
$.each(data, function (key, val) {
headerMenuHtml += '<li class="layui-nav-item ' + headerMenuCheckDefault + '" id="' + key + 'HeaderId" data-menu="' + key + '"> <a href="javascript:;"><i class="' + val.icon + '"></i> ' + val.title + '</a> </li>\n';
headerMobileMenuHtml += '<dd><a href="javascript:;" id="' + key + 'HeaderId" data-menu="' + key + '"><i class="' + val.icon + '"></i> ' + val.title + '</a></dd>\n';
leftMenuHtml += '<ul class="layui-nav layui-nav-tree layui-left-nav-tree ' + leftMenuCheckDefault + '" id="' + key + '">\n';
var menuList = val.child;
$.each(menuList, function (index, menu) {
leftMenuHtml += '<li class="layui-nav-item">\n';
if (menu.child != undefined && menu.child != []) {
leftMenuHtml += '<a href="javascript:;" class="layui-menu-tips" ><i class="' + menu.icon + '"></i><span class="layui-left-nav"> ' + menu.title + '</span> </a>';
var buildChildHtml = function (html, child, menuParameId) {
html += '<dl class="layui-nav-child">\n';
$.each(child, function (childIndex, childMenu) {
html += '<dd>\n';
if (childMenu.child != undefined && childMenu.child != []) {
html += '<a href="javascript:;" class="layui-menu-tips" ><i class="' + childMenu.icon + '"></i><span class="layui-left-nav"> ' + childMenu.title + '</span></a>';
html = buildChildHtml(html, childMenu.child, menuParameId);
} else {
html += '<a href="javascript:;" class="layui-menu-tips" data-type="tabAdd" data-tab-mpi="m-p-i-' + menuParameId + '" data-tab="' + childMenu.href + '" target="' + childMenu.target + '"><i class="' + childMenu.icon + '"></i><span class="layui-left-nav"> ' + childMenu.title + '</span></a>\n';
menuParameId++;
window.menuParameId = menuParameId;
}
html += '</dd>\n';
});
html += '</dl>\n';
return html;
};
leftMenuHtml = buildChildHtml(leftMenuHtml, menu.child, menuParameId);
} else {
leftMenuHtml += '<a href="javascript:;" class="layui-menu-tips" data-type="tabAdd" data-tab-mpi="m-p-i-' + menuParameId + '" data-tab="' + menu.href + '" target="' + menu.target + '"><i class="' + menu.icon + '"></i><span class="layui-left-nav"> ' + menu.title + '</span></a>\n';
menuParameId++;
}
leftMenuHtml += '</li>\n';
});
leftMenuHtml += '</ul>\n';
headerMenuCheckDefault = '';
leftMenuCheckDefault = 'layui-hide';
});
$('.layui-header-pc-menu').html(headerMenuHtml); //电脑
$('.layui-header-mini-menu').html(headerMobileMenuHtml); //手机
$('.layui-left-menu').html(leftMenuHtml);
element.init();
};
/**
* 初始化选项卡
*/
this.initTab = function () {
var locationHref = window.location.href;
var urlArr = locationHref.split("#");
if (urlArr.length >= 2) {
var href = urlArr.pop();
// 判断链接是否有效
var checkUrl = layuimini.checkUrl(href);
if (checkUrl != true) {
return layuimini.msg_error(checkUrl);
}
// 判断tab是否存在
var checkTab = layuimini.checkTab(href);
if (!checkTab) {
var title = href,
tabId = href;
$("[data-tab]").each(function () {
var checkHref = $(this).attr("data-tab");
// 判断是否带参数了
if (layuimini.config('urlSuffixDefault')) {
if (href.indexOf("mpi=") > -1) {
var menuParameId = $(this).attr('data-tab-mpi');
if (checkHref.indexOf("?") > -1) {
checkHref = checkHref + '&mpi=' + menuParameId;
} else {
checkHref = checkHref + '?mpi=' + menuParameId;
}
}
}
if (checkHref == tabId) {
title = $(this).html();
title = title.replace('style="display: none;"', '');
// 自动展开菜单栏
var addMenuClass = function ($element, type) {
if (type == 1) {
$element.addClass('layui-this');
if ($element.attr('class') != 'layui-nav-item layui-this') {
addMenuClass($element.parent().parent(), 2);
} else {
var moduleId = $element.parent().attr('id');
$(".layui-header-menu li").attr('class', 'layui-nav-item');
$("#" + moduleId + "HeaderId").addClass("layui-this");
$(".layui-left-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide');
$("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this');
}
} else {
$element.addClass('layui-nav-itemed');
if ($element.attr('class') != 'layui-nav-item layui-nav-itemed') {
addMenuClass($element.parent().parent(), 2);
} else {
var moduleId = $element.parent().attr('id');
$(".layui-header-menu li").attr('class', 'layui-nav-item');
$("#" + moduleId + "HeaderId").addClass("layui-this");
$(".layui-left-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide');
$("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this');
}
}
};
addMenuClass($(this).parent(), 1);
}
});
var layuiminiHomeTab = $('#layuiminiHomeTab').attr('lay-id'),
layuiminiHomeHref = sessionStorage.getItem('layuiminiHomeHref');
// 非菜单打开的tab窗口
if (href == title) {
var layuiminiTabInfo = JSON.parse(sessionStorage.getItem("layuiminiTabInfo"));
if (layuiminiTabInfo != null) {
var check = layuiminiTabInfo[tabId];
if (check != undefined || check != null) {
title = check['title'];
}
}
}
if (layuiminiHomeTab != href && layuiminiHomeHref != href) {
layuimini.addTab(tabId, href, title, true);
layuimini.changeTab(tabId);
}
}
}
if (layuimini.config('urlHashLocation')) {
layuimini.hashTab();
}
};
/**
* 配色方案配置项(默认选中第一个方案)
* @param bgcolorId
*/
this.bgColorConfig = function (bgcolorId) {
var bgColorConfig = [
{
headerRight: '#1aa094',
headerRightThis: '#197971',
headerLogo: '#243346',
menuLeft: '#2f4056',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#23262e',
headerRightThis: '#0c0c0c',
headerLogo: '#0c0c0c',
menuLeft: '#23262e',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#ffa4d1',
headerRightThis: '#bf7b9d',
headerLogo: '#e694bd',
menuLeft: '#1f1f1f',
menuLeftThis: '#ffa4d1',
menuLeftHover: '#1f1f1f',
},
{
headerRight: '#1aa094',
headerRightThis: '#197971',
headerLogo: '#0c0c0c',
menuLeft: '#23262e',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#1e9fff',
headerRightThis: '#0069b7',
headerLogo: '#0c0c0c',
menuLeft: '#1f1f1f',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#ffb800',
headerRightThis: '#d09600',
headerLogo: '#243346',
menuLeft: '#2f4056',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#e82121',
headerRightThis: '#ae1919',
headerLogo: '#0c0c0c',
menuLeft: '#1f1f1f',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#963885',
headerRightThis: '#772c6a',
headerLogo: '#243346',
menuLeft: '#2f4056',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#1e9fff',
headerRightThis: '#0069b7',
headerLogo: '#0069b7',
menuLeft: '#1f1f1f',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#ffb800',
headerRightThis: '#d09600',
headerLogo: '#d09600',
menuLeft: '#2f4056',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#e82121',
headerRightThis: '#ae1919',
headerLogo: '#d91f1f',
menuLeft: '#1f1f1f',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
},
{
headerRight: '#963885',
headerRightThis: '#772c6a',
headerLogo: '#772c6a',
menuLeft: '#2f4056',
menuLeftThis: '#1aa094',
menuLeftHover: '#3b3f4b',
}
];
if (bgcolorId == undefined) {
return bgColorConfig;
} else {
return bgColorConfig[bgcolorId];
}
};
/**
* 构建背景颜色选择
* @returns {string}
*/
this.buildBgColorHtml = function () {
var html = '';
var bgcolorId = sessionStorage.getItem('layuiminiBgcolorId');
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
bgcolorId = 0;
}
var bgColorConfig = layuimini.bgColorConfig();
$.each(bgColorConfig, function (key, val) {
if (key == bgcolorId) {
html += '<li class="layui-this" data-select-bgcolor="' + key + '">\n';
} else {
html += '<li data-select-bgcolor="' + key + '">\n';
}
html += '<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">\n' +
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: ' + val.headerLogo + ';"></span><span style="display:block; width: 80%; float: left; height: 12px; background: ' + val.headerRight + ';"></span></div>\n' +
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: ' + val.menuLeft + ';"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>\n' +
'</a>\n' +
'</li>';
});
return html;
};
/**
* 判断窗口是否已打开
* @param tabId
**/
this.checkTab = function (tabId, isIframe) {
// 判断选项卡上是否有
var checkTab = false;
if (isIframe == undefined || isIframe == false) {
$(".layui-tab-title li").each(function () {
checkTabId = $(this).attr('lay-id');
if (checkTabId != null && checkTabId == tabId) {
checkTab = true;
}
});
} else {
parent.layui.$(".layui-tab-title li").each(function () {
checkTabId = $(this).attr('lay-id');
if (checkTabId != null && checkTabId == tabId) {
checkTab = true;
}
});
}
if (checkTab == false) {
return false;
}
// 判断sessionStorage是否有
var layuiminiTabInfo = JSON.parse(sessionStorage.getItem("layuiminiTabInfo"));
if (layuiminiTabInfo == null) {
layuiminiTabInfo = {};
}
var check = layuiminiTabInfo[tabId];
if (check == undefined || check == null) {
return false;
}
return true;
};
/**
* 打开新窗口
* @param tabId
* @param href
* @param title
*/
this.addTab = function (tabId, href, title, addSession) {
if (addSession == undefined || addSession == true) {
var layuiminiTabInfo = JSON.parse(sessionStorage.getItem("layuiminiTabInfo"));
if (layuiminiTabInfo == null) {
layuiminiTabInfo = {};
}
layuiminiTabInfo[tabId] = {href: href, title: title}
sessionStorage.setItem("layuiminiTabInfo", JSON.stringify(layuiminiTabInfo));
}
element.tabAdd('layuiminiTab', {
title: title + '<i data-tab-close="" class="layui-icon layui-unselect layui-tab-close">ဆ</i>' //用于演示
, content: '<iframe width="100%" height="100%" frameborder="0" src="' + href + '"></iframe>'
, id: tabId
});
};
/**
* 删除窗口
* @param tabId
* @param isParent
*/
this.delTab = function (tabId, isParent) {
var layuiminiTabInfo = JSON.parse(sessionStorage.getItem("layuiminiTabInfo"));
if (layuiminiTabInfo != null) {
delete layuiminiTabInfo[tabId];
sessionStorage.setItem("layuiminiTabInfo", JSON.stringify(layuiminiTabInfo))
}
if (isParent === true) {
parent.layui.element.tabDelete('layuiminiTab', tabId);
} else {
element.tabDelete('layuiminiTab', tabId);
}
};
/**
* 在iframe层关闭当前tab方法
*/
this.closeCurrentTab = function(){
var ele = $("#top_tabs li.layui-this", parent.document);
if (ele.length > 0) {
var layId = $(ele[0]).attr('lay-id');
layuimini.delTab(layId,true);
}
};
/**
* 切换选项卡
**/
this.changeTab = function (tabId) {
element.tabChange('layuiminiTab', tabId);
};
/**
* Hash地址的定位
*/
this.hashTab = function () {
var layId = location.hash.replace(/^#/, '');
element.tabChange('layuiminiTab', layId);
element.on('tab(layuiminiTab)', function (elem) {
location.hash = $(this).attr('lay-id');
});
};
/**
* 判断是否为手机
*/
this.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 > 768) {
return false;
} else {
return true;
}
};
/**
* 判断链接是否有效
* @param url
* @returns {boolean}
*/
this.checkUrl = function (url) {
if (!layuimini.config('checkUrlDefault')) {
return true;
}
var msg = true;
$.ajax({
url: url,
type: 'get',
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
async: false,
error: function (xhr, textstatus, thrown) {
msg = 'Status:' + xhr.status + '' + xhr.statusText + ',请稍后再试!';
}
});
return msg;
};
/**
* 成功
* @param title
* @returns {*}
*/
this.msg_success = function (title) {
return layer.msg(title, {icon: 1, shade: this.shade, scrollbar: false, time: 2000, shadeClose: true});
};
/**
* 失败
* @param title
* @returns {*}
*/
this.msg_error = function (title) {
return layer.msg(title, {icon: 2, shade: this.shade, scrollbar: false, time: 3000, shadeClose: true});
};
/**
* 选项卡滚动
*/
this.tabRoll = function () {
$(window).on("resize", function (event) {
var topTabsBox = $("#top_tabs_box"),
topTabsBoxWidth = $("#top_tabs_box").width(),
topTabs = $("#top_tabs"),
topTabsWidth = $("#top_tabs").width(),
tabLi = topTabs.find("li.layui-this"),
top_tabs = document.getElementById("top_tabs"),
event = event || window.event;
if (topTabsWidth > topTabsBoxWidth) {
if (tabLi.position().left > topTabsBoxWidth || tabLi.position().left + topTabsBoxWidth > topTabsWidth) {
topTabs.css("left", topTabsBoxWidth - topTabsWidth);
} else {
topTabs.css("left", -tabLi.position().left);
}
//拖动效果
var flag = false;
var cur = {
x: 0,
y: 0
}
var nx, dx, x;
function down(event) {
flag = true;
var touch;
if (event.touches) {
touch = event.touches[0];
} else {
touch = event;
}
cur.x = touch.clientX;
dx = top_tabs.offsetLeft;
}
function move(event) {
var self = this;
if (flag) {
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
var touch;
if (event.touches) {
touch = event.touches[0];
} else {
touch = event;
}
nx = touch.clientX - cur.x;
x = dx + nx;
if (x > 0) {
x = 0;
} else {
if (x < topTabsBoxWidth - topTabsWidth) {
x = topTabsBoxWidth - topTabsWidth;
} else {
x = dx + nx;
}
}
top_tabs.style.left = x + "px";
//阻止页面的滑动默认事件
document.addEventListener("touchmove", function () {
event.preventDefault();
}, false);
}
}
//鼠标释放时候的函数
function end() {
flag = false;
}
//pc端拖动效果
topTabs.on("mousedown", down);
topTabs.on("mousemove", move);
$(document).on("mouseup", end);
//移动端拖动效果
topTabs.on("touchstart", down);
topTabs.on("touchmove", move);
topTabs.on("touchend", end);
} else {
//移除pc端拖动效果
topTabs.off("mousedown", down);
topTabs.off("mousemove", move);
topTabs.off("mouseup", end);
//移除移动端拖动效果
topTabs.off("touchstart", down);
topTabs.off("touchmove", move);
topTabs.off("touchend", end);
topTabs.removeAttr("style");
return false;
}
}).resize();
};
};
/**
* 关闭选项卡
**/
$('body').on('click', '[data-tab-close]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
$parent = $(this).parent();
tabId = $parent.attr('lay-id');
if (tabId != undefined || tabId != null) {
layuimini.delTab(tabId);
}
layuimini.tabRoll();
layer.close(loading);
});
/**
* 打开新窗口
*/
$('body').on('click', '[data-tab]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
var tabId = $(this).attr('data-tab'),
href = $(this).attr('data-tab'),
title = $(this).html(),
target = $(this).attr('target');
if (target == '_blank') {
layer.close(loading);
window.open(href, "_blank");
return false;
}
title = title.replace('style="display: none;"', '');
// 拼接参数
if (layuimini.config('urlSuffixDefault')) {
var menuParameId = $(this).attr('data-tab-mpi');
if (href.indexOf("?") > -1) {
href = href + '&mpi=' + menuParameId;
tabId = href;
} else {
href = href + '?mpi=' + menuParameId;
tabId = href;
}
}
// 判断链接是否有效
var checkUrl = layuimini.checkUrl(href);
if (checkUrl != true) {
return layuimini.msg_error(checkUrl);
}
if (tabId == null || tabId == undefined) {
tabId = new Date().getTime();
}
// 判断该窗口是否已经打开过
var checkTab = layuimini.checkTab(tabId);
if (!checkTab) {
layuimini.addTab(tabId, href, title, true);
}
element.tabChange('layuiminiTab', tabId);
layuimini.initDevice();
layuimini.tabRoll();
layer.close(loading);
});
/**
* 在iframe子菜单上打开新窗口
*/
$('body').on('click', '[data-iframe-tab]', function () {
var loading = parent.layer.load(0, {shade: false, time: 2 * 1000});
var tabId = $(this).attr('data-iframe-tab'),
href = $(this).attr('data-iframe-tab'),
icon = $(this).attr('data-icon'),
title = $(this).attr('data-title'),
target = $(this).attr('target');
if (target == '_blank') {
parent.layer.close(loading);
window.open(href, "_blank");
return false;
}
title = '<i class="' + icon + '"></i><span class="layui-left-nav"> ' + title + '</span>';
if (tabId == null || tabId == undefined) {
tabId = new Date().getTime();
}
// 判断该窗口是否已经打开过
var checkTab = layuimini.checkTab(tabId, true);
if (!checkTab) {
var layuiminiTabInfo = JSON.parse(sessionStorage.getItem("layuiminiTabInfo"));
if (layuiminiTabInfo == null) {
layuiminiTabInfo = {};
}
layuiminiTabInfo[tabId] = {href: href, title: title}
sessionStorage.setItem("layuiminiTabInfo", JSON.stringify(layuiminiTabInfo));
parent.layui.element.tabAdd('layuiminiTab', {
title: title + '<i data-tab-close="" class="layui-icon layui-unselect layui-tab-close">ဆ</i>' //用于演示
, content: '<iframe width="100%" height="100%" frameborder="0" src="' + href + '"></iframe>'
, id: tabId
});
}
parent.layui.element.tabChange('layuiminiTab', tabId);
layuimini.tabRoll();
parent.layer.close(loading);
});
/**
* 左侧菜单的切换
*/
$('body').on('click', '[data-menu]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
$parent = $(this).parent();
menuId = $(this).attr('data-menu');
// header
$(".layui-header-menu .layui-nav-item.layui-this").removeClass('layui-this');
$(this).addClass('layui-this');
// left
$(".layui-left-menu .layui-nav.layui-nav-tree.layui-this").addClass('layui-hide');
$(".layui-left-menu .layui-nav.layui-nav-tree.layui-this.layui-hide").removeClass('layui-this');
$("#" + menuId).removeClass('layui-hide');
$("#" + menuId).addClass('layui-this');
layer.close(loading);
});
/**
* 清理
*/
$('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 layuimini.msg_error(data.msg);
} else {
return layuimini.msg_success(data.msg);
}
}).fail(function () {
layer.close(loading);
return layuimini.msg_error('清理缓存接口有误');
});
} else {
layer.close(loading);
return layuimini.msg_success('清除缓存成功');
}
});
/**
* 刷新
*/
$('body').on('click', '[data-refresh]', function () {
$(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
layuimini.msg_success('刷新成功');
});
/**
* 选项卡操作
*/
$('body').on('click', '[data-page-close]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
var closeType = $(this).attr('data-page-close');
$(".layui-tab-title li").each(function () {
tabId = $(this).attr('lay-id');
var id = $(this).attr('id');
if (id != 'layuiminiHomeTabId') {
var tabClass = $(this).attr('class');
if (closeType == 'all') {
layuimini.delTab(tabId);
} else {
if (tabClass != 'layui-this') {
layuimini.delTab(tabId);
}
}
}
});
layuimini.tabRoll();
layer.close(loading);
});
/**
* 菜单栏缩放
*/
$('body').on('click', '[data-side-fold]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
var isShow = $(this).attr('data-side-fold');
if (isShow == 1) { // 缩放
$(this).attr('data-side-fold', 0);
$('.layuimini-tool i').attr('class', 'fa fa-indent');
$('.layui-layout-body').attr('class', 'layui-layout-body layuimini-mini');
} else { // 正常
$(this).attr('data-side-fold', 1);
$('.layuimini-tool i').attr('class', 'fa fa-outdent');
$('.layui-layout-body').attr('class', 'layui-layout-body layuimini-all');
}
layuimini.tabRoll();
element.init();
layer.close(loading);
});
/**
* 监听提示信息
*/
$("body").on("mouseenter", ".layui-menu-tips", function () {
var classInfo = $(this).attr('class'),
tips = $(this).children('span').text(),
isShow = $('.layuimini-tool i').attr('data-side-fold');
if (isShow == 0) {
openTips = layer.tips(tips, $(this), {tips: [2, '#2f4056'], time: 30000});
}
});
$("body").on("mouseleave", ".layui-menu-tips", function () {
var isShow = $('.layuimini-tool i').attr('data-side-fold');
if (isShow == 0) {
try {
layer.close(openTips);
} catch (e) {
console.log(e.message);
}
}
});
/**
* 弹出配色方案
*/
$('body').on('click', '[data-bgcolor]', function () {
var loading = layer.load(0, {shade: false, time: 2 * 1000});
var clientHeight = (document.documentElement.clientHeight) - 95;
var bgColorHtml = layuimini.buildBgColorHtml();
var html = '<div class="layuimini-color">\n' +
'<div class="color-title">\n' +
'<span>配色方案</span>\n' +
'</div>\n' +
'<div class="color-content">\n' +
'<ul>\n' + bgColorHtml + '</ul>\n' +
'</div>\n' +
'</div>';
layer.open({
type: 1,
title: false,
closeBtn: 0,
shade: 0.2,
anim: 2,
shadeClose: true,
id: 'layuiminiBgColor',
area: ['340px', clientHeight + 'px'],
offset: 'rb',
content: html,
end:function () {
$('.layuimini-select-bgcolor').removeClass('layui-this');
}
});
layer.close(loading);
});
/**
* 选择配色方案
*/
$('body').on('click', '[data-select-bgcolor]', function () {
var bgcolorId = $(this).attr('data-select-bgcolor');
$('.layuimini-color .color-content ul .layui-this').attr('class', '');
$(this).attr('class', 'layui-this');
sessionStorage.setItem('layuiminiBgcolorId', bgcolorId);
layuimini.initBgColor();
});
exports("layuimini", layuimini);
});