sys_init.js 4.3 KB
import jsutil from "@/common/js/util";
import axios from "@/axios";

var axois_init = {
    init_axios: (message,router,axios) => {
        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"
                    //     path: "/main"
                    // });
                }

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

                // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
                if (error.response.status === 403) {
                    router.push({
                        path: "/error/403"
                    });
                }
                if (error.response.status === 500) {
                    message({
                        //  饿了么的消息弹窗组件
                        message: error.message,
                        type: "error"
                    });
                    // router.push({
                    //     path: "/error/500"
                    // });
                }
                if (error.response.status === 502) {
                    router.push({
                        path: "/error/502"
                    });
                }
                if (error.response.status === 404) {
                    message({
                        //  饿了么的消息弹窗组件
                        message: "访问不存在",
                        type: "error"
                    });
                }

                let errorInfo = "出错了";

                if(jsutil.checkNull(error.response)){
                    errorInfo =  error.response.statusText
                }else if(jsutil.checkNull(error.data) && jsutil.checkNull(error.data.error) && jsutil.checkNull(error.data.error.message)){
                    errorInfo =   error.data.error.message;
                }else if (jsutil.checkNull(error.message)){
                    errorInfo = error.message;
                }else {
                    errorInfo = error;
                }
                // 返回 response 里的错误信息

                return Promise.reject(errorInfo);
            }
        );
    },
    init_router: (router,axios) => {
        router.beforeEach((to, from, next) => {
            // NProgress.start();
            // if (to.path == '/login') {
            //     sessionStorage.removeItem('user');
            //     sessionStorage.removeItem('menu');
            //     sessionStorage.removeItem('token');
            // }else{
            //     let user = JSON.parse(sessionStorage.getItem('user'));
            //     if(sessionStorage.getItem('token')){
            //         axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token');
            //     }
            //
            //     if (!jsutil.checkNull(user) && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) {
            //         next({ path: '/login' })
            //     }
            // }
            next()
        });
    }
}

export default axois_init;