新增合同上传附件追加

This commit is contained in:
2025-09-11 17:11:38 +08:00
parent 066e8ba4d9
commit c611d6621d
4 changed files with 364 additions and 17 deletions
+84
View File
@@ -136,6 +136,90 @@ export async function uploadFileToBinary(file: File): Promise<ArrayBuffer> {
* @param jwtToken JWT token
* @returns 上传结果
*/
/**
* 合同文档追加附件并合并
* @param documentId 合同文档ID
* @param files 附件文件列表
* @param mergeMode 合并模式:'overwrite'(覆盖原文档)或 'new'(新建文档记录)
* @param isReprocess 是否触发重新处理
* @param remark 备注
* @param jwtToken JWT token
* @returns 上传结果
*/
export async function appendContractAttachments(
documentId: number,
files: File[],
mergeMode: 'overwrite' | 'new' = 'overwrite',
isReprocess: boolean = true,
remark?: string,
jwtToken?: string
): Promise<{data: FileUploadResponse; error?: never} | {data?: never; error: string; status?: number}> {
try {
console.log('【合同附件追加】开始追加附件:', { documentId, fileCount: files.length, mergeMode });
// 创建FormData对象
const formData = new FormData();
// 添加多个文件
files.forEach(file => {
formData.append('files', file);
});
// 添加其他参数
formData.append('merge_mode', mergeMode);
formData.append('is_reprocess', isReprocess.toString());
if (remark) {
formData.append('remark', remark);
}
// 构建请求URL
const uploadUrl = `${UPLOAD_URL}/contracts/${documentId}/append_attachments`;
console.log('【合同附件追加】准备发送请求到服务器:', uploadUrl);
// 设置请求头
const headers: HeadersInit = {
'Accept': 'application/json'
};
if (jwtToken) {
headers['Authorization'] = `Bearer ${jwtToken}`;
}
// 发送请求
const response = await fetch(uploadUrl, {
method: 'POST',
headers,
body: formData
});
console.log('【合同附件追加】服务器响应状态:', response.status);
if (!response.ok) {
const errorText = await response.text();
console.error('【合同附件追加】服务器返回错误:', errorText);
return {
error: `服务器错误: ${response.status} ${response.statusText}`,
status: response.status
};
}
const result = await response.json();
console.log('【合同附件追加】服务器返回结果:', result);
if (result.success) {
return { data: result.result };
} else {
return { error: result.error || '附件追加失败' };
}
} catch (error) {
console.error('【合同附件追加】上传过程中发生错误:', error);
return {
error: error instanceof Error ? error.message : '附件追加过程中发生未知错误'
};
}
}
export async function uploadDocumentToServer(
binaryData: ArrayBuffer,
fileName: string,