let SIGN_REGEXP = /([yMdhsm])(\1*)/g; let DEFAULT_PATTERN = 'yyyy-MM-dd'; import jwtDecode from 'jwt-decode' import { Message } from 'element-ui'; function padding(s, len) { var len = len - (s + '').length; for (var i = 0; i < len; i++) { s = '0' + s; } return s; }; export default { getRoutes:function(routes,menus){ this.initRoutes(routes); menus.forEach((v,k) => { this.getRouterChildList(v, routes) }); }, initRoutes:function(routes) { routes.forEach((val, ind) => { val.hidden = true; if(val.children) { this.initRoutes(val.children); } }); }, getRouterChildList: function(menuUrl, routesChildren){ routesChildren.forEach ((val,ind) =>{ if (menuUrl == val.path) { val.hidden = false; return; } if (val.children) { this.getRouterChildList(menuUrl, val.children); } }) }, getActiveUser: function(){ let uid = this.getCookie("uid") if(uid){ let activeUserStr = this.getUserSession("activeUser"); return JSON.parse(activeUserStr); }else{ this.delUserSession("activeUser") } }, //获取jwt令牌 getJwt : function(){ let activeUser = this.getActiveUser() if(activeUser){ return activeUser.jwt } }, //解析jwt令牌,获取用户信息 getUserInfoFromJwt : function (jwt) { if(!jwt){ return ; } let jwtDecodeVal = jwtDecode(jwt); if (!jwtDecodeVal) { return ; } let activeUser={} //console.log(jwtDecodeVal) activeUser.utype = jwtDecodeVal.userType || ''; activeUser.nickname = jwtDecodeVal.nickname || ''; activeUser.username = jwtDecodeVal.username || ''; activeUser.userpic = jwtDecodeVal.userPic || ''; activeUser.userid = jwtDecodeVal.userId || ''; activeUser.authorities = jwtDecodeVal.authorities || ''; activeUser.uid = jwtDecodeVal.jti || ''; activeUser.jwt = jwt; activeUser.menus = jwtDecodeVal.menus || ''; return activeUser; }, checkActiveUser:function(){ // var jwt = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjEyNjMzNjUsInVzZXJfbmFtZSI6IjEyMyIsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iLCJnZXRSZXNvdXJjZSJdLCJqdGkiOiI3NmIxOTgzMi01MDk3LTQyMDMtYjhjMS1kOGI1N2ZmMmZhOTAiLCJjbGllbnRfaWQiOiJtYW5hZ2VyIiwic2NvcGUiOlsibWFuYWdlciJdfQ.MzycLCC9cR-905ilrd1bWH52nqto4MDYbbMSXgcRdVkUGlv2A2JrlIvbvxNc2BVug1L59AV_7hUa_SHZQgrOdHnyoMdcu5KoHHXsJi1O5wUXkuahc-K3KoBhwkyWY9O-DvwZhrmzsYN2gb_3qmU2xbHu6U1pwwscXGHjbKJDoWGdrmMkRc1cpxuqvH-0eusR1GLQ4gTBSyVNW4XVO7jMt9ATBubos7GhtbAMXnCQVO9pui2zvPvKVxlvwMjJowjdCc_5hvXjyUvWgbU1qUrdtXeskeT-HoVUtsol6OnFHnq7o9bIin1493ZwjDck_0R1R8mkGRGKylQtZdzESeQpYA'; let jwt_base64 = this.getCookie("juid"); if (jwt_base64 ) { let jwt = Base64.decode(jwt_base64) var jwtDecodeVal = jwtDecode(jwt); //console.log(jwtDecodeVal); // var user = sessionStorage.getItem('user'); if (jwtDecodeVal) { // user = JSON.parse(user); let activeUser={} //console.log(jwtDecodeVal) activeUser.utype = jwtDecodeVal.userType || ''; activeUser.username = jwtDecodeVal.username || ''; activeUser.nickname = jwtDecodeVal.nickname || ''; activeUser.userpic = jwtDecodeVal.userPic || ''; activeUser.userid = jwtDecodeVal.userId || ''; activeUser.authorities = jwtDecodeVal.authorities || ''; activeUser.menus = jwtDecodeVal.menus || ''; this.setSession("activeUser",JSON.stringify(activeUser)) return this.getUserSession("activeUser") } } return null; }, checkAuthorities: function(router,permission){ if(permission !='Login' && permission !='Logout'){//校验权限 let activeUser = this.getActiveUser() let authorities = activeUser.authorities; if (!authorities) { Message.error('对不起您没有此操作权限!'); //跳转到统一授权失败页面 //window.location = "http://ucenter.xuecheng.com/#/denied?returnUrl="+Base64.encode(window.location) router.push({ path: '/login' }) } //console.log(authorities) var ret1 = authorities.find((value, index, arr) => { return value == permission; }) if (!ret1) { Message.error('对不起您没有此操作权限!'); //跳转到统一授权失败页面 //window.location = "http://ucenter.xuecheng.com/#/denied?returnUrl="+Base64.encode(window.location) router.push({ path: '/login' }) } } }, checkmenu(routeValue,authorities){ if(routeValue.meta && routeValue.meta.permission){ let permission = routeValue.meta.permission // console.log(routeValue); let ret1 = authorities.find((value, index, arr) => { return value == permission; }) if (!ret1) { //将菜单 隐藏 routeValue.hidden = true } } }, getCookie: function (name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return (arr[2]); else return null; }, setCookie: function (c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()); }, delCookie: function (name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); }, setSession: function (key, value) { return sessionStorage.setItem(key, value); }, getUserSession: function (key) { return sessionStorage.getItem(key); }, delUserSession: function (key) { return sessionStorage.removeItem(key) }, getQueryStringByName: function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); var context = ""; if (r != null) context = r[2]; reg = null; r = null; return context == null || context == "" || context == "undefined" ? "" : context; }, formatDate: function (date, pattern) { pattern = pattern || DEFAULT_PATTERN; return pattern.replace(SIGN_REGEXP, function ($0) { switch ($0.charAt(0)) { case 'y': return padding(date.getFullYear(), $0.length); case 'M': return padding(date.getMonth() + 1, $0.length); case 'd': return padding(date.getDate(), $0.length); case 'w': return date.getDay() + 1; case 'h': return padding(date.getHours(), $0.length); case 'm': return padding(date.getMinutes(), $0.length); case 's': return padding(date.getSeconds(), $0.length); } }); }, parseDate: function (dateString, pattern) { var matchs1 = pattern.match(SIGN_REGEXP); var matchs2 = dateString.match(/(\d)+/g); if (matchs1.length == matchs2.length) { var _date = new Date(1970, 0, 1); for (var i = 0; i < matchs1.length; i++) { var _int = parseInt(matchs2[i]); var sign = matchs1[i]; switch (sign.charAt(0)) { case 'y': _date.setFullYear(_int); break; case 'M': _date.setMonth(_int - 1); break; case 'd': _date.setDate(_int); break; case 'h': _date.setHours(_int); break; case 'm': _date.setMinutes(_int); break; case 's': _date.setSeconds(_int); break; } } return _date; } return null; } }