审查视图

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'
shenhailong authored
15
import $ from 'jquery'
16 17 18 19 20 21

//定义一个全局过滤器实现日期格式化
Vue.filter('datefmt',function(input,fmtstring){

    return moment(input).format(fmtstring)
22 23
});
shenhailong authored
24 25
import * as socketApi from './api/socket'
Vue.prototype.socketApi = socketApi
26
27
Vue.config.productionTip = false
朱兆平 authored
28 29 30 31
Mock.bootstrap();
Vue.use(ElementUI)
Vue.use(VueRouter)
Vue.use(Vuex)
32
Vue.prototype.$axios = axios;
朱兆平 authored
33 34

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

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

            // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
            if (error.response.status === 401) {
朱兆平 authored
96 97 98
                message({
                    //  饿了么的消息弹窗组件
                    message: '授权超时,或未授权,请重新登录',
99
                    type: "error"
100 101 102 103 104
                });
            }

            // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
            if (error.response.status === 403) {
105 106 107 108
                message({
                    //  饿了么的消息弹窗组件
                    message: '网络异常',
                    type: "error"
109 110 111
                });
            }
            if (error.response.status === 500) {
112 113 114 115
                message({
                    //  饿了么的消息弹窗组件
                    message: '网络异常',
                    type: "error"
116 117 118 119 120 121 122 123
                });
            }
            if (error.response.status === 502) {
                router.push({
                    path: "/error/502"
                });
            }
            if (error.response.status === 404) {
124 125 126 127
                message({
                    //  饿了么的消息弹窗组件
                    message: '访问页面不存在',
                    type: "error"
128 129 130 131 132 133 134 135 136
                });
            }
        }
        // 返回 response 里的错误信息
        let errorInfo =  error.data.error ? error.data.error.message : error.data;
        return Promise.reject(errorInfo);
    }
);
朱兆平 authored
137 138 139 140 141

//router.afterEach(transition => {
//NProgress.done();
//});
142
let vue = new Vue({
朱兆平 authored
143 144 145 146
  //el: '#app',
  //template: '<App/>',
  router,
  store,
朱兆平 authored
147
  i18n,
朱兆平 authored
148 149 150 151
  //components: { App }
  render: h => h(App)
}).$mount('#app')