From 85f3f863950fa1d807697da437591062868e782c Mon Sep 17 00:00:00 2001
From: chengmw <chengmingwei_1984122@126.com>
Date: Thu, 26 Mar 2026 17:27:54 +0800
Subject: [PATCH] feat: 添加通话记录查看器功能模块

---
 web-app/src/services/ProcessAPIService.js |   61 +++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/web-app/src/services/ProcessAPIService.js b/web-app/src/services/ProcessAPIService.js
index f91b71c..bad9165 100644
--- a/web-app/src/services/ProcessAPIService.js
+++ b/web-app/src/services/ProcessAPIService.js
@@ -39,10 +39,14 @@
    * @param {Object} params - 查询参数
    * @param {string} params.caseTypeFirst - 案件一级分类
    * @param {string} params.platform_code - 外部平台编号
+   * @param {string} params.authorization - 授权token
    * @returns {Promise} 调解时间线数据
    */
   static getMediationTimeline(caseId, params = {}) {
-    return request.get(`/api/v1/mediation-timeline/v2/case/${caseId}`, params);
+    const { authorization, ...queryParams } = params;
+    queryParams.authorization = authorization;
+    const config = authorization ? { headers: { Authorization: authorization } } : {};
+    return request.get(`/api/v1/mediation-timeline/v2/case/${caseId}`, queryParams, config);
   }
 
   /**
@@ -52,10 +56,13 @@
    * @param {string} params.caseTypeFirst - 案件一级分类
    * @param {string} params.platformCode - 外部平台编号
    * @param {string} params.caseId - 案件ID
+   * @param {string} params.authorization - 授权token
    * @returns {Promise} 流程节点列表
    */
   static getProcessNodes(params = {}) {
-    return request.get('/api/v1/process/node', params);
+    const { authorization, ...queryParams } = params;
+    const config = authorization ? { headers: { Authorization: authorization } } : {};
+    return request.get('/api/v1/process/node', queryParams, config);
   } 
 
 
@@ -65,6 +72,7 @@
    * @param {Object} params - 查询参数
    * @param {string} params.caseTypeFirst - 案件一级分类
    * @param {string} params.platform_code - 外部平台编号
+   * @param {string} params.authorization - 授权token(来自URL的auth_token)
    * @returns {Promise} 完整流程信息
    */
   static async getCaseProcessInfo(caseId, params = {}) {
@@ -74,13 +82,18 @@
       const nodeParams = {
         caseTypeFirst: params.caseTypeFirst,
         platformCode: params.platform_code,
-        caseId
+        caseId,
+        authorization: params.authorization
       };
       
+      // 提取authorization用于子请求
+      const { authorization, ...timelineParams } = params;
+      console.log('Timeline params:', timelineParams);
+      timelineParams.authorization = authorization;
       // 并行获取时间线和流程节点
       const promises = [
-        this.getMediationTimeline(caseId, params),
-        this.getProcessNodes(nodeParams)
+        this.getMediationTimeline(caseId, { ...timelineParams, authorization }),
+        this.getProcessNodes({ ...nodeParams, authorization })
       ];
 
       const results = await Promise.all(promises);
@@ -88,9 +101,13 @@
       console.log('Timeline result:', results[0]);
       console.log('Nodes result:', results[1]);
 
+      // nodes接口返回 { nodeList: [...] },需提取 nodeList 数组
+      const nodesRaw = results[1].data;
+      const nodes = nodesRaw?.nodeList || (Array.isArray(nodesRaw) ? nodesRaw : []);
+
       return {
         timeline: results[0].data || {},
-        nodes: results[1].data || []
+        nodes
       };
     } catch (error) {
       return Promise.reject(error);
@@ -114,6 +131,38 @@
     }
   }
 
+  /**
+   * 人工接管API
+   * PUT /api/v1/mediation-timeline/v2/case/{caseId}/takeover
+   * @param {string} caseId - 案件ID
+   * @param {Object} data - 请求数据
+   * @param {string} data.userName - 当前用户名
+   * @returns {Promise} 接管结果
+   */
+  static takeover(caseId, data) {
+    return request.put(`/api/v1/mediation-timeline/v2/case/${caseId}/takeover`, data);
+  }
+
+  /**
+   * AI调解状态控制API(终止/恢复)
+   * PUT /api/v1/mediation-timeline/v2/case/{caseId}/state
+   * @param {string} caseId - 案件ID
+   * @param {Object} data - 请求数据
+   * @param {number} data.action - 操作类型:0-终止,1-恢复
+   * @param {string} data.userName - 操作人姓名(可选)
+   * @returns {Promise} 状态更新结果
+   * 
+   * @example
+   * // 终止调解
+   * ProcessAPIService.updateMediationState('1001', { action: 0, userName: '张三' });
+   * 
+   * // 恢复调解
+   * ProcessAPIService.updateMediationState('1001', { action: 1, userName: '李四' });
+   */
+  static updateMediationState(caseId, data) {
+    return request.put(`/api/v1/mediation-timeline/v2/case/${caseId}/state`, data);
+  }
+
 }
 
 export default ProcessAPIService;
\ No newline at end of file

--
Gitblit v1.8.0