tony.cheng
2026-03-04 9167ea7dca015c7ff1f35fa7eb63161fe10eac7b
fix: 修正下载协议功能,正确处理PDF文件流
2 files modified
18 ■■■■■ changed files
web-app/src/components/dashboard/TabContainer.jsx 12 ●●●● patch | view | raw | blame | history
web-app/src/services/MediationAgreementAPIService.js 6 ●●●●● patch | view | raw | blame | history
web-app/src/components/dashboard/TabContainer.jsx
@@ -1394,14 +1394,11 @@
    if (!caseId) return;
    setActionLoading(prev => ({ ...prev, download: true }));
    try {
      // 调用API获取协议内容
      // 调用API获取PDF文件流
      const response = await MediationAgreementAPIService.downloadAgreement(caseId);
      
      if (response?.data?.agreeContent) {
        const agreementContent = response.data.agreeContent;
        // 创建Blob对象
        const blob = new Blob([agreementContent], {
      // 创建Blob对象(PDF格式)
      const blob = new Blob([response.data], {
          type: 'application/pdf' 
        });
        
@@ -1420,9 +1417,6 @@
        window.URL.revokeObjectURL(url);
        
        message.success('协议下载成功!');
      } else {
        message.error('未获取到协议内容');
      }
    } catch (err) {
      console.error('下载协议失败:', err);
      message.error('下载协议失败,请稍后重试');
web-app/src/services/MediationAgreementAPIService.js
@@ -32,10 +32,12 @@
   * 调解协议下载
   * POST /api/v1/medi-agreement/download
   * @param {string} caseId - 案件ID
   * @returns {Promise} 协议内容(包含agreeId和agreeContent)
   * @returns {Promise} PDF文件流
   */
  static downloadAgreement(caseId) {
    return request.post('/api/v1/medi-agreement/download', { caseId });
    return request.post('/api/v1/medi-agreement/download', { caseId }, {
      responseType: 'blob'
    });
  }
  /**