/** * axios 工具函数层 */ import axios from 'axios'; import router from '@/router'; import store from '@/store'; import { message } from '@/utils/resetMessage'; import { responseErr, loginErr } from '@/config'; // 加载条插件 // import NProgress from "nprogress"; // 接口地址 const baseURL = process.env.VUE_APP_API_BASE_URL; // 请求超时 const timeout = 60 * 1000; // 请求拦截(成功) function reqSuccess(config) { let token = store.getters['user/token']; if (token) { config.headers.Authorization = token; } // NProgress.start(); return config; } // 响应拦截(成功) function resSuccess(response) { if (response.data.code !== undefined && response.data.msg !== undefined) { // 取出数据 let { code, msg } = response.data; if (code == -1) { message.error({ message: msg }); if (msg === '非法用户,不可访问') { // 重置store下的user模块 store.commit('user/reset'); router.push('/'); } } else if (loginErr.includes(code)) { message.error({ message: msg }); // 重置store下的user模块 store.commit('user/reset'); setTimeout(() => { location.href = process.env.VUE_APP_API_portal_URL; }, 2000); } } // NProgress.done(); return response; } // 响应拦截(错误) function resError(error) { if (error && error.response) { let msg = responseErr[error.response.status]; error.message = msg || `连接错误${error.response.status}`; } else { if (JSON.stringify(error).includes('timeout')) { error.message = '服务器响应超时,请刷新当前页'; } else { error.message = '连接服务器失败'; } } message.error({ message: error.message }); return Promise.resolve(error.response); } // 请求配置 const request = axios.create({ // 请求超时时间 timeout, // 设置统一服务器地址 baseURL, headers: { 'Content-Type': 'application/json;charset=UTF-8' } }); request.interceptors.request.use(reqSuccess, (err) => { return Promise.reject(err); }); request.interceptors.response.use(resSuccess, resError); export { request };