leftmenu.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. $(function() {
  2. //easy ui树加载会在文档加载完执行,所以初始化菜单要延迟一秒 by jueyue
  3. setTimeout(InitLeftMenu,100);
  4. tabClose();
  5. tabCloseEven();
  6. // 释放内存
  7. $.fn.panel.defaults = $.extend({}, $.fn.panel.defaults, {
  8. onBeforeDestroy : function() {
  9. var frame = $('iframe', this);
  10. if (frame.length > 0) {
  11. frame[0].contentWindow.document.write('');
  12. frame[0].contentWindow.close();
  13. frame.remove();
  14. }
  15. if ($.browser.msie) {
  16. CollectGarbage();
  17. }
  18. }
  19. });
  20. $('#maintabs').tabs({ onSelect : function(title) {
  21. rowid="";
  22. } });
  23. });
  24. var rowid="";
  25. // 初始化左侧
  26. function InitLeftMenu() {
  27. $("#nav").show();
  28. $('.easyui-accordion').accordion('resize');
  29. $('.easyui-accordion li div').click(function() {
  30. $('.easyui-accordion li div').removeClass("selected");
  31. $(this).parent().addClass("selected");
  32. }).hover(function() {
  33. $(this).parent().addClass("hover");
  34. }, function() {
  35. $(this).parent().removeClass("hover");
  36. });
  37. $('.easyui-tree').tree({
  38. onClick: function(node){
  39. openThisNoed(node);
  40. }
  41. });
  42. }
  43. function openThisNoed(node) {
  44. if(node.state == "open"){
  45. $('.easyui-tree').tree('collapse', node.target);
  46. return;
  47. }
  48. var children = $('.easyui-tree').tree('getChildren', node.target);
  49. var pnode = null;
  50. try{
  51. pnode = $('.easyui-tree').tree('getParent', node.target);
  52. }catch(e){}
  53. if (pnode && children && children.length > 0) {
  54. $(pnode).each(function() {
  55. $('.easyui-tree').tree('collapse', this);
  56. });
  57. $('.easyui-tree').tree('expand', node.target);
  58. } else if (children && children.length > 0) {
  59. $('.easyui-tree').tree('collapseAll');
  60. $('.easyui-tree').tree('expand', node.target);
  61. }
  62. if (children == null || children.length == 0) {
  63. var fun = $(node.target).find('a').attr("onclick");
  64. var params = fun.substring(7, fun.length - 1).replaceAll("'", "")
  65. .split(",");
  66. //update-begin--Author:yugwu Date:20170628 for:[TASK #2185] 【bug】shortcut及经典下同名菜单冲突,只能点开一个----
  67. if(params.length > 3){
  68. params = fun.substring(14, fun.length - 1).replaceAll("'", "").split(",");
  69. addTab4MenuId(params[0], params[1], params[2], params[3]);
  70. }else{
  71. addTab(params[0], params[1], params[2]);
  72. }
  73. //update-end--Author:yugwu Date:20170628 for:[TASK #2185] 【bug】shortcut及经典下同名菜单冲突,只能点开一个----
  74. }
  75. }
  76. String.prototype.replaceAll = function(s1,s2) {
  77. return this.replace(new RegExp(s1,"gm"),s2);
  78. };
  79. // 获取左侧导航的图标
  80. function getIcon(menuid) {
  81. var icon = 'icon ';
  82. $.each(_menus.menus, function(i, n) {
  83. $.each(n.menus, function(j, o) {
  84. if (o.menuid == menuid) {
  85. icon += o.icon;
  86. }
  87. });
  88. });
  89. return icon;
  90. }
  91. function addTab(subtitle, url, icon) {
  92. var progress = $("div.messager-progress");
  93. if(progress.length){return;}
  94. rowid="";
  95. $.messager.progress({
  96. text : loading,
  97. interval : 200
  98. });
  99. if (!$('#maintabs').tabs('exists', subtitle)) {
  100. //判断是否进行href方式打开tab,默认为iframe方式
  101. if(url.indexOf('isHref') != -1){
  102. $('#maintabs').tabs('add', {
  103. title : subtitle,
  104. href : url,
  105. closable : true,
  106. icon : icon
  107. });
  108. }else{
  109. $('#maintabs').tabs('add', {
  110. title : subtitle,
  111. content : '<iframe src="' + url + '" frameborder="0" style="border:0;width:100%;height:99.4%;"></iframe>',
  112. closable : true,
  113. icon : icon
  114. });
  115. }
  116. } else {
  117. $('#maintabs').tabs('select', subtitle);
  118. $.messager.progress('close');
  119. }
  120. // $('#maintabs').tabs('select',subtitle);
  121. tabClose();
  122. }
  123. //add-begin--Author:yugwu Date:20170629 for:[TASK #2185] 【bug】shortcut及经典下同名菜单冲突,只能点开一个----
  124. function addTab4MenuId(subtitle, url, icon, funmenuid) {
  125. var progress = $("div.messager-progress");
  126. if(progress.length){return;}
  127. rowid="";
  128. $.messager.progress({
  129. text : loading,
  130. interval : 200
  131. });
  132. var oldTabIndex;
  133. var hastab = false;
  134. var allTabs = $('#maintabs').tabs('tabs');
  135. for(var tempi=0; tempi < allTabs.length; tempi++){
  136. var singleTab = allTabs[tempi];
  137. var isequal = false;
  138. if(funmenuid){
  139. isequal = (funmenuid == singleTab.panel('options').menuid && subtitle == singleTab.panel('options').title);
  140. }else{
  141. isequal = (subtitle == singleTab.panel('options').title);
  142. }
  143. if(isequal){
  144. oldTabIndex = tempi;
  145. hastab = true;
  146. break;
  147. }
  148. }
  149. if (!hastab) {
  150. //判断是否进行href方式打开tab,默认为iframe方式
  151. if(url.indexOf('isHref') != -1){
  152. $('#maintabs').tabs('add', {
  153. menuid : funmenuid,
  154. title : subtitle,
  155. href : url,
  156. closable : true,
  157. icon : icon
  158. });
  159. }else{
  160. $('#maintabs').tabs('add', {
  161. menuid : funmenuid,
  162. title : subtitle,
  163. content : '<iframe src="' + url + '" frameborder="0" style="border:0;width:100%;height:99.4%;"></iframe>',
  164. closable : true,
  165. icon : icon
  166. });
  167. }
  168. } else {
  169. $('#maintabs').tabs('select', oldTabIndex);
  170. $.messager.progress('close');
  171. }
  172. tabClose();
  173. }
  174. //add-end--Author:yugwu Date:20170629 for:[TASK #2185] 【bug】shortcut及经典下同名菜单冲突,只能点开一个----
  175. var title_now;
  176. function addLeftOneTab(subtitle, url, icon) {
  177. rowid="";
  178. if ($('#maintabs').tabs('exists', title_now)) {
  179. $('#maintabs').tabs('select', title_now);
  180. if(title_now!=subtitle)
  181. {
  182. addmask();
  183. $('#maintabs').tabs('update', {
  184. tab : $('#maintabs').tabs('getSelected'),
  185. options : {
  186. title : subtitle,
  187. href : url,
  188. cache:false,
  189. closable : false,
  190. icon : icon
  191. }
  192. });
  193. }
  194. } else {
  195. addmask();
  196. $('#maintabs').tabs('add', {
  197. title : subtitle,
  198. href : url,
  199. closable : false,
  200. icon : icon
  201. });
  202. }
  203. if ($.browser.msie) {
  204. CollectGarbage();
  205. }
  206. title_now = subtitle;
  207. // $('#maintabs').tabs('select',subtitle);
  208. // tabClose();
  209. }
  210. function addmask() {
  211. $.messager.progress({
  212. text : loading,
  213. interval : 100
  214. });
  215. }
  216. function createFrame(url) {
  217. var s = '<iframe name="tabiframe" id="tabiframe" scrolling="no" frameborder="0" src="'+url+'" style="width:100%;height:99.5%;overflow-y:hidden;"></iframe>';
  218. return s;
  219. }
  220. function tabClose() {
  221. /* 双击关闭TAB选项卡 */
  222. $(".tabs-inner").dblclick(function() {
  223. var subtitle = $(this).children(".tabs-closable").text();
  224. $('#tabs').tabs('close', subtitle);
  225. })
  226. /* 为选项卡绑定右键 */
  227. $(".tabs-inner").bind('contextmenu', function(e) {
  228. $('#mm').menu('show', {
  229. left : e.pageX,
  230. top : e.pageY
  231. });
  232. var subtitle = $(this).children(".tabs-closable").text();
  233. $('#mm').data("currtab", subtitle);
  234. // $('#maintabs').tabs('select',subtitle);
  235. return false;
  236. });
  237. }
  238. // 绑定右键菜单事件
  239. function tabCloseEven() {
  240. // 刷新
  241. $('#mm-tabupdate').click(function() {
  242. var currTab = $('#maintabs').tabs('getSelected');
  243. var url = $(currTab.panel('options').content).attr('src');
  244. $('#maintabs').tabs('update', {
  245. tab : currTab,
  246. options : {
  247. content : createFrame(url)
  248. }
  249. })
  250. })
  251. // 关闭当前
  252. $('#mm-tabclose').click(function() {
  253. var currtab_title = $('#mm').data("currtab");
  254. $('#maintabs').tabs('close', currtab_title);
  255. })
  256. // 全部关闭
  257. $('#mm-tabcloseall').click(function() {
  258. $('.tabs-inner span').each(function(i, n) {
  259. var t = $(n).text();
  260. if(t != '首页'){
  261. $('#maintabs').tabs('close', t);
  262. }
  263. });
  264. });
  265. // 关闭除当前之外的TAB
  266. $('#mm-tabcloseother').click(function() {
  267. $('#mm-tabcloseright').click();
  268. $('#mm-tabcloseleft').click();
  269. });
  270. // 关闭当前右侧的TAB
  271. $('#mm-tabcloseright').click(function() {
  272. var nextall = $('.tabs-selected').nextAll();
  273. if (nextall.length == 0) {
  274. // msgShow('系统提示','后边没有啦~~','error');
  275. alert('后边没有啦~~');
  276. return false;
  277. }
  278. nextall.each(function(i, n) {
  279. var t = $('a:eq(0) span', $(n)).text();
  280. $('#maintabs').tabs('close', t);
  281. });
  282. return false;
  283. });
  284. // 关闭当前左侧的TAB
  285. $('#mm-tabcloseleft').click(function() {
  286. var prevall = $('.tabs-selected').prevAll();
  287. if (prevall.length == 0) {
  288. alert('到头了,前边没有啦~~');
  289. return false;
  290. }
  291. prevall.each(function(i, n) {
  292. var t = $('a:eq(0) span', $(n)).text();
  293. if(t != '首页'){
  294. $('#maintabs').tabs('close', t);
  295. }
  296. });
  297. return false;
  298. });
  299. // 退出
  300. $("#mm-exit").click(function() {
  301. $('#mm').menu('hide');
  302. });
  303. }
  304. $.parser.onComplete = function() {/* 页面所有easyui组件渲染成功后,隐藏等待信息 */
  305. if ($.browser.msie && $.browser.version < 7) {/* 解决IE6的PNG背景不透明BUG */
  306. }
  307. window.setTimeout(function() {
  308. $.messager.progress('close');
  309. }, 200);
  310. };