完善文档预览的效果修改

This commit is contained in:
2025-04-21 23:02:29 +08:00
parent 5c2c367856
commit cd2f060d87
15 changed files with 718 additions and 565 deletions
+80 -43
View File
@@ -69,6 +69,10 @@ export interface ReviewFileUI {
message: string;
}>;
createdBy: string;
passCount: number;
warningCount: number;
failCount: number;
manualCount: number;
}
// 文件列表搜索参数
@@ -109,6 +113,10 @@ interface EvaluationPoint {
interface DocumentReviewResult {
status: number;
issueCount: number;
passCount: number;
warningCount: number;
failCount: number;
manualCount: number;
}
/**
@@ -177,6 +185,7 @@ export function getFileExtension(fileName: string): string {
* @returns UI文件对象
*/
export function convertToReviewFileUI(document: Document, documentTypeName: string): ReviewFileUI {
// 将评查状态转换为UI状态(这个评查状态后续可能不需要,这里先预留)
const reviewStatus = mapReviewStatusToUI(document.evaluations_status);
const reviewFileUI: ReviewFileUI = {
@@ -195,7 +204,11 @@ export function convertToReviewFileUI(document: Document, documentTypeName: stri
score: 0,
auditStatus: document.audit_status,
issues: [],
createdBy: document.user_id?.toString() || '系统'
createdBy: document.user_id?.toString() || '系统',
passCount: 0,
warningCount: 0,
failCount: 0,
manualCount: 0
};
// console.log('reviewFileUI-----',reviewFileUI);
@@ -396,6 +409,9 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
let totalScore = 0;
let totalPoints = 0;
let totalPassPoints = 0;
let totalWarningPoints = 0;
let totalFailPoints = 0;
let totalManualPoints = 0;
// 存储该文档的问题消息
const issuesList: Array<{severity: 'info' | 'warning' | 'error' | 'critical', message: string}> = [];
@@ -406,9 +422,10 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
const pointId = result.evaluation_point_id;
const point = pointsMap.get(pointId);
// 检查是否需要人工审核
if (resultValue === false && point && point.post_action === 'manual') {
// 统计需要人工审核的评查点
if (point && point.post_action === 'manual') {
hasManualReviewPoint = true;
totalManualPoints++;
}
// 检查是否有不通过的结果
@@ -422,6 +439,14 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
message: evaluatedResults.message as string
});
}
// 统计不通过而且评查点是警告的评查点
if (point && point.suggestion_message_type === 'warning') {
totalWarningPoints++;
}else if (point && point.suggestion_message_type === 'error') {
totalFailPoints++;
}
}else{
totalPassPoints++;
}
@@ -464,14 +489,20 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
documentStatusMap.set(docId, {
status,
passCount: totalPassPoints,
warningCount: totalWarningPoints,
failCount: totalFailPoints,
manualCount: totalManualPoints,
issueCount: results.filter(r => r.evaluated_results?.result === false).length
});
});
// console.log("documentStatusMap-----",documentStatusMap);
// 将文档数据转换为UI文件对象,同时应用评查状态
const reviewFiles = extractedDocuments.map(doc => {
const typeName = typeNameMap[doc.type_id] || '未知类型';
const reviewResult = documentStatusMap.get(doc.id) || { status: doc.evaluations_status || 0, issueCount: 0 };
const reviewResult = documentStatusMap.get(doc.id) || { status: doc.evaluations_status || 0, issueCount: 0, passCount: 0, warningCount: 0, failCount: 0, manualCount: 0 };
const issues = documentIssuesMap.get(doc.id) || [];
const score = documentScoreMap.get(doc.id) || 100; // 获取计算后的分数,默认为100
@@ -490,14 +521,20 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
reviewFile.reviewStatusCode = reviewResult.status;
reviewFile.reviewStatus = mapReviewStatusToUI(reviewResult.status);
reviewFile.issueCount = reviewResult.issueCount;
reviewFile.passCount = reviewResult.passCount;
reviewFile.warningCount = reviewResult.warningCount;
reviewFile.failCount = reviewResult.failCount;
reviewFile.manualCount = reviewResult.manualCount;
reviewFile.score = score; // 添加分数
// 添加问题列表
reviewFile.issues = issues;
return reviewFile;
});
console.log('reviewFiles-----',reviewFiles);
// console.log('reviewFiles-----',reviewFiles);
return {
data: {
files: reviewFiles,
@@ -519,51 +556,51 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}): P
* @param status 评查状态
* @returns 更新后的文件信息
*/
export async function updateReviewStatus(id: string, status: string): Promise<{
data?: ReviewFileUI;
error?: string;
status?: number;
}> {
try {
if (!id) {
return { error: '文件ID不能为空', status: 400 };
}
// export async function updateReviewStatus(id: string, status: string): Promise<{
// data?: ReviewFileUI;
// error?: string;
// status?: number;
// }> {
// try {
// if (!id) {
// return { error: '文件ID不能为空', status: 400 };
// }
const statusValue = mapUIToReviewStatus(status);
// const statusValue = mapUIToReviewStatus(status);
const response = await postgrestPut<Document, Partial<Document>>(
'documents',
{ evaluations_status: statusValue },
{ id: parseInt(id) }
);
// const response = await postgrestPut<Document, Partial<Document>>(
// 'documents',
// { evaluations_status: statusValue },
// { id: parseInt(id) }
// );
if (response.error) {
return { error: response.error, status: response.status };
}
// if (response.error) {
// return { error: response.error, status: response.status };
// }
const extractedData = extractApiData<Document>(response.data);
// const extractedData = extractApiData<Document>(response.data);
if (!extractedData) {
return { error: '更新评查状态失败', status: 500 };
}
// if (!extractedData) {
// return { error: '更新评查状态失败', status: 500 };
// }
// 获取文档类型,用于查找文档类型名称
const documentTypesResponse = await getDocumentTypes({pageSize: 500});
const documentTypes = documentTypesResponse.data?.types || [];
// // 获取文档类型,用于查找文档类型名称
// const documentTypesResponse = await getDocumentTypes({pageSize: 500});
// const documentTypes = documentTypesResponse.data?.types || [];
// 查找文档类型名称
const docType = documentTypes.find((type: DocumentTypeUI) => type.id === extractedData.type_id);
const typeName = docType ? docType.name : '未知类型';
// // 查找文档类型名称
// const docType = documentTypes.find((type: DocumentTypeUI) => type.id === extractedData.type_id);
// const typeName = docType ? docType.name : '未知类型';
return { data: convertToReviewFileUI(extractedData, typeName) };
} catch (error) {
console.error('更新评查状态失败:', error);
return {
error: error instanceof Error ? error.message : '更新评查状态失败',
status: 500
};
}
}
// return { data: convertToReviewFileUI(extractedData, typeName) };
// } catch (error) {
// console.error('更新评查状态失败:', error);
// return {
// error: error instanceof Error ? error.message : '更新评查状态失败',
// status: 500
// };
// }
// }
/**
* 更新文件的审核状态