未验证 提交 b218f10e 编写于 作者: N Netfan 提交者: GitHub

fix(login): login page modal style fixed: #662 (#666)

* fix: catch axios error data on request

* fix(login): login page modal style fixed: #662
上级 834fa7eb
...@@ -5,6 +5,7 @@ export default { ...@@ -5,6 +5,7 @@ export default {
errorMessage: 'The operation failed, the system is abnormal!', errorMessage: 'The operation failed, the system is abnormal!',
timeoutMessage: 'Login timed out, please log in again!', timeoutMessage: 'Login timed out, please log in again!',
apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!', apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',
apiRequestFailed: 'The interface request failed, please try again later!',
networkException: 'network anomaly', networkException: 'network anomaly',
networkExceptionMsg: networkExceptionMsg:
'Please check if your network connection is normal! The network is abnormal', 'Please check if your network connection is normal! The network is abnormal',
......
...@@ -5,6 +5,7 @@ export default { ...@@ -5,6 +5,7 @@ export default {
errorMessage: '操作失败,系统异常!', errorMessage: '操作失败,系统异常!',
timeoutMessage: '登录超时,请重新登录!', timeoutMessage: '登录超时,请重新登录!',
apiTimeoutMessage: '接口请求超时,请刷新页面重试!', apiTimeoutMessage: '接口请求超时,请刷新页面重试!',
apiRequestFailed: '请求出错,请稍候重试',
networkException: '网络异常', networkException: '网络异常',
networkExceptionMsg: '请检查您的网络连接是否正常!', networkExceptionMsg: '请检查您的网络连接是否正常!',
......
...@@ -100,7 +100,7 @@ export const useUserStore = defineStore({ ...@@ -100,7 +100,7 @@ export const useUserStore = defineStore({
!sessionTimeout && goHome && (await router.replace(PageEnum.BASE_HOME)); !sessionTimeout && goHome && (await router.replace(PageEnum.BASE_HOME));
return userInfo; return userInfo;
} catch (error) { } catch (error) {
return null; return Promise.reject(error);
} }
}, },
async getUserInfoAction({ userId }: GetUserInfoByUserIdParams) { async getUserInfoAction({ userId }: GetUserInfoByUserIdParams) {
......
...@@ -8,7 +8,7 @@ import { AxiosCanceler } from './axiosCancel'; ...@@ -8,7 +8,7 @@ import { AxiosCanceler } from './axiosCancel';
import { isFunction } from '/@/utils/is'; import { isFunction } from '/@/utils/is';
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
import { errorResult } from './const'; //import { errorResult } from './const';
import { ContentTypeEnum } from '/@/enums/httpEnum'; import { ContentTypeEnum } from '/@/enums/httpEnum';
import { RequestEnum } from '../../../enums/httpEnum'; import { RequestEnum } from '../../../enums/httpEnum';
...@@ -208,11 +208,15 @@ export class VAxios { ...@@ -208,11 +208,15 @@ export class VAxios {
.request<any, AxiosResponse<Result>>(conf) .request<any, AxiosResponse<Result>>(conf)
.then((res: AxiosResponse<Result>) => { .then((res: AxiosResponse<Result>) => {
if (transformRequestHook && isFunction(transformRequestHook)) { if (transformRequestHook && isFunction(transformRequestHook)) {
try {
const ret = transformRequestHook(res, opt); const ret = transformRequestHook(res, opt);
ret !== errorResult ? resolve(ret) : reject(new Error('request error!')); resolve(ret);
} catch (err) {
reject(err || new Error('request error!'));
}
return; return;
} }
resolve((res as unknown) as Promise<T>); resolve(res as unknown as Promise<T>);
}) })
.catch((e: Error) => { .catch((e: Error) => {
if (requestCatchHook && isFunction(requestCatchHook)) { if (requestCatchHook && isFunction(requestCatchHook)) {
......
...@@ -18,7 +18,7 @@ import { getToken } from '/@/utils/auth'; ...@@ -18,7 +18,7 @@ import { getToken } from '/@/utils/auth';
import { setObjToUrlParams, deepMerge } from '/@/utils'; import { setObjToUrlParams, deepMerge } from '/@/utils';
import { useErrorLogStoreWithOut } from '/@/store/modules/errorLog'; import { useErrorLogStoreWithOut } from '/@/store/modules/errorLog';
import { errorResult } from './const'; //import { errorResult } from './const';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { createNow, formatRequestDate } from './helper'; import { createNow, formatRequestDate } from './helper';
...@@ -31,7 +31,7 @@ const { createMessage, createErrorModal } = useMessage(); ...@@ -31,7 +31,7 @@ const { createMessage, createErrorModal } = useMessage();
*/ */
const transform: AxiosTransform = { const transform: AxiosTransform = {
/** /**
* @description: 处理请求数据 * @description: 处理请求数据。如果数据不是预期格式,可直接抛出错误
*/ */
transformRequestHook: (res: AxiosResponse<Result>, options: RequestOptions) => { transformRequestHook: (res: AxiosResponse<Result>, options: RequestOptions) => {
const { t } = useI18n(); const { t } = useI18n();
...@@ -50,7 +50,8 @@ const transform: AxiosTransform = { ...@@ -50,7 +50,8 @@ const transform: AxiosTransform = {
const { data } = res; const { data } = res;
if (!data) { if (!data) {
// return '[HTTP] Request has no return value'; // return '[HTTP] Request has no return value';
return errorResult; throw new Error(t('sys.api.apiRequestFailed'));
//return errorResult;
} }
// 这里 code,result,message为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式 // 这里 code,result,message为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式
const { code, result, message } = data; const { code, result, message } = data;
...@@ -66,8 +67,8 @@ const transform: AxiosTransform = { ...@@ -66,8 +67,8 @@ const transform: AxiosTransform = {
createMessage.error(message); createMessage.error(message);
} }
} }
Promise.reject(new Error(message)); throw new Error(message);
return errorResult; //return errorResult;
} }
// 接口请求成功,直接返回结果 // 接口请求成功,直接返回结果
...@@ -78,13 +79,13 @@ const transform: AxiosTransform = { ...@@ -78,13 +79,13 @@ const transform: AxiosTransform = {
if (code === ResultEnum.ERROR) { if (code === ResultEnum.ERROR) {
if (message) { if (message) {
createMessage.error(data.message); createMessage.error(data.message);
Promise.reject(new Error(message)); throw new Error(message);
} else { } else {
const msg = t('sys.api.errorMessage'); const msg = t('sys.api.errorMessage');
createMessage.error(msg); createMessage.error(msg);
Promise.reject(new Error(msg)); throw new Error(msg);
} }
return errorResult; //return errorResult;
} }
// 登录超时 // 登录超时
if (code === ResultEnum.TIMEOUT) { if (code === ResultEnum.TIMEOUT) {
...@@ -93,10 +94,11 @@ const transform: AxiosTransform = { ...@@ -93,10 +94,11 @@ const transform: AxiosTransform = {
title: t('sys.api.operationFailed'), title: t('sys.api.operationFailed'),
content: timeoutMsg, content: timeoutMsg,
}); });
Promise.reject(new Error(timeoutMsg)); throw new Error(timeoutMsg);
return errorResult; //return errorResult;
} }
return errorResult; throw new Error(t('sys.api.apiRequestFailed'));
//return errorResult;
}, },
// 请求之前处理config // 请求之前处理config
......
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
}, },
setup() { setup() {
const { t } = useI18n(); const { t } = useI18n();
const { notification } = useMessage(); const { notification, createErrorModal } = useMessage();
const { prefixCls } = useDesign('login'); const { prefixCls } = useDesign('login');
const userStore = useUserStore(); const userStore = useUserStore();
...@@ -149,6 +149,7 @@ ...@@ -149,6 +149,7 @@
toRaw({ toRaw({
password: data.password, password: data.password,
username: data.account, username: data.account,
mode: 'none', //不要默认的错误提示
}) })
); );
if (userInfo) { if (userInfo) {
...@@ -158,6 +159,12 @@ ...@@ -158,6 +159,12 @@
duration: 3, duration: 3,
}); });
} }
} catch (error) {
createErrorModal({
title: t('sys.api.errorTip'),
content: error.message || t('sys.api.networkExceptionMsg'),
getContainer: () => document.body.querySelector(`.${prefixCls}`) || document.body,
});
} finally { } finally {
loading.value = false; loading.value = false;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册