From bc2b5cf668bbe6ebbb4f090bc476781d8630c2bb Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Thu, 12 Mar 2026 16:05:59 +0800
Subject: [PATCH] feat: 优化外呼提示文案,使用perTypeName字段动态显示当事人类型
---
web-app/src/components/dashboard/TabContainer.jsx | 42 +++++++++++++++++++++++++++++++++++-------
1 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/web-app/src/components/dashboard/TabContainer.jsx b/web-app/src/components/dashboard/TabContainer.jsx
index 9a009f6..0767f1c 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>
);
@@ -1314,8 +1321,8 @@
});
const loadedRef = useRef(false);
- // 获取 caseId
- const caseId = caseData?.caseId || getMergedParams().caseId;
+ // 获取 caseId(兼容驼峰和蛇形命名)
+ const caseId = caseData?.caseId || caseData?.case_id || getMergedParams().caseId;
// 处理协议内容展示(纯文本,处理换行)
const renderAgreementContent = (content) => {
@@ -1387,7 +1394,28 @@
if (!caseId) return;
setActionLoading(prev => ({ ...prev, download: true }));
try {
- await MediationAgreementAPIService.downloadAgreement(caseId);
+ // 调用API获取PDF文件流
+ const response = await MediationAgreementAPIService.downloadAgreement(caseId);
+
+ // 创建Blob对象(PDF格式)
+ const blob = new Blob([response.data], {
+ 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('协议下载成功!');
} catch (err) {
console.error('下载协议失败:', err);
@@ -1402,7 +1430,7 @@
if (!caseId) return;
setActionLoading(prev => ({ ...prev, regenerate: true }));
try {
- const response = await MediationAgreementAPIService.generateAgreement(caseId);
+ const response = await MediationAgreementAPIService.regenerateAgreement(caseId);
if (response?.data?.agreeContent) {
setAgreementContent(response.data.agreeContent);
message.success('协议重新生成成功!');
--
Gitblit v1.8.0