/** * 流程管理API Service * 处理调解流程、时间线、节点等相关接口 * 接口前缀: /api/v1/process/* 和 /apie/v1/mediation-timelin/* */ import { request } from './request'; class ProcessAPIService { /** * 查询调解记录列表(实时看板专用) * GET /api/v1/process/record * @param {Object} params - 查询参数 * @param {string} params.mediation_id - AI调解反馈ID * @returns {Promise} 调解记录列表 */ static getProcessRecords(params = {}) { return request.get('/api/v1/process/record', params); } /** * 获取流程任务进行时长 * GET /api/v1/process/record/task-time * @param {string} mediation_id - AI调解反馈ID * @param {string} node_id - 节点ID * @returns {Promise} 任务进行时长 * @returns {Promise} 返回对象包含startTime和duration * @returns {Promise.data.startTime} 任务开始时间字符串 * @returns {Promise.data.duration} 持续时间字符串 */ static getTaskTime(mediation_id, node_id) { return request.get('/api/v1/process/record/task-time', { mediation_id, node_id }); } /** * 调解时间线查询 * GET /api/v1/mediation-timeline/v2/case/{caseId} * @param {string} caseId - 案件ID * @param {Object} params - 查询参数 * @param {string} params.caseTypeFirst - 案件一级分类 * @param {string} params.platform_code - 外部平台编号 * @returns {Promise} 调解时间线数据 */ static getMediationTimeline(caseId, params = {}) { return request.get(`/api/v1/mediation-timeline/v2/case/${caseId}`, params); } /** * 流程节点查询 * GET /api/v1/process/node * @param {Object} params - 查询参数 * @param {string} params.caseTypeFirst - 案件一级分类 * @param {string} params.platformCode - 外部平台编号 * @param {string} params.caseId - 案件ID * @returns {Promise} 流程节点列表 */ static getProcessNodes(params = {}) { return request.get('/api/v1/process/node', params); } /** * 获取案件完整流程信息(整合多个接口) * @param {string} caseId - 案件ID * @param {Object} params - 查询参数 * @param {string} params.caseTypeFirst - 案件一级分类 * @param {string} params.platform_code - 外部平台编号 * @returns {Promise} 完整流程信息 */ static async getCaseProcessInfo(caseId, params = {}) { try { console.log('Getting case process info...', caseId, params); // 参数名转换:platform_code -> platformCode const nodeParams = { caseTypeFirst: params.caseTypeFirst, platformCode: params.platform_code, caseId }; // 并行获取时间线和流程节点 const promises = [ this.getMediationTimeline(caseId, params), this.getProcessNodes(nodeParams) ]; const results = await Promise.all(promises); 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 }; } catch (error) { return Promise.reject(error); } } /** * 根据案件ID获取调解时间线中的mediation_id * @param {string} caseId - 案件ID * @param {Object} params - 查询参数 * @param {string} params.caseTypeFirst - 案件一级分类 * @param {string} params.platform_code - 外部平台编号 * @returns {Promise} mediation_id */ static async getMediationIdByCaseId(caseId, params = {}) { try { const timeline = await this.getMediationTimeline(caseId, params); return timeline.data?.mediation?.id || timeline.data?.id || null; } catch (error) { return Promise.reject(error); } } /** * 人工接管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); } } export default ProcessAPIService;