• main.js


    import Vue from 'vue';
    import App from './App.vue';
    import router from './router';
    import ElementUI from 'element-ui';
    import VueI18n from 'vue-i18n';
    import axios from 'axios';
    import qs from 'qs';
    import {
        messages
    } from './components/common/i18n';
    import 'element-ui/lib/theme-chalk/index.css'; // 默认主题
    // import './assets/css/theme-green/index.css'; // 浅绿色主题
    import './assets/css/icon.css';
    import './components/common/directives';
    import 'babel-polyfill';
    
    import {
        showLoading,
        hideLoading
    } from './components/common/loading.js';
    
    //引入百度富文本编辑器
    import '../src/assets/ue/ueditor.config.js'
    
    import '../src/assets/ue/ueditor.all.min.js'
    
    import '../src/assets/ue/lang/zh-cn/zh-cn.js'
    
    import '../src/assets/ue/themes/default/css/ueditor.css'
    // import '../src/assets/ue/ueditor.parse.min.js'
    import vcolorpicker from 'vcolorpicker'
    Vue.use(vcolorpicker)
    Vue.config.productionTip = false;
    Vue.use(VueI18n);
    Vue.use(ElementUI, {
        size: 'small'
    });
    const i18n = new VueI18n({
        locale: 'zh',
        messages
    });
    
    
    //备注 修改baseURL的时候需要搜索(http://msmtest.ishare-go.com)全局修改 以及$url
    console.log(process.env.VUE_APP_API_ROOT,'process.env.VUE_APP_API_ROOT,')
    let baseURL=process.env.VUE_APP_API_ROOT   //自动识别环境
    axios.defaults.withCredentials = true;
    let instance = axios.create({
        baseURL: baseURL, //test分支 ==> 请求基地址1
        // baseURL: 'http://msm.ishare-go.com', //master分支 ==> 请求基地址
        // timeout: 3000,//请求超时时长
        // url: '/url',//请求路径
        // method: 'get,post,put,patch,delete',//请求方法
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }, //请求头
        // params: {},//请求参数拼接在url上面
        // data: {},//请求参数放请求体里
    })
    Vue.prototype.$axios = instance
    Vue.prototype.$url= baseURL   //图片路径前缀  发布时需要修改
    axios.defaults.baseURL = '/api' //关键代码
    Vue.config.productionTip = false
    // axios.defaults.withCredentials = true;//1
    // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
    // axios.defaults.baseURL = 'http://msmtest.ishare-go.com'
    // axios.defaults.baseURL = 'http://testapi.ishare-go.com'
    // axios.defaults.baseURL = 'http://msmtest.com'
    // axios.defaults.baseURL = '/api'
    
    // 添加请求拦截器
    instance.interceptors.request.use(function (config) {
        if (config.url != '/platformapi/system/albumList') {
            showLoading();
        }
        // if (localStorage.getItem("user_token")) {
        //     config.headers.common['user_token'] = localStorage.getItem("user_token")
        // }
        //请求头转换为表单形式
        // config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
        config.transformRequest = [function (data) {
            // 在请求之前对data传参进行格式转换
            data = qs.stringify(data)
            return data
        }]
        return config
    }, function (error) {
        return Promise.reject(error)
    })
    
    
    router.beforeEach((to, from, next) => {
    
        // console.log(to, 'aa')
        // console.log(from, 'bb')
        if (to.path.indexOf('/login') > -1) {
            next()
            return;
        }
        if (to.path.indexOf('/403') > -1) {
            next()
            return;
        }
        if (to.path.indexOf('/404') > -1) {
            next()
            return;
        }
        // if (localStorage.getItem('url')) {
        //     let urlArr = localStorage.getItem('url').split(',');
        //     console.log(urlArr.includes(to.path), 'urlArr.includes(to.path)')
        //     if (!urlArr.includes(to.path)) {
        //         next({
        //             path: '/403',
        //         })
        //         return
        //     }
        // }
        // if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
        console.log(localStorage.getItem("user_token"), 'popopopo')
        if (localStorage.getItem("user_token")) { // 判断本地是否存在token
            console.log('1')
            next()
        } else {
            // 未登录,跳转到登陆页面
            // next({
            //     path: '/login'
            // })
            // let href = localStorage.getItem('loginHref');
            // location.href = href;
            // localStorage.clear();
            // next()
            if (localStorage.getItem('loginHref')) {
                console.log('2')
                let href = localStorage.getItem('loginHref');
                location.href = href;
                localStorage.clear();
            } else {
                console.log('3')
                next({
                    path: '/login',
                })
            }
        }
    
    });
    
    /* 请求之后的操作 */
    instance.interceptors.response.use((res) => {
        if (res.data.code == -888888) {
            if (localStorage.getItem('loginHref')) {
                console.log('2')
                let href = localStorage.getItem('loginHref');
                location.href = href;
                localStorage.clear();
            } else {
                console.log('3')
                next({
                    path: '/login',
                })
            }
        }
        // console.log(res.data.code, '响应拦截1')
        if (res.data.code == -999999) {
            // console.log(res, '响应拦截2')
            console.log(Vue, 'Vue')
            Vue.prototype.$message.warning('没有操作权限')
            router.push({
                path: '/403'
            })
        }
        hideLoading();
        // console.log(res, '响应拦截3')
        return res;
    }, (err) => {
        hideLoading();
        return Promise.reject(err);
    });
    
    new Vue({
        router,
        i18n,
        render: h => h(App)
    }).$mount('#app');
  • 相关阅读:
    vue生命周期总结
    Generator的基本用法
    React context基本用法
    盗链
    Linux 黑白界面显示
    nginx 反向代理Apache
    apache+php windows下配置
    正则表达式匹配空行
    列表页条目不刷新删除
    linux终端自定义设置
  • 原文地址:https://www.cnblogs.com/xiaoxiaoxun/p/13344650.html
Copyright © 2020-2023  润新知