feat: sync rule management and review ui fixes
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
* @author 中国烟草AI合同及卷宗审核系统开发团队
|
||||
*/
|
||||
|
||||
import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs } from "@remix-run/node";
|
||||
import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs, redirect } from "@remix-run/node";
|
||||
import { useState, useEffect, useRef } from "react";
|
||||
import { useNavigate, useLoaderData, useFetcher } from "@remix-run/react";
|
||||
import reviewsStyles from "~/styles/reviews.css?url";
|
||||
@@ -345,17 +345,24 @@ export const handle = {
|
||||
};
|
||||
|
||||
export async function loader({ request }: LoaderFunctionArgs): Promise<Response> {
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const id = url.searchParams.get('id') || '';
|
||||
const previousRoute = url.searchParams.get('previousRoute') || '';
|
||||
const url = new URL(request.url);
|
||||
const id = url.searchParams.get('id') || '';
|
||||
const previousRoute = url.searchParams.get('previousRoute') || '';
|
||||
|
||||
try {
|
||||
if (!id) {
|
||||
return Response.json({ result: false, message: '文件ID不能为空', previousRoute });
|
||||
}
|
||||
|
||||
const { getUserSession } = await import("~/api/login/auth.server");
|
||||
const { userInfo, frontendJWT } = await getUserSession(request);
|
||||
if (!frontendJWT || !userInfo?.role) {
|
||||
throw redirect('/login');
|
||||
}
|
||||
|
||||
const { requireRoutePermission } = await import("~/api/auth/check-route-permission.server");
|
||||
await requireRoutePermission('/reviewsTest', userInfo.role, frontendJWT);
|
||||
|
||||
const reviewData = await getReviewPoints_fromApi(id, request);
|
||||
|
||||
if ('error' in reviewData && reviewData.error) {
|
||||
@@ -382,11 +389,25 @@ export async function loader({ request }: LoaderFunctionArgs): Promise<Response>
|
||||
detailMode: 'leaudit',
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof Response) {
|
||||
if (error.status === 401) {
|
||||
throw redirect('/login');
|
||||
}
|
||||
|
||||
if (error.status === 403) {
|
||||
return Response.json({
|
||||
result: false,
|
||||
message: '当前账号没有评查详情访问权限,请联系管理员开通文档查看权限。',
|
||||
previousRoute,
|
||||
}, { status: 403 });
|
||||
}
|
||||
}
|
||||
|
||||
console.error('[reviewsTest loader] Failed to load review data:', error);
|
||||
return Response.json({
|
||||
result: false,
|
||||
message: `获取评查数据失败: ${error instanceof Error ? error.message : '未知错误'}`,
|
||||
previousRoute: '',
|
||||
previousRoute,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -621,6 +642,11 @@ export default function ReviewDetails() {
|
||||
};
|
||||
|
||||
const handleDownloadFile = async () => {
|
||||
if (!previewPath) {
|
||||
toastService.warning('当前文档暂无可下载原文件');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const downloadUrl = `/api/pdf-proxy?path=${encodeURIComponent(previewPath)}`;
|
||||
const response = await axios.get(downloadUrl, { responseType: 'blob' });
|
||||
@@ -828,8 +854,7 @@ export default function ReviewDetails() {
|
||||
|
||||
if (result.success) {
|
||||
toastService.success('评查结果已确认,文档审核状态已更新');
|
||||
// 导航到文档列表页
|
||||
navigate('/documents/list');
|
||||
navigate(getReturnUrl());
|
||||
} else {
|
||||
console.error('确认评查结果失败:', result.error);
|
||||
toastService.error(`确认评查结果失败: ${result.error || '未知错误'}`);
|
||||
|
||||
Reference in New Issue
Block a user