// The Vue build version to load with the `import` command
|
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
import Vue from 'vue'
|
import App from './App'
|
import ElementUI from 'element-ui'
|
import 'element-ui/lib/theme-chalk/index.css'
|
import VueRouter from 'vue-router'
|
|
import routes from './base/router'
|
import store from './vuex/store'
|
import utilApi from './common/utils';
|
// import Mock from './mock'
|
// Mock.bootstrap();
|
|
require('./statics/css/common.css')
|
require('./statics/js/common.js')
|
|
Vue.config.productionTip = false;
|
|
// 在Vue中全局使用mintui
|
Vue.use(ElementUI);
|
Vue.use(VueRouter);
|
|
|
// 将vue-resource在vue中绑定,自动在vue对象实例上注入一个$http对象就可以使用ajax方法了
|
import vueResource from 'vue-resource';
|
let Base64 = require('js-base64').Base64;
|
let sysConfig = require('@/../config/sysConfig');
|
let openAuthenticate = sysConfig.openAuthenticate;
|
let openAuthorize = sysConfig.openAuthorize;
|
|
Vue.use(vueResource);
|
|
import * as systemApi from './base/api/system';
|
/* eslint-disable no-new */
|
const router = new VueRouter({
|
routes:routes
|
});
|
|
router.beforeEach((to, from, next) => {
|
if(openAuthenticate){
|
//console.log(to)
|
// console.log(from)
|
//!***********身份校验***************
|
let activeUser;
|
let uid;
|
let menus;
|
let ind;
|
try{
|
activeUser = utilApi.getActiveUser()
|
uid = utilApi.getCookie("uid")
|
}catch(e){
|
//alert(e)
|
}
|
if(activeUser && uid && uid == activeUser.uid) {
|
menus = activeUser.menus;
|
if (menus) {
|
utilApi.getRoutes(routes,menus);
|
ind = menus.indexOf(to.path);
|
}
|
if(to.path === '/') {
|
next({path : '/home'})
|
}else if (ind == -1 && to.path !='/logout' && to.path!='/password'){
|
next({path : '/home'})
|
} else {
|
next();
|
}
|
}else if (to.path =='/login' || to.path =='/logout') {
|
next();
|
}else if(to.path == '/'){
|
next({path : '/login'});
|
}else if(uid){
|
//请求获取jwt
|
systemApi.getjwt().then((res)=>{
|
if(res.success){
|
let jwt = res.jwt;
|
let activeUser = utilApi.getUserInfoFromJwt(jwt);
|
if(activeUser){
|
utilApi.setSession("activeUser",JSON.stringify(activeUser))
|
}
|
next();
|
}else{
|
//跳转到统一登陆
|
//window.location = "http://ucenter.xuecheng.com/#/login?returnUrl="+ Base64.encode(window.location)
|
next({path : '/login'});
|
}
|
})
|
}else{
|
//跳转到统一登陆
|
//window.location = "http://ucenter.xuecheng.com/#/login?returnUrl="+ Base64.encode(window.location)
|
next({path : '/login'});
|
}
|
}else{
|
next();
|
}
|
|
});
|
//授权
|
router.afterEach((to, from, next) => {
|
if(openAuthorize){
|
let activeUser
|
try{
|
activeUser = utilApi.getActiveUser();
|
}catch(e){
|
//alert(e)
|
}
|
if(activeUser) {
|
//权限校验
|
let requiresAuth = to.meta.requiresAuth;
|
let permission =to.meta.permission;
|
if(requiresAuth && permission){
|
utilApi.checkAuthorities(router,permission);
|
}
|
let menus = activeUser.menus;
|
if (menus) {
|
utilApi.getRoutes(routes,menus)
|
}
|
}
|
}
|
|
});
|
|
import axios from 'axios'
|
import { Message } from 'element-ui';
|
|
// 添加请求拦截器
|
axios.interceptors.request.use(function (config) {
|
// 在发送请求向header添加jwt
|
let jwt = utilApi.getJwt()
|
if(jwt){
|
config.headers['Authorization'] = 'Bearer '+jwt
|
}
|
return config;
|
}, function (error) {
|
return Promise.reject(error);
|
});
|
// 响应拦截
|
axios.interceptors.response.use(data => {
|
//console.log("data=")
|
//console.log(data)
|
if(data && data.data){
|
if(data.data.code && (data.data.code =='10001' || data.data.code == '88888' || data.data.code == '88889')){
|
sessionStorage.removeItem("activeUser");
|
//需要登录
|
router.push({
|
path: '/login',
|
query: {returnUrl: Base64.encode(window.location)}
|
})
|
//window.location = "http://ucenter.xuecheng.com/#/login?returnUrl="+ Base64.encode(window.location)
|
}else if(data.data.code && data.data.code =='10002'){
|
Message.error('您没有权限!');
|
}else if(data.data.code && data.data.code =='10003'){
|
Message.error('参数传递错误!');
|
}
|
}
|
return data
|
})
|
|
new Vue({
|
el: '#app',
|
router,
|
store,
|
// template: '<App/>',
|
// components: { App }
|
render: c => c(App)
|
});
|