feat(review-meeting): 上传前生成标准资料文件名

pull/874/head
Codewoc 2026-04-02 10:41:08 +08:00
parent 2c70c062a2
commit f5789503eb
1 changed files with 22 additions and 4 deletions

View File

@ -130,6 +130,12 @@ export interface ReviewMeetingMaterialUploadReqVO {
fileType?: string
}
export interface ReviewMeetingMaterialUploadFileNameReqVO {
reviewMeetingProjectId: number
materialCode: string
originalFileName: string
}
// ============================================================
// API 调用
// ============================================================
@ -208,6 +214,13 @@ export const getProjectMaterialHistory = (reviewMeetingProjectId: number, materi
params: { reviewMeetingProjectId, materialCode }
})
/** 获取结构化材料上传文件名 */
export const getProjectMaterialUploadFileName = (params: ReviewMeetingMaterialUploadFileNameReqVO) =>
request.get<string>({
url: '/project/review-project/material-upload-file-name',
params
})
/** 下载当前议程分类模板包 */
export const downloadProjectTemplateBundle = (agendaType: string) =>
request.download({
@ -222,7 +235,12 @@ export const uploadProjectMaterial = async (
materialCode: string,
file: File
) => {
const presignedInfo = await FileApi.getFilePresignedUrl(file.name, 'review-meeting')
const targetFileName = await getProjectMaterialUploadFileName({
reviewMeetingProjectId,
materialCode,
originalFileName: file.name
})
const presignedInfo = await FileApi.getFilePresignedUrl(targetFileName, 'review-meeting')
await axios.put(presignedInfo.uploadUrl, file, {
headers: {
'Content-Type': file.type || 'application/octet-stream'
@ -233,7 +251,7 @@ export const uploadProjectMaterial = async (
configId: presignedInfo.configId,
url: presignedInfo.url,
path: presignedInfo.path,
name: file.name,
name: targetFileName,
type: file.type || 'application/octet-stream',
size: file.size
})
@ -244,10 +262,10 @@ export const uploadProjectMaterial = async (
reviewMeetingId,
reviewMeetingProjectId,
materialCode,
fileName: file.name,
fileName: targetFileName,
fileUrl: presignedInfo.url,
fileSize: file.size,
fileType: file.name.includes('.') ? file.name.split('.').pop()?.toLowerCase() : ''
fileType: targetFileName.includes('.') ? targetFileName.split('.').pop()?.toLowerCase() : ''
} satisfies ReviewMeetingMaterialUploadReqVO
})
}