新增合同上传附件追加
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user