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')
页面router. request 配置
最新推荐文章于 2023-06-29 23:23:19 发布