index.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. layui.config({
  2. base: '../js/module/'
  3. }).extend({
  4. 'constants': '{/}js/util/constants',
  5. 'ajax': '{/}js/util/ajax',
  6. 'customUtil': '{/}js/util/util',
  7. 'api': '{/}js/api/index.api'
  8. }).use(['jquery', 'element', 'laytpl', 'api', 'constants', 'customUtil'], () => {
  9. const $ = layui.jquery;
  10. const element = layui.element;
  11. const laytpl = layui.laytpl;
  12. const constants = layui.constants;
  13. const form = layui.form;
  14. const customUtil = layui.customUtil;
  15. const userId = sessionStorage.getItem('login-userId');
  16. const userName = sessionStorage.getItem('login-userName');
  17. const phone = sessionStorage.getItem('login-phone');
  18. $("#indexUserName").text(userName);
  19. $('#loginBack').on('click', () => {
  20. localStorage.clear();
  21. window.location = constants.LOGIN_PATH;
  22. })
  23. $('#updatePwd').on('click', () => {
  24. $("#updatePwdWin .layui-form")[0].reset();
  25. layui.form.render();
  26. layer.open({
  27. type:1,
  28. title: "修改密码",
  29. content:$("#updatePwdWin")
  30. })
  31. })
  32. $('#updateTel').on('click', () => {
  33. $("#updateTelWin .layui-form")[0].reset();
  34. layui.form.render();
  35. layer.open({
  36. type:1,
  37. title: "修改手机号",
  38. content:$("#updateTelWin")
  39. })
  40. $("#oldTel").val(phone);
  41. })
  42. // 校验规则
  43. form.verify({
  44. pwd: [
  45. /^[\S]{6,12}$/, '密码必须6到12位,且不能出现空格'
  46. ],
  47. samePwd: function (value) {
  48. if (value === $('#oldPwd').val()) {
  49. return '新密码不能和旧密码相同!';
  50. }
  51. },
  52. rePwd: function (value) {
  53. if (value !== $('#newPwd').val()) {
  54. return '两次密码不一致!';
  55. }
  56. },
  57. phoneVal: function (value, item) {
  58. var mobile = /^1[3|4|5|6|7|8|9]\d{9}$/;
  59. var flag = mobile.test(value);
  60. if(!flag){
  61. return '请输入正确手机号';
  62. }
  63. }
  64. })
  65. form.on('submit(updatePwd)', (data) => {
  66. layui.api.updatePwd({
  67. userId : userId,
  68. oldPass : btoa(data.field.oldPwd),
  69. password : btoa(data.field.newPwd),
  70. repeatPass : btoa(data.field.rePwd)
  71. },
  72. (json) => {
  73. if(json.code == constants.SUCCESS_CODE){
  74. setTimeout( () => {
  75. layer.closeAll();
  76. },1500)
  77. }
  78. customUtil.refush(json.code == constants.SUCCESS_CODE, '保存成功', json.msg)
  79. }
  80. )
  81. return false
  82. })
  83. form.on('submit(updateTel)', (data) => {
  84. layui.api.updateTel({
  85. userId : userId,
  86. phone : btoa(data.field.phone)
  87. },
  88. (json) => {
  89. if(json.code == constants.SUCCESS_CODE){
  90. setTimeout( () => {
  91. layer.closeAll();
  92. },1500)
  93. sessionStorage.setItem('login-phone',data.field.phone);
  94. }
  95. customUtil.refush(json.code == constants.SUCCESS_CODE, '保存成功', json.msg)
  96. }
  97. )
  98. return false
  99. })
  100. const template = `
  101. <ul class="layui-nav layui-nav-tree" lay-filter="menu">
  102. {{# layui.each(d, function(index, item){ }}
  103. <li class="layui-nav-item layui-nav-itemed">
  104. <a class="" href="javascript:;">
  105. {{# if(item.icon) { }}
  106. <i class="fa {{item.icon}}" style="padding-right: 5px;"></i>
  107. {{# } }}
  108. {{item.name}}
  109. </a>
  110. <dl class="layui-nav-child">
  111. {{# layui.each(item.children, function(j, children){ }}
  112. <dd><a href="javascript:;" data-menu="{{children.menu}}">
  113. {{# if(children.icon) { }}
  114. <i class="fa {{children.icon}}" style="padding-right: 10px;"></i>
  115. {{# } }}
  116. {{children.name}}
  117. </a></dd>
  118. {{# }); }}
  119. </dl>
  120. </li>
  121. {{# }); }}
  122. </ul>
  123. `;
  124. layui.api.userTree(userId,(json) => {
  125. //console.info("", json.result);
  126. laytpl(template).render(json.result, (html) => {
  127. $('#menu-list').html(html);
  128. element.render('nav');
  129. });
  130. setTimeout(() => {
  131. $("[data-menu=dealt]").click();
  132. }, 1000)
  133. })
  134. /*const data = [{
  135. 'name': '系统管理',
  136. 'children': [{
  137. 'name': '菜单管理',
  138. 'menu': 'menu',
  139. 'icon': 'fa-user-o'
  140. }, {
  141. 'name': '按钮管理',
  142. 'menu': 'button',
  143. }, {
  144. 'name': '角色管理',
  145. 'menu': 'role',
  146. }, {
  147. 'name': '用户管理',
  148. 'menu': 'user',
  149. }, {
  150. 'name': '单位管理',
  151. 'menu': 'corp',
  152. }, {
  153. 'name': '系统配置',
  154. 'menu': 'config',
  155. },{
  156. 'name': '短信用户管理',
  157. 'menu': 'sms',
  158. }],
  159. }, {
  160. 'name': '业务办理',
  161. 'children': [{
  162. 'name': '待办',
  163. 'menu': 'dealt',
  164. }, {
  165. 'name': '已办',
  166. 'menu': 'done',
  167. }]
  168. }];*/
  169. /**
  170. * 菜单收折
  171. */
  172. $('#fast-shrink').on('click', (e) => {
  173. const icon = $(e.currentTarget).find('i');
  174. const status = icon.hasClass('layui-icon-shrink-right');
  175. $('.fast-menu-left').animate({left: status ? '-200px' : 0});
  176. //$('.fast-logo').animate({left: status ? '-200px' : 0});
  177. //$('.fast-header-left').animate({left: status ? 0 : '200px'});
  178. $('.fast-main').animate({left: status ? 0 : '200px'});
  179. $('.layui-footer').animate({left: status ? 0 : '200px'});
  180. icon.removeClass(status ? 'layui-icon-shrink-right' : 'layui-icon-spread-left');
  181. icon.addClass(status ? 'layui-icon-spread-left' : 'layui-icon-shrink-right');
  182. });
  183. /**
  184. * 菜单点击
  185. */
  186. //$(".layui-tab-title li:eq(0) i").remove();
  187. element.on('nav(menu)', (elem) => {
  188. /*if (elem.parent().find('.layui-nav-child').length > 0
  189. || elem.data('menu') == $('.layui-tab-item').attr('menu')) {
  190. return;
  191. }*/
  192. /*$('.fast-header-left-nav').css({display: 'flex'});
  193. $('.fast-header-left-nav span').eq(0).text(elem.parent().parent().prev().text());
  194. $('.fast-header-left-nav span').eq(2).text(elem.text());*/
  195. //$('.fast-iframe').attr({src: 'view/' + elem.data('menu') + '.html', menu: elem.data('menu')});
  196. //$(".layui-tab-title li:eq(0)").remove();
  197. const menu = elem.data('menu');
  198. if(!menu) {
  199. return;
  200. }
  201. let isTabAdd = true;
  202. $(".layui-tab-title li").each((i,dom) => {
  203. const layid = $(dom).attr("lay-id");
  204. if(layid == menu){
  205. isTabAdd = false;
  206. return;
  207. }
  208. })
  209. if(isTabAdd == true){
  210. //新增一个Tab项
  211. active.tabAdd('view/' + menu + '.html', menu, elem.text())
  212. }
  213. active.tabChange(menu);
  214. // $(".layui-tab-title li:eq(0) i").remove();
  215. });
  216. //触发事件
  217. const active = {
  218. tabfilter : 'index-nev',
  219. //在这里给active绑定几项事件,后面可通过active调用这些事件
  220. tabAdd: function (url, id, name) {
  221. //新增一个Tab项 传入三个参数,分别对应其标题,tab页面的地址,还有一个规定的id,是标签中data-id的属性值
  222. //关于tabAdd的方法所传入的参数可看layui的开发文档中基础方法部分
  223. element.tabAdd(active.tabfilter, {
  224. title: name,
  225. content: '<iframe class="fast-iframe" data-frameid="' + id + '" src="' + url + '"></iframe>',
  226. id: id //规定好的id
  227. })
  228. CustomRightClick(id); //给tab绑定右击事件
  229. },
  230. tabChange: function (id) {
  231. //切换到指定Tab项
  232. element.tabChange(active.tabfilter, id); //根据传入的id传入到指定的tab项
  233. },
  234. tabDelete: function (id) {
  235. element.tabDelete(active.tabfilter, id);//删除
  236. },
  237. tabDeleteAll: function (ids) {//删除所有
  238. $.each(ids, function (i, item) {
  239. element.tabDelete(active.tabfilter, item); //ids是一个数组,里面存放了多个id,调用tabDelete方法分别删除
  240. })
  241. },
  242. tabRefresh: function (id) { //刷新页面
  243. $("iframe[data-frameid='" + id + "']").attr("src", $("iframe[data-frameid='" + id + "']").attr("src")) //刷新框架
  244. }
  245. };
  246. let timeOutIndex = -1;
  247. function CustomRightClick(id) {
  248. //取消右键 rightmenu属性开始是隐藏的 ,当右击的时候显示,左击的时候隐藏
  249. $('.layui-tab-title').on('contextmenu', function () { return false; })
  250. $('body').click(function () {
  251. $('.rightmenu').hide();
  252. });
  253. //桌面点击右击
  254. $('.layui-tab-title').on('contextmenu', function (e) {
  255. var popupmenu = $(".rightmenu");
  256. popupmenu.find("li").attr("data-id", id); //在右键菜单中的标签绑定id属性
  257. //判断右侧菜单的位置
  258. l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX - 200;
  259. t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY - 30;
  260. popupmenu.css({ left: l, top: t }).show(); //进行绝对定位
  261. if(timeOutIndex != -1){
  262. clearTimeout(timeOutIndex);
  263. }
  264. timeOutIndex = setTimeout(() => {
  265. $('.rightmenu').hide();
  266. }, 3000)
  267. //alert("右键菜单")
  268. return false;
  269. });
  270. }
  271. $(".rightmenu li").click(function () {
  272. //右键菜单中的选项被点击之后,判断type的类型,决定关闭所有还是关闭当前。
  273. if ($(this).attr("data-type") == "closethis") {
  274. //如果关闭当前,即根据显示右键菜单时所绑定的id,执行tabDelete
  275. active.tabDelete($(this).attr("data-id"))
  276. } else if ($(this).attr("data-type") == "closeall") {
  277. var tabtitle = $(".layui-tab-title li");
  278. var ids = new Array();
  279. $.each(tabtitle, function (i) {
  280. ids[i] = $(this).attr("lay-id");
  281. })
  282. //如果关闭所有 ,即将所有的lay-id放进数组,执行tabDeleteAll
  283. active.tabDeleteAll(ids);
  284. } else if ($(this).attr("data-type") == "closeothe") {
  285. var id = $(this).attr("data-id");
  286. var tabtitle = $(".layui-tab-title li");
  287. var ids = new Array();
  288. $.each(tabtitle, function (i) {
  289. if (id != $(this).attr("lay-id")) {
  290. ids[i] = $(this).attr("lay-id");
  291. }
  292. })
  293. active.tabDeleteAll(ids);
  294. } else if ($(this).attr("data-type") == "refreshsys") {
  295. location.reload();
  296. } else if ($(this).attr("data-type") == "refreshthis") {
  297. active.tabRefresh($(this).attr("data-id"))
  298. }
  299. })
  300. });