| | |
| | | // axios配置 可自行根据项目进行更改,只需更改该文件即可,其他文件可以不动 |
| | | // The axios configuration can be changed according to the project, just change the file, other files can be left unchanged |
| | | |
| | | import type { AxiosResponse } from 'axios'; |
| | | import type { AxiosInstance, AxiosResponse } from 'axios'; |
| | | import { clone } from 'lodash-es'; |
| | | import type { RequestOptions, Result } from '/#/axios'; |
| | | import type { RequestOptions, Result } from '#/axios'; |
| | | import type { AxiosTransform, CreateAxiosOptions } from './axiosTransform'; |
| | | import { VAxios } from './Axios'; |
| | | import { checkStatus } from './checkStatus'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | import { useMessage } from '/@/hooks/web/useMessage'; |
| | | import { RequestEnum, ResultEnum, ContentTypeEnum } from '/@/enums/httpEnum'; |
| | | import { isString } from '/@/utils/is'; |
| | | import { getToken } from '/@/utils/auth'; |
| | | import { setObjToUrlParams, deepMerge } from '/@/utils'; |
| | | import { useErrorLogStoreWithOut } from '/@/store/modules/errorLog'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { useGlobSetting } from '@/hooks/setting'; |
| | | import { useMessage } from '@/hooks/web/useMessage'; |
| | | import { RequestEnum, ResultEnum, ContentTypeEnum } from '@/enums/httpEnum'; |
| | | import { isString, isUndefined, isNull, isEmpty } from '@/utils/is'; |
| | | import { getToken } from '@/utils/auth'; |
| | | import { setObjToUrlParams, deepMerge } from '@/utils'; |
| | | import { useErrorLogStoreWithOut } from '@/store/modules/errorLog'; |
| | | import { useI18n } from '@/hooks/web/useI18n'; |
| | | import { joinTimestamp, formatRequestDate } from './helper'; |
| | | import { useUserStoreWithOut } from '/@/store/modules/user'; |
| | | import { AxiosRetry } from '/@/utils/http/axios/axiosRetry'; |
| | | import { useUserStoreWithOut } from '@/store/modules/user'; |
| | | import { AxiosRetry } from '@/utils/http/axios/axiosRetry'; |
| | | import axios from 'axios'; |
| | | |
| | | const globSetting = useGlobSetting(); |
| | |
| | | const hasSuccess = data && Reflect.has(data, 'code') && code === ResultEnum.SUCCESS; |
| | | if (hasSuccess) { |
| | | let successMsg = message; |
| | | if (successMsg === null || successMsg === undefined || successMsg === '') { |
| | | successMsg = '操作成功'; |
| | | |
| | | if (isNull(successMsg) || isUndefined(successMsg) || isEmpty(successMsg)) { |
| | | successMsg = t(`sys.api.operationSuccess`); |
| | | } |
| | | |
| | | if (options.successMessageMode === 'modal') { |
| | | createSuccessModal({ title: t('sys.api.successTip'), content: successMsg }); |
| | | } else if (options.successMessageMode === 'message') { |
| | |
| | | case ResultEnum.TIMEOUT: |
| | | timeoutMsg = t('sys.api.timeoutMessage'); |
| | | const userStore = useUserStoreWithOut(); |
| | | userStore.setToken(undefined); |
| | | userStore.logout(true); |
| | | // 被动登出,带redirect地址 |
| | | userStore.logout(false); |
| | | break; |
| | | default: |
| | | if (message) { |
| | |
| | | } |
| | | } |
| | | |
| | | // errorMessageMode=‘modal’的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误 |
| | | // errorMessageMode='modal'的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误 |
| | | // errorMessageMode='none' 一般是调用时明确表示不希望自动弹出错误提示 |
| | | if (options.errorMessageMode === 'modal') { |
| | | createErrorModal({ title: t('sys.api.errorTip'), content: timeoutMsg }); |
| | |
| | | /** |
| | | * @description: 响应错误处理 |
| | | */ |
| | | responseInterceptorsCatch: (axiosInstance: AxiosResponse, error: any) => { |
| | | responseInterceptorsCatch: (axiosInstance: AxiosInstance, error: any) => { |
| | | const { t } = useI18n(); |
| | | const errorLogStore = useErrorLogStoreWithOut(); |
| | | errorLogStore.addAjaxErrorInfo(error); |
| | |
| | | const { isOpenRetry } = config.requestOptions.retryRequest; |
| | | config.method?.toUpperCase() === RequestEnum.GET && |
| | | isOpenRetry && |
| | | error?.response?.status !== 401 && |
| | | // @ts-ignore |
| | | retryRequest.retry(axiosInstance, error); |
| | | return Promise.reject(error); |