Files
leaudit-platform-frontend/app/api/reviewsApi.ts
T

76 lines
2.4 KiB
TypeScript

import { apiRequest, buildUrl, type PaginatedResponse } from './base';
import type { ReviewResult, RuleCheckResult, AIAnalysis } from '~/models/review';
/**
* 评查结果API服务
*/
interface ReviewFilterParams {
fileId?: string;
reviewStatus?: string;
startDate?: string;
endDate?: string;
keyword?: string;
page?: number;
pageSize?: number;
}
// 获取评查结果列表
export async function getReviews(params?: ReviewFilterParams): Promise<PaginatedResponse<ReviewResult>> {
const url = buildUrl('/api/reviews', params);
return apiRequest<PaginatedResponse<ReviewResult>>(url);
}
// 获取单个评查结果
export async function getReview(id: string): Promise<ReviewResult> {
const url = buildUrl(`/api/reviews/${id}`);
return apiRequest<ReviewResult>(url);
}
// 获取评查点结果列表
export async function getReviewPoints(reviewId: string): Promise<RuleCheckResult[]> {
const url = buildUrl(`/api/reviews/${reviewId}/points`);
return apiRequest<RuleCheckResult[]>(url);
}
// 开始评查
export async function startReview(fileId: string): Promise<ReviewResult> {
const url = buildUrl(`/api/reviews/start/${fileId}`);
return apiRequest<ReviewResult>(url, 'POST');
}
// 更新评查点结果
export async function updateReviewPoint(reviewId: string, pointId: string, data: Partial<RuleCheckResult>): Promise<RuleCheckResult> {
const url = buildUrl(`/api/reviews/${reviewId}/points/${pointId}`);
return apiRequest<RuleCheckResult>(url, 'PUT', data);
}
// 完成评查
export async function completeReview(reviewId: string): Promise<ReviewResult> {
const url = buildUrl(`/api/reviews/${reviewId}/complete`);
return apiRequest<ReviewResult>(url, 'POST');
}
// 获取AI分析
export async function getAIAnalysis(reviewId: string): Promise<AIAnalysis> {
const url = buildUrl(`/api/reviews/${reviewId}/analysis`);
return apiRequest<AIAnalysis>(url);
}
// 导出评查报告
export async function exportReviewReport(reviewId: string, format: 'pdf' | 'word' = 'pdf'): Promise<Blob> {
const url = buildUrl(`/api/reviews/${reviewId}/export`, { format });
const response = await fetch(url, {
method: 'GET',
headers: {
'Accept': format === 'pdf' ? 'application/pdf' : 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
}
});
if (!response.ok) {
throw new Error('导出评查报告失败');
}
return response.blob();
}