index.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. var $,tab,skyconsWeather;
  2. layui.config({
  3. base : "/assets/sub/js/"
  4. }).use(['bodyTab','form','element','layer','jquery'],function(){
  5. var form = layui.form,
  6. layer = layui.layer,
  7. element = layui.element;
  8. $ = layui.jquery;
  9. tab = layui.bodyTab({
  10. openTabNum : "50", //最大可打开窗口数量
  11. url : "/sub/index/menu" //获取菜单json地址
  12. });
  13. //更换皮肤
  14. function skins(){
  15. var skin = window.sessionStorage.getItem("skin");
  16. if(skin){ //如果更换过皮肤
  17. if(window.sessionStorage.getItem("skinValue") != "自定义"){
  18. $("body").addClass(window.sessionStorage.getItem("skin"));
  19. }else{
  20. $(".layui-layout-admin .layui-header").css("background-color",skin.split(',')[0]);
  21. $(".layui-bg-black").css("background-color",skin.split(',')[1]);
  22. $(".hideMenu").css("background-color",skin.split(',')[2]);
  23. }
  24. }
  25. }
  26. skins();
  27. $(".changeSkin").click(function(){
  28. layer.open({
  29. title : "更换皮肤",
  30. area : ["310px","280px"],
  31. type : "1",
  32. content : '<div class="skins_box">'+
  33. '<form class="layui-form">'+
  34. '<div class="layui-form-item">'+
  35. '<input type="radio" name="skin" value="默认" title="默认" lay-filter="default" checked="">'+
  36. '<input type="radio" name="skin" value="橙色" title="橙色" lay-filter="orange">'+
  37. '<input type="radio" name="skin" value="蓝色" title="蓝色" lay-filter="blue">'+
  38. '<input type="radio" name="skin" value="自定义" title="自定义" lay-filter="custom">'+
  39. '<div class="skinCustom">'+
  40. '<input type="text" class="layui-input topColor" name="topSkin" placeholder="顶部颜色" />'+
  41. '<input type="text" class="layui-input leftColor" name="leftSkin" placeholder="左侧颜色" />'+
  42. '<input type="text" class="layui-input menuColor" name="btnSkin" placeholder="顶部菜单按钮" />'+
  43. '</div>'+
  44. '</div>'+
  45. '<div class="layui-form-item skinBtn">'+
  46. '<a href="javascript:;" class="layui-btn layui-btn-small layui-btn-normal" lay-submit="" lay-filter="changeSkin">确定更换</a>'+
  47. '<a href="javascript:;" class="layui-btn layui-btn-small layui-btn-primary" lay-submit="" lay-filter="noChangeSkin">我再想想</a>'+
  48. '</div>'+
  49. '</form>'+
  50. '</div>',
  51. success : function(index, layero){
  52. var skin = window.sessionStorage.getItem("skin");
  53. if(window.sessionStorage.getItem("skinValue")){
  54. $(".skins_box input[value="+window.sessionStorage.getItem("skinValue")+"]").attr("checked","checked");
  55. };
  56. if($(".skins_box input[value=自定义]").attr("checked")){
  57. $(".skinCustom").css("visibility","inherit");
  58. $(".topColor").val(skin.split(',')[0]);
  59. $(".leftColor").val(skin.split(',')[1]);
  60. $(".menuColor").val(skin.split(',')[2]);
  61. };
  62. form.render();
  63. $(".skins_box").removeClass("layui-hide");
  64. $(".skins_box .layui-form-radio").on("click",function(){
  65. var skinColor;
  66. if($(this).find("span").text() == "橙色"){
  67. skinColor = "orange";
  68. }else if($(this).find("span").text() == "蓝色"){
  69. skinColor = "blue";
  70. }else if($(this).find("span").text() == "默认"){
  71. skinColor = "";
  72. }
  73. if($(this).find("span").text() != "自定义"){
  74. $(".topColor,.leftColor,.menuColor").val('');
  75. $("body").removeAttr("class").addClass("main_body "+skinColor+"");
  76. $(".skinCustom").removeAttr("style");
  77. $(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
  78. }else{
  79. $(".skinCustom").css("visibility","inherit");
  80. }
  81. })
  82. var skinStr,skinColor;
  83. $(".topColor").blur(function(){
  84. $(".layui-layout-admin .layui-header").css("background-color",$(this).val());
  85. })
  86. $(".leftColor").blur(function(){
  87. $(".layui-bg-black").css("background-color",$(this).val());
  88. })
  89. $(".menuColor").blur(function(){
  90. $(".hideMenu").css("background-color",$(this).val());
  91. })
  92. form.on("submit(changeSkin)",function(data){
  93. if(data.field.skin != "自定义"){
  94. if(data.field.skin == "橙色"){
  95. skinColor = "orange";
  96. }else if(data.field.skin == "蓝色"){
  97. skinColor = "blue";
  98. }else if(data.field.skin == "默认"){
  99. skinColor = "";
  100. }
  101. window.sessionStorage.setItem("skin",skinColor);
  102. }else{
  103. skinStr = $(".topColor").val()+','+$(".leftColor").val()+','+$(".menuColor").val();
  104. window.sessionStorage.setItem("skin",skinStr);
  105. $("body").removeAttr("class").addClass("main_body");
  106. }
  107. window.sessionStorage.setItem("skinValue",data.field.skin);
  108. layer.closeAll("page");
  109. });
  110. form.on("submit(noChangeSkin)",function(){
  111. $("body").removeAttr("class").addClass("main_body "+window.sessionStorage.getItem("skin")+"");
  112. $(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
  113. skins();
  114. layer.closeAll("page");
  115. });
  116. },
  117. cancel : function(){
  118. $("body").removeAttr("class").addClass("main_body "+window.sessionStorage.getItem("skin")+"");
  119. $(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
  120. skins();
  121. }
  122. })
  123. })
  124. //退出
  125. $(".signOut").click(function(){
  126. window.sessionStorage.removeItem("menu");
  127. menu = [];
  128. window.sessionStorage.removeItem("curmenu");
  129. })
  130. //隐藏左侧导航
  131. $(".hideMenu").click(function(){
  132. $(".layui-layout-admin").toggleClass("showMenu");
  133. //渲染顶部窗口
  134. tab.tabMove();
  135. })
  136. //渲染左侧菜单
  137. tab.render();
  138. //手机设备的简单适配
  139. var treeMobile = $('.site-tree-mobile'),
  140. shadeMobile = $('.site-mobile-shade')
  141. treeMobile.on('click', function(){
  142. $('body').addClass('site-mobile');
  143. });
  144. shadeMobile.on('click', function(){
  145. $('body').removeClass('site-mobile');
  146. });
  147. // 添加新窗口
  148. $("body").on("click",".layui-nav .layui-nav-item a",function(){
  149. //如果不存在子级
  150. if($(this).siblings().length == 0){
  151. addTab($(this));
  152. $('body').removeClass('site-mobile'); //移动端点击菜单关闭菜单层
  153. }
  154. $(this).parent("li").siblings().removeClass("layui-nav-itemed");
  155. })
  156. //刷新后还原打开的窗口
  157. if(window.sessionStorage.getItem("menu") != null){
  158. menu = JSON.parse(window.sessionStorage.getItem("menu"));
  159. curmenu = window.sessionStorage.getItem("curmenu");
  160. var openTitle = '';
  161. for(var i=0;i<menu.length;i++){
  162. openTitle = '';
  163. if(menu[i].icon){
  164. if(menu[i].icon.split("-")[0] == 'icon'){
  165. openTitle += '<i class="iconfont '+menu[i].icon+'"></i>';
  166. }else{
  167. openTitle += '<i class="layui-icon">'+menu[i].icon+'</i>';
  168. }
  169. }
  170. openTitle += '<cite>'+menu[i].title+'</cite>';
  171. openTitle += '<i class="layui-icon layui-unselect layui-tab-close" data-id="'+menu[i].layId+'" data-url="'+menu[i].href+'">&#x1006;</i>';
  172. element.tabAdd("bodyTab",{
  173. title : openTitle,
  174. content :"<iframe src='"+menu[i].href+"' data-id='"+menu[i].layId+"'></frame>",
  175. id : menu[i].layId
  176. })
  177. //定位到刷新前的窗口
  178. if(curmenu != "undefined"){
  179. if(curmenu == '' || curmenu == "null"){ //定位到后台首页
  180. element.tabChange("bodyTab",'');
  181. }else if(JSON.parse(curmenu).title == menu[i].title){ //定位到刷新前的页面
  182. element.tabChange("bodyTab",menu[i].layId);
  183. }
  184. }else{
  185. element.tabChange("bodyTab",menu[menu.length-1].layId);
  186. }
  187. }
  188. //渲染顶部窗口
  189. tab.tabMove();
  190. }
  191. //刷新当前
  192. $(".refresh").on("click",function(){ //此处添加禁止连续点击刷新一是为了降低服务器压力,另外一个就是为了防止超快点击造成chrome本身的一些js文件的报错(不过貌似这个问题还是存在,不过概率小了很多)
  193. if($(this).hasClass("refreshThis")){
  194. $(this).removeClass("refreshThis");
  195. $(".clildFrame .layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload(true);
  196. $(".refresh").addClass("refreshThis");
  197. /*setTimeout(function(){
  198. $(".refresh").addClass("refreshThis");
  199. },2000)*/
  200. }else{
  201. layer.msg("您点击的速度超过了服务器的响应速度,还是等两秒再刷新吧!");
  202. }
  203. })
  204. //关闭其他
  205. $(".closePageOther").on("click",function(){
  206. if($("#top_tabs li").length>2 && $("#top_tabs li.layui-this cite").text()!="后台首页"){
  207. var menu = JSON.parse(window.sessionStorage.getItem("menu"));
  208. $("#top_tabs li").each(function(){
  209. if($(this).attr("lay-id") != '' && !$(this).hasClass("layui-this")){
  210. element.tabDelete("bodyTab",$(this).attr("lay-id")).init();
  211. //此处将当前窗口重新获取放入session,避免一个个删除来回循环造成的不必要工作量
  212. for(var i=0;i<menu.length;i++){
  213. if($("#top_tabs li.layui-this cite").text() == menu[i].title){
  214. menu.splice(0,menu.length,menu[i]);
  215. window.sessionStorage.setItem("menu",JSON.stringify(menu));
  216. }
  217. }
  218. }
  219. })
  220. }else if($("#top_tabs li.layui-this cite").text()=="后台首页" && $("#top_tabs li").length>1){
  221. $("#top_tabs li").each(function(){
  222. if($(this).attr("lay-id") != '' && !$(this).hasClass("layui-this")){
  223. element.tabDelete("bodyTab",$(this).attr("lay-id")).init();
  224. window.sessionStorage.removeItem("menu");
  225. menu = [];
  226. window.sessionStorage.removeItem("curmenu");
  227. }
  228. })
  229. }else{
  230. layer.msg("没有可以关闭的窗口了@_@");
  231. }
  232. //渲染顶部窗口
  233. tab.tabMove();
  234. })
  235. //关闭全部
  236. $(".closePageAll").on("click",function(){
  237. if($("#top_tabs li").length > 1){
  238. $("#top_tabs li").each(function(){
  239. if($(this).attr("lay-id") != ''){
  240. element.tabDelete("bodyTab",$(this).attr("lay-id")).init();
  241. window.sessionStorage.removeItem("menu");
  242. menu = [];
  243. window.sessionStorage.removeItem("curmenu");
  244. }
  245. })
  246. }else{
  247. layer.msg("没有可以关闭的窗口了@_@");
  248. }
  249. //渲染顶部窗口
  250. tab.tabMove();
  251. })
  252. $(document).on('click','#top_tabs',function (){
  253. let url=$('#top_tabs .layui-this .layui-tab-close').data('url')
  254. if(url){
  255. let a=$('.layui-nav-tree .layui-nav-item').find(`a[data-url="${url}"]`)
  256. a.trigger('click')
  257. if(a.parent().parent().hasClass('layui-nav-child')){
  258. a.parent().parent().parent().addClass('layui-nav-itemed')
  259. }
  260. }else{
  261. $('.layui-nav-tree .layui-nav-item a').eq(0).trigger('click')
  262. }
  263. })
  264. })
  265. //打开新窗口
  266. function addTab(_this){
  267. tab.tabAdd(_this);
  268. }