聊天室创建工单
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
declare const uni: {
|
||||
getStorageSync: (key: string) => any
|
||||
request: (options: any) => void
|
||||
uploadFile: (options: any) => void
|
||||
}
|
||||
|
||||
import type { ResultDomain } from '../types'
|
||||
@@ -46,4 +47,40 @@ export function request<T>(options: {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 文件上传方法
|
||||
export function uploadFile<T>(options: {
|
||||
url: string
|
||||
filePath: string
|
||||
name?: string
|
||||
formData?: Record<string, any>
|
||||
header?: Record<string, string>
|
||||
}): Promise<ResultDomain<T>> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const token = uni.getStorageSync('token') as string
|
||||
uni.uploadFile({
|
||||
url: BASE_URL + options.url,
|
||||
filePath: options.filePath,
|
||||
name: options.name || 'file',
|
||||
formData: options.formData,
|
||||
header: {
|
||||
...(token ? { 'Authorization': `Bearer ${token}` } : {}),
|
||||
...options.header
|
||||
},
|
||||
success: (res: any) => {
|
||||
try {
|
||||
if (res.statusCode === 200) {
|
||||
const result = typeof res.data === 'string' ? JSON.parse(res.data) : res.data
|
||||
resolve(result as ResultDomain<T>)
|
||||
} else {
|
||||
reject(new Error(`上传失败: ${res.statusCode}`))
|
||||
}
|
||||
} catch (error) {
|
||||
reject(new Error('解析响应失败'))
|
||||
}
|
||||
},
|
||||
fail: (err: any) => {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
74
urbanLifelineWeb/packages/workcase_wechat/api/file/file.ts
Normal file
74
urbanLifelineWeb/packages/workcase_wechat/api/file/file.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
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}`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from './file'
|
||||
@@ -1,4 +1,5 @@
|
||||
export * from "./base"
|
||||
export * from "./sys"
|
||||
export * from "./workcase"
|
||||
export * from "./ai"
|
||||
export * from "./ai"
|
||||
export * from "./file"
|
||||
Reference in New Issue
Block a user