/**
|
* 流程管理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<Object>} 返回对象包含startTime和duration
|
* @returns {Promise<Object>.data.startTime} 任务开始时间字符串
|
* @returns {Promise<Object>.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 - 外部平台编号
|
* @param {string} params.authorization - 授权token
|
* @returns {Promise} 调解时间线数据
|
*/
|
static getMediationTimeline(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);
|
}
|
|
/**
|
* 流程节点查询
|
* GET /api/v1/process/node
|
* @param {Object} params - 查询参数
|
* @param {string} params.caseTypeFirst - 案件一级分类
|
* @param {string} params.platformCode - 外部平台编号
|
* @param {string} params.caseId - 案件ID
|
* @param {string} params.authorization - 授权token
|
* @returns {Promise} 流程节点列表
|
*/
|
static getProcessNodes(params = {}) {
|
const { authorization, ...queryParams } = params;
|
const config = authorization ? { headers: { Authorization: authorization } } : {};
|
return request.get('/api/v1/process/node', queryParams, config);
|
}
|
|
|
/**
|
* 获取案件完整流程信息(整合多个接口)
|
* @param {string} caseId - 案件ID
|
* @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 = {}) {
|
try {
|
console.log('Getting case process info...', caseId, params);
|
// 参数名转换:platform_code -> platformCode
|
const nodeParams = {
|
caseTypeFirst: params.caseTypeFirst,
|
platformCode: params.platform_code,
|
caseId,
|
authorization: params.authorization
|
};
|
|
// 提取authorization用于子请求
|
const { authorization, ...timelineParams } = params;
|
console.log('Timeline params:', timelineParams);
|
timelineParams.authorization = authorization;
|
// 并行获取时间线和流程节点
|
const promises = [
|
this.getMediationTimeline(caseId, { ...timelineParams, authorization }),
|
this.getProcessNodes({ ...nodeParams, authorization })
|
];
|
|
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;
|