index.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. layui.define(['layer', 'element', 'util'], function (exports) {
  2. //导航的hover效果、二级菜单等功能,需要依赖element模块
  3. var element = layui.element, layer = layui.layer, $ = layui.jquery, util = layui.util;
  4. var side = $('.layui-side');
  5. var body = $('.layui-body');
  6. var footer = $('.layui-footer');
  7. var hideSide = $('.layui-side-hide');
  8. var index;
  9. $(".layui-side-hide").hover(function (e) {
  10. e.stopPropagation();
  11. index = layer.tips('展开/收起', '.layui-side-hide', {
  12. tips: [2, '#121a2c']
  13. });
  14. }, function (e) {
  15. e.stopPropagation();
  16. if (index) {
  17. layer.close(index);
  18. }
  19. });
  20. $("#layui-tab-title").find("li:first-child").find("i").hide();
  21. getMenu();
  22. //获取菜单
  23. function getMenu() {
  24. web.ajaxPost(base + "/sysRoleMenu/getMenu", {}, function (data) {
  25. var html = "";
  26. $.each(data, function (id1, item1) {
  27. html += '<li class="layui-nav-item">';
  28. html += '<a href="javascript:;">';
  29. html += '<i class="iconfont">' + item1.menu_icon + '</i><span class="menu-text">' + item1.menu_name + '</span></a>';
  30. if (item1.children && (item1.children).length > 0) {
  31. html += '<dl class="layui-nav-child">';
  32. $.each(item1.children, function (id2, item2) {
  33. html += '<dd><a href="javascript:;" id="' + item2.id + '" href-url="' + base + web.nullToSpace(item2.menu_url) + '">';
  34. html += '<span class="menu-text">' + item2.menu_name + '</span></a></dd>';
  35. });
  36. html += '</dl>';
  37. }
  38. html += '</li>';
  39. });
  40. $(".layui-nav-tree").html(html);
  41. element.init();
  42. itemHover();
  43. });
  44. }
  45. $('.layui-nav-tree').on('click', '.layui-nav-item', function () {
  46. $(this).siblings().removeClass("layui-nav-itemed");
  47. });
  48. // 监听导航栏收缩
  49. $('.layui-side-hide').on('click', function () {
  50. if (localStorage.log == 0) {
  51. navShow(50);
  52. } else {
  53. navHide(50);
  54. }
  55. });
  56. function itemHover() {
  57. $(".sidebar-collapsed .layui-nav-item").hover(function (e) {
  58. e.stopPropagation();
  59. $(this).find(".layui-nav-child").css("top", ($(this).index()) * 45);
  60. }, function (e) {
  61. $(this).find(".layui-nav-child").css("top", 0);
  62. });
  63. }
  64. // 导航栏收缩
  65. function navHide(t, st) {
  66. $('.layui-tab-content .layui-tab-item').each(function () {
  67. var obj = $(this).find("iframe").contents()[0];
  68. if ($(obj).find('.layui-layer-iframe').width() == $(body).width()) {
  69. $(obj).find('.layui-layer-iframe').css('width', $('body').width() - 50);
  70. }
  71. });
  72. var time = t ? t : 50;
  73. st ? localStorage.log = 1 : localStorage.log = 0;
  74. side.addClass("sidebar-collapsed");
  75. //$(".layui-nav-item").removeClass("layui-nav-itemed");
  76. body.animate({'left': 50}, time);
  77. footer.animate({'left': 50}, time);
  78. hideSide.css("width", "50");
  79. itemHover();
  80. if (index) {
  81. layer.close(index);
  82. }
  83. }
  84. // 导航栏展开
  85. function navShow(t, st) {
  86. $('.layui-tab-content .layui-tab-item').each(function () {
  87. var obj = $(this).find("iframe").contents()[0];
  88. if ($(obj).find('.layui-layer-iframe').width() == $(body).width()) {
  89. $(obj).find('.layui-layer-iframe').css('width', $('body').width() - 180);
  90. }
  91. });
  92. var time = t ? t : 50;
  93. st ? localStorage.log = 0 : localStorage.log = 1;
  94. $(".sidebar-collapsed .layui-nav-item").unbind("mouseenter").unbind("mouseleave");
  95. side.removeClass("sidebar-collapsed");
  96. side.animate({'left': 0}, time);
  97. body.animate({'left': 180}, time);
  98. footer.animate({'left': 180}, time);
  99. hideSide.css("width", "180");
  100. if (index) {
  101. layer.close(index);
  102. }
  103. }
  104. // 监听导航(side)点击切换页面
  105. element.on('nav(side)', function (elem) {
  106. // 添加tab方法
  107. addTab(element, elem);
  108. });
  109. // 监听顶部左侧导航
  110. element.on('nav(side-left)', function (elem) {
  111. // 添加tab方法
  112. addTab(element, elem);
  113. });
  114. // 监听顶部右侧导航
  115. element.on('nav(side-right)', function (elem) {
  116. // 修改skin
  117. if ($(this).attr('data-skin')) {
  118. localStorage.skin = $(this).attr('data-skin');
  119. skin();
  120. } else {
  121. // 添加tab方法
  122. addTab(element, elem);
  123. }
  124. });
  125. // 添加TAB选项卡
  126. function addTab(element, elem) {
  127. var menuId = elem.children('a').attr('id'); // 菜单ID
  128. var card = 'card'; // 选项卡对象
  129. var title = elem.children('a').find("span").html(); // 导航栏text
  130. var src = elem.children('a').attr('href-url'); // 导航栏跳转URL
  131. var flag = getTitleId(card, menuId); // 是否有该选项卡存在
  132. // 大于0就是有该选项卡了
  133. if (!flag) {
  134. if (src) {
  135. //新增
  136. if (src.indexOf("?") != -1) {
  137. src += "&menuId=" + menuId;
  138. } else {
  139. src += "?menuId=" + menuId;
  140. }
  141. element.tabAdd(card, {
  142. title: '<span>' + title + '</span>'
  143. , content: '<iframe src="' + src + '" frameborder="0"></iframe>'
  144. , id: menuId
  145. });
  146. // 关闭弹窗
  147. layer.closeAll();
  148. }
  149. }
  150. // 切换相应的ID tab
  151. element.tabChange(card, menuId);
  152. }
  153. // 根据导航栏text获取lay-id
  154. function getTitleId(card, id) {
  155. var flag = false;
  156. $(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function (ids,item) {
  157. console.info(ids);
  158. if (id === $(this).attr('lay-id')) {
  159. flag=true;
  160. var iframe = $(".layui-tab-content .layui-tab-item:eq("+ids+")").find("iframe")[0];
  161. iframe.contentWindow.location.reload(true);
  162. }
  163. });
  164. return flag;
  165. }
  166. // 自适应
  167. $(window).on('resize', function () {
  168. if ($(this).width() > 1024) {
  169. if (localStorage.log == 0) {
  170. navShow();
  171. }
  172. } else {
  173. if (localStorage.log == 1) {
  174. navHide();
  175. }
  176. }
  177. init();
  178. });
  179. // 监听控制content高度
  180. function init() {
  181. // 起始判断收缩还是展开
  182. if (localStorage.log == 0) {
  183. navHide(100);
  184. } else {
  185. navShow(1);
  186. }
  187. // 选项卡高度
  188. cardTitleHeight = $(document).find(".layui-tab[lay-filter='card'] ul.layui-tab-title").outerHeight();
  189. // 需要减去的高度- $(".layui-footer").outerHeight()
  190. height = $(window).outerHeight() - $('.layui-header').height() - cardTitleHeight;
  191. // 设置高度
  192. $(document).find(".layui-tab[lay-filter='card'] div.layui-tab-content").height(height);
  193. }
  194. // 初始化
  195. init();
  196. exports('index', {}); //注意,这里是模块输出的核心,模块名必须和use时的模块名一致
  197. });