import babelpolyfill from 'babel-polyfill' import Vue from 'vue' import App from './App' import ElementUI from 'element-ui' import 'element-ui/lib/theme-default/index.css' //import './assets/theme/theme-green/index.css' import VueRouter from 'vue-router' import store from './vuex/store' import Vuex from 'vuex' import axios from 'axios' //import NProgress from 'nprogress' //import 'nprogress/nprogress.css' import rout from './routes' import Mock from './mock' import i18n from './lang' import 'font-awesome/css/font-awesome.min.css' //定义一个全局过滤器实现日期格式化 Vue.filter('datefmt',function(input,fmtstring){ return moment(input).format(fmtstring) }); Vue.config.productionTip = false Mock.bootstrap(); Vue.use(ElementUI) Vue.use(VueRouter) Vue.use(Vuex) Vue.prototype.$axios = axios; //NProgress.configure({ showSpinner: false }); console.log("mainjs:"); console.log(rout.routes); const router = new VueRouter({ routes:rout.routes }); Vue.prototype.$rout =router; //本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化 sessionStorage.setItem('sysMenu', JSON.stringify(rout.routes)); router.beforeEach((to, from, next) => { //NProgress.start(); if (to.path == '/login') { sessionStorage.removeItem('user'); sessionStorage.removeItem('menu'); sessionStorage.removeItem('token'); } let user = JSON.parse(sessionStorage.getItem('user')); if(sessionStorage.getItem('token')){ axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token'); } if (!user && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) { next({ path: '/login' }) } else { next() } }); var message = Vue.prototype.$message; axios.defaults.baseURL = '/api'; axios.interceptors.response.use( res => { //对响应数据做些事 if (res.data && res.status!==200) { message({ // 饿了么的消息弹窗组件,类似toast showClose: true, message: 'res.data.error.message.message ? res.data.error.message.message : res.data.error.message', type: "error" }); return Promise.reject(res.data.error.message); } return res; }, error => { // 用户登录的时候会拿到一个基础信息,比如用户名,token,过期时间戳 // 直接丢sessionStorage if (!sessionStorage.getItem("token")) { // 若是接口访问的时候没有发现有鉴权的基础信息,直接返回登录页 router.push({ path: "/login" }); } else { // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 if (error.response.status === 401) { router.push({ path: "/login" }); message({ // 饿了么的消息弹窗组件 message: '授权超时,或未授权,请重新登录', type: "error" }); } // 下面是接口回调的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); } ); //router.afterEach(transition => { //NProgress.done(); //}); let vue = new Vue({ //el: '#app', //template: '<App/>', router, store, i18n, //components: { App } render: h => h(App) }).$mount('#app')