1
0
mirror of https://github.com/zclzone/vue-naive-admin.git synced 2025-04-30 22:29:01 +08:00

fix: 优化接口异常弹窗及消息提醒方式

This commit is contained in:
zclzone 2024-07-05 17:41:58 +08:00
parent c5d93628f0
commit 8cb3d2cf19
4 changed files with 13 additions and 14 deletions

View File

@ -14,7 +14,7 @@ export default {
// 刷新token
refreshToken: () => request.get('/auth/refresh/token'),
// 登出
logout: () => request.post('/auth/logout'),
logout: () => request.post('/auth/logout', {}, { needTip: false }),
// 切换当前角色
switchCurrentRole: role => request.post(`/auth/current-role/switch/${role}`),
// 获取角色权限

View File

@ -10,10 +10,10 @@
import { useAuthStore } from '@/store'
let isConfirming = false
export function resolveResError(code, message) {
export function resolveResError(code, message, needTip = true) {
switch (code) {
case 401:
if (isConfirming)
if (isConfirming || !needTip)
return
isConfirming = true
$dialog.confirm({
@ -32,7 +32,7 @@ export function resolveResError(code, message) {
return false
case 11007:
case 11008:
if (isConfirming)
if (isConfirming || !needTip)
return
isConfirming = true
$dialog.confirm({
@ -62,5 +62,6 @@ export function resolveResError(code, message) {
message = message ?? `${code}】: 未知异常!`
break
}
needTip && window.$message?.error(message)
return message
}

View File

@ -13,7 +13,7 @@ import { useAuthStore } from '@/store'
export function setupInterceptors(axiosInstance) {
function reqResolve(config) {
// 处理不需要token的请求
if (config.noNeedToken) {
if (config.needToken === false) {
return config
}
@ -39,11 +39,11 @@ export function setupInterceptors(axiosInstance) {
}
const code = data?.code ?? status
// 根据code处理对应的操作并返回处理后的message
const message = resolveResError(code, data?.message ?? statusText)
const needTip = config?.needTip !== false
// 根据code处理对应的操作并返回处理后的message
const message = resolveResError(code, data?.message ?? statusText, needTip)
// 需要错误提醒
!config?.noNeedTip && message && window.$message?.error(message)
return Promise.reject({ code, message, error: data ?? response })
}
return Promise.resolve(data ?? response)
@ -54,16 +54,14 @@ export function setupInterceptors(axiosInstance) {
const code = error?.code
/** 根据code处理对应的操作并返回处理后的message */
const message = resolveResError(code, error.message)
window.$message?.error(message)
return Promise.reject({ code, message, error })
}
const { data, status, config } = error.response
const code = data?.code ?? status
const message = resolveResError(code, data?.message ?? error.message)
/** 需要错误提醒 */
!config?.noNeedTip && message && window.$message?.error(message)
const needTip = config?.needTip !== false
const message = resolveResError(code, data?.message ?? error.message, needTip)
return Promise.reject({ code, message, error: error.response?.data || error.response })
}

View File

@ -10,6 +10,6 @@ import { request } from '@/utils'
export default {
toggleRole: data => request.post('/auth/role/toggle', data),
login: data => request.post('/auth/login', data, { noNeedToken: true }),
login: data => request.post('/auth/login', data, { needToken: false }),
getUser: () => request.get('/user/detail'),
}