From fda3275c2f952fe0f2e8f52129d5e4b79a51425e Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Wed, 04 Mar 2026 12:03:44 +0800
Subject: [PATCH] fix: 修复下载协议功能,实现真正的PDF文件下载

---
 web-app/src/components/dashboard/TabContainer.jsx |   44 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/web-app/src/components/dashboard/TabContainer.jsx b/web-app/src/components/dashboard/TabContainer.jsx
index 9a009f6..eab6b9b 100644
--- a/web-app/src/components/dashboard/TabContainer.jsx
+++ b/web-app/src/components/dashboard/TabContainer.jsx
@@ -1090,13 +1090,20 @@
                             <Image.PreviewGroup>
                               <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap' }}>
                                 {evidenceImages.map((img, index) => {
+                                  // 判断 show_url 是否以 http 开头
+                                  const isFullUrl = img.show_url && img.show_url.startsWith('http');
+                                  // 如果是完整URL直接使用,否则拼接 platformUrl
                                   const imgUrl = img.show_url 
-                                    ? (platformUrl ? `${platformUrl}/${img.show_url}` : img.show_url)
+                                    ? (isFullUrl ? img.show_url : (platformUrl ? `${platformUrl}/${img.show_url}` : img.show_url))
                                     : '';
                                   // 获取文件名:true_name 为空时取 file_name
-                                  const fileName = img.true_name || img.file_name || `材料${index + 1}`;
+                                  const rawFileName = img.true_name || img.file_name || `材料${index + 1}`;
                                   // 获取文件类型后缀
                                   const suffix = img.suffix || '';
+                                  // 检查文件名是否已包含后缀,避免重复
+                                  const fileName = suffix && rawFileName.toLowerCase().endsWith(`.${suffix.toLowerCase()}`) 
+                                    ? rawFileName 
+                                    : (suffix ? `${rawFileName}.${suffix}` : rawFileName);
                                   const isPdf = suffix.toLowerCase() === 'pdf';
                                   
                                   if (isPdf) {
@@ -1125,7 +1132,7 @@
                                       >
                                         <i className="fas fa-file-pdf" style={{ fontSize: 32, color: '#ff4d4f' }} />
                                         <span style={{ fontSize: 10, color: '#666', marginTop: 4, maxWidth: 90, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
-                                          {fileName}.{suffix}
+                                          {fileName}
                                         </span>
                                       </div>
                                     );
@@ -1387,8 +1394,35 @@
     if (!caseId) return;
     setActionLoading(prev => ({ ...prev, download: true }));
     try {
-      await MediationAgreementAPIService.downloadAgreement(caseId);
-      message.success('协议下载成功!');
+      // 调用API获取协议内容
+      const response = await MediationAgreementAPIService.downloadAgreement(caseId);
+      
+      if (response?.data?.agreeContent) {
+        const agreementContent = response.data.agreeContent;
+        
+        // 创建Blob对象
+        const blob = new Blob([agreementContent], { 
+          type: 'application/pdf' 
+        });
+        
+        // 创建下载链接
+        const url = window.URL.createObjectURL(blob);
+        const link = document.createElement('a');
+        link.href = url;
+        link.download = `调解协议_${caseId}.pdf`;
+        
+        // 触发下载
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+        
+        // 清理URL对象
+        window.URL.revokeObjectURL(url);
+        
+        message.success('协议下载成功!');
+      } else {
+        message.error('未获取到协议内容');
+      }
     } catch (err) {
       console.error('下载协议失败:', err);
       message.error('下载协议失败,请稍后重试');

--
Gitblit v1.8.0