diff --git a/mock/request/index.ts b/mock/request/index.ts new file mode 100644 index 0000000..c926137 --- /dev/null +++ b/mock/request/index.ts @@ -0,0 +1,64 @@ +import config from '@/config/axios/config' +import { MockMethod } from 'vite-plugin-mock' + +const timeout = 600000 + +const { code } = config + +export default [ + { + url: '/request/1', + method: 'get', + timeout, + response: () => { + return { + code: code, + data: 'request-1' + } + } + }, + { + url: '/request/2', + method: 'get', + timeout, + response: () => { + return { + code: code, + data: 'request-2' + } + } + }, + { + url: '/request/3', + method: 'get', + timeout, + response: () => { + return { + code: code, + data: 'request-3' + } + } + }, + { + url: '/request/4', + method: 'get', + timeout, + response: () => { + return { + code: code, + data: 'request-4' + } + } + }, + { + url: '/request/5', + method: 'get', + timeout, + response: () => { + return { + code: code, + data: 'request-5' + } + } + } +] as MockMethod[] diff --git a/mock/role/index.ts b/mock/role/index.ts index 5ecd679..8bd18b3 100644 --- a/mock/role/index.ts +++ b/mock/role/index.ts @@ -316,6 +316,14 @@ const adminList = [ title: 'router.details', canTo: true } + }, + { + path: 'request', + component: 'views/Function/Request', + name: 'Request', + meta: { + title: 'router.request' + } } ] }, @@ -637,6 +645,7 @@ const testList: string[] = [ 'function', '/function/multiple-tabs', '/function/multiple-tabs-demo/:id', + '/function/request', '/hooks', '/hooks/useWatermark', '/hooks/useTagsView', diff --git a/src/api/login/types.ts b/src/api/login/types.ts index 446a023..860808e 100644 --- a/src/api/login/types.ts +++ b/src/api/login/types.ts @@ -1,9 +1,9 @@ -export type UserLoginType = { +export interface UserLoginType { username: string password: string } -export type UserType = { +export interface UserType { username: string password: string role: string diff --git a/src/api/request/index.ts b/src/api/request/index.ts new file mode 100644 index 0000000..7014505 --- /dev/null +++ b/src/api/request/index.ts @@ -0,0 +1,32 @@ +import request from '@/config/axios' +import { RequestResponse } from './types' + +export const request1 = () => { + return request.get>({ + url: '/request/1' + }) +} + +export const request2 = () => { + return request.get>({ + url: '/request/2' + }) +} + +export const request3 = () => { + return request.get>({ + url: '/request/3' + }) +} + +export const request4 = () => { + return request.get>({ + url: '/request/4' + }) +} + +export const request5 = () => { + return request.get>({ + url: '/request/5' + }) +} diff --git a/src/api/request/types.ts b/src/api/request/types.ts new file mode 100644 index 0000000..9a2063f --- /dev/null +++ b/src/api/request/types.ts @@ -0,0 +1,3 @@ +export interface RequestResponse { + data: string +} diff --git a/src/config/axios/config.ts b/src/config/axios/config.ts index 7a675f3..bfb21a0 100644 --- a/src/config/axios/config.ts +++ b/src/config/axios/config.ts @@ -82,13 +82,16 @@ const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => { } const defaultResponseInterceptors = (response: AxiosResponse) => { + if ((response as any).code === 'ERR_CANCELED') { + return Promise.reject(response) + } if (response?.config?.responseType === 'blob') { // 如果是文件流,直接过 return response } else if (response.data.code === config.code) { return response.data } else { - ElMessage.error(response.data.message) + ElMessage.error((response as any).message) } } ;(error: AxiosError) => { diff --git a/src/locales/en.ts b/src/locales/en.ts index 3a9cedf..23da73f 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -175,7 +175,8 @@ export default { function: 'Function', multipleTabs: 'Multiple tabs', details: 'Details', - iconPicker: 'Icon picker' + iconPicker: 'Icon picker', + request: 'Request' }, permission: { hasPermission: 'Please set the operation permission value' diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 9190837..5c4f977 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -173,7 +173,8 @@ export default { function: '功能', multipleTabs: '多开标签页', details: '详情页', - iconPicker: '图标选择器' + iconPicker: '图标选择器', + request: '请求' }, permission: { hasPermission: '请设置操作权限值' diff --git a/src/router/index.ts b/src/router/index.ts index 15798ef..0bb618f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -358,6 +358,14 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [ canTo: true, activeMenu: '/function/multiple-tabs' } + }, + { + path: 'request', + component: () => import('@/views/Function/Request.vue'), + name: 'Request', + meta: { + title: t('router.request') + } } ] }, diff --git a/src/views/Function/MultipleTabsDemo2.vue b/src/views/Function/MultipleTabsDemo2.vue deleted file mode 100644 index e23002b..0000000 --- a/src/views/Function/MultipleTabsDemo2.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/src/views/Function/Request.vue b/src/views/Function/Request.vue new file mode 100644 index 0000000..2cc0816 --- /dev/null +++ b/src/views/Function/Request.vue @@ -0,0 +1,157 @@ + + +