74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
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<ResultDomain<TbSysFileDTO>>
|
||
*/
|
||
uploadFile(filePath: string, param?: FileUploadParam): Promise<ResultDomain<TbSysFileDTO>> {
|
||
return uploadFile<TbSysFileDTO>({
|
||
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<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>> {
|
||
return request<TbSysFileDTO>({ 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}`
|
||
}
|
||
} |