import { useI18n } from '@eciol/locale'; import { uploadRequest } from '@eciol/request'; import { replaceVariables, ResultEnum } from '@eciol/shared'; import { DownloadFileParams, UploadFileParams } from '@eciol/types'; import type { UploadService } from './typing'; const { t } = useI18n(); enum Api { Upload = '/http/upload', Download = '/http/download/{id}', FileList = '/http/filelist/{fileids}', Delete = '/http/delete/{id}', } /** * @description: Upload interface */ function uploadApi(params: UploadFileParams, onUploadProgress: any) { return uploadRequest.uploadFile( { url: Api.Upload, onUploadProgress, }, params, { showLoading: true, loadingTip: 'UPLOAD', successMessageMode: 'message', operationType: 'UPLOAD', getResultEnum: () => ResultEnum as any, }, ); } /** * @description: Download interface */ const downloadApi = (params: DownloadFileParams) => { return uploadRequest.get( { url: replaceVariables(Api.Download, params), responseType: 'blob', }, { isTransformResponse: false, showLoading: true, loadingTip: 'DOWNLOAD', successMessageMode: 'message', successMessage: t('sys.api.downloadSuccess'), getResultEnum: () => ResultEnum as any, }, ); }; /** * @description: Download interface */ const getFileListApi = (params: UploadService.GetFileListParams) => { return uploadRequest.get( { url: replaceVariables(Api.FileList, params), }, { getResultEnum: () => ResultEnum as any, }, ); }; /** * @description: Delete File interface */ const deleteFileApi = (params: DownloadFileParams) => { return uploadRequest.get( { url: replaceVariables(Api.Delete, params), }, { showLoading: true, loadingTip: 'DELETE', successMessageMode: 'message', operationType: 'DELETE', getResultEnum: () => ResultEnum as any, }, ); }; export { deleteFileApi, downloadApi, getFileListApi, uploadApi }; export type { UploadService };