From 348128bbe0b57ef05e06f8f5fd924e6df216cf65 Mon Sep 17 00:00:00 2001 From: yorn <1057707203@qq.com> Date: Thu, 17 Jul 2025 01:16:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=84=E6=9F=A5=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E7=9A=84=E6=82=AC=E6=B5=AE=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/cross-checking/cross-files.ts | 16 +- app/api/evaluation_points/reviews.ts | 6 +- .../cross-checking/ReviewPointsList.tsx | 237 ++++++++++-------- app/routes/cross-checking._index.tsx | 11 +- 4 files changed, 161 insertions(+), 109 deletions(-) diff --git a/app/api/cross-checking/cross-files.ts b/app/api/cross-checking/cross-files.ts index 06f77aa..57d5c0c 100644 --- a/app/api/cross-checking/cross-files.ts +++ b/app/api/cross-checking/cross-files.ts @@ -32,6 +32,7 @@ export interface CrossCheckingTask { status: CrossCheckingTaskStatus; score: number; operation: string; + documentIds: number[]; } // API响应格式 @@ -79,7 +80,8 @@ const mockTasks: CrossCheckingTask[] = [ progress: 0, status: CrossCheckingTaskStatus.PENDING, score: 0, - operation: '去评查' + operation: '去评查', + documentIds: [1, 2, 3, 4, 5] }, { id: 2, @@ -92,7 +94,8 @@ const mockTasks: CrossCheckingTask[] = [ progress: 72, status: CrossCheckingTaskStatus.IN_PROGRESS, score: 0, - operation: '进行中' + operation: '进行中', + documentIds: [1, 2, 3, 4, 5] }, { id: 3, @@ -105,7 +108,8 @@ const mockTasks: CrossCheckingTask[] = [ progress: 100, status: CrossCheckingTaskStatus.COMPLETED, score: 95, - operation: '查看结果' + operation: '查看结果', + documentIds: [1, 2, 3, 4, 5] }, { id: 4, @@ -118,7 +122,8 @@ const mockTasks: CrossCheckingTask[] = [ progress: 100, status: CrossCheckingTaskStatus.COMPLETED, score: 85, - operation: '查看结果' + operation: '查看结果', + documentIds: [1, 2, 3, 4, 5] }, { id: 5, @@ -131,7 +136,8 @@ const mockTasks: CrossCheckingTask[] = [ progress: 100, status: CrossCheckingTaskStatus.COMPLETED, score: 92, - operation: '查看结果' + operation: '查看结果', + documentIds: [1, 2, 3, 4, 5] } ]; diff --git a/app/api/evaluation_points/reviews.ts b/app/api/evaluation_points/reviews.ts index 5dd3656..4127189 100644 --- a/app/api/evaluation_points/reviews.ts +++ b/app/api/evaluation_points/reviews.ts @@ -315,7 +315,7 @@ export async function getReviewPoints(fileId: string) { 'document_id': `eq.${fileId}` } }; - const scoringProposalsResponse = await postgrestGet('scoring_proposals', scoringProposalsParams); + const scoringProposalsResponse = await postgrestGet('cross_scoring_proposals', scoringProposalsParams); if (scoringProposalsResponse.error) { return { error: scoringProposalsResponse.error, status: scoringProposalsResponse.status }; @@ -404,8 +404,12 @@ export async function getReviewPoints(fileId: string) { // suggestion: '只是给建议的修改内容', result: result.evaluated_results?.result, // 记录评查结果,用于统计 + // score是评查点设置的满分的分数 score: point.score || 0, + // finalScore是评查点对应评查结果最终所得的分数 用户交叉评查时使用 + finalScore: result.final_score || 0, + postAction: point.post_action || '', // postAction: 'manual', diff --git a/app/components/cross-checking/ReviewPointsList.tsx b/app/components/cross-checking/ReviewPointsList.tsx index 79b1b5b..d5bced1 100644 --- a/app/components/cross-checking/ReviewPointsList.tsx +++ b/app/components/cross-checking/ReviewPointsList.tsx @@ -416,12 +416,17 @@ export function ReviewPointsList({ // 状态管理 const [searchText, setSearchText] = useState(''); // 搜索文本 const [statusFilter, setStatusFilter] = useState(null); // 状态过滤 + const [evaluationResultIds, setEvaluationResultIds] = useState([]); // 评分提案的evaluation_result_id // 在组件中使用scoringProposals(这里只是简单使用以避免linter警告) // 将来可以用于显示相关的评分提案信息 useEffect(() => { if (scoringProposals && scoringProposals.length > 0) { console.log('收到评分提案数据:', scoringProposals.length, '个提案'); + // 获取提案的evaluation_result_id + const evaluationResultIds = scoringProposals.map(proposal => Number(proposal.evaluation_result_id)); + setEvaluationResultIds(evaluationResultIds); + // console.log('提案的evaluation_result_id:', evaluationResultIds); } }, [scoringProposals]); @@ -447,6 +452,11 @@ export function ReviewPointsList({ * 打开提出意见模态框 */ const handleOpenOpinionModal = (reviewPoint: ReviewPoint) => { + // 如果评分提案的evaluation_result_id包含当前评查点的id,则不打开模态框 + if (evaluationResultIds.includes(Number(reviewPoint.id))) { + toastService.error('当前评查点已有意见提出项,可前往意见列表查看'); + return; + } setSelectedReviewPoint(reviewPoint); setOpinionForm({ auditPoint: reviewPoint.pointName, @@ -2098,8 +2108,34 @@ export function ReviewPointsList({ // 组件主渲染函数 return ( <> -
- +
+ {/* 悬浮的意见数量显示 - 固定在左侧 */} +
+ {/* 默认状态:竖向排列,窄宽度 */} +
+ + {scoringProposals.length} + + + +
+ + {/* 悬浮状态:横向排列,显示图标,数字放大 */} +
+ +
+
+ +
+ {/* 面板头部 */}
@@ -2126,7 +2162,7 @@ export function ReviewPointsList({ tabIndex={0} style={{ userSelect: 'text' }} onClick={() => { - // console.log('reviewPoint', reviewPoint); + console.log('reviewPoint', reviewPoint); handleReviewPointClick(reviewPoint.id); }} onKeyDown={(e) => { @@ -2182,104 +2218,105 @@ export function ReviewPointsList({ renderEmptyState() )}
-
- - {/* 提出意见模态框 */} - - - -
- } - > -
- {/* 审查点 */} -
- - -
- - {/* 发现问题 */} -
- - -
- - {/* 审查意见 */} -
- -