import axios from 'axios'; import { baseUrl } from "../config/env"; import { $globalStore } from "../common/globalStore" import { $globalRouter } from "../common/globalRouter" import { showToast } from 'vant'; import 'vant/es/toast/style'; // import {cache} from '@/store/store'; // axios.defaults.withCredentials = true //const source = axios.CancelToken.source() const http = axios.create({ baseURL: baseUrl, traditional: true, contentType : "application/json", timeout: 30000, // 30 秒 }); const router = $globalRouter; //请求拦截器添加head http.interceptors.request.use( config => { // FormData 必须由浏览器/axios 自动设置 multipart boundary if (config.data instanceof FormData) { delete config.headers['Content-Type']; } else if(!config.headers['Content-Type']){ config.headers['Content-Type'] = 'application/json' } const token = $globalStore.useCommon.token; if (token) { config.headers['Authorization'] = 'Bearer ' + token; } config.headers['clientid'] = '9e6eb24cd4e169a98b0d2cd8034d877b'; return config }, err => { return Promise.reject(err) } ) //返回拦截器 http.interceptors.response.use( response => { if (response.data.code === 500) { if (response.data.message) { showToast(response.data.message); } if (response.data.msg) { showToast(response.data.msg); } } if (response.data.code === 401) { showToast('没有操作该功能权限,请联系管理员添加权限'); } if (response.data.msg === '未登录或登录超时。请重新登录') { showToast('未登录或登录超时,请重新登录'); router.push({ path: "/login" }); } return response; }, error => { if (!error.response) { showToast('网络异常,请检查网络连接'); return Promise.reject(error); } if (error.response.status === 401) { showToast('没有操作该功能权限,请联系管理员添加权限'); } if (error.response.status === 403) { if ('#/login' !== window.location.hash) { showToast('登录过期,请先登录'); let target = window.location.hash; router.push({ path: "/login", params: { target: encodeURIComponent(target) } }); } } return Promise.reject(error); } ) export default http