//add by owen 修复 path 无法引用http://页面的问题 begin String.prototype.startWith = function (str) { if (str == null || str == "" || this.length == 0 || str.length > this.length) return false; if (this.substr(0, str.length) == str) return true; else return false; return true; } function initIFrame() { var $parent = $(".admin-iframe").parent(); if ($parent.hasClass('layui-body')) { $parent.addClass('admin-iframe-body'); return; } if ($parent.hasClass('layui-tab-item')) { $parent.css({ 'padding': '0', 'overflow-y': 'hidden' }); } else { $parent.css({ 'width': '100%', 'height': '100%' }); } } //add by owen 修复 path 无法引用http://页面的问题 end layui.define(['config', 'admin', 'layer', 'laytpl', 'element', 'form'], function (exports) { var $ = layui.$; var config = layui.config; var admin = layui.admin; var layer = layui.layer; var laytpl = layui.laytpl; var element = layui.element; var form = layui.form; var index = { // 渲染左侧菜单栏 initLeftNav: function () { admin.req('api-user/menus/current', {}, function (data) { admin.putTempData("menus", data.data); var menus = data.data; // 判断权限 for (var i = menus.length - 1; i >= 0; i--) { var tempMenu = menus[i]; if (tempMenu.auth && !admin.hasPerm(tempMenu.auth)) { menus.splice(i, 1); continue; } if (!tempMenu.subMenus) { continue; } for (var j = tempMenu.subMenus.length - 1; j >= 0; j--) { var jMenus = tempMenu.subMenus[j]; if (jMenus.auth && !admin.hasPerm(jMenus.auth)) { tempMenu.subMenus.splice(j, 1); continue; } if (!jMenus.subMenus) { continue; } for (var k = jMenus.subMenus.length - 1; k >= 0; k--) { if (jMenus.subMenus[k].auth && !admin.hasPerm(jMenus.subMenus[k].auth)) { jMenus.subMenus.splice(k, 1); continue; } } } } // 去除空的目录 for (var i = menus.length - 1; i >= 0; i--) { var tempMenu = menus[i]; if (tempMenu.subMenus && tempMenu.subMenus.length <= 0) { menus.splice(i, 1); continue; } if (!tempMenu.subMenus) { continue; } for (var j = tempMenu.subMenus.length - 1; j >= 0; j--) { var jMenus = tempMenu.subMenus[j]; if (jMenus.subMenus && jMenus.subMenus.length <= 0) { tempMenu.splice(j, 1); continue; } } } // 渲染 $('.layui-layout-admin .layui-side').load('pages/side.html', function () { laytpl(sideNav.innerHTML).render(menus, function (html) { $('#sideNav').after(html); }); element.render('nav'); admin.activeNav(Q.lash); }); }, 'GET'); }, // 路由注册 initRouter: function () { index.regRouter(admin.getTempData("menus")); // index.regRouter(config.menus); Q.reg('console', function () { var menuPath = 'pages/console.html' index.loadView('console', menuPath, '主页'); }); Q.init({ index: 'console' }); }, // 使用递归循环注册 regRouter: function (menus) { $.each(menus, function (i, data) { if (data.url && data.url.indexOf('#!') == 0) { Q.reg(data.url.substring(2), function () { if (data.path.startWith("http://")) { window.open(data.path); } else { //临时保存url data.path.startWith("http://") ? admin.putTempData("params", data.path) : null; var menuId = data.url.substring(2); //add by owen 修复 path 无法引用http://页面的问题 var menuPath = data.path.startWith("http://") ? 'pages/tpl/iframe.html' : 'pages/' + data.path index.loadView(menuId, menuPath, data.name); } }); } if (data.subMenus) { index.regRouter(data.subMenus); } }); }, // 路由加载组件 loadView: function (menuId, menuPath, menuName) { var contentDom = '.layui-layout-admin .layui-body'; admin.showLoading('.layui-layout-admin .layui-body'); var flag; // 选项卡是否添加 flag = menuPath.startWith("http://") ? false : flag; // 判断是否开启了选项卡功能 if (config.pageTabs) { $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title>li').each(function (index) { if ($(this).attr('lay-id') === menuId) { flag = true; } }); if (!flag) { element.tabAdd('admin-pagetabs', { title: menuName, //add by owen 修复 path 无法引用http://页面的问题 content: menuPath.startWith("http://") ? '
' : '', id: menuId }); } contentDom = '#' + menuId; element.tabChange('admin-pagetabs', menuId); admin.rollPage('auto'); // 切换tab关闭表格内浮窗 $('.layui-table-tips-c').trigger('click'); // 解决切换tab滚动条时而消失的问题 var $iframe = $('.layui-layout-admin .layui-body .layui-tab-content .layui-tab-item.layui-show .admin-iframe')[0]; if ($iframe) { $iframe.style.height = "99%"; $iframe.scrollWidth; $iframe.style.height = "100%"; } } if (!flag || admin.isRefresh) { $(contentDom).load(menuPath, function () { admin.isRefresh = false; element.render('breadcrumb'); form.render('select'); admin.removeLoading('.layui-layout-admin .layui-body'); }); } else { admin.removeLoading('.layui-layout-admin .layui-body'); } admin.activeNav(Q.lash); // 移动设备切换页面隐藏侧导航 if (document.body.clientWidth <= 750) { admin.flexible(true); } }, // 从服务器获取登录用户的信息 getUser: function (success) { layer.load(2); admin.req('api-user/users/current', {}, function (data) { layer.closeAll('loading'); if (data && data.code === 0) { let user = data.data; config.putUser(user); admin.putTempData("permissions", user.permissions); admin.putTempData("organization",user.organizations[user.organizations.length-1]); success(user); } else { if (data.code === 1000) { layer.msg(data.msg, { icon: 2, time: 4 * 1000 }, function () { //回调 config.removeToken(); location.replace('login.html'); }) } else { layer.msg('获取用户失败,请联系管理员', { icon: 2, time: 4 * 1000 }, function () { //回调 config.removeToken(); location.replace('login.html'); }) } } }, 'GET'); }, //获取菜单 getMenus: function () { admin.req('api-user/menus/current', {}, function (data) { admin.putTempData("menus", data); }, 'GET'); }, // 页面元素绑定事件监听 bindEvent: function () { // 退出登录 $('#btnLogout').click(function () { layer.confirm('确定退出登录?', function () { //通过认证中心 tuic admin.req('api-uaa/oauth/remove/token', {}, function (data) { config.removeToken(); location.replace('login.html'); }, 'POST'); }); }); // 修改密码 $('#setPsw').click(function () { admin.popupRight('pages/tpl/password.html'); }); // 个人信息 $('#setInfo').click(function () { Q.go('myInfo'); }); // 消息 $('#btnMessage').click(function () { admin.popupRight('pages/tpl/message.html'); }); }, // 检查多标签功能是否开启 checkPageTabs: function () { // 加载主页 if (config.pageTabs) { $('.layui-layout-admin').addClass('open-tab'); element.tabAdd('admin-pagetabs', { title: '', content: '
', id: 'console' }); $('#console').load('pages/console.html', function () { }); } else { $('.layui-layout-admin').removeClass('open-tab'); } }, // 打开新页面 openNewTab: function (param) { var url = param.url; var title = param.title; var menuId = param.menuId; if (!menuId) { menuId = url.replace(/[?:=&/]/g, '_'); } index.loadView(menuId, url, title); }, // 关闭选项卡 closeTab: function (menuId) { element.tabDelete('admin-pagetabs', menuId); } }; // tab选项卡切换监听 element.on('tab(admin-pagetabs)', function (data) { var layId = $(this).attr('lay-id'); Q.go(layId); }); exports('index', index); });