leftmenu2.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. $(function() {
  2. InitLeftMenu();
  3. tabClose();
  4. tabCloseEven();
  5. // 释放内存
  6. $.fn.panel.defaults = $.extend({}, $.fn.panel.defaults, {
  7. onBeforeDestroy : function() {
  8. var frame = $('iframe', this);
  9. if (frame.length > 0) {
  10. frame[0].contentWindow.document.write('');
  11. frame[0].contentWindow.close();
  12. frame.remove();
  13. }
  14. if ($.browser.msie) {
  15. CollectGarbage();
  16. }
  17. }
  18. });
  19. $('#maintabs').tabs({
  20. onSelect : function(title) {
  21. var currTab = $('#maintabs').tabs('getTab', title);
  22. var iframe = $(currTab.panel('options').content);
  23. var src = $("." + title).attr("href");
  24. currTab.find('iframe').attr('src', src);
  25. }
  26. });
  27. });
  28. // 初始化左侧
  29. function InitLeftMenu() {
  30. $("#nav").accordion({
  31. animate : false
  32. });
  33. $.each(_menus.menus, function(i, n) {
  34. var menulist = '';
  35. menulist += '<ul>';
  36. $.each(n.menus, function(j, o) {
  37. menulist += '<li><div><a class="' + o.menuname
  38. + '" target="tabiframe" ref="' + o.menuid + '" href="'
  39. + o.url + '" ><span class="icon ' + o.icon
  40. + '" >&nbsp;</span><span class="nav">' + o.menuname
  41. + '</span></a></div></li> ';
  42. })
  43. menulist += '</ul>';
  44. $('#nav').accordion('add', {
  45. title : n.menuname,
  46. content : menulist,
  47. iconCls : 'icon ' + n.icon
  48. });
  49. });
  50. $('.easyui-accordion li a').click(function() {
  51. var tabTitle = $(this).children('.nav').text();
  52. var url = $(this).attr("href");
  53. var menuid = $(this).attr("ref");
  54. var icon = getIcon(menuid, icon);
  55. addOneTab(tabTitle, url, icon);
  56. $('.easyui-accordion li div').removeClass("selected");
  57. $(this).parent().addClass("selected");
  58. }).hover(function() {
  59. $(this).parent().addClass("hover");
  60. }, function() {
  61. $(this).parent().removeClass("hover");
  62. });
  63. // 选中第一个
  64. var panels = $('#nav').accordion('panels');
  65. var t = panels[0].panel('options').title;
  66. $('#nav').accordion('select', t);
  67. }
  68. // 获取左侧导航的图标
  69. function getIcon(menuid) {
  70. var icon = 'icon ';
  71. $.each(_menus.menus, function(i, n) {
  72. $.each(n.menus, function(j, o) {
  73. if (o.menuid == menuid) {
  74. icon += o.icon;
  75. }
  76. });
  77. });
  78. return icon;
  79. }
  80. function addTab(subtitle, url, icon) {
  81. $.messager.progress({
  82. text : loading,
  83. interval : 1000
  84. });
  85. if (!$('#maintabs').tabs('exists', subtitle)) {
  86. $('#maintabs').tabs('add', {
  87. title : subtitle,
  88. content : createFrame(),
  89. closable : true,
  90. icon : icon
  91. });
  92. } else {
  93. $('#maintabs').tabs('select', subtitle);
  94. $.messager.progress('close');
  95. }
  96. // $('#maintabs').tabs('select',subtitle);
  97. tabClose();
  98. }
  99. var title_now;
  100. function addOneTab(subtitle, url, icon) {
  101. $.messager.progress({
  102. text : loading,
  103. interval : 1000
  104. });
  105. if ($('#maintabs').tabs('exists', title_now)) {
  106. $('#maintabs').tabs('select', title_now);
  107. $('#maintabs').tabs('update', {
  108. tab : $('#maintabs').tabs('getSelected'),
  109. options : {
  110. title : subtitle,
  111. content : createFrame(),
  112. closable : false,
  113. icon : icon
  114. }
  115. });
  116. } else {
  117. $('#maintabs').tabs('add', {
  118. title : subtitle,
  119. content : createFrame(),
  120. closable : false,
  121. icon : icon
  122. });
  123. }
  124. title_now = subtitle;
  125. // $('#maintabs').tabs('select',subtitle);
  126. tabClose();
  127. }
  128. function createFrame() {
  129. var s = '<iframe name="tabiframe" scrolling="no" frameborder="0" src="about:blank" style="width:100%;height:99%;"></iframe>';
  130. return s;
  131. }
  132. function tabClose() {
  133. /* 双击关闭TAB选项卡 */
  134. $(".tabs-inner").dblclick(function() {
  135. var subtitle = $(this).children(".tabs-closable").text();
  136. $('#tabs').tabs('close', subtitle);
  137. })
  138. /* 为选项卡绑定右键 */
  139. $(".tabs-inner").bind('contextmenu', function(e) {
  140. $('#mm').menu('show', {
  141. left : e.pageX,
  142. top : e.pageY
  143. });
  144. var subtitle = $(this).children(".tabs-closable").text();
  145. $('#mm').data("currtab", subtitle);
  146. // $('#maintabs').tabs('select',subtitle);
  147. return false;
  148. });
  149. }
  150. // 绑定右键菜单事件
  151. function tabCloseEven() {
  152. // 刷新
  153. $('#mm-tabupdate').click(function() {
  154. var currTab = $('#maintabs').tabs('getSelected');
  155. var url = $(currTab.panel('options').content).attr('src');
  156. $('#maintabs').tabs('update', {
  157. tab : currTab,
  158. options : {
  159. content : createFrame(url)
  160. }
  161. })
  162. })
  163. // 关闭当前
  164. $('#mm-tabclose').click(function() {
  165. var currtab_title = $('#mm').data("currtab");
  166. $('#maintabs').tabs('close', currtab_title);
  167. })
  168. // 全部关闭
  169. $('#mm-tabcloseall').click(function() {
  170. $('.tabs-inner span').each(function(i, n) {
  171. var t = $(n).text();
  172. $('#maintabs').tabs('close', t);
  173. });
  174. });
  175. // 关闭除当前之外的TAB
  176. $('#mm-tabcloseother').click(function() {
  177. $('#mm-tabcloseright').click();
  178. $('#mm-tabcloseleft').click();
  179. });
  180. // 关闭当前右侧的TAB
  181. $('#mm-tabcloseright').click(function() {
  182. var nextall = $('.tabs-selected').nextAll();
  183. if (nextall.length == 0) {
  184. // msgShow('系统提示','后边没有啦~~','error');
  185. alert('后边没有啦~~');
  186. return false;
  187. }
  188. nextall.each(function(i, n) {
  189. var t = $('a:eq(0) span', $(n)).text();
  190. $('#maintabs').tabs('close', t);
  191. });
  192. return false;
  193. });
  194. // 关闭当前左侧的TAB
  195. $('#mm-tabcloseleft').click(function() {
  196. var prevall = $('.tabs-selected').prevAll();
  197. if (prevall.length == 0) {
  198. alert('到头了,前边没有啦~~');
  199. return false;
  200. }
  201. prevall.each(function(i, n) {
  202. var t = $('a:eq(0) span', $(n)).text();
  203. $('#maintabs').tabs('close', t);
  204. });
  205. return false;
  206. });
  207. // 退出
  208. $("#mm-exit").click(function() {
  209. $('#mm').menu('hide');
  210. });
  211. }
  212. $.parser.onComplete = function() {/* 页面所有easyui组件渲染成功后,隐藏等待信息 */
  213. if ($.browser.msie && $.browser.version < 7) {/* 解决IE6的PNG背景不透明BUG */
  214. sy.pngFun();
  215. sy.bgPngFun($('span'));
  216. }
  217. window.setTimeout(function() {
  218. $.messager.progress('close');
  219. }, 1000);
  220. };