fix:修复请求问题

This commit is contained in:
橙子
2023-04-02 00:17:07 +08:00
parent ad4fc6ea9b
commit b90962943a
3 changed files with 65 additions and 20 deletions

View File

@@ -48,6 +48,7 @@ export function logout() {
// 获取验证码
export function getCodeImg() {
return request({
url: '/account/captcha-image',
headers: {

View File

@@ -33,6 +33,7 @@ const service = axios.create({
// request拦截器
service.interceptors.request.use(config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交
@@ -40,6 +41,8 @@ service.interceptors.request.use(config => {
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params);
@@ -70,6 +73,7 @@ service.interceptors.request.use(config => {
}
}
}
return config
}, error => {
Promise.reject(error)
@@ -78,16 +82,19 @@ service.interceptors.request.use(config => {
// 响应拦截器
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
const code = res.status || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.message || errorCode['default']
// 二进制数据则直接返回
if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){
return res
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
@@ -103,8 +110,11 @@ service.interceptors.response.use(res => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
}
else if (code === 500) {
ElMessage({
message: msg,
type: 'error'
@@ -116,28 +126,60 @@ service.interceptors.response.use(res => {
})
return Promise.reject('error')
} else {
return Promise.resolve(res)
}
},
error => {
let { message } = error;
if (message == "Network Error") {
message = "后端接口连接异常";
}
else if (message.includes("timeout")) {
message = "系统接口请求超时";
}
else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常";
}
error=>{
const response=error.response;
const code=response.status
const msg=response.data.message
if(code==403)
{
ElMessage({
message: message,
type: 'error',
duration: 5 * 1000
message: msg,
type: 'error'
})
return Promise.reject(error)
}
else if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => {
isRelogin.show = false;
useUserStore().logOut().then(() => {
location.href = '/index';
})
}).catch(() => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
}
else if (code === 500) {
ElMessage({
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
} else if (code !== 200) {
ElNotification.error({
title: msg
})
return Promise.reject('error')
} else {
return Promise.resolve(res)
}
}
)

View File

@@ -116,6 +116,7 @@ function handleLogin() {
router.push({ path: redirect.value || "/" });
}).catch(() => {
loading.value = false;
// 重新获取验证码
if (captchaEnabled.value) {
getCode();
@@ -126,6 +127,7 @@ function handleLogin() {
}
function getCode() {
getCodeImg().then(res => {
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (captchaEnabled.value) {