页面router. request 配置

request.js

import axios from "axios";
import router from '../router/index';
import { ElMessage } from 'element-plus';


// const development = process.env.NODE_ENV === 'development'; // 判断是否开发环境

console.log(window.location.host);
let baseURL = "";
if(window.location.host == 'www.sidm.net.cn'){
    baseURL="https://ai.sidm.net.cn" //线上
} else {
    baseURL="https://test.sidm.net.cn" //测试
}
console.log(window.location.host);
const service = axios.create({
    //   baseURL: window.location.host == "ai.sidm.net.cn" ? 'https://ai.sidm.net.cn' : '/api',
    baseURL: baseURL,
    // baseURL: 'https://ai.sidm.net.cn',
    // baseURL: "https://test.sidm.net.cn",
    // baseURL: process.env.NODE_ENV === 'development' ? '/api' : 'https://ai.sidm.net.cn',
    timeout: 100000 // 设置过期时间,单位毫秒
});

// 请求头中设置token service.defaults.headers.common['Authorization'] = 'token xxxxx';
service
    .interceptors
    .request
    .use(config => {
        // 登录之后,token存在localstorage中,在请求时需要设置到请求头中
        const token = sessionStorage.getItem("token");
        // console.log(token)

        if (token) {
            config.headers.common['Authorization'] = 'Bearer ' + token;
        }

        return config;
    }, error => {
        console.log(error);
        Promise.reject();
    });

service
    .interceptors
    .response
    .use(response => {
        console.log(response);
        console.log(process.env.NODE_ENV);
        /*  */
        if (response.status === 200) {
            if (response.data.status === 10002) {
                ElMessage({
                    showClose: true,
                    message: '登录已过期,请重新登录!',
                    type: 'error'
                });
                sessionStorage.token = ''
                router.push('/login')
                return
            }
            return response;
        } else {
            Promise.reject();
        }
    }, error => {
        console.log(error);
        if (error.response) {
            switch (error.response.status) {
                // token过期,则跳转到登录页面
                case 401:
                    router.replace('/login');
            }
        }
        return Promise.reject();
    });

export default service;



router.js

import { createRouter, createWebHashHistory } from 'vue-router'
// console.log(sessionStorage.getItem("type"));
var cdrouter = sessionStorage.getItem("type") == 3 ? "/doctorOrder" : "/userlist"

const routes = [{
        path: '/',
        // name: 'Home',
        component: () =>
            import ('../views/Layout'),
        // 设置元信息
        meta: { selected: "/" },
        redirect: '/home',
        children: [{
                path: '/home',
                component: () =>
                    import ('../views/Home'),
                meta: { title: 'SIDM中西医结合代谢病(糖尿病)标准化管理中心(CDSS系统)', selected: "/home" }
            },
            
            {
                path: '/columnslist',
                component: () =>
                    import ('../views/KnowledgeBase/columnslist'),
                meta: { title: 'SIDM中西医结合代谢病(糖尿病)标准化管理中心(CDSS系统)', selected: "/columnslist" }
            },
        ]
    },
    {
        path: '/login',
        component: () =>
            import ('../views/Login'),
        meta: { title: 'SIDM中西医结合代谢病(糖尿病)标准化管理中心(CDSS系统)' },
    },
    // {
    //   path: '/test', component: () => import('../views/test')
    // },
]

const router = createRouter({
    history: createWebHashHistory(),
    routes
})

// 加入全局路由守卫验证
router.beforeEach((to, from, next) => {
    // console.log(next);
    // console.log(from);
    // console.log(to);
    if (to.meta.title) {
        //判断是否有标题
        // console.log(to.meta.title)
        document.title = to.meta.title
    } else {
        document.title = 'SIDM'
    }

    if (to.fullPath !== '/login') {
        var token = sessionStorage.getItem("token"); //从缓存中读取数据
        // console.log(token);
        if (token !== null) {
            //验证用户访问的路由规则是否在已分配的路由规则中
            // var nowpath = to.fullPath
            var nowpath = to.meta.selected;
            var allowpath = [];
            var route = JSON.parse(sessionStorage.getItem("route"));
            route.forEach(ele => {
                ele[0].forEach(item => {
                    if (item.vue_path) allowpath.push(item.vue_path);
                });
            });
            // console.log(allowpath);
            //把没有纳入到权限管理的公用路由规则,加入到可以访问的路由规则中
            if (allowpath.indexOf('/home') < 0) {
                allowpath.push('/home')
            }
            if (allowpath.indexOf(nowpath) >= 0) {
                next()
            } else {
                next('/')
            }
        } else {
            next('/login')
        }
    } else {
        next();
    }
})

export default router

import request from '../utils/request.js'

//登录接口
export const login = (data) => {
    return request({
        url: '/login/in',
        method: 'post',
        data,
    })
}

// 症管理获取列表
export const disease = (query) => {
    return request({
        url: '/disease',
        method: 'get',
        params: query
    });
};


module.exports = {
    devServer: {
        // 自动打开浏览器
        open: true,
        proxy: {
            '/api': {
                // target: 'https://ai.sidm.net.cn', //API服务器的地址(正式服)
                target: 'https://test.sidm.net.cn', //API服务器的地址(测试服)
                ws: true, //是否代理websockets
                changeOrigin: true, // 是否跨域
                secure: true, // 如果是https接口,需要配置这个参数
                pathRewrite: { //重写路径
                    '^/api': ''
                }
            }
        },
    },
    // 基本路径
    publicPath: "./", // 可以设置成相对路径,这样所有的资源都会被链接为相对路径,打出来的包可以被部署在任意路径
    outputDir: "dist", //打包时生成的生产环境构建文件的目录
    assetsDir: 'public', // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
}


import { createApp } from 'vue'
import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';
import App from './App.vue'
import router from './router'
import commonFun from './utils/commonFun' //公共函数
import store from './store'
import locale from 'element-plus/lib/locale/lang/zh-cn'


const app = createApp(App);
app.use(ElementPlus, { locale })
    .use(router)
    .use(store)
    .use(commonFun)
    .mount('#app')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值