import axios from "axios"; import router from "../router/router.js"; import {ElMessage} from "element-plus"; // axios.defaults.staticBaseURL = '../' //axios.defaults.baseURL = 'http://' + window.location.host //正式 axios.defaults.baseURL = 'http://' + window.location.hostname + ':9004' //测试 //post请求头 //axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8"; //后端用@RequestBody 接收,那么只支持这种格式 axios.defaults.headers.post["Content-Type"] = "application/json;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 => { let token = localStorage.getItem('token'); // const token = "test"; if (token == null) { /* try { window.parent.toLogin() } catch (e) { router.push("/dist/login") } ElMessage.error('请登录!') return;*/ token = "test"; } 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 =-1 为后台判断ssession失效是token无法获取时的错误码 if (error != null && error.response.data.status == -1) { try { window.parent.toLogin() } catch (e) { router.push("/dist/login") } ElMessage.error('登陆超时请重新登录!') } else { alert(JSON.stringify(error), '请求异常', { confirmButtonText: '确定', callback: (action) => { } }); } } ); export default { /** * @param {String} url * @param {Object} data * @param {responseType} responseTypeParam * @returns Promise */ post(url, data,responseTypeParam) { if (data == null) { 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: (responseTypeParam == null || responseTypeParam == '' || responseTypeParam == "") ? 'json' : responseTypeParam }) .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) }) }) }, download(url, data, showProgress) { return new Promise((resolve, reject) => { axios({ method: 'get', url, params: data, crossDomain: true, headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', withCredentials: true, }, responseType: 'blob', onDownloadProgress: function (progressEvent) { if (showProgress != null) { showProgress(progressEvent) } }, }) .then(res => { resolve(res) }) .catch(err => { reject(err) }) }) }, };