审查视图

shenhailong authored
1
朱兆平 authored
2 3
import Vue from 'vue'
import App from './App'
4
import 'element-ui/lib/theme-chalk/index.css'
朱兆平 authored
5 6 7 8
//import './assets/theme/theme-green/index.css'
import VueRouter from 'vue-router'
import store from './vuex/store'
import Vuex from 'vuex'
9
import axios from 'axios'
10
import rout from './routes'
朱兆平 authored
11
import Mock from './mock'
朱兆平 authored
12
import i18n from './lang'
13
import 'font-awesome/css/font-awesome.min.css'
shenhailong authored
14
import ElementUI from 'element-ui'
15
16 17
import * as socketApi from './api/socket'
18 19 20 21 22
//定义一个全局过滤器实现日期格式化
Vue.filter('datefmt',function(input,fmtstring){

    return moment(input).format(fmtstring)
23 24
});
25 26
// 注册websocket组件到VUE
Vue.prototype.socketApi = socketApi
27
28
Vue.config.productionTip = false
朱兆平 authored
29 30 31 32
Mock.bootstrap();
Vue.use(ElementUI)
Vue.use(VueRouter)
Vue.use(Vuex)
33
Vue.prototype.$axios = axios;
朱兆平 authored
34 35

//NProgress.configure({ showSpinner: false });
36 37
console.log("mainjs:");
console.log(rout.routes);
朱兆平 authored
38
const router = new VueRouter({
39
    routes:rout.routes
40
});
41
Vue.prototype.$rout =router;
42 43 44 45

//本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化
sessionStorage.setItem('sysMenu', JSON.stringify(rout.routes));
朱兆平 authored
46 47 48 49
router.beforeEach((to, from, next) => {
  //NProgress.start();
  if (to.path == '/login') {
    sessionStorage.removeItem('user');
50
    sessionStorage.removeItem('menu');
51
    sessionStorage.removeItem('token');
朱兆平 authored
52 53
  }
  let user = JSON.parse(sessionStorage.getItem('user'));
54 55 56
  if(sessionStorage.getItem('token')){
      axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token');
  }
57
  if (!user && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) {
朱兆平 authored
58 59 60 61
    next({ path: '/login' })
  } else {
    next()
  }
62 63
});
朱兆平 authored
64 65
var message = Vue.prototype.$message;
axios.defaults.baseURL = '/api';
66 67 68
axios.interceptors.response.use(
    res => {
        //对响应数据做些事
69
        if (res.data && res.status!==200) {
朱兆平 authored
70
            message({
71 72
                //  饿了么的消息弹窗组件,类似toast
                showClose: true,
73
                message: 'res.data.error.message.message ? res.data.error.message.message : res.data.error.message',
74 75 76 77 78 79 80 81
                type: "error"
            });
            return Promise.reject(res.data.error.message);
        }
        return res;
    },
    error => {
        // 用户登录的时候会拿到一个基础信息,比如用户名,token,过期时间戳
朱兆平 authored
82
        // 直接丢sessionStorage
83 84 85 86 87 88 89 90 91
        if (!sessionStorage.getItem("token")) {
            // 若是接口访问的时候没有发现有鉴权的基础信息,直接返回登录页
            router.push({
                path: "/login"
            });
        } else {

            // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
            if (error.response.status === 401) {
朱兆平 authored
92 93 94 95 96 97
                router.push({
                    path: "/login"
                });
                message({
                    //  饿了么的消息弹窗组件
                    message: '授权超时,或未授权,请重新登录',
98
                    type: "error"
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
                });
            }

            // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
            if (error.response.status === 403) {
                router.push({
                    path: "/error/403"
                });
            }
            if (error.response.status === 500) {
                router.push({
                    path: "/error/500"
                });
            }
            if (error.response.status === 502) {
                router.push({
                    path: "/error/502"
                });
            }
            if (error.response.status === 404) {
                router.push({
                    path: "/error/404"
                });
            }
        }
        // 返回 response 里的错误信息
        let errorInfo =  error.data.error ? error.data.error.message : error.data;
        return Promise.reject(errorInfo);
    }
);
朱兆平 authored
130 131 132 133 134

//router.afterEach(transition => {
//NProgress.done();
//});
135
let vue = new Vue({
朱兆平 authored
136 137 138 139
  //el: '#app',
  //template: '<App/>',
  router,
  store,
朱兆平 authored
140
  i18n,
朱兆平 authored
141 142 143 144
  //components: { App }
  render: h => h(App)
}).$mount('#app')