feat: 1. 完善交叉评查上传创建任务,改成动态加载文档类型。
2. 重新对齐交叉评查的接口。
This commit is contained in:
@@ -26,7 +26,7 @@ import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs } f
|
||||
import React, { useState, useEffect, useCallback, useRef, useMemo } from "react";
|
||||
import { useNavigate, useLoaderData } from "@remix-run/react";
|
||||
import crossCheckingStyles from "~/styles/cross-checking-result.css?url";
|
||||
import { getReviewPoints, updateReviewResult} from "~/api/evaluation_points/reviews";
|
||||
import { getReviewPoints, updateReviewResult, getReviewPoints_fromApi} from "~/api/evaluation_points/reviews";
|
||||
import { toastService } from "~/components/ui/Toast";
|
||||
import { confirmReviewResults, checkProposalVotes, findIsProposer } from "~/api/cross-checking/cross-file-result";
|
||||
|
||||
@@ -199,8 +199,37 @@ export async function loader({ request }: LoaderFunctionArgs) {
|
||||
const { getUserSession } = await import("~/api/login/auth.server");
|
||||
const { userInfo, frontendJWT } = await getUserSession(request);
|
||||
|
||||
// 获取评查点数据,传递request对象
|
||||
const reviewData = await getReviewPoints(id, request);
|
||||
// 🔒 安全验证:检查用户是否有权限访问该文档
|
||||
if (!userInfo?.user_id) {
|
||||
return Response.json({
|
||||
result: false,
|
||||
message: '用户身份验证失败,请重新登录'
|
||||
}, { status: 401 });
|
||||
}
|
||||
|
||||
// const { verifyDocumentAccess } = await import("~/api/cross-checking/verify-document-access");
|
||||
// const accessCheck = await verifyDocumentAccess({
|
||||
// documentId: id,
|
||||
// taskId: taskId,
|
||||
// userId: userInfo.user_id,
|
||||
// jwtToken: frontendJWT
|
||||
// });
|
||||
|
||||
// if (!accessCheck.hasAccess) {
|
||||
// console.warn(`⚠️ [Loader] 用户 ${userInfo.user_id} 尝试访问未授权文档 ${id},原因: ${accessCheck.reason}`);
|
||||
// return Response.json({
|
||||
// result: false,
|
||||
// message: accessCheck.reason || '您没有权限访问该文档'
|
||||
// }, { status: 403 });
|
||||
// }
|
||||
|
||||
// console.log(`✅ [Loader] 用户 ${userInfo.user_id} (${accessCheck.userRole}) 访问文档 ${id} - 权限验证通过`);
|
||||
|
||||
// 对接接口,新的获取评查点结果的方法
|
||||
const reviewData = await getReviewPoints_fromApi(id, request)
|
||||
|
||||
// 获取评查点数据,传递request对象 旧获取评查点结果的方法
|
||||
// const reviewData = await getReviewPoints(id, request);
|
||||
|
||||
// 获取当前登录用户是否是发起人
|
||||
const isProposer = await findIsProposer(taskId, userInfo?.user_id, frontendJWT);
|
||||
@@ -313,12 +342,9 @@ export default function CrossCheckingResult() {
|
||||
const isProcessingRef = useRef(false);
|
||||
|
||||
// 添加组件挂载/卸载日志
|
||||
// useEffect(() => {
|
||||
// console.log('[组件] CrossCheckingResult 挂载');
|
||||
// return () => {
|
||||
// console.log('[组件] CrossCheckingResult 卸载');
|
||||
// };
|
||||
// }, []);
|
||||
useEffect(() => {
|
||||
console.log('[组件] CrossCheckingResult', isProposer);
|
||||
}, [isProposer]);
|
||||
|
||||
// 同步外部scoring_proposals到本地状态
|
||||
useEffect(() => {
|
||||
@@ -536,18 +562,18 @@ export default function CrossCheckingResult() {
|
||||
|
||||
// 使用ref防止重复点击,避免触发状态更新
|
||||
if (isProcessingRef.current) {
|
||||
console.log('[完成评查] 正在处理中,跳过');
|
||||
// console.log('[完成评查] 正在处理中,跳过');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
console.log('[完成评查] 标记为处理中');
|
||||
// console.log('[完成评查] 标记为处理中');
|
||||
isProcessingRef.current = true;
|
||||
|
||||
// 1. 先检查未投票(不触发loading状态更新,避免重新渲染)
|
||||
console.log('[完成评查] 开始检查未投票提案');
|
||||
// console.log('[完成评查] 开始检查未投票提案');
|
||||
const checkRes = await checkProposalVotes(document.id, jwtToken);
|
||||
console.log("[完成评查] 检查结果:", checkRes);
|
||||
// console.log("[完成评查] 检查结果:", checkRes);
|
||||
|
||||
if (checkRes.error) {
|
||||
toastService.error(checkRes.error);
|
||||
@@ -582,11 +608,11 @@ export default function CrossCheckingResult() {
|
||||
}
|
||||
|
||||
// 4. 重置处理状态标记,准备显示模态框(不触发状态更新)
|
||||
console.log('[完成评查] 重置处理标记,准备显示模态框');
|
||||
// console.log('[完成评查] 重置处理标记,准备显示模态框');
|
||||
isProcessingRef.current = false;
|
||||
|
||||
// 5. 弹出模态框
|
||||
console.log('[完成评查] 显示确认模态框');
|
||||
// console.log('[完成评查] 显示确认模态框');
|
||||
messageService.show({
|
||||
title: '提示',
|
||||
message: modalMessage,
|
||||
|
||||
Reference in New Issue
Block a user