This commit is contained in:
刘正航
2026-05-14 17:49:23 +08:00
parent f3c0c44f27
commit 829599bc17

View File

@@ -1,6 +1,5 @@
import axios from 'axios' import axios from 'axios'
import { getToken, clearAuth } from '@/utils/auth' import { getToken, clearAuth } from '@/utils/auth'
import { toast } from '@/utils/feedback'
const BASE_URL = '/api' const BASE_URL = '/api'
@@ -21,21 +20,21 @@ instance.interceptors.request.use(
(err) => Promise.reject(err) (err) => Promise.reject(err)
) )
function handleUnauthorized() { function handleUnauthorized(url) {
console.warn('[auth] 登录已过期,自动退出登录', url || '')
clearAuth() clearAuth()
toast('登录已过期,请重新登录', 'error')
setTimeout(() => { setTimeout(() => {
if (location.hash !== '#/login') { if (location.hash !== '#/login') {
location.hash = '#/login' location.hash = '#/login'
} }
}, 400) }, 200)
} }
instance.interceptors.response.use( instance.interceptors.response.use(
(response) => response, (response) => response,
(err) => { (err) => {
if (err && err.response && err.response.status === 401) { if (err && err.response && err.response.status === 401) {
handleUnauthorized() handleUnauthorized(err.config && err.config.url)
} }
return Promise.reject(err) return Promise.reject(err)
} }
@@ -43,14 +42,7 @@ instance.interceptors.response.use(
export function request({ url, method = 'GET', data, params, headers, responseType } = {}) { export function request({ url, method = 'GET', data, params, headers, responseType } = {}) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
instance({ instance({ url, method, data, params, headers, responseType })
url,
method,
data,
params,
headers,
responseType
})
.then((res) => { .then((res) => {
if (responseType === 'blob' || responseType === 'arraybuffer') { if (responseType === 'blob' || responseType === 'arraybuffer') {
resolve(res) resolve(res)
@@ -64,18 +56,16 @@ export function request({ url, method = 'GET', data, params, headers, responseTy
} }
const message = body.message || '请求失败' const message = body.message || '请求失败'
toast(message, 'error') console.error('[request]', method, url, '业务失败:', message, body)
reject(new Error(message)) reject(new Error(message))
}) })
.catch((err) => { .catch((err) => {
if (err && err.response && err.response.status === 401) { if (err && err.response && err.response.status === 401) {
reject(err) reject(new Error('Unauthorized'))
return return
} }
const msg = (err && err.message) || '网络异常' const msg = (err && err.message) || '网络异常'
if (!/Unauthorized/.test(msg)) { console.error('[request]', method, url, '请求异常:', msg, err)
toast(msg, 'error')
}
reject(err) reject(err)
}) })
}) })
@@ -98,12 +88,16 @@ export function uploadFile(file) {
return return
} }
const message = body.message || '上传失败' const message = body.message || '上传失败'
toast(message, 'error') console.error('[upload] 业务失败:', message, body)
reject(new Error(message)) reject(new Error(message))
}) })
.catch((err) => { .catch((err) => {
if (err && err.response && err.response.status === 401) {
reject(new Error('Unauthorized'))
return
}
const msg = (err && err.message) || '上传失败' const msg = (err && err.message) || '上传失败'
toast(msg, 'error') console.error('[upload] 请求异常:', msg, err)
reject(err) reject(err)
}) })
}) })