You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.0 KiB
144 lines
4.0 KiB
import type { ErrorMessageMode } from '/#/axios';
|
|
import { useMessage } from '/@/hooks/web/useMessage';
|
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
// import router from '/@/router';
|
|
// import { PageEnum } from '/@/enums/pageEnum';
|
|
import { useUserStoreWithOut } from '/@/store/modules/user';
|
|
import projectSetting from '/@/settings/projectSetting';
|
|
import { SessionTimeoutProcessingEnum } from '/@/enums/appEnum';
|
|
|
|
const { createMessage, createErrorModal } = useMessage();
|
|
const error = createMessage.error!;
|
|
const stp = projectSetting.sessionTimeoutProcessing;
|
|
|
|
export function checkStatus(
|
|
response: any,
|
|
msg: string,
|
|
errorMessageMode: ErrorMessageMode = 'message',
|
|
): void {
|
|
const { t } = useI18n();
|
|
const userStore = useUserStoreWithOut();
|
|
let errMessage = '';
|
|
|
|
switch (response.status) {
|
|
case 400:
|
|
errMessage = `${msg}`;
|
|
break;
|
|
// 401: Not logged in
|
|
// Jump to the login page if not logged in, and carry the path of the current page
|
|
// Return to the current page after successful login. This step needs to be operated on the login page.
|
|
case 401:
|
|
userStore.setToken(undefined);
|
|
errMessage = msg || t('sys.api.errMsg401');
|
|
if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
|
|
userStore.setSessionTimeout(true);
|
|
} else {
|
|
userStore.logout(true);
|
|
}
|
|
break;
|
|
case 403:
|
|
errMessage = t('sys.api.errMsg403');
|
|
break;
|
|
// 404请求不存在
|
|
case 404:
|
|
errMessage = t('sys.api.errMsg404');
|
|
break;
|
|
case 405:
|
|
errMessage = t('sys.api.errMsg405');
|
|
break;
|
|
case 408:
|
|
errMessage = t('sys.api.errMsg408');
|
|
break;
|
|
case 500:
|
|
errMessage = t('sys.api.errMsg500');
|
|
break;
|
|
case 501:
|
|
errMessage = t('sys.api.errMsg501');
|
|
break;
|
|
case 502:
|
|
errMessage = t('sys.api.errMsg502');
|
|
break;
|
|
case 503:
|
|
errMessage = t('sys.api.errMsg503');
|
|
break;
|
|
case 504:
|
|
errMessage = t('sys.api.errMsg504');
|
|
break;
|
|
case 505:
|
|
errMessage = t('sys.api.errMsg505');
|
|
break;
|
|
default:
|
|
errMessage = t('sys.api.apiRequestFailed');
|
|
break;
|
|
}
|
|
|
|
if (errMessage) {
|
|
if (errorMessageMode === 'modal') {
|
|
createErrorModal({ title: t('sys.api.errorTip'), content: errMessage });
|
|
} else if (errorMessageMode === 'message') {
|
|
error({ content: errMessage, key: `global_error_message_status_${status}` });
|
|
}
|
|
}
|
|
}
|
|
|
|
export function checkResponse(response: any): string | undefined {
|
|
// 会话超时
|
|
if (response?.status === 401) {
|
|
const userStore = useUserStoreWithOut();
|
|
userStore.setToken(undefined);
|
|
userStore.setSessionTimeout(true);
|
|
const { t } = useI18n();
|
|
return t('sys.api.errMsg401');
|
|
}
|
|
|
|
if (!response?.data) {
|
|
// 都没捕获到则提示默认错误信息
|
|
checkStatus(response, '');
|
|
return undefined;
|
|
}
|
|
|
|
if (response?.data.Enterprises) {
|
|
return response.data.Enterprises;
|
|
}
|
|
|
|
let errorJson = response?.data.error;
|
|
|
|
// abp框架抛出异常信息
|
|
if (response.headers['_abperrorformat'] === 'true') {
|
|
if (errorJson === undefined && response.data.type === 'application/json') {
|
|
const reader = new FileReader();
|
|
reader.onload = function (e) {
|
|
errorJson = JSON.parse(e.target?.result as string);
|
|
console.log(errorJson);
|
|
error(errorJson.error.message);
|
|
};
|
|
reader.readAsText(response.data);
|
|
} else {
|
|
let errorMessage = errorJson.message;
|
|
if (errorJson.validationErrors) {
|
|
errorMessage += errorJson.validationErrors.map((v) => v.message).join('\n');
|
|
}
|
|
error(errorMessage);
|
|
return errorMessage;
|
|
}
|
|
}
|
|
|
|
// oauth错误信息
|
|
if (response?.data.error_description) {
|
|
error(response.data.error_description);
|
|
return response.data;
|
|
}
|
|
|
|
// 其他错误
|
|
if (response?.data.error.details) {
|
|
error(response.data.error.details);
|
|
return response.data.error.details;
|
|
}
|
|
|
|
if (response?.data.error.message) {
|
|
error(response.data.error.message);
|
|
return response.data.error.message;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|