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}`
|
|||
|
|
}
|
|||
|
|
}
|