import axios from 'axios'; import { getToken } from '@/utils/storage/sessionToken'; import { TOKEN } from '@/constant'; import { createDiscreteApi } from 'naive-ui'; import router from '../router'; const { message, loadingBar } = createDiscreteApi(['message', 'loadingBar']); // 显示错误消息 const showError = (res) => { if (res.Code === 201) { message.error('登录过期,请重新登录'); window.sessionStorage.clear(); router.replace('/login'); } else if (res.Code !== 200 && res.Code !== 600 && res.Code !== 601) { message.error(res.Msg); } }; const service = axios.create({ timeout: 1000 * 60 * 8, }); // 添加请求拦截器 service.interceptors.request.use( function (config) { // 在发送请求之前做些什么 loadingBar.start(); const token = getToken(); if (config.url !== '/VerifyTemplateMapData/Pu') { const formData = new FormData(); if ( config.url !== '/Login_Admin_verification' && config.url !== '/Login_verification' ) { formData.append(TOKEN, token); } Object.entries(config.data).forEach(([key, value]) => { if (value === null || value === undefined) { formData.append(key, ''); } else { formData.append(key, value); } }); config.data = formData; } else { // config.headers[TOKEN] = token; } return config; }, function (error) { // 对请求错误做些什么 return Promise.reject(error); } ); // 添加响应拦截器 service.interceptors.response.use( function (response) { // 2xx 范围内的状态码都会触发该函数。 // 对响应数据做点什么 const { data: res } = response; showError(res); loadingBar.finish(); return response; }, function (error) { // 超出 2xx 范围的状态码都会触发该函数。 // 对响应错误做点什么 loadingBar.finish(); return Promise.reject(error); } ); export default service;