完善文档预览的效果修改
This commit is contained in:
@@ -1,21 +1,6 @@
|
||||
import { postgrestGet, type PostgrestParams, postgrestPut } from "../postgrest-client";
|
||||
import { postgrestGet, type PostgrestParams, postgrestPut, postgrestPost } from "../postgrest-client";
|
||||
import {getDocument} from "~/api/files/documents";
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
/**
|
||||
* 格式化日期
|
||||
* @param dateString 日期字符串
|
||||
* @returns 格式化后的日期字符串
|
||||
*/
|
||||
function formatDate(dateString: string): string {
|
||||
if (!dateString) return '';
|
||||
try {
|
||||
return dayjs(dateString).format('YYYY-MM-DD HH:mm:ss');
|
||||
} catch (error) {
|
||||
console.error('日期格式化失败:', error);
|
||||
return dateString;
|
||||
}
|
||||
}
|
||||
import { formatDate } from "~/utils";
|
||||
|
||||
/**
|
||||
* 从不同格式的 API 响应中提取数据
|
||||
@@ -62,6 +47,15 @@ interface EvaluationPoint {
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
// 定义审核状态类型
|
||||
interface AuditStatus {
|
||||
id: string | number;
|
||||
document_id: string | number;
|
||||
evaluation_point_id: string | number;
|
||||
edit_audit_status: number;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
// 定义评查点组类型
|
||||
interface EvaluationPointGroup {
|
||||
id: string | number;
|
||||
@@ -185,6 +179,47 @@ export async function getReviewPoints(fileId: string) {
|
||||
return { data: [], stats: { total: 0, success: 0, warning: 0, error: 0, score: 0 } };
|
||||
}
|
||||
|
||||
// 从audit_status表中 获取 需人工审核 的那些评查点的数据
|
||||
// console.log('evaluationPointsData1112------', evaluationPointsData.find(point => point.post_action === 'manual'));
|
||||
const manualReviewPoints = evaluationPointsData.filter(point => point.post_action === 'manual');
|
||||
const manualReviewPointsIds = manualReviewPoints.map(point => point.id);
|
||||
const manualReviewPointsParams: PostgrestParams = {
|
||||
select: '*',
|
||||
filter: {
|
||||
'document_id': `eq.${fileId}`,
|
||||
'evaluation_point_id': `in.(${manualReviewPointsIds.join(',')})`
|
||||
}
|
||||
};
|
||||
const manualReviewPointsResponse = await postgrestGet('audit_status', manualReviewPointsParams);
|
||||
if (manualReviewPointsResponse.error) {
|
||||
return { error: manualReviewPointsResponse.error, status: manualReviewPointsResponse.status };
|
||||
}
|
||||
const manualReviewPointsData = extractApiData<AuditStatus[]>(manualReviewPointsResponse.data);
|
||||
|
||||
// 构建评查点ID到editAuditStatus的映射
|
||||
const editAuditStatusMap = new Map<string | number, {id: string | number, status: number}>();
|
||||
|
||||
// 如果有查询结果,则根据evaluation_point_id索引到对应数据
|
||||
if (manualReviewPointsData && Array.isArray(manualReviewPointsData)) {
|
||||
manualReviewPointsData.forEach(auditStatus => {
|
||||
if (auditStatus.evaluation_point_id && auditStatus.edit_audit_status !== undefined) {
|
||||
editAuditStatusMap.set(auditStatus.evaluation_point_id, {id: auditStatus.id, status: auditStatus.edit_audit_status});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 为没有对应audit_status记录的manual类型评查点设置默认值0
|
||||
if (manualReviewPointsIds.length > 0) {
|
||||
manualReviewPointsIds.forEach(pointId => {
|
||||
if (!editAuditStatusMap.has(pointId)) {
|
||||
editAuditStatusMap.set(pointId, {id: '', status: 0});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// console.log('manualReviewPoints-------', manualReviewPoints);
|
||||
|
||||
|
||||
// 创建映射关系以便快速查找
|
||||
const pointsMap = new Map<string | number, EvaluationPoint>();
|
||||
evaluationPointsData.forEach(point => {
|
||||
@@ -204,6 +239,7 @@ export async function getReviewPoints(fileId: string) {
|
||||
const resultData: ReviewPointResult[] = evaluationResultsData.map(result => {
|
||||
const point = pointsMap.get(result.evaluation_point_id) || {} as EvaluationPoint;
|
||||
const group = groupsMap.get(point.evaluation_point_groups_id || 0) || {} as EvaluationPointGroup;
|
||||
const editAuditStatus = editAuditStatusMap.get(result.evaluation_point_id) || {id: '', status: 0};
|
||||
|
||||
// 从 evaluated_results 中提取数据
|
||||
let message = '';
|
||||
@@ -268,6 +304,10 @@ export async function getReviewPoints(fileId: string) {
|
||||
|
||||
return {
|
||||
id: result.id,
|
||||
documentId: fileId,
|
||||
pointId: point.id,
|
||||
editAuditStatusId: editAuditStatus.id,
|
||||
editAuditStatus: editAuditStatus.status,
|
||||
title: message,
|
||||
pointName: point.name || '',
|
||||
groupName: group.name || '',
|
||||
@@ -356,18 +396,19 @@ export async function getReviewPoints(fileId: string) {
|
||||
issueCount: issueCount
|
||||
};
|
||||
// console.log("reviewInfo-------",JSON.stringify(reviewInfo,null,2));
|
||||
|
||||
// data->reviewPoints stats->statistics reviewInfo->reviewInfo document->document
|
||||
return { data: resultData, stats, reviewInfo, document: documentData.data };
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新评查结果
|
||||
* @param resultId 评查结果ID
|
||||
* @param editAuditStatusId 审核状态ID
|
||||
* @param result 评查结果 (true/false)
|
||||
* @param message 评查意见
|
||||
* @returns 更新后的评查结果
|
||||
*/
|
||||
export async function updateReviewResult(resultId: string, result: boolean, message: string): Promise<{
|
||||
export async function updateReviewResult(resultId: string, editAuditStatusId: string | number, result: string, message: string): Promise<{
|
||||
data?: unknown;
|
||||
error?: string;
|
||||
status?: number;
|
||||
@@ -396,29 +437,72 @@ export async function updateReviewResult(resultId: string, result: boolean, mess
|
||||
const currentResult = currentResultData[0];
|
||||
const currentEvaluatedResults = currentResult.evaluated_results || {};
|
||||
|
||||
// 构建要更新的数据,保留原有字段,只更新result和message
|
||||
// 判断是否是重新审核操作
|
||||
const isReview = result === 'review';
|
||||
console.log('isReview-------', result);
|
||||
|
||||
// 构建要更新的数据,保留原有字段
|
||||
const updatedEvaluatedResults = {
|
||||
...currentEvaluatedResults,
|
||||
result: result,
|
||||
message: message
|
||||
// 如果是重新审核操作,不更新result,只更新message
|
||||
...(isReview ? { message } : { result: result === 'true' ? true : false, message }),
|
||||
};
|
||||
|
||||
const updatedData = {
|
||||
evaluated_results: updatedEvaluatedResults
|
||||
};
|
||||
|
||||
// 调用 API 更新数据
|
||||
const response = await postgrestPut<unknown, typeof updatedData>(
|
||||
// 调用 API 更新评查点结果数据
|
||||
const resultResponse = await postgrestPut<unknown, typeof updatedData>(
|
||||
'evaluation_results',
|
||||
updatedData,
|
||||
{ id: resultId }
|
||||
);
|
||||
|
||||
if (response.error) {
|
||||
return { error: response.error, status: response.status };
|
||||
if (resultResponse.error) {
|
||||
return { error: resultResponse.error, status: resultResponse.status };
|
||||
}
|
||||
|
||||
const extractedData = extractApiData<unknown>(response.data);
|
||||
// 处理audit_status表的更新或新增
|
||||
// 确定edit_audit_status的值:
|
||||
// 如果是重新审核操作,值为0;否则值为1
|
||||
const editAuditStatusValue = isReview ? 0 : 1;
|
||||
console.log('editAuditStatusValue-------', editAuditStatusValue);
|
||||
console.log('editAuditStatusId-------', editAuditStatusId);
|
||||
if (editAuditStatusId && editAuditStatusId !== '') {
|
||||
// 更新现有审核状态记录
|
||||
const auditStatusResponse = await postgrestPut(
|
||||
'audit_status',
|
||||
{ edit_audit_status: editAuditStatusValue },
|
||||
{ id: editAuditStatusId }
|
||||
);
|
||||
|
||||
if (auditStatusResponse.error) {
|
||||
return { error: auditStatusResponse.error, status: auditStatusResponse.status || 500 };
|
||||
}
|
||||
} else {
|
||||
// 如果没有editAuditStatusId,则创建新记录
|
||||
// 首先获取文档ID和评查点ID
|
||||
const documentId = currentResult.document_id;
|
||||
const evaluationPointId = currentResult.evaluation_point_id;
|
||||
|
||||
// 创建新的审核状态记录
|
||||
const newAuditStatus = {
|
||||
document_id: documentId,
|
||||
evaluation_point_id: evaluationPointId,
|
||||
evaluation_result_id: resultId,
|
||||
edit_audit_status: editAuditStatusValue
|
||||
};
|
||||
|
||||
// 使用postgrestPost创建新记录
|
||||
const postResponse = await postgrestPost('audit_status', newAuditStatus);
|
||||
|
||||
if (postResponse.error) {
|
||||
return { error: postResponse.error, status: postResponse.status || 500 };
|
||||
}
|
||||
}
|
||||
|
||||
const extractedData = extractApiData<unknown>(resultResponse.data);
|
||||
|
||||
if (!extractedData) {
|
||||
return { error: '更新评查结果失败', status: 500 };
|
||||
@@ -435,12 +519,12 @@ export async function updateReviewResult(resultId: string, result: boolean, mess
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认评查结果并更新文档审核状态
|
||||
* 确认评查结果并更新文档审核状态 只更新文档的审核状态为通过
|
||||
* @param documentId 文档ID
|
||||
* @returns 更新结果
|
||||
*/
|
||||
export async function confirmReviewResults(documentId: string): Promise<{
|
||||
data?: { auditStatus: number; score: number };
|
||||
data?: { auditStatus: number; };
|
||||
error?: string;
|
||||
status?: number;
|
||||
}> {
|
||||
@@ -450,26 +534,26 @@ export async function confirmReviewResults(documentId: string): Promise<{
|
||||
}
|
||||
|
||||
// 获取该文档的所有评查点结果
|
||||
const reviewPointsResponse = await getReviewPoints(documentId);
|
||||
// const reviewPointsResponse = await getReviewPoints(documentId);
|
||||
|
||||
if ('error' in reviewPointsResponse && reviewPointsResponse.error) {
|
||||
return { error: reviewPointsResponse.error, status: reviewPointsResponse.status };
|
||||
}
|
||||
// if ('error' in reviewPointsResponse && reviewPointsResponse.error) {
|
||||
// return { error: reviewPointsResponse.error, status: reviewPointsResponse.status };
|
||||
// }
|
||||
|
||||
if (!('data' in reviewPointsResponse) || !reviewPointsResponse.data || !Array.isArray(reviewPointsResponse.data)) {
|
||||
return { error: '获取评查点数据失败', status: 500 };
|
||||
}
|
||||
// if (!('data' in reviewPointsResponse) || !reviewPointsResponse.data || !Array.isArray(reviewPointsResponse.data)) {
|
||||
// return { error: '获取评查点数据失败', status: 500 };
|
||||
// }
|
||||
|
||||
// 计算总分数
|
||||
const totalScore = reviewPointsResponse.stats?.score || 0;
|
||||
// // 计算总分数
|
||||
// const totalScore = reviewPointsResponse.stats?.score || 0;
|
||||
|
||||
// 根据总分确定审核状态
|
||||
// <80分:不通过(-1),>=80分:通过(1)
|
||||
const auditStatus = totalScore < 80 ? -1 : 1;
|
||||
// // 根据总分确定审核状态
|
||||
// // <80分:不通过(-1),>=80分:通过(1)
|
||||
// const auditStatus = totalScore < 80 ? -1 : 1;
|
||||
|
||||
// 更新文档的审核状态
|
||||
const updateDocumentParams = {
|
||||
audit_status: auditStatus
|
||||
audit_status: 1
|
||||
};
|
||||
|
||||
// 调用API更新文档审核状态
|
||||
@@ -483,7 +567,7 @@ export async function confirmReviewResults(documentId: string): Promise<{
|
||||
return { error: response.error, status: response.status };
|
||||
}
|
||||
|
||||
return { data: { auditStatus, score: totalScore } };
|
||||
return { data: { auditStatus: 1} };
|
||||
} catch (error) {
|
||||
console.error('确认评查结果失败:', error);
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user