From 179ab2672fe7fff55c8a9c55fae22a4b6c362623 Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Thu, 30 Nov 2023 11:34:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=96=B0=E6=95=B4=E7=90=86?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84,mock=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.base | 2 +- mock/analysis/index.mock.ts | 9 +++--- mock/department/index.mock.ts | 15 +++++----- mock/dict/index.mock.ts | 6 ++-- mock/menu/index.mock.ts | 3 +- mock/request/index.mock.ts | 12 ++++---- mock/role/index.mock.ts | 10 +++---- mock/table/index.mock.ts | 15 +++++----- mock/user/index.mock.ts | 8 +++-- mock/workplace/index.mock.ts | 12 ++++---- src/api/common/index.ts | 2 +- src/api/dashboard/analysis/index.ts | 2 +- src/api/dashboard/workplace/index.ts | 2 +- src/api/department/index.ts | 2 +- src/api/login/index.ts | 2 +- src/api/menu/index.ts | 2 +- src/api/request/index.ts | 2 +- src/api/role/index.ts | 2 +- src/api/table/index.ts | 2 +- src/{config => }/axios/config.ts | 42 +++------------------------ src/{config => }/axios/index.ts | 10 +++---- src/{config => }/axios/service.ts | 12 ++++---- src/{config => }/axios/types/index.ts | 7 ----- src/constants/index.ts | 14 +++++++++ src/views/Function/Request.vue | 3 +- types/env.d.ts | 3 ++ types/global.d.ts | 7 +++-- 27 files changed, 96 insertions(+), 112 deletions(-) rename src/{config => }/axios/config.ts (61%) rename src/{config => }/axios/index.ts (82%) rename src/{config => }/axios/service.ts (82%) rename src/{config => }/axios/types/index.ts (81%) create mode 100644 src/constants/index.ts diff --git a/.env.base b/.env.base index e499588..7e2fb8f 100644 --- a/.env.base +++ b/.env.base @@ -8,4 +8,4 @@ VITE_API_BASE_PATH= VITE_BASE_PATH=/ # 标题 -VITE_APP_TITLE=ElementAdmin \ No newline at end of file +VITE_APP_TITLE=ElementAdmin diff --git a/mock/analysis/index.mock.ts b/mock/analysis/index.mock.ts index 5a85b4a..46a9b34 100644 --- a/mock/analysis/index.mock.ts +++ b/mock/analysis/index.mock.ts @@ -1,4 +1,5 @@ import { defineMock } from 'vite-plugin-mock-dev-server' +import { SUCCESS_CODE } from '@/constants' const delay = 1000 @@ -10,7 +11,7 @@ export default defineMock([ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { users: 102400, messages: 81212, @@ -27,7 +28,7 @@ export default defineMock([ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { value: 1000, name: 'analysis.directAccess' }, { value: 310, name: 'analysis.mailMarketing' }, @@ -45,7 +46,7 @@ export default defineMock([ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { value: 13253, name: 'analysis.monday' }, { value: 34235, name: 'analysis.tuesday' }, @@ -65,7 +66,7 @@ export default defineMock([ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { estimate: 100, actual: 120, name: 'analysis.january' }, { estimate: 120, actual: 82, name: 'analysis.february' }, diff --git a/mock/department/index.mock.ts b/mock/department/index.mock.ts index 3d5940f..4fb2dff 100644 --- a/mock/department/index.mock.ts +++ b/mock/department/index.mock.ts @@ -1,5 +1,6 @@ import { toAnyString } from '@/utils' import { faker } from '@faker-js/faker' +import { SUCCESS_CODE } from '@/constants' const departmentList: any = [] @@ -80,7 +81,7 @@ export default [ method: 'GET', body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { list: departmentList } @@ -92,7 +93,7 @@ export default [ method: 'GET', body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { list: departmentList, total: 5 @@ -123,7 +124,7 @@ export default [ }) } return { - code: 0, + code: SUCCESS_CODE, data: { total: 100, list: mockList @@ -138,7 +139,7 @@ export default [ delay: 1000, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } @@ -156,7 +157,7 @@ export default [ } } else { return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } @@ -169,7 +170,7 @@ export default [ delay: 1000, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } @@ -187,7 +188,7 @@ export default [ } } else { return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } diff --git a/mock/dict/index.mock.ts b/mock/dict/index.mock.ts index ae22d00..597d083 100644 --- a/mock/dict/index.mock.ts +++ b/mock/dict/index.mock.ts @@ -1,3 +1,5 @@ +import { SUCCESS_CODE } from '@/constants' + const delay = 1000 const dictObj: Recordable = { @@ -25,7 +27,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: dictObj } } @@ -37,7 +39,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { label: 'test1', diff --git a/mock/menu/index.mock.ts b/mock/menu/index.mock.ts index fd1b82d..a43100c 100644 --- a/mock/menu/index.mock.ts +++ b/mock/menu/index.mock.ts @@ -1,4 +1,5 @@ import { faker } from '@faker-js/faker' +import { SUCCESS_CODE } from '@/constants' const delay = 1000 @@ -10,7 +11,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { list: [ { diff --git a/mock/request/index.mock.ts b/mock/request/index.mock.ts index fd3dfcb..b7d788b 100644 --- a/mock/request/index.mock.ts +++ b/mock/request/index.mock.ts @@ -1,3 +1,5 @@ +import { SUCCESS_CODE } from '@/constants' + const delay = 600000 export default [ @@ -7,7 +9,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'request-1' } } @@ -18,7 +20,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'request-2' } } @@ -29,7 +31,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'request-3' } } @@ -40,7 +42,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'request-4' } } @@ -51,7 +53,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: 'request-5' } } diff --git a/mock/role/index.mock.ts b/mock/role/index.mock.ts index e89be2c..38d75c7 100644 --- a/mock/role/index.mock.ts +++ b/mock/role/index.mock.ts @@ -1,5 +1,5 @@ import { faker } from '@faker-js/faker' - +import { SUCCESS_CODE } from '@/constants' import { toAnyString } from '@/utils' const delay = 1000 @@ -1141,7 +1141,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: adminList } } @@ -1152,7 +1152,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { list: List, total: 4 @@ -1167,7 +1167,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: testList } } @@ -1178,7 +1178,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { list: List, total: 4 diff --git a/mock/table/index.mock.ts b/mock/table/index.mock.ts index 9cb17e9..58d412d 100644 --- a/mock/table/index.mock.ts +++ b/mock/table/index.mock.ts @@ -1,9 +1,8 @@ import { faker } from '@faker-js/faker' - +import { SUCCESS_CODE } from '@/constants' import { toAnyString } from '@/utils' const delay = 1000 - const count = 100 const baseContent = @@ -193,7 +192,7 @@ export default [ (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1) ) return { - code: 0, + code: SUCCESS_CODE, data: { total: mockList.length, list: pageList @@ -216,7 +215,7 @@ export default [ (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1) ) return { - code: 0, + code: SUCCESS_CODE, data: { total: mockList.length, list: pageList @@ -237,7 +236,7 @@ export default [ }) ].concat(List) return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } else { @@ -249,7 +248,7 @@ export default [ } }) return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } @@ -264,7 +263,7 @@ export default [ for (const example of List) { if (example.id === id) { return { - code: 0, + code: SUCCESS_CODE, data: example } } @@ -290,7 +289,7 @@ export default [ } } return { - code: 0, + code: SUCCESS_CODE, data: 'success' } } diff --git a/mock/user/index.mock.ts b/mock/user/index.mock.ts index 388fccc..078ab9a 100644 --- a/mock/user/index.mock.ts +++ b/mock/user/index.mock.ts @@ -1,3 +1,5 @@ +import { SUCCESS_CODE } from '@/constants' + const delay = 1000 const List: { @@ -40,7 +42,7 @@ export default [ ) return { - code: 0, + code: SUCCESS_CODE, data: { total: mockList.length, list: pageList @@ -60,7 +62,7 @@ export default [ if (user.username === data.username && user.password === data.password) { hasUser = true return { - code: 0, + code: SUCCESS_CODE, data: user } } @@ -80,7 +82,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: null } } diff --git a/mock/workplace/index.mock.ts b/mock/workplace/index.mock.ts index 15996cc..f297e7e 100644 --- a/mock/workplace/index.mock.ts +++ b/mock/workplace/index.mock.ts @@ -1,3 +1,5 @@ +import { SUCCESS_CODE } from '@/constants' + const delay = 1000 export default [ @@ -8,7 +10,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: { project: 40, access: 2340, @@ -24,7 +26,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { name: 'Github', @@ -79,7 +81,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { keys: ['workplace.push', 'Github'], @@ -116,7 +118,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { name: 'Github', @@ -153,7 +155,7 @@ export default [ delay, body: () => { return { - code: 0, + code: SUCCESS_CODE, data: [ { name: 'workplace.quote', max: 65, personal: 42, team: 50 }, { name: 'workplace.contribution', max: 160, personal: 30, team: 140 }, diff --git a/src/api/common/index.ts b/src/api/common/index.ts index bbb70aa..b8c986c 100644 --- a/src/api/common/index.ts +++ b/src/api/common/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' // 获取所有字典 export const getDictApi = () => { diff --git a/src/api/dashboard/analysis/index.ts b/src/api/dashboard/analysis/index.ts index fd66479..f559dc9 100644 --- a/src/api/dashboard/analysis/index.ts +++ b/src/api/dashboard/analysis/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import type { AnalysisTotalTypes, UserAccessSource, diff --git a/src/api/dashboard/workplace/index.ts b/src/api/dashboard/workplace/index.ts index 6d6f494..062f351 100644 --- a/src/api/dashboard/workplace/index.ts +++ b/src/api/dashboard/workplace/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import type { WorkplaceTotal, Project, Dynamic, Team, RadarData } from './types' export const getCountApi = (): Promise> => { diff --git a/src/api/department/index.ts b/src/api/department/index.ts index 99803cc..eb583ac 100644 --- a/src/api/department/index.ts +++ b/src/api/department/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import { DepartmentListResponse, DepartmentUserParams, DepartmentUserResponse } from './types' export const getDepartmentApi = () => { diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 2e29339..b5012b2 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import type { UserType } from './types' interface RoleParams { diff --git a/src/api/menu/index.ts b/src/api/menu/index.ts index 7b393ee..a2b934c 100644 --- a/src/api/menu/index.ts +++ b/src/api/menu/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' export const getMenuListApi = () => { return request.get({ url: '/mock/menu/list' }) diff --git a/src/api/request/index.ts b/src/api/request/index.ts index f011294..207f913 100644 --- a/src/api/request/index.ts +++ b/src/api/request/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import { RequestResponse } from './types' export const request1 = () => { diff --git a/src/api/role/index.ts b/src/api/role/index.ts index 3877568..ecbf9d9 100644 --- a/src/api/role/index.ts +++ b/src/api/role/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' export const getRoleListApi = () => { return request.get({ url: '/mock/role/table' }) diff --git a/src/api/table/index.ts b/src/api/table/index.ts index 134a4f9..b07a1f9 100644 --- a/src/api/table/index.ts +++ b/src/api/table/index.ts @@ -1,4 +1,4 @@ -import request from '@/config/axios' +import request from '@/axios' import type { TableData } from './types' export const getTableListApi = (params: any) => { diff --git a/src/config/axios/config.ts b/src/axios/config.ts similarity index 61% rename from src/config/axios/config.ts rename to src/axios/config.ts index 4d54e39..92def84 100644 --- a/src/config/axios/config.ts +++ b/src/axios/config.ts @@ -1,46 +1,13 @@ -import { - AxiosConfig, - AxiosResponse, - AxiosRequestHeaders, - InternalAxiosRequestConfig -} from './types' +import { AxiosResponse, AxiosRequestHeaders, InternalAxiosRequestConfig } from './types' import { ElMessage } from 'element-plus' import qs from 'qs' import router from '@/router' +import { SUCCESS_CODE } from '@/constants' import { useStorage } from '@/hooks/web/useStorage' const { clear } = useStorage() -const config: AxiosConfig = { - /** - * 接口成功返回状态码 - */ - code: 0, - - /** - * 接口请求超时时间 - */ - timeout: 60000, - - /** - * 默认接口请求类型 - * 可选值:application/x-www-form-urlencoded multipart/form-data - */ - defaultHeaders: 'application/json', - - interceptors: { - //请求拦截 - // requestInterceptors: (config) => { - // return config - // }, - // 响应拦截器 - // responseInterceptors: (result: AxiosResponse) => { - // return result - // } - } -} - const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => { if ( config.method === 'post' && @@ -64,11 +31,11 @@ const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => { return config } -const defaultResponseInterceptors = (response: AxiosResponse) => { +const defaultResponseInterceptors = (response: AxiosResponse) => { if (response?.config?.responseType === 'blob') { // 如果是文件流,直接过 return response - } else if (response.data.code === config.code) { + } else if (response.data.code === SUCCESS_CODE) { return response.data } else { ElMessage.error(response?.data?.message) @@ -81,4 +48,3 @@ const defaultResponseInterceptors = (response: AxiosResponse) => { } export { defaultResponseInterceptors, defaultRequestInterceptors } -export default config diff --git a/src/config/axios/index.ts b/src/axios/index.ts similarity index 82% rename from src/config/axios/index.ts rename to src/axios/index.ts index 40ff667..61dc451 100644 --- a/src/config/axios/index.ts +++ b/src/axios/index.ts @@ -1,11 +1,8 @@ import service from './service' - -import config from './config' - -const { defaultHeaders } = config +import { CONTENT_TYPE } from '@/constants' const request = (option: AxiosConfig) => { - const { url, method, params, data, headersType, responseType } = option + const { url, method, params, data, headers, responseType } = option return service.request({ url: url, method, @@ -13,7 +10,8 @@ const request = (option: AxiosConfig) => { data, responseType: responseType, headers: { - 'Content-Type': headersType || defaultHeaders + 'Content-Type': CONTENT_TYPE, + ...headers } }) } diff --git a/src/config/axios/service.ts b/src/axios/service.ts similarity index 82% rename from src/config/axios/service.ts rename to src/axios/service.ts index b68fa70..9933bda 100644 --- a/src/config/axios/service.ts +++ b/src/axios/service.ts @@ -1,18 +1,16 @@ import axios, { AxiosError } from 'axios' -import config, { defaultRequestInterceptors, defaultResponseInterceptors } from './config' +import { defaultRequestInterceptors, defaultResponseInterceptors } from './config' import { AxiosInstance, InternalAxiosRequestConfig, RequestConfig, AxiosResponse } from './types' import { ElMessage } from 'element-plus' +import { REQUEST_TIMEOUT } from '@/constants' -const { interceptors } = config export const PATH_URL = import.meta.env.VITE_API_BASE_PATH -const { requestInterceptors, responseInterceptors } = interceptors - const abortControllerMap: Map = new Map() const axiosInstance: AxiosInstance = axios.create({ - ...config, + timeout: REQUEST_TIMEOUT, baseURL: PATH_URL }) @@ -38,8 +36,8 @@ axiosInstance.interceptors.response.use( } ) -axiosInstance.interceptors.request.use(requestInterceptors || defaultRequestInterceptors) -axiosInstance.interceptors.response.use(responseInterceptors || defaultResponseInterceptors) +axiosInstance.interceptors.request.use(defaultRequestInterceptors) +axiosInstance.interceptors.response.use(defaultResponseInterceptors) const service = { request: (config: RequestConfig) => { diff --git a/src/config/axios/types/index.ts b/src/axios/types/index.ts similarity index 81% rename from src/config/axios/types/index.ts rename to src/axios/types/index.ts index 471ce4e..b70eb26 100644 --- a/src/config/axios/types/index.ts +++ b/src/axios/types/index.ts @@ -15,12 +15,6 @@ interface RequestInterceptors { responseInterceptors?: (config: T) => T responseInterceptorsCatch?: (err: any) => any } -interface AxiosConfig { - code: number - defaultHeaders: AxiosHeaders - timeout: number - interceptors: RequestInterceptors -} interface RequestConfig extends AxiosRequestConfig { interceptors?: RequestInterceptors @@ -30,7 +24,6 @@ export { AxiosResponse, RequestInterceptors, RequestConfig, - AxiosConfig, AxiosInstance, InternalAxiosRequestConfig, AxiosRequestHeaders, diff --git a/src/constants/index.ts b/src/constants/index.ts new file mode 100644 index 0000000..d37f7ee --- /dev/null +++ b/src/constants/index.ts @@ -0,0 +1,14 @@ +/** + * 请求成功状态码 + */ +export const SUCCESS_CODE = 0 + +/** + * 请求contentType + */ +export const CONTENT_TYPE = 'application/json' + +/** + * 请求超时时间 + */ +export const REQUEST_TIMEOUT = 60000 diff --git a/src/views/Function/Request.vue b/src/views/Function/Request.vue index 560736f..181ab50 100644 --- a/src/views/Function/Request.vue +++ b/src/views/Function/Request.vue @@ -4,7 +4,7 @@ import { useI18n } from '@/hooks/web/useI18n' import { ElButton, ElDivider } from 'element-plus' import { request1, request2, request3, request4, request5, expired } from '@/api/request' import { ref } from 'vue' -import request from '@/config/axios' +import request from '@/axios' const { t } = useI18n() @@ -171,3 +171,4 @@ const tokenExpired = () => { token过期 +@/axios diff --git a/types/env.d.ts b/types/env.d.ts index fbe3907..666efb8 100644 --- a/types/env.d.ts +++ b/types/env.d.ts @@ -15,6 +15,9 @@ interface ImportMetaEnv { readonly VITE_DROP_CONSOLE: string readonly VITE_SOURCEMAP: string readonly VITE_OUT_DIR: string + readonly VITE_AXIOS_CONTENT_TYPE: string + readonly VITE_AXIOS_TIMEOUT: number + readonly VITE_AXIOS_SUCCESS_CODE: number } declare global { diff --git a/types/global.d.ts b/types/global.d.ts index 10558cd..595eb64 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -1,4 +1,5 @@ import type { CSSProperties } from 'vue' +import { AxiosRequestHeaders } from 'axios' declare global { declare interface Fn { (...arg: T[]): T @@ -25,7 +26,7 @@ declare global { declare type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' - declare type AxiosHeaders = + declare type AxiosContentType = | 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data' @@ -39,12 +40,12 @@ declare global { data?: any url?: string method?: AxiosMethod - headersType?: string + headers?: AxiosRequestHeaders responseType?: AxiosResponseType } declare interface IResponse { - code: string + code: number data: T extends any ? T : T & any }