同步更新:重构路由、服务模块,更新前端构建
This commit is contained in:
@@ -1,4 +1,16 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
let lastToastKey = ''
|
||||
let lastToastAt = 0
|
||||
|
||||
function toastErrorOnce(key, message, minIntervalMs = 1500) {
|
||||
const now = Date.now()
|
||||
if (key === lastToastKey && now - lastToastAt < minIntervalMs) return
|
||||
lastToastKey = key
|
||||
lastToastAt = now
|
||||
ElMessage.error(message)
|
||||
}
|
||||
|
||||
export const publicApi = axios.create({
|
||||
baseURL: '/api',
|
||||
@@ -6,3 +18,25 @@ export const publicApi = axios.create({
|
||||
withCredentials: true,
|
||||
})
|
||||
|
||||
publicApi.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error) => {
|
||||
const status = error?.response?.status
|
||||
const payload = error?.response?.data
|
||||
const message = payload?.error || payload?.message || error?.message || '请求失败'
|
||||
|
||||
if (status === 401) {
|
||||
toastErrorOnce('401', message || '登录已过期,请重新登录', 3000)
|
||||
const pathname = window.location?.pathname || ''
|
||||
if (!pathname.startsWith('/login')) window.location.href = '/login'
|
||||
} else if (status === 403) {
|
||||
toastErrorOnce('403', message || '无权限', 5000)
|
||||
} else if (error?.code === 'ECONNABORTED') {
|
||||
toastErrorOnce('timeout', '请求超时', 3000)
|
||||
} else if (!status) {
|
||||
toastErrorOnce(`net:${message}`, message, 3000)
|
||||
}
|
||||
|
||||
return Promise.reject(error)
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user