import { request, uploadFile } from '../base' import type { ResultDomain, TbSysFileDTO, FileUploadParam, BatchFileUploadParam } from '../../types' import { BASE_URL } from '../../config' export const fileAPI = { baseUrl: '/urban-lifeline/file', /** * 上传单个文件(uni-app 版本) * @param filePath 文件临时路径 * @param param 文件上传参数 * @returns Promise> */ uploadFile(filePath: string, param?: FileUploadParam): Promise> { return uploadFile({ url: `${this.baseUrl}/upload`, filePath: filePath, name: 'file', formData: { module: param?.module || '', optsn: param?.optsn || '', uploader: param?.uploader || '' } }) }, /** * 批量上传文件(uni-app 版本) * @param filePaths 文件临时路径数组 * @param param 批量文件上传参数 * @returns Promise> */ async batchUploadFiles(filePaths: string[], param?: BatchFileUploadParam): Promise> { const uploadPromises = filePaths.map(filePath => this.uploadFile(filePath, param) ) try { const results = await Promise.all(uploadPromises) // 返回包含所有上传文件的结果 const uploadedFiles = results .filter((r: ResultDomain) => r.success && r.data) .map((r: ResultDomain) => r.data!) return { success: true, dataList: uploadedFiles } as ResultDomain } catch (error) { return { success: false, message: '批量上传失败' } as ResultDomain } }, /** * 获取文件信息 * @param fileId 文件ID * @returns Promise> */ getFileById(fileId: string): Promise> { return request({ url: `${BASE_URL}${this.baseUrl}/${fileId}`, method: 'GET' }) }, /** * 获取文件下载 URL * @param fileId 文件ID * @returns string */ getDownloadUrl(fileId: string): string { return `${BASE_URL}${this.baseUrl}/download/${fileId}` } }