| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { message } from 'ant-design-vue'
- import axios, { AxiosInstance, AxiosResponse } from 'axios'
- import defaultSetting from '../../config/defaultSetting'
- import { useModule } from '@/hooks'
- import { useUserStore } from '@/store'
- export const instance = axios.create({
- baseURL: '',
- timeout: 100000
- })
- /**
- * 该函数捕获一个错误并返回一个被拒绝的承诺。
- * @param {any} error - `error` 参数是 `any` 类型,这意味着它可以是任何数据类型。它用作 `catchErr` 函数的输入参数。
- * @returns `catchErr` 函数返回一个被拒绝的 Promise,并传递了 `error` 参数作为拒绝的原因。
- */
- const catchErr = (response: AxiosResponse) => {
- const { data } = response
- if (data.code === 500) {
- message.error(data.msg)
- } else if (data.code === 400) {
- message.error(data.msg)
- }
- }
- /**
- * 登录失效后重定向地址
- */
- const redirectUrl = () => {
- window.open(defaultSetting.logout + `?redirectUrl=${useModule().path}`)
- }
- instance.interceptors.request.use(config => {
- config.headers.Authentication = useUserStore().userInfo.token
- return config
- }, function (error) {
- return Promise.reject(error)
- })
- instance.interceptors.response.use(function (response) {
- catchErr(response)
- if (response.status === 403) {
- redirectUrl()
- }
- return response.data
- }, error => Promise.reject(error))
- export const setBaseUrl = (baseURL: string) => instance.defaults.baseURL = baseURL
- export default function request <T> (config: any) {
- return instance.request<AxiosInstance, SERVICE.Response<T>>(config)
- }
|