1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/**
 * 证据材料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 {string} personId - 当事人ID
   * @returns {Promise} 当事人信息
   */
  static getPersonInfo(personId) {
    return request.get('/api/v1/evidence/person-info', { personId });
  }
 
  /**
   * 按当事人查询证据列表
   * GET /api/v1/evidence/list-by-person
   * @param {string} personId - 当事人ID
   * @param {Object} params - 其他查询参数
   * @returns {Promise} 证据列表
   */
  static getEvidenceListByPerson(personId, params = {}) {
    return request.get('/api/v1/evidence/list-by-person', {
      personId,
      ...params
    });
  }
 
  /**
   * 证据审核
   * PUT /api/v1/evidence/audit
   * @param {Object} data - 审核数据
   * @param {string} data.evidenceId - 证据ID
   * @param {string} data.status - 审核状态
   * @param {string} data.auditOpinion - 审核意见
   * @param {string} data.auditorId - 审核人ID
   * @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;