import axios from 'axios'; import cookies from 'vue-cookies' import { userStore } from '@/store/userInfo' import { Message } from 'element-ui' //关闭断网时toast let msg = { close() { } } // 创建请求实例 const instance = axios.create({ baseURL: import.meta.env.VITE_BASE_URL, // 指定请求超时的毫秒数 timeout: 10000, // 表示跨域请求时是否需要使用凭证 withCredentials: false, }); // 前置拦截器(发起请求之前的拦截) instance.interceptors.request.use( (config) => { /** * 在这里一般会携带前台的参数发送给后台,比如下面这段代码: * const token = getToken() * if (token) { * config.headers.token = token * } */ msg.close() if (!(config.url.indexOf("pdf-tech/vppMember/create") !== -1 || config.url.indexOf("/pdf-tech/login") !== -1)) { const token = cookies.get('accessToken') config.headers.Authorization = 'Bearer ' + token } return config; }, (error) => { return Promise.reject(error); }, ); // 后置拦截器(获取到响应时的拦截) instance.interceptors.response.use( (response) => { /** * 根据你的项目实际情况来对 response 和 error 做处理 * 这里对 response 和 error 不做任何处理,直接返回 */ if (response.data.msg === "当前用户不具备操作权限" || response.data.msg === "Insufficient permissions") { cookies.remove('accessToken') userStore().clearUserInfo() window.location.href = '/non-admin-user' // window.location.href = '/product?type=isNoAdmin' } return response; }, (error) => { const { response } = error; msg.close() if (response && response.data) { //没有登录或者登录过期跳到登录页面 if (response.data.code === 310 && response.data.msg === "无效的token或者token已过期") { const token = cookies.get('accessToken') if (token) { cookies.set('accessToken', 'expired') } userStore().clearUserInfo() window.location.href = '/login' } return Promise.reject(error); } const { message } = error; //断网情况下,弹出框 if (error.request) { msg = Message({ duration: 5000, showClose: true, message: 'Internet Connection Error', type: "error", }) } console.error(message); return Promise.reject(error); }, ); // 导出常用函数 /** * @param {string} url * @param {object} data * @param {object} params */ export function post(url, data = {}, params = {}) { return instance({ method: 'post', url, data, params, }); } /** * @param {string} url * @param {object} params */ export function get(url, params = {}) { return instance({ method: 'get', url, params, }); } export function downLoad(url, params = {}) { return instance({ method: 'get', url, params, responseType: "arraybuffer" }); } /** * @param {string} url * @param {object} data * @param {object} params */ export function put(url, data = {}, params = {}) { return instance({ method: 'put', url, params, data, }); } /** * @param {string} url * @param {object} params */ export function _delete(url, params = {}) { return instance({ method: 'delete', url, params, }); } /** * @param {string} url * @param {object} data */ export function postWithHeader(url, data = {}) { return instance({ method: 'post', url, data, headers: { 'Content-Type': 'application/json' }, dataType: "json", }); } /** * @param {string} url * @param {object} data */ export function putWithHeader(url, data = {}) { return instance({ method: 'put', url, data, headers: { 'Content-Type': 'application/json' }, dataType: "json", }); } export default instance;