admin.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. layui.define(['jquery', 'form', 'layer', 'element'], function (exports) {
  2. var $ = layui.jquery,
  3. form = layui.form,
  4. layer = layui.layer,
  5. element = layui.element;
  6. var menu = [];
  7. var curMenu;
  8. /*
  9. * @todo 初始化加载完成执行方法
  10. * 打开或刷新后执行
  11. */
  12. $(function () {
  13. /*
  14. * @todo 读取本地存储中记录的已打开的tab项
  15. * 刷新后,读取记录,打开原来已打开的tab项
  16. */
  17. /*
  18. * @todo table事件
  19. */
  20. tableCheck = {
  21. init: function () {
  22. $(".layui-form-checkbox").click(function (event) {
  23. if ($(this).hasClass('layui-form-checked')) {
  24. $(this).removeClass('layui-form-checked');
  25. if ($(this).hasClass('header')) {
  26. $(".layui-form-checkbox").removeClass('layui-form-checked');
  27. }
  28. } else {
  29. $(this).addClass('layui-form-checked');
  30. if ($(this).hasClass('header')) {
  31. $(".layui-form-checkbox").addClass('layui-form-checked');
  32. }
  33. }
  34. });
  35. },
  36. getData: function () {
  37. var obj = $(".layui-form-checked").not('.header');
  38. var arr = [];
  39. obj.each(function (index, el) {
  40. arr.push(obj.eq(index).attr('data-id'));
  41. });
  42. return arr;
  43. }
  44. }
  45. //开启表格多选
  46. tableCheck.init();
  47. //延时加载
  48. setTimeout(function () {
  49. if (sessionStorage.getItem("menu")) {
  50. menu = JSON.parse(sessionStorage.getItem("menu"));
  51. for (var i = 0; i < menu.length; i++) {
  52. tab.tabAdd(menu[i].title, menu[i].url, menu[i].id);
  53. }
  54. } else {
  55. return false;
  56. }
  57. if (sessionStorage.getItem("curMenu")) {
  58. $('.layui-tab-title').find('layui-this').removeClass('layui-class');
  59. curMenu = JSON.parse(sessionStorage.getItem("curMenu"));
  60. id = curMenu.id;
  61. if (id) { //因为默认桌面首页不存在lay-id,所以要对此判断
  62. $('.layui-tab-title li[lay-id="' + id + '"]').addClass('layui-this');
  63. tab.tabChange(id);
  64. } else {
  65. $(".layui-tab-title li").eq(0).addClass('layui-this'); //未生效
  66. $('.layui-tab-content iframe').eq(0).parent().addClass('layui-show');
  67. }
  68. } else {
  69. $(".layui-tab-title li").eq(0).addClass('layui-this'); //未生效
  70. $('.layui-tab-content iframe').eq(0).parent().addClass('layui-show');
  71. }
  72. }, 100);
  73. //点击tab标题时,触发reloadTab函数
  74. $('#tabName').on('click', 'li', function () {
  75. reloadTab(this);
  76. });
  77. //初始化加载结束
  78. });
  79. /*
  80. * @todo 左侧导航菜单的显示和隐藏
  81. */
  82. $('.container .left_open i').click(function (event) {
  83. if ($('.left-nav').css('left') == '0px') {
  84. //此处左侧菜单是显示状态,点击隐藏
  85. $('.left-nav').animate({
  86. left: '-221px'
  87. }, 100);
  88. $('.page-content').animate({
  89. left: '0px'
  90. }, 100);
  91. $('.page-content-bg').hide();
  92. } else {
  93. //此处左侧菜单是隐藏状态,点击显示
  94. $('.left-nav').animate({
  95. left: '0px'
  96. }, 100);
  97. $('.page-content').animate({
  98. left: '221px'
  99. }, 100);
  100. //点击显示后,判断屏幕宽度较小时显示遮罩背景
  101. if ($(window).width() < 768) {
  102. $('.page-content-bg').show();
  103. }
  104. }
  105. });
  106. //点击遮罩背景,左侧菜单隐藏
  107. $('.page-content-bg').click(function (event) {
  108. $('.left-nav').animate({
  109. left: '-221px'
  110. }, 100);
  111. $('.page-content').animate({
  112. left: '0px'
  113. }, 100);
  114. $(this).hide();
  115. });
  116. /*
  117. * @todo 左侧菜单事件
  118. * 如果有子级就展开,没有就打开frame
  119. */
  120. $('.left-nav #nav li').click(function (event) {
  121. if ($(this).children('.sub-menu').length) {
  122. if ($(this).hasClass('open')) {
  123. $(this).removeClass('open');
  124. $(this).find('.nav_right').html('&#xe6a7;');
  125. $(this).children('.sub-menu').stop().slideUp();
  126. $(this).siblings().children('.sub-menu').slideUp();
  127. } else {
  128. $(this).addClass('open');
  129. $(this).children('a').find('.nav_right').html('&#xe6a6;');
  130. $(this).children('.sub-menu').stop().slideDown();
  131. $(this).siblings().children('.sub-menu').stop().slideUp();
  132. $(this).siblings().find('.nav_right').html('&#xe6a7;');
  133. $(this).siblings().removeClass('open');
  134. }
  135. } else {
  136. var url = $(this).children('a').attr('_href');
  137. var title = $(this).find('cite').html();
  138. var index = $('.left-nav #nav li').index($(this));
  139. for (var i = 0; i < $('.weIframe').length; i++) {
  140. if ($('.weIframe').eq(i).attr('tab-id') == index + 1) {
  141. tab.tabChange(index + 1);
  142. event.stopPropagation();
  143. return;
  144. }
  145. }
  146. ;
  147. tab.tabAdd(title, url, index + 1);
  148. tab.tabChange(index + 1);
  149. }
  150. event.stopPropagation(); //不触发任何前辈元素上的事件处理函数
  151. });
  152. // 组织导航
  153. $('.left-nav1 #nav li').click(function (event) {
  154. if ($(this).children('.sub-menu').length) {
  155. if ($(this).hasClass('open')) {
  156. $(this).removeClass('open');
  157. $(this).find('.nav_right').html('&#xe6a7;');
  158. $(this).children('.sub-menu').stop().slideUp();
  159. $(this).siblings().children('.sub-menu').slideUp();
  160. } else {
  161. $(this).addClass('open');
  162. $(this).children('a').find('.nav_right').html('&#xe6a6;');
  163. $(this).children('.sub-menu').stop().slideDown();
  164. $(this).siblings().children('.sub-menu').stop().slideUp();
  165. $(this).siblings().find('.nav_right').html('&#xe6a7;');
  166. $(this).siblings().removeClass('open');
  167. }
  168. }
  169. event.stopPropagation(); //不触发任何前辈元素上的事件处理函数
  170. });
  171. /*
  172. * @todo tab触发事件:增加、删除、切换
  173. */
  174. var tab = {
  175. tabAdd: function (title, url, id) {
  176. //判断当前id的元素是否存在于tab中
  177. var li = $("#WeTabTip li[lay-id=" + id + "]").length;
  178. //console.log(li);
  179. if (li > 0) {
  180. //tab已经存在,直接切换到指定Tab项
  181. //console.log(">0");
  182. element.tabChange('wenav_tab', id); //切换到:用户管理
  183. } else {
  184. //该id不存在,新增一个Tab项
  185. //console.log("<0");
  186. element.tabAdd('wenav_tab', {
  187. title: title,
  188. content: '<iframe tab-id="' + id + '" frameborder="0" src="' + url + '" scrolling="yes" class="weIframe"></iframe>',
  189. id: id
  190. });
  191. //当前窗口内容
  192. setStorageMenu(title, url, id);
  193. }
  194. CustomRightClick(id); //绑定右键菜单
  195. FrameWH(); //计算框架高度
  196. },
  197. tabDelete: function (id) {
  198. element.tabDelete("wenav_tab", id); //删除
  199. removeStorageMenu(id);
  200. },
  201. tabChange: function (id) {
  202. //切换到指定Tab项
  203. element.tabChange('wenav_tab', id);
  204. },
  205. tabDeleteAll: function (ids) { //删除所有
  206. $.each(ids, function (i, item) {
  207. element.tabDelete("wenav_tab", item);
  208. })
  209. sessionStorage.removeItem('menu');
  210. }
  211. };
  212. /*
  213. * @todo 监听右键事件,绑定右键菜单
  214. * 先取消默认的右键事件,再绑定菜单,触发不同的点击事件
  215. */
  216. function CustomRightClick(id) {
  217. //取消右键
  218. $('.layui-tab-title li').on('contextmenu', function () {
  219. return false;
  220. })
  221. $('.layui-tab-title,.layui-tab-title li').on('click', function () {
  222. $('.rightMenu').hide();
  223. });
  224. //桌面点击右击
  225. $('.layui-tab-title li').on('contextmenu', function (e) {
  226. var aid = $(this).attr("lay-id"); //获取右键时li的lay-id属性
  227. var popupmenu = $(".rightMenu");
  228. popupmenu.find("li").attr("data-id", aid);
  229. //console.log("popopmenuId:" + popupmenu.find("li").attr("data-id"));
  230. l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX;
  231. t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY;
  232. popupmenu.css({
  233. left: l,
  234. top: t
  235. }).show();
  236. //alert("右键菜单")
  237. return false;
  238. });
  239. }
  240. $("#rightMenu li").click(function () {
  241. var type = $(this).attr("data-type");
  242. var layId = $(this).attr("data-id")
  243. if (type == "current") {
  244. //console.log("close this:" + layId);
  245. tab.tabDelete(layId);
  246. } else if (type == "all") {
  247. //console.log("closeAll");
  248. var tabtitle = $(".layui-tab-title li");
  249. var ids = new Array();
  250. $.each(tabtitle, function (i) {
  251. ids[i] = $(this).attr("lay-id");
  252. })
  253. tab.tabDeleteAll(ids);
  254. } else if (type == "fresh") {
  255. //console.log("fresh:" + layId);
  256. tab.tabChange($(this).attr("data-id"));
  257. var othis = $('.layui-tab-title').find('>li[lay-id="' + layId + '"]'),
  258. index = othis.parent().children('li').index(othis),
  259. parents = othis.parents('.layui-tab').eq(0),
  260. item = parents.children('.layui-tab-content').children('.layui-tab-item'),
  261. src = item.eq(index).find('iframe').attr("src");
  262. item.eq(index).find('iframe').attr("src", src);
  263. } else if (type == "other") {
  264. var thisId = layId;
  265. $('.layui-tab-title').find('li').each(function (i, o) {
  266. var layId = $(o).attr('lay-id');
  267. if (layId != thisId && layId != 0) {
  268. tab.tabDelete(layId);
  269. }
  270. });
  271. }
  272. $('.rightMenu').hide();
  273. });
  274. /*
  275. * @todo 重新计算iframe高度
  276. */
  277. function FrameWH() {
  278. var h = $(window).height() - 36 - 46 - 40;
  279. var h1 = $(window).height() - 36 - 25;
  280. $(".weIframe").css("height", h + "px");
  281. $(".left").css("height", h1 + "px");
  282. $(".right_main").css("height", h1 - 20 + "px");
  283. }
  284. $(window).resize(function () {
  285. FrameWH();
  286. });
  287. /*
  288. 参数解释:
  289. title 标题
  290. url 请求的url
  291. id 需要操作的数据id
  292. w 弹出层宽度(缺省调默认值)
  293. h 弹出层高度(缺省调默认值)
  294. */
  295. window.WeAdminShow = function (title, url, w, h, ids) {
  296. if (title == null || title == '') {
  297. title = false;
  298. }
  299. ;
  300. if (url == null || url == '') {
  301. url = "404.html";
  302. }
  303. ;
  304. if (w == null || w == '') {
  305. w = ($(window).width() * 0.9);
  306. }
  307. ;
  308. if (h == null || h == '') {
  309. h = ($(window).height() - 50);
  310. }
  311. ;
  312. layer.open({
  313. type: 2,
  314. area: [w + 'px', h + 'px'],
  315. fix: false, //不固定
  316. maxmin: true,
  317. shadeClose: true,
  318. shade: 0.4,
  319. title: title,
  320. content: url,
  321. success: function (layero, index) {
  322. var body = layer.getChildFrame('body', index);
  323. console.log()
  324. },
  325. yes: function (index, layero) {
  326. var body = layer.getChildFrame('body', index);
  327. layer.close(index)
  328. }
  329. });
  330. };
  331. /*弹出层+传递ID参数*/
  332. window.WeAdminEdit = function (title, url, id, w, h) {
  333. if (title == null || title == '') {
  334. title = false;
  335. }
  336. ;
  337. if (url == null || url == '') {
  338. url = "404.html";
  339. }
  340. ;
  341. if (w == null || w == '') {
  342. w = ($(window).width() * 0.9);
  343. }
  344. ;
  345. if (h == null || h == '') {
  346. h = ($(window).height() - 50);
  347. }
  348. ;
  349. layer.open({
  350. type: 2,
  351. area: [w + 'px', h + 'px'],
  352. fix: false, //不固定
  353. maxmin: true,
  354. shadeClose: true,
  355. shade: 0.4,
  356. title: title,
  357. content: url,
  358. success: function (layero, index) {
  359. //向iframe页的id=house的元素传值 // 参考 https://yq.aliyun.com/ziliao/133150
  360. var body = layer.getChildFrame('body', index);
  361. body.contents().find("#dataId").val(id);
  362. console.log(id);
  363. },
  364. error: function (layero, index) {
  365. alert("aaa");
  366. }
  367. });
  368. };
  369. /**
  370. *@todo tab监听:点击tab项对应的关闭按钮事件
  371. */
  372. $('.layui-tab-close').click(function (event) {
  373. $('.layui-tab-title li').eq(0).find('i').remove();
  374. });
  375. /**
  376. *@todo tab切换监听
  377. * tab切换监听不能写字初始化加载$(function())方法内,否则不执行
  378. */
  379. element.on('tab(wenav_tab)', function (data) {
  380. //console.log(this); //当前Tab标题所在的原始DOM元素
  381. setStorageCurMenu();
  382. });
  383. /*
  384. * @todo 监听layui Tab项的关闭按钮,改变本地存储
  385. */
  386. element.on('tabDelete(wenav_tab)', function (data) {
  387. var layId = $(this).parent('li').attr('lay-id');
  388. //console.log(layId);
  389. removeStorageMenu(layId);
  390. });
  391. /**
  392. *@todo 本地存储 localStorage
  393. * 为了保持统一,将sessionStorage更换为存储周期更长的localStorage
  394. */
  395. //本地存储记录所有打开的窗口
  396. function setStorageMenu(title, url, id) {
  397. var menu = JSON.parse(sessionStorage.getItem('menu'));
  398. if (menu) {
  399. var deep = false;
  400. for (var i = 0; i < menu.length; i++) {
  401. if (menu[i].id == id) {
  402. deep = true;
  403. menu[i].title = title;
  404. menu[i].url = url;
  405. menu[i].id = id;
  406. }
  407. }
  408. if (!deep) {
  409. menu.push({
  410. title: title,
  411. url: url,
  412. id: id
  413. })
  414. }
  415. } else {
  416. var menu = [{
  417. title: title,
  418. url: url,
  419. id: id
  420. }]
  421. }
  422. sessionStorage.setItem('menu', JSON.stringify(menu));
  423. }
  424. //本地存储记录当前打开窗口
  425. function setStorageCurMenu() {
  426. var curMenu = sessionStorage.getItem('curMenu');
  427. var text = $('.layui-tab-title').find('.layui-this').text();
  428. text = text.split('ဆ')[0];
  429. var url = $('.layui-tab-content').find('.layui-show').find('.weIframe').attr('src');
  430. var id = $('.layui-tab-title').find('.layui-this').attr('lay-id');
  431. //console.log(text);
  432. curMenu = {
  433. title: text,
  434. url: url,
  435. id: id
  436. }
  437. sessionStorage.setItem('curMenu', JSON.stringify(curMenu));
  438. }
  439. //本地存储中移除删除的元素
  440. function removeStorageMenu(id) {
  441. var menu = JSON.parse(sessionStorage.getItem('menu'));
  442. //var curMenu = JSON.parse(localStorage.getItem('curMenu'));
  443. if (menu) {
  444. var deep = false;
  445. for (var i = 0; i < menu.length; i++) {
  446. if (menu[i].id == id) {
  447. deep = true;
  448. menu.splice(i, 1);
  449. }
  450. }
  451. } else {
  452. return false;
  453. }
  454. sessionStorage.setItem('menu', JSON.stringify(menu));
  455. }
  456. /**
  457. * 判断初次登录时,跳转到登录页
  458. */
  459. var login = sessionStorage.getItem('login');
  460. $('.loginout').click(function () {
  461. login = 0;
  462. var data = {
  463. login: 1
  464. };
  465. sessionStorage.setItem('data', JSON.stringify(data));
  466. });
  467. $('.loginin').click(function () {
  468. login = 1;
  469. var data = {
  470. login: 1
  471. };
  472. sessionStorage.setItem('data', JSON.stringify(data));
  473. });
  474. /*
  475. *Tab加载后刷新
  476. * 判断是刷新后第一次点击时,刷新frame子页面
  477. * */
  478. window.reloadTab = function (which) {
  479. var len = $('.layui-tab-title').children('li').length;
  480. var layId = $(which).attr('lay-id');
  481. var i = 1;
  482. if ($(which).attr('data-bit')) {
  483. return false; //判断页面打开后第一次点击,执行刷新
  484. } else {
  485. $(which).attr('data-bit', i);
  486. var frame = $('.weIframe[tab-id=' + layId + ']');
  487. frame.attr('src', frame.attr('src'));
  488. console.log("reload:" + $(which).attr('data-bit'));
  489. }
  490. }
  491. /**
  492. *@todo Frame内部的按钮点击打开其他frame的tab
  493. */
  494. exports('admin', {});
  495. window.moveDep = function (title, url, w, h, table, Tableid) {
  496. layer.open({
  497. type: 2,
  498. area: [w + 'px', h + 'px'],
  499. fix: false, //不固定
  500. maxmin: true,
  501. shadeClose: true,
  502. shade: 0.4,
  503. btn: ['确认', '取消'],
  504. title: title,
  505. content: '../../pages/ztree/ztree.html',
  506. success: function (layero, index) {
  507. },
  508. yes: function (index, layero) {
  509. var body = layer.getChildFrame('body', index);
  510. var obj = {
  511. _method: 'put',
  512. };
  513. $.ajax({
  514. method: 'post',
  515. url: url + sessionStorage.getItem("statusId") + "/" + body.find('.departmentId').val(),
  516. data: obj,
  517. dataType: 'json',
  518. success: function (res) {
  519. if (res.code === '200') {
  520. layer.msg('移动成功', {icon: 1});
  521. table.reload(Tableid);
  522. layer.close(index);
  523. } else {
  524. layer.msg('移动失败,请检查网络', {icon: 2});
  525. }
  526. },
  527. error: function (err) {
  528. }
  529. })
  530. }
  531. });
  532. };
  533. // 时间格式化
  534. window.getPreMonth = function (date) {
  535. var arr = date.split('-');
  536. var year = arr[0]; //获取当前日期的年份
  537. var month = arr[1]; //获取当前日期的月份
  538. var day = arr[2]; //获取当前日期的日
  539. var days = new Date(year, month, 0);
  540. days = days.getDate(); //获取当前日期中月的天数
  541. var year2 = year;
  542. var month2 = parseInt(month) - 1;
  543. if (month2 == 0) {
  544. year2 = parseInt(year2) - 1;
  545. month2 = 12;
  546. }
  547. var day2 = day;
  548. var days2 = new Date(year2, month2, 0);
  549. days2 = days2.getDate();
  550. if (day2 > days2) {
  551. day2 = days2;
  552. }
  553. if (month2 < 10) {
  554. month2 = '0' + month2;
  555. }
  556. var t2 = year2 - 1 + '-' + month2 + '-' + day2;
  557. return t2;
  558. };
  559. });