From e8341da1769be538eaec6a9d4bf29491b1301d66 Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Tue, 17 Mar 2026 12:10:39 +0800
Subject: [PATCH] fix: 修复API加载失败时未使用mock数据降级导致按钮不显示的问题

---
 web-app/src/components/dashboard/TabContainer.jsx |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/web-app/src/components/dashboard/TabContainer.jsx b/web-app/src/components/dashboard/TabContainer.jsx
index aaf5bc2..c87efc5 100644
--- a/web-app/src/components/dashboard/TabContainer.jsx
+++ b/web-app/src/components/dashboard/TabContainer.jsx
@@ -165,6 +165,16 @@
   const timeline = caseData || {};
   const caseState = timeline.mediation?.state;
   
+  // 调试日志:输出关键数据
+  useEffect(() => {
+    console.log('===== MediationBoard 数据状态 =====');
+    console.log('caseData:', caseData);
+    console.log('timeline:', timeline);
+    console.log('caseState:', caseState);
+    console.log('mediation:', timeline.mediation);
+    console.log('================================');
+  }, [caseData, caseState, timeline]);
+  
   // person_type到avatar类型的映射
   const getAvatarType = (personType) => {
     const typeMap = {
@@ -354,10 +364,22 @@
 
   // 状态控制按钮显示逻辑
   const shouldShowControlButton = () => {
-    return caseState === 0 || caseState === 1 || caseState === 5;
+    const show = caseState === 0 || caseState === 1 || caseState === 5;
+    console.log('状态控制按钮显示检查:', {
+      caseState,
+      show,
+      conditions: {
+        'caseState === 0': caseState === 0,
+        'caseState === 1': caseState === 1,
+        'caseState === 5': caseState === 5
+      }
+    });
+    return show;
   };
 
   const getControlButtonProps = () => {
+    console.log('获取按钮属性:', { caseState });
+    
     if (caseState === 0 || caseState === 1) {
       return {
         text: '终止',
@@ -371,38 +393,66 @@
         action: 'resume'
       };
     }
+    
+    console.log('未匹配到按钮属性,返回null');
     return null;
   };
 
   // 处理状态控制按钮点击
   const handleControlButtonClick = (action) => {
+    console.log('状态控制按钮点击:', { action });
     setControlAction(action);
     setConfirmModalVisible(true);
   };
 
   // 处理确认对话框确认
   const handleConfirmOk = async () => {
-    if (!controlAction) return;
+    console.log('确认对话框确认:', { controlAction, remark });
+    
+    if (!controlAction) {
+      console.warn('控制动作为空');
+      return;
+    }
     
     setControlLoading(true);
     try {
       const params = getMergedParams();
       const actionCode = controlAction === 'terminate' ? 0 : 1;
       
+      console.log('准备调用API:', {
+        caseId: params.caseId,
+        actionCode,
+        userName: localStorage.getItem('userName') || '调解员',
+        remark: remark || ''
+      });
+      
+      // 验证必要参数
+      if (!params.caseId) {
+        throw new Error('案件ID不能为空');
+      }
+      
       await ProcessAPIService.updateMediationState(params.caseId, {
         action: actionCode,
-        userName: localStorage.getItem('userName') || '调解员'
+        userName: localStorage.getItem('userName') || '调解员',
+        remark: remark || ''
       });
       
       message.success('案件状态更新成功');
       setConfirmModalVisible(false);
       setRemark('');
+      setControlAction(null);
       
       // 刷新数据
       refreshData();
     } catch (error) {
       console.error('状态更新失败:', error);
-      message.error(error.message || '状态更新失败,请稍后重试');
+      const errorMessage = error.message || '状态更新失败,请稍后重试';
+      message.error(errorMessage);
+      
+      // 如果是网络错误,提供更多帮助信息
+      if (errorMessage.includes('网络') || errorMessage.includes('Network')) {
+        message.info('请检查网络连接或联系管理员');
+      }
     } finally {
       setControlLoading(false);
     }

--
Gitblit v1.8.0