Files
urbanLifeline/urbanLifelineWeb/packages/workcase_wechat/api/file/file.ts

76 lines
2.6 KiB
TypeScript
Raw Normal View History

2025-12-24 19:50:38 +08:00
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
* @param originalFileName
2025-12-24 19:50:38 +08:00
* @returns Promise<ResultDomain<TbSysFileDTO>>
*/
uploadFile(filePath: string, param?: FileUploadParam, originalFileName?: string): Promise<ResultDomain<TbSysFileDTO>> {
2025-12-24 19:50:38 +08:00
return uploadFile<TbSysFileDTO>({
url: `${this.baseUrl}/upload`,
filePath: filePath,
name: 'file',
formData: {
module: param?.module || '',
optsn: param?.optsn || '',
uploader: param?.uploader || '',
fileName: originalFileName || ''
2025-12-24 19:50:38 +08:00
}
})
},
/**
* uni-app
* @param filePaths
* @param param
* @returns Promise<ResultDomain<TbSysFileDTO>>
*/
async batchUploadFiles(filePaths: string[], param?: BatchFileUploadParam): Promise<ResultDomain<TbSysFileDTO>> {
const uploadPromises = filePaths.map(filePath =>
this.uploadFile(filePath, param)
)
try {
const results = await Promise.all(uploadPromises)
// 返回包含所有上传文件的结果
const uploadedFiles = results
.filter((r: ResultDomain<TbSysFileDTO>) => r.success && r.data)
.map((r: ResultDomain<TbSysFileDTO>) => r.data!)
return {
success: true,
dataList: uploadedFiles
} as ResultDomain<TbSysFileDTO>
} catch (error) {
return {
success: false,
message: '批量上传失败'
} as ResultDomain<TbSysFileDTO>
}
},
/**
*
* @param fileId ID
* @returns Promise<ResultDomain<TbSysFileDTO>>
*/
getFileById(fileId: string): Promise<ResultDomain<TbSysFileDTO>> {
2025-12-28 13:35:10 +08:00
return request<TbSysFileDTO>({ url: `${this.baseUrl}/${fileId}`, method: 'GET' })
2025-12-24 19:50:38 +08:00
},
/**
* URL
* @param fileId ID
* @returns string
*/
getDownloadUrl(fileId: string): string {
return `${BASE_URL}${this.baseUrl}/download/${fileId}`
}
}