You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.8 KiB
JavaScript

2 years ago
import axios from "axios";
import qs from "qs";
import router from "../router/router";
import {ElMessage} from "element-plus";
import {getUrlKey} from "@/api/api.js";
axios.defaults.staticBaseURL = '../' //静态文件加载路径
2 years ago
// axios.defaults.baseURL = 'http://' + window.location.hostname + ':9998/NMGJTManager' //测试
axios.defaults.baseURL = 'http://'+window.location.host+'/NMGJTManager' //正式
2 years ago
//post请求头
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8";
// 表示跨域请求时是否需要使用凭证 允许跨域携带cookie信息
axios.defaults.withCredentials = true;
axios.defaults.changeOrigin = true;
// 允许跨域
axios.defaults.headers.post["Access-Control-Allow-Origin-Type"] = "*";
//设置超时
axios.defaults.timeout = 150000;
// 请求拦截器
axios.interceptors.request.use(
config => {
// token && (config.headers.Authorization = token)
2 years ago
let token = localStorage.getItem('token');
2 years ago
token && (config.headers.token = token)
return config
},
error => {
return Promise.error(error)
})
axios.interceptors.response.use(
response => {
if (response.status == 200) {
if (response.headers.token != null && response.headers.token !== '') {
localStorage.setItem('token', response.headers.token)
}
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
error => {
// status =-2 为后台判断ssession失效是token无法获取时的错误码
if (error.response.data.status == -2) {
// ElMessage.error('登陆超时请重新登录!')
window.parent.toLogin()
} else if (error.response.data.status == -1) {
ElMessage.error('请登陆!')
window.parent.toLogin()
} else {
alert(JSON.stringify(error), '请求异常', {
confirmButtonText: '确定',
callback: (action) => {
console.log(action)
}
});
}
}
);
export default {
/**
* @param {String} url
* @param {Object} data
* @returns Promise
*/
post(url, data) {
return new Promise((resolve, reject, responseType) => {
axios({
method: 'post',
url,
data: data,
crossDomain: true,
// headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
//默认json格式如果是下载文件需要传 responseType:'blob'
responseType: (responseType == null || responseType == '') ? 'json' : responseType
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err)
});
})
},
get(url, data, inResponseType) {
return new Promise((resolve, reject, responseType) => {
axios({
method: 'get',
url,
params: data,
crossDomain: true,
headers: {
Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8',
withCredentials: true,
},
//默认json格式如果是下载文件需要传 responseType:'blob'
responseType: (inResponseType == null || inResponseType == '') ? 'json' : inResponseType
})
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
};