import axios from "axios" import { Loading } from "element-ui"; import { Message } from 'element-ui'; // 全局loading let loading; // 全局配置 const axiosAdmin = axios.create({ headers: { 'Content-Type': 'application/json' }, }) // 请求拦截 axiosAdmin.interceptors.request.use( (config) => { if (localStorage.token) { config.headers.token = localStorage.token; } showLoading(); return config; }, (err) => { hideLoading(); return Promise.reject(err); } ) // 响应拦截 axiosAdmin.interceptors.response.use( (res) => { hideLoading(); if (res.status === 200) { if (res.data.code == '0000') { loading = Loading.service({ lock: true, text: "鉴权认证失败 请求错误", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); setTimeout(() => { localStorage.clear() location.reload() }, 1000); } else { return res.data; } } else { return res; } }, (err) => { hideLoading(); if (err && err.response) { switch (err.response.status) { case 400: err.message = '请求错误(400)'; break; case 401: err.message = '请求错误(401)'; break; case 403: err.message = '拒绝访问(403)'; break; case 404: err.message = '请求出错(404)'; break; case 408: err.message = '请求超时(408)'; break; case 500: err.message = '服务器错误(500)'; break; case 501: err.message = '服务未实现(501)'; break; case 502: err.message = '网络错误(502)'; break; case 503: err.message = '服务不可用(503)'; break; case 504: err.message = '网络超时(504)'; break; case 505: err.message = 'HTTP版本不受支持(505)'; break; default: err.message = `连接出错(${err.response.status})!`; } } else { err.message = '连接服务器失败!' } Message.error(err.message); // if (err.response.status == 401) { // loading = Loading.service({ // lock: true, // text: "鉴权认证失败 请求错误(401)", // spinner: "el-icon-loading", // background: "rgba(0, 0, 0, 0.7)", // }); // setTimeout(() => { // localStorage.clear() // location.reload() // }, 1000); // } return Promise.reject(err); // 详细错误信息 err.response } ) /* 显示loading */ function showLoading() { loading = Loading.service({ lock: true, text: "请稍等", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); } /* 隐藏loading */ function hideLoading() { loading.close(); } // 导出 export default axiosAdmin