layui.define(['layer', 'element', 'util'], function (exports) {
//导航的hover效果、二级菜单等功能,需要依赖element模块
var element = layui.element, layer = layui.layer, $ = layui.jquery, util = layui.util;
var side = $('.layui-side');
var body = $('.layui-body');
var footer = $('.layui-footer');
var hideSide = $('.layui-side-hide');
var index;
$(".layui-side-hide").hover(function (e) {
e.stopPropagation();
index = layer.tips('展开/收起', '.layui-side-hide', {
tips: [2, '#121a2c']
});
}, function (e) {
e.stopPropagation();
if (index) {
layer.close(index);
}
});
$("#layui-tab-title").find("li:first-child").find("i").hide();
getMenu();
//获取菜单
function getMenu() {
web.ajaxPost(base + "/sysRoleMenu/getMenu", {}, function (data) {
var html = "";
$.each(data, function (id1, item1) {
html += '
';
html += '';
html += '' + item1.menu_icon + '';
if (item1.children && (item1.children).length > 0) {
html += '';
$.each(item1.children, function (id2, item2) {
html += '- ';
html += '
';
});
html += '
';
}
html += '';
});
$(".layui-nav-tree").html(html);
element.init();
itemHover();
});
}
$('.layui-nav-tree').on('click', '.layui-nav-item', function () {
$(this).siblings().removeClass("layui-nav-itemed");
});
// 监听导航栏收缩
$('.layui-side-hide').on('click', function () {
if (localStorage.log == 0) {
navShow(50);
} else {
navHide(50);
}
});
function itemHover() {
$(".sidebar-collapsed .layui-nav-item").hover(function (e) {
e.stopPropagation();
$(this).find(".layui-nav-child").css("top", ($(this).index()) * 45);
}, function (e) {
$(this).find(".layui-nav-child").css("top", 0);
});
}
// 导航栏收缩
function navHide(t, st) {
$('.layui-tab-content .layui-tab-item').each(function () {
var obj = $(this).find("iframe").contents()[0];
if ($(obj).find('.layui-layer-iframe').width() == $(body).width()) {
$(obj).find('.layui-layer-iframe').css('width', $('body').width() - 50);
}
});
var time = t ? t : 50;
st ? localStorage.log = 1 : localStorage.log = 0;
side.addClass("sidebar-collapsed");
//$(".layui-nav-item").removeClass("layui-nav-itemed");
body.animate({'left': 50}, time);
footer.animate({'left': 50}, time);
hideSide.css("width", "50");
itemHover();
if (index) {
layer.close(index);
}
}
// 导航栏展开
function navShow(t, st) {
$('.layui-tab-content .layui-tab-item').each(function () {
var obj = $(this).find("iframe").contents()[0];
if ($(obj).find('.layui-layer-iframe').width() == $(body).width()) {
$(obj).find('.layui-layer-iframe').css('width', $('body').width() - 180);
}
});
var time = t ? t : 50;
st ? localStorage.log = 0 : localStorage.log = 1;
$(".sidebar-collapsed .layui-nav-item").unbind("mouseenter").unbind("mouseleave");
side.removeClass("sidebar-collapsed");
side.animate({'left': 0}, time);
body.animate({'left': 180}, time);
footer.animate({'left': 180}, time);
hideSide.css("width", "180");
if (index) {
layer.close(index);
}
}
// 监听导航(side)点击切换页面
element.on('nav(side)', function (elem) {
// 添加tab方法
addTab(element, elem);
});
// 监听顶部左侧导航
element.on('nav(side-left)', function (elem) {
// 添加tab方法
addTab(element, elem);
});
// 监听顶部右侧导航
element.on('nav(side-right)', function (elem) {
// 修改skin
if ($(this).attr('data-skin')) {
localStorage.skin = $(this).attr('data-skin');
skin();
} else {
// 添加tab方法
addTab(element, elem);
}
});
// 添加TAB选项卡
function addTab(element, elem) {
var menuId = elem.children('a').attr('id'); // 菜单ID
var card = 'card'; // 选项卡对象
var title = elem.children('a').find("span").html(); // 导航栏text
var src = elem.children('a').attr('href-url'); // 导航栏跳转URL
var flag = getTitleId(card, menuId); // 是否有该选项卡存在
// 大于0就是有该选项卡了
if (!flag) {
if (src) {
//新增
if (src.indexOf("?") != -1) {
src += "&menuId=" + menuId;
} else {
src += "?menuId=" + menuId;
}
element.tabAdd(card, {
title: '' + title + ''
, content: ''
, id: menuId
});
// 关闭弹窗
layer.closeAll();
}
}
// 切换相应的ID tab
element.tabChange(card, menuId);
}
// 根据导航栏text获取lay-id
function getTitleId(card, id) {
var flag = false;
$(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function (ids,item) {
console.info(ids);
if (id === $(this).attr('lay-id')) {
flag=true;
var iframe = $(".layui-tab-content .layui-tab-item:eq("+ids+")").find("iframe")[0];
iframe.contentWindow.location.reload(true);
}
});
return flag;
}
// 自适应
$(window).on('resize', function () {
if ($(this).width() > 1024) {
if (localStorage.log == 0) {
navShow();
}
} else {
if (localStorage.log == 1) {
navHide();
}
}
init();
});
// 监听控制content高度
function init() {
// 起始判断收缩还是展开
if (localStorage.log == 0) {
navHide(100);
} else {
navShow(1);
}
// 选项卡高度
cardTitleHeight = $(document).find(".layui-tab[lay-filter='card'] ul.layui-tab-title").outerHeight();
// 需要减去的高度- $(".layui-footer").outerHeight()
height = $(window).outerHeight() - $('.layui-header').height() - cardTitleHeight;
// 设置高度
$(document).find(".layui-tab[lay-filter='card'] div.layui-tab-content").height(height);
}
// 初始化
init();
exports('index', {}); //注意,这里是模块输出的核心,模块名必须和use时的模块名一致
});