| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import {BaseResultContent} from '@models';
- import {NETWORK_URL} from '@utils';
- import axios from 'axios';
- import {useMessage} from 'naive-ui';
- // 普通请求
- const http = axios.create({
- baseURL: NETWORK_URL,
- headers: {
- 'Content-Type': 'application/json',
- 'Cache-Control': 'no-cache',
- },
- });
- const exportReg = /export|excel/i;
- http.interceptors.request.use(function(config) {
- if (config?.url) {
- const isExport = exportReg.test(config.url);
- isExport && (config.responseType = 'blob');
- }
- return config;
- });
- export async function request<T, R extends BaseResultContent<any>>(options: {
- method: 'POST' | 'GET' | 'PUT' | 'DELETE';
- url: string;
- data?: T;
- skipError?: boolean;
- useBody?: boolean;
- signal?: AbortSignal;
- }) {
- const {data, skipError, method, url, useBody, signal} = options;
- let res: BaseResultContent<any>;
- const useData = useBody ? useBody : method !== 'GET' && method !== 'DELETE';
- const message = useMessage();
- try {
- const result = await http.request<R>({
- method,
- url,
- data: useData ? data : void 0,
- params: !useData ? data : void 0,
- signal,
- });
- res = result.data;
- if (res.msg !== '200' && !skipError && !exportReg.test(url))
- message.error(res.errMsg);
- } catch (error: any) {
- res = {msg: '510', errMsg: 'NETWORK_ERROR'};
- if (!skipError && error.code !== 'ERR_CANCELED' && !exportReg.test(url))
- message.error(res.errMsg);
- }
- return res;
- }
|