123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- 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 += '<li class="layui-nav-item">';
- html += '<a href="javascript:;">';
- html += '<i class="iconfont">' + item1.menu_icon + '</i><span class="menu-text">' + item1.menu_name + '</span></a>';
- if (item1.children && (item1.children).length > 0) {
- html += '<dl class="layui-nav-child">';
- $.each(item1.children, function (id2, item2) {
- html += '<dd><a href="javascript:;" id="' + item2.id + '" href-url="' + base + web.nullToSpace(item2.menu_url) + '">';
- html += '<span class="menu-text">' + item2.menu_name + '</span></a></dd>';
- });
- html += '</dl>';
- }
- html += '</li>';
- });
- $(".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: '<span>' + title + '</span>'
- , content: '<iframe src="' + src + '" frameborder="0"></iframe>'
- , 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时的模块名一致
- });
|