mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 09:13:49 +08:00
86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
import type { AxiosError, AxiosResponse } from 'axios'
|
||
import type { RequestConfig } from '~/types/axios'
|
||
import { AxiosRejectError, resolveResError } from './helpers'
|
||
|
||
/** 请求拦截 */
|
||
export function reqResolve(config: RequestConfig) {
|
||
return config
|
||
}
|
||
|
||
/** 请求错误拦截 */
|
||
export function reqReject(error: AxiosError) {
|
||
return Promise.reject(error)
|
||
}
|
||
|
||
/** 响应拦截 */
|
||
export function resResolve(response: AxiosResponse) {
|
||
const { data, status, config, statusText } = response
|
||
if (status !== 200) {
|
||
const code = data?.code ?? status
|
||
const message = resolveResError(code, data?.message ?? statusText)
|
||
const { noNeedTip } = config as RequestConfig
|
||
|
||
if (!noNeedTip) {
|
||
if (code == 422) {
|
||
window.$message.error(message)
|
||
} else {
|
||
if (code != 401) {
|
||
window.$dialog.error({
|
||
title: '请求返回异常',
|
||
content: message,
|
||
maskClosable: false
|
||
})
|
||
}
|
||
}
|
||
}
|
||
|
||
return Promise.reject(new AxiosRejectError({ code, message, data: data || response }))
|
||
}
|
||
|
||
return Promise.resolve(data)
|
||
}
|
||
|
||
/** 响应错误拦截 */
|
||
export function resReject(error: AxiosError) {
|
||
if (!error || !error.response) {
|
||
const code = error?.code
|
||
/** 根据code处理对应的操作,并返回处理后的message */
|
||
const message = resolveResError(code, error.message)
|
||
window.$dialog.error({
|
||
title: '请求出现异常',
|
||
content: message,
|
||
maskClosable: false
|
||
})
|
||
return Promise.reject(new AxiosRejectError({ code, message, data: error }))
|
||
}
|
||
const { data, status, config } = error.response
|
||
let { code, message } = data as AxiosRejectError
|
||
code = code ?? status
|
||
message = message ?? error.message
|
||
message = resolveResError(code, message)
|
||
/** 需要错误提醒 */
|
||
const { noNeedTip } = config as RequestConfig
|
||
|
||
if (!noNeedTip) {
|
||
if (code == 422) {
|
||
window.$message.error(message)
|
||
} else {
|
||
if (code != 401) {
|
||
window.$dialog.error({
|
||
title: '请求返回异常',
|
||
content: message,
|
||
maskClosable: false
|
||
})
|
||
}
|
||
}
|
||
}
|
||
|
||
return Promise.reject(
|
||
new AxiosRejectError({
|
||
code,
|
||
message,
|
||
data: error.response?.data || error.response
|
||
})
|
||
)
|
||
}
|