diff --git a/src/api/common/index.ts b/src/api/common/index.ts index 54c2da811..3f78a5286 100644 --- a/src/api/common/index.ts +++ b/src/api/common/index.ts @@ -1,15 +1,11 @@ -import { useAxios } from '@/hooks/web/useAxios' - -const request = useAxios() +import request from '@/config/axios' // 获取所有字典 -export const getDictApi = async (): Promise => { - const res = await request.get({ url: '/dict/list' }) - return res && res.data +export const getDictApi = (): Promise => { + return request.get({ url: '/dict/list' }) } // 模拟获取某个字典 export const getDictOneApi = async (): Promise => { - const res = await request.get({ url: '/dict/one' }) - return res && res.data + return request.get({ url: '/dict/one' }) } diff --git a/src/api/dashboard/analysis/index.ts b/src/api/dashboard/analysis/index.ts index d392c0638..1f00ed0c8 100644 --- a/src/api/dashboard/analysis/index.ts +++ b/src/api/dashboard/analysis/index.ts @@ -1,4 +1,4 @@ -import { useAxios } from '@/hooks/web/useAxios' +import request from '@/config/axios' import type { AnalysisTotalTypes, UserAccessSource, @@ -6,24 +6,18 @@ import type { MonthlySales } from './types' -const request = useAxios() - -export const getCountApi = async (): Promise> => { - const res = await request.get({ url: '/analysis/total' }) - return res && res.data +export const getCountApi = (): Promise> => { + return request.get({ url: '/analysis/total' }) } -export const getUserAccessSourceApi = async (): Promise> => { - const res = await request.get({ url: '/analysis/userAccessSource' }) - return res && res.data +export const getUserAccessSourceApi = (): Promise> => { + return request.get({ url: '/analysis/userAccessSource' }) } -export const getWeeklyUserActivityApi = async (): Promise> => { - const res = await request.get({ url: '/analysis/weeklyUserActivity' }) - return res && res.data +export const getWeeklyUserActivityApi = (): Promise> => { + return request.get({ url: '/analysis/weeklyUserActivity' }) } -export const getMonthlySalesApi = async (): Promise> => { - const res = await request.get({ url: '/analysis/monthlySales' }) - return res && res.data +export const getMonthlySalesApi = (): Promise> => { + return request.get({ url: '/analysis/monthlySales' }) } diff --git a/src/api/dashboard/workplace/index.ts b/src/api/dashboard/workplace/index.ts index b517fdbf9..088064024 100644 --- a/src/api/dashboard/workplace/index.ts +++ b/src/api/dashboard/workplace/index.ts @@ -1,29 +1,22 @@ -import { useAxios } from '@/hooks/web/useAxios' +import request from '@/config/axios' import type { WorkplaceTotal, Project, Dynamic, Team, RadarData } from './types' -const request = useAxios() - -export const getCountApi = async (): Promise> => { - const res = await request.get({ url: '/workplace/total' }) - return res && res.data +export const getCountApi = (): Promise> => { + return request.get({ url: '/workplace/total' }) } -export const getProjectApi = async (): Promise> => { - const res = await request.get({ url: '/workplace/project' }) - return res && res.data +export const getProjectApi = (): Promise> => { + return request.get({ url: '/workplace/project' }) } -export const getDynamicApi = async (): Promise> => { - const res = await request.get({ url: '/workplace/dynamic' }) - return res && res.data +export const getDynamicApi = (): Promise> => { + return request.get({ url: '/workplace/dynamic' }) } -export const getTeamApi = async (): Promise> => { - const res = await request.get({ url: '/workplace/team' }) - return res && res.data +export const getTeamApi = (): Promise> => { + return request.get({ url: '/workplace/team' }) } -export const getRadarApi = async (): Promise> => { - const res = await request.get({ url: '/workplace/radar' }) - return res && res.data +export const getRadarApi = (): Promise> => { + return request.get({ url: '/workplace/radar' }) } diff --git a/src/api/login/index.ts b/src/api/login/index.ts index fa66be1d5..04bcbdacc 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,20 +1,16 @@ -import { useAxios } from '@/hooks/web/useAxios' +import request from '@/config/axios' import type { UserType } from './types' interface RoleParams { roleName: string } -const request = useAxios() - -export const loginApi = async (data: UserType): Promise> => { - const res = await request.post({ url: '/user/login', data }) - return res && res.data +export const loginApi = (data: UserType): Promise> => { + return request.post({ url: '/user/login', data }) } -export const loginOutApi = async (): Promise => { - const res = await request.get({ url: '/user/loginOut' }) - return res && res.data +export const loginOutApi = (): Promise => { + return request.get({ url: '/user/loginOut' }) } export const getUserListApi = ({ params }: AxiosConfig) => { @@ -24,14 +20,12 @@ export const getUserListApi = ({ params }: AxiosConfig) => { }>({ url: '/user/list', params }) } -export const getAdminRoleApi = async ( +export const getAdminRoleApi = ( params: RoleParams ): Promise> => { - const res = await request.get({ url: '/role/list', params }) - return res && res.data + return request.get({ url: '/role/list', params }) } -export const getTestRoleApi = async (params: RoleParams): Promise> => { - const res = await request.get({ url: '/role/list', params }) - return res && res.data +export const getTestRoleApi = (params: RoleParams): Promise> => { + return request.get({ url: '/role/list', params }) } diff --git a/src/api/table/index.ts b/src/api/table/index.ts index 0527a2490..bd4f0b90d 100644 --- a/src/api/table/index.ts +++ b/src/api/table/index.ts @@ -1,24 +1,18 @@ -import { useAxios } from '@/hooks/web/useAxios' +import request from '@/config/axios' import type { TableData } from './types' -const request = useAxios() - -export const getTableListApi = async (params: any): Promise => { - const res = await request.get({ url: '/example/list', params }) - return res && res.data +export const getTableListApi = (params: any): Promise => { + return request.get({ url: '/example/list', params }) } -export const saveTableApi = async (data: Partial): Promise => { - const res = await request.post({ url: '/example/save', data }) - return res && res.data +export const saveTableApi = (data: Partial): Promise => { + return request.post({ url: '/example/save', data }) } -export const getTableDetApi = async (id: string): Promise> => { - const res = await request.get({ url: '/example/detail', params: { id } }) - return res && res.data +export const getTableDetApi = (id: string): Promise> => { + return request.get({ url: '/example/detail', params: { id } }) } -export const delTableListApi = async (ids: string[] | number[]): Promise => { - const res = await request.post({ url: '/example/delete', data: { ids } }) - return res && res.data +export const delTableListApi = (ids: string[] | number[]): Promise => { + return request.post({ url: '/example/delete', data: { ids } }) } diff --git a/src/config/axios/index.ts b/src/config/axios/index.ts index 3b2ab4a88..ab71a4514 100644 --- a/src/config/axios/index.ts +++ b/src/config/axios/index.ts @@ -1,69 +1,33 @@ -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios' - -import { ElMessage } from 'element-plus' - -import qs from 'qs' - -import { config } from '@/config/axios/config' - -const { result_code, base_url } = config - -export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH] - -// 创建axios实例 -const service: AxiosInstance = axios.create({ - baseURL: PATH_URL, // api 的 base_url - timeout: config.request_timeout // 请求超时时间 -}) - -// request拦截器 -service.interceptors.request.use( - (config: AxiosRequestConfig) => { - if ( - config.method === 'post' && - config!.headers!['Content-Type'] === 'application/x-www-form-urlencoded' - ) { - config.data = qs.stringify(config.data) +import { service } from './service' + +import { config } from './config' + +const { default_headers } = config + +const request = (option: any) => { + const { url, method, params, data, headersType, responseType } = option + return service({ + url: url, + method, + params, + data, + responseType: responseType, + headers: { + 'Content-Type': headersType || default_headers } - // 添加token,可根据实际业务修改 - // config!.headers!['Authorization'] = 'something' - // get参数编码 - if (config.method === 'get' && config.params) { - let url = config.url as string - url += '?' - const keys = Object.keys(config.params) - for (const key of keys) { - if (config.params[key] !== void 0 && config.params[key] !== null) { - url += `${key}=${encodeURIComponent(config.params[key])}&` - } - } - url = url.substring(0, url.length - 1) - config.params = {} - config.url = url - } - return config + }) +} +export default { + get: (option: any) => { + return request({ method: 'get', ...option }) as unknown as T }, - (error: AxiosError) => { - // Do something with request error - console.log(error) // for debug - Promise.reject(error) - } -) - -// response 拦截器 -service.interceptors.response.use( - (response: AxiosResponse) => { - if (response.data.code === result_code) { - return response - } else { - ElMessage.error(response.data.message) - } + post: (option: any) => { + return request({ method: 'post', ...option }) as unknown as T + }, + delete: (option: any) => { + return request({ method: 'delete', ...option }) as unknown as T }, - (error: AxiosError) => { - console.log('err' + error) // for debug - ElMessage.error(error.message) - return Promise.reject(error) + put: (option: any) => { + return request({ method: 'put', ...option }) as unknown as T } -) - -export { service } +} diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts new file mode 100644 index 000000000..a3cacd9d0 --- /dev/null +++ b/src/config/axios/service.ts @@ -0,0 +1,70 @@ +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios' + +import qs from 'qs' + +import { config } from './config' + +import { ElMessage } from 'element-plus' + +const { result_code, base_url } = config + +export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH] + +// 创建axios实例 +const service: AxiosInstance = axios.create({ + baseURL: PATH_URL, // api 的 base_url + timeout: config.request_timeout // 请求超时时间 +}) + +// request拦截器 +service.interceptors.request.use( + (config: AxiosRequestConfig) => { + if ( + config.method === 'post' && + (config.headers as any)['Content-Type'] === 'application/x-www-form-urlencoded' + ) { + config.data = qs.stringify(config.data) + } + // get参数编码 + if (config.method === 'get' && config.params) { + let url = config.url as string + url += '?' + const keys = Object.keys(config.params) + for (const key of keys) { + if (config.params[key] !== void 0 && config.params[key] !== null) { + url += `${key}=${encodeURIComponent(config.params[key])}&` + } + } + url = url.substring(0, url.length - 1) + config.params = {} + config.url = url + } + return config + }, + (error: AxiosError) => { + // Do something with request error + console.log(error) // for debug + Promise.reject(error) + } +) + +// response 拦截器 +service.interceptors.response.use( + (response: AxiosResponse) => { + if (response.config.responseType === 'blob') { + // 如果是文件流,直接过 + return response + } else if (response.data.code === result_code) { + return response.data + } else { + ElMessage.error(response.data.message) + } + }, + (error: AxiosError) => { + console.log('err' + error) // for debug + ElMessage.error(error.message) + return Promise.reject(error) + } +) + +export { service } diff --git a/src/hooks/web/useAxios.ts b/src/hooks/web/useAxios.ts deleted file mode 100644 index e5caf693b..000000000 --- a/src/hooks/web/useAxios.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { service } from '@/config/axios' - -import { AxiosPromise } from 'axios' - -import { config } from '@/config/axios/config' - -const { default_headers } = config - -const request = (option: AxiosConfig) => { - const { url, method, params, data, headersType, responseType } = option - return service({ - url: url, - method, - params, - data, - responseType: responseType, - headers: { - 'Content-Type': headersType || default_headers - } - }) -} - -function getFn(option: AxiosConfig): AxiosPromise { - return request({ method: 'get', ...option }) -} - -function postFn(option: AxiosConfig): AxiosPromise { - return request({ method: 'post', ...option }) -} - -function deleteFn(option: AxiosConfig): AxiosPromise { - return request({ method: 'delete', ...option }) -} - -function putFn(option: AxiosConfig): AxiosPromise { - return request({ method: 'put', ...option }) -} - -export const useAxios = () => { - return { - get: getFn, - post: postFn, - delete: deleteFn, - put: putFn - } -} diff --git a/src/views/Authorization/Role.vue b/src/views/Authorization/Role.vue index cf828774d..9ca456830 100644 --- a/src/views/Authorization/Role.vue +++ b/src/views/Authorization/Role.vue @@ -59,12 +59,12 @@ const getTableList = async (params?: Params) => { pageSize: 10 } }) - .catch(() => {}) - .finally(() => { - loading.value = false - }) + // .catch(() => {}) + // .finally(() => { + // loading.value = false + // }) if (res) { - tableDataList.value = res.data.list + tableDataList.value = res.list } } diff --git a/src/views/Authorization/User.vue b/src/views/Authorization/User.vue index cf828774d..9ca456830 100644 --- a/src/views/Authorization/User.vue +++ b/src/views/Authorization/User.vue @@ -59,12 +59,12 @@ const getTableList = async (params?: Params) => { pageSize: 10 } }) - .catch(() => {}) - .finally(() => { - loading.value = false - }) + // .catch(() => {}) + // .finally(() => { + // loading.value = false + // }) if (res) { - tableDataList.value = res.data.list + tableDataList.value = res.list } }