refactor: refactor useAxios

This commit is contained in:
陈凯龙 2022-04-19 10:51:47 +08:00
parent dfedbc74fd
commit 185f1e6e21
6 changed files with 72 additions and 67 deletions

View File

@ -6,20 +6,20 @@ import type {
MonthlySales MonthlySales
} from './types' } from './types'
const { request } = useAxios() const request = useAxios()
export const getCountApi = () => { export const getCountApi = () => {
return request<AnalysisTotalTypes>({ url: '/analysis/total', method: 'get' }) return request.get<AnalysisTotalTypes>({ url: '/analysis/total' })
} }
export const getUserAccessSourceApi = () => { export const getUserAccessSourceApi = () => {
return request<UserAccessSource[]>({ url: '/analysis/userAccessSource', method: 'get' }) return request.get<UserAccessSource[]>({ url: '/analysis/userAccessSource' })
} }
export const getWeeklyUserActivityApi = () => { export const getWeeklyUserActivityApi = () => {
return request<WeeklyUserActivity[]>({ url: '/analysis/weeklyUserActivity', method: 'get' }) return request.get<WeeklyUserActivity[]>({ url: '/analysis/weeklyUserActivity' })
} }
export const getMonthlySalesApi = () => { export const getMonthlySalesApi = () => {
return request<MonthlySales[]>({ url: '/analysis/monthlySales', method: 'get' }) return request.get<MonthlySales[]>({ url: '/analysis/monthlySales' })
} }

View File

@ -1,24 +1,24 @@
import { useAxios } from '@/hooks/web/useAxios' import { useAxios } from '@/hooks/web/useAxios'
import type { WorkplaceTotal, Project, Dynamic, Team, RadarData } from './types' import type { WorkplaceTotal, Project, Dynamic, Team, RadarData } from './types'
const { request } = useAxios() const request = useAxios()
export const getCountApi = () => { export const getCountApi = () => {
return request<WorkplaceTotal>({ url: '/workplace/total', method: 'get' }) return request.get<WorkplaceTotal>({ url: '/workplace/total' })
} }
export const getProjectApi = () => { export const getProjectApi = () => {
return request<Project[]>({ url: '/workplace/project', method: 'get' }) return request.get<Project[]>({ url: '/workplace/project' })
} }
export const getDynamicApi = () => { export const getDynamicApi = () => {
return request<Dynamic[]>({ url: '/workplace/dynamic', method: 'get' }) return request.get<Dynamic[]>({ url: '/workplace/dynamic' })
} }
export const getTeamApi = () => { export const getTeamApi = () => {
return request<Team[]>({ url: '/workplace/team', method: 'get' }) return request.get<Team[]>({ url: '/workplace/team' })
} }
export const getRadarApi = () => { export const getRadarApi = () => {
return request<RadarData[]>({ url: '/workplace/radar', method: 'get' }) return request.get<RadarData[]>({ url: '/workplace/radar' })
} }

View File

@ -1,34 +1,34 @@
import { useAxios } from '@/hooks/web/useAxios' import { useAxios } from '@/hooks/web/useAxios'
import type { UserLoginType, UserType } from './types' import type { UserLoginType, UserType } from './types'
const { request } = useAxios() const request = useAxios()
export const loginApi = (data: UserLoginType) => { export const loginApi = (data: UserLoginType) => {
return request({ url: '/user/login', method: 'post', data } as AxiosConfig< return request.post({
Recordable, url: '/user/login',
UserLoginType data
>) })
} }
export const loginOutApi = () => { export const loginOutApi = () => {
return request({ url: '/user/loginOut', method: 'get' }) return request.get({ url: '/user/loginOut' })
} }
export const getUserListApi = ({ params }: AxiosConfig) => { export const getUserListApi = ({ params }: AxiosConfig) => {
return request<{ return request.get<{
total: number total: number
list: UserType[] list: UserType[]
}>({ url: '/user/list', method: 'get', params }) }>({ url: '/user/list', params })
} }
export const getAdminRoleApi = ({ params }: AxiosConfig) => { export const getAdminRoleApi = ({ params }) => {
return request<{ return request.get<{
list: AppCustomRouteRecordRaw[] list: AppCustomRouteRecordRaw[]
}>({ url: '/role/list', method: 'get', params }) }>({ url: '/role/list', params })
} }
export const getTestRoleApi = ({ params }: AxiosConfig) => { export const getTestRoleApi = ({ params }) => {
return request<{ return request.get<{
list: string[] list: string[]
}>({ url: '/role/list', method: 'get', params }) }>({ url: '/role/list', params })
} }

View File

@ -1,37 +1,23 @@
import { useAxios } from '@/hooks/web/useAxios' import { useAxios } from '@/hooks/web/useAxios'
import type { TableData } from './types' import type { TableData } from './types'
const { request } = useAxios() const request = useAxios()
export const getTableListApi = ({ params }: AxiosConfig) => { export const getTableListApi = ({ params }) => {
return request<{ return request.get<{
total: number total: number
list: TableData[] list: TableData[]
}>({ url: '/example/list', method: 'get', params }) }>({ url: '/example/list', params })
} }
export const saveTableApi = ({ data }: AxiosConfig<Recordable, TableData>) => { export const saveTableApi = ({ data }) => {
return request({ url: '/example/save', method: 'post', data }) return request.post<TableData>({ url: '/example/save', data })
} }
export const getTableDetApi = ({ export const getTableDetApi = ({ params }) => {
params return request.get<TableData>({ url: '/example/detail', params })
}: AxiosConfig<
{
id: string
},
Recordable
>) => {
return request<TableData>({ url: '/example/detail', method: 'get', params })
} }
export const delTableListApi = ({ export const delTableListApi = ({ data }) => {
data return request.post({ url: '/example/delete', data })
}: AxiosConfig<
Recordable,
{
id: string[] | number[]
}
>) => {
return request({ url: '/example/delete', method: 'post', data })
} }

View File

@ -6,22 +6,41 @@ import { config } from '@/config/axios/config'
const { default_headers } = config const { default_headers } = config
export const useAxios = () => { const request = <T>(option: AxiosConfig): AxiosPromise<T> => {
const request = <T>(option: AxiosConfig): AxiosPromise<T> => { const { url, method, params, data, headersType, responseType } = option
const { url, method, params, data, headersType, responseType } = option return service({
return service({ url: url,
url: url, method,
method, params,
params, data,
data, responseType: responseType,
responseType: responseType, headers: {
headers: { 'Content-Type': headersType || default_headers
'Content-Type': headersType || default_headers }
} })
}) }
}
function getFn<T = any>(option: AxiosConfig): AxiosPromise<T> {
return request<T>({ method: 'get', ...option })
}
function postFn<T = any>(option: AxiosConfig): AxiosPromise<T> {
return request<T>({ method: 'post', ...option })
}
function deleteFn<T = any>(option: AxiosConfig): AxiosPromise<T> {
return request<T>({ method: 'delete', ...option })
}
function putFn<T = any>(option: AxiosConfig): AxiosPromise<T> {
return request<T>({ method: 'put', ...option })
}
export const useAxios = () => {
return { return {
request get: getFn,
post: postFn,
delete: deleteFn,
put: putFn
} }
} }

6
types/global.d.ts vendored
View File

@ -25,9 +25,9 @@ declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put'
declare type AxiosResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' declare type AxiosResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'
declare type AxiosConfig<T = Recordable, K = Recordable> = { declare type AxiosConfig = {
params?: T params?: any
data?: K data?: any
url?: string url?: string
method?: AxiosMethod method?: AxiosMethod
headersType?: string headersType?: string