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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 = '../' //静态文件加载路径
// axios.defaults.baseURL = 'http://' + window.location.hostname + ':9998/NMGJTManager' //测试
axios.defaults.baseURL = 'http://'+window.location.host+'/NMGJTManager' //正式
//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)
let token = localStorage.getItem('token');
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)
})
})
}
};