index.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. (function ($) {
  2. tablist = {
  3. newTab: function (item) {
  4. var dataId = item.id;
  5. var dataUrl = item.url;
  6. var menuName = item.title;
  7. var flag = true;
  8. if (dataUrl == undefined || $.trim(dataUrl).length == 0) {
  9. return false;
  10. }
  11. $('.menuTab').each(function () {
  12. if ($(this).data('id') == dataUrl) {
  13. if (!$(this).hasClass('active')) {
  14. $(this).addClass('active').siblings('.menuTab').removeClass('active');
  15. $.learuntab.scrollToTab(this);
  16. $('.mainContent .LRADMS_iframe').each(function () {
  17. if ($(this).data('id') == dataUrl) {
  18. $(this).show().siblings('.LRADMS_iframe').hide();
  19. return false;
  20. }
  21. });
  22. }
  23. flag = false;
  24. return false;
  25. }
  26. });
  27. if (flag) {
  28. var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-remove"></i></a>';
  29. $('.menuTab').removeClass('active');
  30. var str1 = '<iframe class="LRADMS_iframe" id="iframe' + dataId + '" name="iframe' + dataId + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
  31. $('.mainContent').find('iframe.LRADMS_iframe').hide();
  32. $('.mainContent').append(str1);
  33. Loading(true);
  34. $('.mainContent iframe:visible').load(function () {
  35. Loading(false);
  36. });
  37. $('.menuTabs .page-tabs-content').append(str);
  38. $.learuntab.scrollToTab($('.menuTab.active'));
  39. }
  40. }
  41. }
  42. $.learuntab = {
  43. requestFullScreen: function () {
  44. var de = document.documentElement;
  45. if (de.requestFullscreen) {
  46. de.requestFullscreen();
  47. } else if (de.mozRequestFullScreen) {
  48. de.mozRequestFullScreen();
  49. } else if (de.webkitRequestFullScreen) {
  50. de.webkitRequestFullScreen();
  51. }
  52. },
  53. exitFullscreen: function () {
  54. var de = document;
  55. if (de.exitFullscreen) {
  56. de.exitFullscreen();
  57. } else if (de.mozCancelFullScreen) {
  58. de.mozCancelFullScreen();
  59. } else if (de.webkitCancelFullScreen) {
  60. de.webkitCancelFullScreen();
  61. }
  62. },
  63. refreshTab: function () {
  64. var currentId = $('.page-tabs-content').find('.active').attr('data-id');
  65. var target = $('.LRADMS_iframe[data-id="' + currentId + '"]');
  66. var url = target.attr('src');
  67. Loading(true);
  68. target.attr('src', url).load(function () {
  69. Loading(false);
  70. });
  71. },
  72. activeTab: function () {
  73. var currentId = $(this).data('id');
  74. if (!$(this).hasClass('active')) {
  75. $('.mainContent .LRADMS_iframe').each(function () {
  76. if ($(this).data('id') == currentId) {
  77. $(this).show().siblings('.LRADMS_iframe').hide();
  78. return false;
  79. }
  80. });
  81. $(this).addClass('active').siblings('.menuTab').removeClass('active');
  82. $.learuntab.scrollToTab(this);
  83. }
  84. },
  85. closeOtherTabs: function () {
  86. $('.page-tabs-content').children("[data-id]").find('.fa-remove').parents('a').not(".active").each(function () {
  87. $('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').remove();
  88. $(this).remove();
  89. });
  90. $('.page-tabs-content').css("margin-left", "0");
  91. },
  92. closeTab: function () {
  93. var closeTabId = $(this).parents('.menuTab').data('id');
  94. var currentWidth = $(this).parents('.menuTab').width();
  95. if ($(this).parents('.menuTab').hasClass('active')) {
  96. if ($(this).parents('.menuTab').next('.menuTab').size()) {
  97. var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id');
  98. $(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active');
  99. $('.mainContent .LRADMS_iframe').each(function () {
  100. if ($(this).data('id') == activeId) {
  101. $(this).show().siblings('.LRADMS_iframe').hide();
  102. return false;
  103. }
  104. });
  105. var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));
  106. if (marginLeftVal < 0) {
  107. $('.page-tabs-content').animate({
  108. marginLeft: (marginLeftVal + currentWidth) + 'px'
  109. }, "fast");
  110. }
  111. $(this).parents('.menuTab').remove();
  112. $('.mainContent .LRADMS_iframe').each(function () {
  113. if ($(this).data('id') == closeTabId) {
  114. $(this).remove();
  115. return false;
  116. }
  117. });
  118. }
  119. if ($(this).parents('.menuTab').prev('.menuTab').size()) {
  120. var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id');
  121. $(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
  122. $('.mainContent .LRADMS_iframe').each(function () {
  123. if ($(this).data('id') == activeId) {
  124. $(this).show().siblings('.LRADMS_iframe').hide();
  125. return false;
  126. }
  127. });
  128. $(this).parents('.menuTab').remove();
  129. $('.mainContent .LRADMS_iframe').each(function () {
  130. if ($(this).data('id') == closeTabId) {
  131. $(this).remove();
  132. return false;
  133. }
  134. });
  135. }
  136. }
  137. else {
  138. $(this).parents('.menuTab').remove();
  139. $('.mainContent .LRADMS_iframe').each(function () {
  140. if ($(this).data('id') == closeTabId) {
  141. $(this).remove();
  142. return false;
  143. }
  144. });
  145. $.learuntab.scrollToTab($('.menuTab.active'));
  146. }
  147. return false;
  148. },
  149. addTab: function () {
  150. $(".navbar-custom-menu>ul>li.open").removeClass("open");
  151. var dataId = $(this).attr('data-id');
  152. if (dataId != "") {
  153. top.$.cookie('currentmoduleId', dataId, { path: "/" });
  154. }
  155. var dataUrl = $(this).attr('href');
  156. var menuName = $.trim($(this).text());
  157. var flag = true;
  158. if (dataUrl == undefined || $.trim(dataUrl).length == 0) {
  159. return false;
  160. }
  161. $('.menuTab').each(function () {
  162. if ($(this).data('id') == dataUrl) {
  163. if (!$(this).hasClass('active')) {
  164. $(this).addClass('active').siblings('.menuTab').removeClass('active');
  165. $.learuntab.scrollToTab(this);
  166. $('.mainContent .LRADMS_iframe').each(function () {
  167. if ($(this).data('id') == dataUrl) {
  168. $(this).show().siblings('.LRADMS_iframe').hide();
  169. return false;
  170. }
  171. });
  172. }
  173. flag = false;
  174. return false;
  175. }
  176. });
  177. if (flag) {
  178. var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-remove"></i></a>';
  179. $('.menuTab').removeClass('active');
  180. var str1 = '<iframe class="LRADMS_iframe" id="iframe' + dataId + '" name="iframe' + dataId + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
  181. $('.mainContent').find('iframe.LRADMS_iframe').hide();
  182. $('.mainContent').append(str1);
  183. Loading(true);
  184. $('.mainContent iframe:visible').load(function () {
  185. Loading(false);
  186. });
  187. $('.menuTabs .page-tabs-content').append(str);
  188. $.learuntab.scrollToTab($('.menuTab.active'));
  189. }
  190. return false;
  191. },
  192. scrollTabRight: function () {
  193. var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
  194. var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
  195. var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
  196. var scrollVal = 0;
  197. if ($(".page-tabs-content").width() < visibleWidth) {
  198. return false;
  199. } else {
  200. var tabElement = $(".menuTab:first");
  201. var offsetVal = 0;
  202. while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {
  203. offsetVal += $(tabElement).outerWidth(true);
  204. tabElement = $(tabElement).next();
  205. }
  206. offsetVal = 0;
  207. while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
  208. offsetVal += $(tabElement).outerWidth(true);
  209. tabElement = $(tabElement).next();
  210. }
  211. scrollVal = $.learuntab.calSumWidth($(tabElement).prevAll());
  212. if (scrollVal > 0) {
  213. $('.page-tabs-content').animate({
  214. marginLeft: 0 - scrollVal + 'px'
  215. }, "fast");
  216. }
  217. }
  218. },
  219. scrollTabLeft: function () {
  220. var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
  221. var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
  222. var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
  223. var scrollVal = 0;
  224. if ($(".page-tabs-content").width() < visibleWidth) {
  225. return false;
  226. } else {
  227. var tabElement = $(".menuTab:first");
  228. var offsetVal = 0;
  229. while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {
  230. offsetVal += $(tabElement).outerWidth(true);
  231. tabElement = $(tabElement).next();
  232. }
  233. offsetVal = 0;
  234. if ($.learuntab.calSumWidth($(tabElement).prevAll()) > visibleWidth) {
  235. while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
  236. offsetVal += $(tabElement).outerWidth(true);
  237. tabElement = $(tabElement).prev();
  238. }
  239. scrollVal = $.learuntab.calSumWidth($(tabElement).prevAll());
  240. }
  241. }
  242. $('.page-tabs-content').animate({
  243. marginLeft: 0 - scrollVal + 'px'
  244. }, "fast");
  245. },
  246. scrollToTab: function (element) {
  247. var marginLeftVal = $.learuntab.calSumWidth($(element).prevAll()), marginRightVal = $.learuntab.calSumWidth($(element).nextAll());
  248. var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
  249. var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
  250. var scrollVal = 0;
  251. if ($(".page-tabs-content").outerWidth() < visibleWidth) {
  252. scrollVal = 0;
  253. } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
  254. if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
  255. scrollVal = marginLeftVal;
  256. var tabElement = element;
  257. while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
  258. scrollVal -= $(tabElement).prev().outerWidth();
  259. tabElement = $(tabElement).prev();
  260. }
  261. }
  262. } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
  263. scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
  264. }
  265. $('.page-tabs-content').animate({
  266. marginLeft: 0 - scrollVal + 'px'
  267. }, "fast");
  268. },
  269. calSumWidth: function (element) {
  270. var width = 0;
  271. $(element).each(function () {
  272. width += $(this).outerWidth(true);
  273. });
  274. return width;
  275. },
  276. init: function () {
  277. $('.menuItem').on('click', $.learuntab.addTab);
  278. $('.menuTabs').on('click', '.menuTab i', $.learuntab.closeTab);
  279. $('.menuTabs').on('click', '.menuTab', $.learuntab.activeTab);
  280. $('.tabLeft').on('click', $.learuntab.scrollTabLeft);
  281. $('.tabRight').on('click', $.learuntab.scrollTabRight);
  282. $('.tabReload').on('click', $.learuntab.refreshTab);
  283. $('.tabCloseCurrent').on('click', function () {
  284. $('.page-tabs-content').find('.active i').trigger("click");
  285. });
  286. $('.tabCloseAll').on('click', function () {
  287. $('.page-tabs-content').children("[data-id]").find('.fa-remove').each(function () {
  288. $('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').remove();
  289. $(this).parents('a').remove();
  290. });
  291. $('.page-tabs-content').children("[data-id]:first").each(function () {
  292. $('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').show();
  293. $(this).addClass("active");
  294. });
  295. $('.page-tabs-content').css("margin-left", "0");
  296. });
  297. $('.tabCloseOther').on('click', $.learuntab.closeOtherTabs);
  298. $('.fullscreen').on('click', function () {
  299. if (!$(this).attr('fullscreen')) {
  300. $(this).attr('fullscreen', 'true');
  301. $.learuntab.requestFullScreen();
  302. } else {
  303. $(this).removeAttr('fullscreen')
  304. $.learuntab.exitFullscreen();
  305. }
  306. });
  307. }
  308. };
  309. $.learunindex = {
  310. load: function () {
  311. $("body").removeClass("hold-transition")
  312. $("#content-wrapper").find('.mainContent').height($(window).height() - 90);
  313. $(window).resize(function (e) {
  314. $("#content-wrapper").find('.mainContent').height($(window).height() - 90);
  315. });
  316. $(".sidebar-toggle").click(function () {
  317. if (!$("body").hasClass("sidebar-collapse")) {
  318. $("body").addClass("sidebar-collapse");
  319. } else {
  320. $("body").removeClass("sidebar-collapse");
  321. }
  322. })
  323. $(window).load(function () {
  324. window.setTimeout(function () {
  325. $('#ajax-loader').fadeOut();
  326. Loading(false);
  327. }, 300);
  328. });
  329. },
  330. jsonWhere: function (data, action) {
  331. if (action == null) return;
  332. var reval = new Array();
  333. $(data).each(function (i, v) {
  334. if (action(v)) {
  335. reval.push(v);
  336. }
  337. })
  338. return reval;
  339. },
  340. loadMenu: function () {
  341. var data = authorizeMenuData;
  342. var _html = "";
  343. $.each(data, function (i) {
  344. var row = data[i];
  345. if (row.ParentId == "0") {
  346. if (i == 0) {
  347. _html += '<li class="treeview active">';
  348. } else {
  349. _html += '<li class="treeview">';
  350. }
  351. _html += '<a href="#">'
  352. _html += '<i class="' + row.Icon + '"></i><span>' + row.FullName + '</span><i class="fa fa-angle-left pull-right"></i>'
  353. _html += '</a>'
  354. var childNodes = $.learunindex.jsonWhere(data, function (v) { return v.ParentId == row.ModuleId });
  355. if (childNodes.length > 0) {
  356. _html += '<ul class="treeview-menu">';
  357. $.each(childNodes, function (i) {
  358. var subrow = childNodes[i];
  359. var subchildNodes = $.learunindex.jsonWhere(data, function (v) { return v.ParentId == subrow.ModuleId });
  360. _html += '<li>';
  361. if (subchildNodes.length > 0) {
  362. _html += '<a href="#"><i class="' + subrow.Icon + '"></i>' + subrow.FullName + '';
  363. _html += '<i class="fa fa-angle-left pull-right"></i></a>';
  364. _html += '<ul class="treeview-menu">';
  365. $.each(subchildNodes, function (i) {
  366. var subchildNodesrow = subchildNodes[i];
  367. _html += '<li><a class="menuItem" data-id="' + subchildNodesrow.ModuleId + '" href="' + subchildNodesrow.UrlAddress + '"><i class="' + subchildNodesrow.Icon + '"></i>' + subchildNodesrow.FullName + '</a></li>';
  368. });
  369. _html += '</ul>';
  370. } else {
  371. _html += '<a class="menuItem" data-id="' + subrow.ModuleId + '" href="' + subrow.UrlAddress + '"><i class="' + subrow.Icon + '"></i>' + subrow.FullName + '</a>';
  372. }
  373. _html += '</li>';
  374. });
  375. _html += '</ul>';
  376. }
  377. _html += '</li>'
  378. }
  379. });
  380. $("#sidebar-menu").append(_html);
  381. $("#sidebar-menu li a").click(function () {
  382. var d = $(this), e = d.next();
  383. if (e.is(".treeview-menu") && e.is(":visible")) {
  384. e.slideUp(500, function () {
  385. e.removeClass("menu-open")
  386. }),
  387. e.parent("li").removeClass("active")
  388. } else if (e.is(".treeview-menu") && !e.is(":visible")) {
  389. var f = d.parents("ul").first(),
  390. g = f.find("ul:visible").slideUp(500);
  391. g.removeClass("menu-open");
  392. var h = d.parent("li");
  393. e.slideDown(500, function () {
  394. e.addClass("menu-open"),
  395. f.find("li.active").removeClass("active"),
  396. h.addClass("active");
  397. var _height1 = $(window).height() - $("#sidebar-menu >li.active").position().top - 41;
  398. var _height2 = $("#sidebar-menu li > ul.menu-open").height() + 10
  399. if (_height2 > _height1) {
  400. $("#sidebar-menu >li > ul.menu-open").css({
  401. overflow: "auto",
  402. height: _height1
  403. })
  404. }
  405. })
  406. }
  407. e.is(".treeview-menu");
  408. });
  409. },
  410. indexOut: function () {
  411. dialogConfirm("注:您确定要安全退出本次登录吗?", function (r) {
  412. if (r) {
  413. Loading(true, "正在安全退出...");
  414. window.setTimeout(function () {
  415. $.ajax({
  416. url: contentPath + "/Login/OutLogin",
  417. type: "post",
  418. dataType: "json",
  419. success: function (data) {
  420. window.location.href = contentPath + "/Login/Index";
  421. }
  422. });
  423. }, 500);
  424. }
  425. });
  426. }
  427. };
  428. $(function () {
  429. $.learunindex.load();
  430. $.learunindex.loadMenu();
  431. $.learuntab.init();
  432. });
  433. })(jQuery);