/** * 证据材料API Service * 处理证据相关接口 * 接口前缀: /api/v1/evidence/* */ import { request } from './request'; class EvidenceAPIService { /** * 证据列表查询 * GET /api/v1/evidence/list * @param {Object} params - 查询参数 * @param {string} params.caseId - 案件ID * @param {string} params.personId - 当事人ID * @param {string} params.type - 证据类型 * @param {string} params.status - 证据状态 * @param {number} params.page - 页码 * @param {number} params.size - 每页数量 * @returns {Promise} 证据列表 */ static getEvidenceList(params = {}) { return request.get('/api/v1/evidence/list', params); } /** * 当事人信息查询 * GET /api/v1/evidence/person-info * @param {Object} params - 查询参数 * @param {string} params.case_id - 案件ID * @param {string} params.evidence_type - 证据类型 * @param {string} params.per_type - 人员类型(15_020008-1/15_020008-2) * @returns {Promise} 当事人信息 */ static getPersonInfo(params = {}) { return request.get('/api/v1/evidence/person-info', params); } /** * 按当事人查询证据列表(获取材料图片列表) * GET /api/v1/evidence/list-by-person * @param {Object} params - 查询参数 * @param {string} params.case_id - 案件ID * @param {string} params.evidence_type - 证据类型 * @param {string} params.per_type - 人员类型 * @param {string} params.person_id - 人员ID * @returns {Promise} 证据列表(含show_url图片路径) */ static getEvidenceListByPerson(params = {}) { return request.get('/api/v1/evidence/list-by-person', params); } /** * 证据审核 * POST /api/v1/evidence/audit * @param {Object} data - 审核数据 * @param {string} data.case_id - 案件ID * @param {string|number} data.evidence_type - 证据类型 * @param {string} data.person_id - 人员ID * @param {Array} data.file_id_list - 文件ID列表 * @param {string} data.audit_user - 审核人 * @param {number} data.audit_state - 审核状态(1-审核通过,2-退回补充) * @param {string} data.audit_remark - 审核意见(退回时必填) * @returns {Promise} 审核结果 */ static auditEvidence(data = {}) { return request.put('/api/v1/evidence/audit', data); } /** * 上传证据材料 * POST /api/v1/evidence/upload * @param {FormData} formData - 包含文件和其他元数据的表单数据 * @returns {Promise} 上传结果 */ static uploadEvidence(formData) { return request.post('/api/v1/evidence/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); } /** * 下载证据材料 * GET /api/v1/evidence/download/{evidenceId} * @param {string} evidenceId - 证据ID * @returns {Promise} 下载链接或文件流 */ static downloadEvidence(evidenceId) { return request.get(`/api/v1/evidence/download/${evidenceId}`, { responseType: 'blob' }); } /** * 删除证据材料 * DELETE /api/v1/evidence/{evidenceId} * @param {string} evidenceId - 证据ID * @returns {Promise} 删除结果 */ static deleteEvidence(evidenceId) { return request.delete(`/api/v1/evidence/${evidenceId}`); } /** * 获取证据详情 * GET /api/v1/evidence/detail/{evidenceId} * @param {string} evidenceId - 证据ID * @returns {Promise} 证据详情 */ static getEvidenceDetail(evidenceId) { return request.get(`/api/v1/evidence/detail/${evidenceId}`); } /** * 批量审核证据 * POST /api/v1/evidence/batch-audit * @param {Object} data - 批量审核数据 * @param {Array} data.evidenceIds - 证据ID数组 * @param {string} data.status - 审核状态 * @param {string} data.auditOpinion - 审核意见 * @returns {Promise} 批量审核结果 */ static batchAuditEvidence(data = {}) { return request.post('/api/v1/evidence/batch-audit', data); } /** * 证据分类统计 * GET /api/v1/evidence/statistics * @param {string} caseId - 案件ID * @returns {Promise} 分类统计信息 */ static getEvidenceStatistics(caseId) { return request.get('/api/v1/evidence/statistics', { caseId }); } /** * 获取证据模板列表 * GET /api/v1/evidence/templates * @param {string} type - 证据类型 * @returns {Promise} 模板列表 */ static getEvidenceTemplates(type) { return request.get('/api/v1/evidence/templates', { type }); } /** * 根据案件获取所有当事人证据 * @param {string} caseId - 案件ID * @returns {Promise} 所有当事人证据数据 */ static async getAllEvidenceByCase(caseId) { try { // 获取案件所有证据 const evidenceList = await this.getEvidenceList({ caseId }); // 按当事人分组 const groupedByPerson = {}; if (evidenceList.data && evidenceList.data.data) { evidenceList.data.data.forEach(item => { const personId = item.personId; if (!groupedByPerson[personId]) { groupedByPerson[personId] = { personInfo: null, evidences: [] }; } groupedByPerson[personId].evidences.push(item); }); } // 获取每个当事人的详细信息 const personPromises = Object.keys(groupedByPerson).map(async (personId) => { try { const personInfo = await this.getPersonInfo(personId); groupedByPerson[personId].personInfo = personInfo.data; } catch (error) { console.warn(`获取当事人${personId}信息失败:`, error); } }); await Promise.all(personPromises); return groupedByPerson; } catch (error) { return Promise.reject(error); } } } export default EvidenceAPIService;