import { Button, message, notification, Result } from 'antd'; import axios, { AxiosRequestConfig } from 'axios' // 标识登录过期的状态 let expired = false; function Ajax(url?: string, params?: AxiosRequestConfig) { const ajax = axios.create({ // baseURL: api, // api的base_url process.env.BASE_API,,注意局域网访问时,不能使用localhost timeout: 60 * 1000 * 5, // 请求超时时间 headers: { ['Authorization']: 'Bearer ' + localStorage.getItem('Admin-Token') } }); return ajax({ ...params, url, method: params?.method ? params?.method : 'GET' }).then(res => { let resData = res?.data || { code: 600 } if (resData.code === 500) { let msg = localStorage.getItem('ErrMsg') if (resData.msg === '令牌验证失败') {// if (window.location.pathname !== '/login') { if (!msg) { const key = `open${Date.now()}`; const btn = ( ); const description = ( ) localStorage.setItem('ErrMsg', 'true') notification.open({ message: '', description, duration: null, // getContainer: () => document.getElementById('notificationPop') as any || document.getElementById('root') as any, key, style: { zIndex: 999999, right: '50%', top: '50%', transform: 'translate(50%, -50%)', position: 'fixed', transition: 'all 0s' }, onClose: () => { localStorage.removeItem('Admin-Token') sessionStorage.removeItem('userId') localStorage.removeItem('ErrMsg') window.location.href = window.location.origin + '/#/login' } }); } return { ...resData } } else { localStorage.removeItem('Admin-Token') sessionStorage.removeItem('userId') } } if (!msg) { localStorage.setItem('ErrMsg', 'true') notification.error({ message: resData.msg, onClose: () => { localStorage.removeItem('ErrMsg') } }); } } if (resData.code === 310) {//权限错误 localStorage.removeItem('Admin-Token') sessionStorage.removeItem('userId') if (expired) return; // 避免多次触发 expired = true; message.error({ content: resData.msg, duration: 2, onClose: () => { window.location.href = window.location.origin + '/#/login' } }) } return res.data }).catch(err => { return Promise.reject(err) }) } export default Ajax