import type { LoadingTipEnum, OperationTypeEnum, ResultEnum } from '@eciol/shared'; import { Recordable } from './tools'; type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined; type SuccessMessageMode = ErrorMessageMode; type OperationType = keyof typeof OperationTypeEnum; type LoadingTip = keyof typeof LoadingTipEnum; interface RequestOptions { // Splicing request parameters to url joinParamsToUrl?: boolean; // Format request parameter time formatDate?: boolean; // Whether to process the request result isTransformResponse?: boolean; // Whether to return native response headers // For example: use this attribute when you need to get the response headers isReturnNativeResponse?: boolean; // Whether to join url joinPrefix?: boolean; // Interface address, use the default apiUrl if you leave it blank apiUrl?: string | (() => string); // 请求拼接路径 urlPrefix?: string; // Error message prompt type errorMessageMode?: ErrorMessageMode; // Success message prompt type successMessageMode?: SuccessMessageMode; // Success message successMessage?: string; // Operation type operationType?: OperationType; // Whether to add a timestamp joinTime?: boolean; ignoreCancelToken?: boolean; // Whether to send token in header withToken?: boolean; // 请求重试机制 retryRequest?: RetryRequest; // show full loading showLoading?: boolean; loadingTip?: LoadingTip; // 接口返回值字段 responseBodyFields?: { code: string; message: string; data: string; status: string; }; getResultEnum?: () => ResultEnum; } export interface RetryRequest { isOpenRetry: boolean; count: number; waitTime: number; } interface RequestResult { scode: string; type: 'success' | 'error' | 'warning'; message: string; data: T; [K: string]: T | string; } // multipart/form-data: upload file interface UploadFileParams { // Other parameters data?: Recordable; // File parameter interface field name name?: string; // file name file: File | Blob; // file name filename?: string; [key: string]: any; } interface FileItemResult { id: string; name: string; url: string; size: number; } interface UploadApiResult { results: FileItemResult[]; total: number; } // Download File interface DownloadFileParams { id: string; } export type { DownloadFileParams, ErrorMessageMode, FileItemResult, LoadingTip, OperationType, RequestOptions, RequestResult, SuccessMessageMode, UploadApiResult, UploadFileParams, };