完善通过评查点的显示优化

This commit is contained in:
2025-05-27 10:05:12 +08:00
parent ed3ff4c3b3
commit 742a789244
5 changed files with 34 additions and 30 deletions
+1
View File
@@ -121,6 +121,7 @@ export async function getReviewPoints(fileId: string) {
return { error: evaluationResultsResponse.error, status: evaluationResultsResponse.status };
}
// 评查结果数据
const evaluationResultsData = extractApiData<EvaluationResult[]>(evaluationResultsResponse.data) || [];
if (Array.isArray(evaluationResultsData) && evaluationResultsData.length <= 0) {
+2 -1
View File
@@ -13,6 +13,7 @@ interface FileInfo {
pageCount: number;
uploadTime: string;
uploadUser: string;
fileType: string;
}
// 合同信息
@@ -133,7 +134,7 @@ export function FileDetails({ fileInfo, contractInfo, reviewInfo }: FileDetailsP
{renderInfoSection('文件基本信息', 'ri-file-info-line', 'blue', (
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{renderInfoRow('文件名称', fileInfo.fileName)}
{renderInfoRow('合同编号', fileInfo.contractNumber)}
{renderInfoRow(fileInfo.fileType != "1" ? '卷宗编号' : '合同编号', fileInfo.contractNumber)}
{renderInfoRow('文件大小', fileInfo.fileSize)}
{renderInfoRow('文件格式', fileInfo.fileFormat)}
{renderInfoRow('页数', `${fileInfo.pageCount}`)}
+11 -24
View File
@@ -443,11 +443,11 @@ export function ReviewPointsList({
* @param reviewPoint 评查点
* @returns 评查点主要内容组件
*/
const renderContent = (reviewPoint: ReviewPoint) => {
const renderContent = (reviewPoint: ReviewPoint, result?: boolean) => {
return (
<>
{/* 修改评查结果的结构之后,显示新的结构 */}
{Object.entries(reviewPoint.content).map(([key, value], index) => (
{Object.entries(reviewPoint.content).map(([key, value], index) => !(result && value.value?.toString().trim() == '') && (
<div
key={index}
className="mb-2 pb-2 border-b border-gray-100 last:border-b-0 last:mb-0 last:pb-0 cursor-pointer hover:bg-gray-100 transition-colors duration-200 rounded p-1 group"
@@ -507,6 +507,7 @@ export function ReviewPointsList({
{value.value?.toString().trim() ? '' : '缺失'}
</span>
</div>
<div className="relative text-container max-h-96 group-hover:overflow-auto overflow-hidden">
<p
className="text-xs text-left select-text block overflow-hidden !line-clamp-2
@@ -544,22 +545,7 @@ export function ReviewPointsList({
if (editingReviewPoint !== reviewPoint.id) {
// 根据result和status决定渲染哪种样式
if (reviewPoint.result === true) {
// 已通过的评查点只显示基本信息和人工审核注释 delete TODO
// if (reviewPoint.needsHumanReview && reviewPoint.humanReviewNote) {
// return (
// <div className="mt-2">
// <div className="p-2 bg-green-50 rounded border border-green-200 text-xs">
// <p className="text-xs text-success"><i className="ri-check-line mr-1"></i>已处理</p>
// {reviewPoint.suggestion && (
// <div className="border-t border-green-200 mt-1 pt-1">
// <p className="text-xs text-gray-600 select-text">{reviewPoint.suggestion}</p>
// </div>
// )}
// </div>
// </div>
// );
// }
// 已通过的评查点只显示基本信息和人工审核注释
// 处理 result=true 且 postAction=manual 的情况
if (reviewPoint.postAction === 'manual') {
const note = manualReviewNotes[reviewPoint.id] || '';
@@ -591,7 +577,7 @@ export function ReviewPointsList({
{reviewPoint.content && Object.entries(reviewPoint.content).length > 0 && (
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
{/* 修改评查结果的结构之后,显示新的结构 */}
{renderContent(reviewPoint)}
{renderContent(reviewPoint, true)}
</div>
)}
@@ -644,12 +630,13 @@ export function ReviewPointsList({
{checkContentPage(reviewPoint).pageIndex === 0 && (
<p className="text-xs text-red-500 select-text text-left"></p>
)}
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
<div>
{/* 评查点内容显示区域 */}
{reviewPoint.content && Object.entries(reviewPoint.content).length > 0 && (
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
{/* 修改评查结果的结构之后,显示新的结构 */}
{renderContent(reviewPoint)}
{renderContent(reviewPoint, true)}
</div>
</div>
)}
</>
);
}
@@ -714,7 +701,7 @@ export function ReviewPointsList({
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
<div>
{/* 修改评查结果的结构之后,显示新的结构 */}
{renderContent(reviewPoint)}
{renderContent(reviewPoint,false)}
</div>
</div>
</>
+8
View File
@@ -104,6 +104,14 @@ export function ReviewTabs({ activeTab, onTabChange, children, fileInfo, onConfi
>
<i className="ri-lightbulb-line"></i> AI智能分析
</button> */}
<button
className={`tab-nav-item ${activeTab === 'fileinfo' ? 'active' : ''}`}
onClick={() => onTabChange('fileinfo')}
type="button"
aria-pressed={activeTab === 'fileinfo'}
>
<i className="ri-flip-horizontal-line"></i>
</button>
<button
className={`tab-nav-item ${activeTab === 'fileinfo' ? 'active' : ''}`}
onClick={() => onTabChange('fileinfo')}
+12 -5
View File
@@ -80,6 +80,7 @@ interface FileInfo {
uploadTime: string;
uploadUser: string;
auditStatus: number;
fileType: string; // 文件类型(1:合同,2:卷宗等)
}
// 定义合同信息类型
@@ -193,6 +194,7 @@ export async function loader({ request }: LoaderFunctionArgs) {
// 确保reviewData有效且具有预期的属性
if ('document' in reviewData && 'data' in reviewData && 'reviewInfo' in reviewData && 'stats' in reviewData) {
console.log("reviewData-------",JSON.stringify(reviewData.document?.type,null,2));
return Response.json({
previousRoute: previousRoute,
document: reviewData.document,
@@ -248,12 +250,15 @@ export default function ReviewDetails() {
path: document.path || "未知路径",
contractNumber: document.documentNumber || "未知编号",
fileSize: document.size ? formatFileSize(document.size) : "未知大小",
// 文件格式类型
fileFormat: document.fileType ? document.fileType.toUpperCase() : "未知格式",
pageCount: document.pageCount || 0,
uploadTime: document.uploadTime || "未知时间",
uploadUser: document.uploadUser || "未知用户",
auditStatus: document.auditStatus || 0,
legalBasis: document.legalBasis || {}
legalBasis: document.legalBasis || {},
// 文件类型(1:合同,2:卷宗。。。)
fileType: document.type || ""
};
// 创建包含真实文档数据的评查数据对象
@@ -529,12 +534,13 @@ export default function ReviewDetails() {
{/* 在面包屑右侧显示精简版的FileInfo */}
<div className=" ml-10 text-left flex-1 flex flex-row flex-wrap">
<span className="text-xl font-medium">
<span className="mr-2 text-xl font-medium">
{reviewData.fileInfo.fileName}
</span>
<div className="ml-2 text-xs text-gray-500 flex items-center">
<div className="text-xs text-gray-500 flex items-center">
{/* 合同编号:{reviewData.fileInfo.contractNumber} */}
{reviewData.fileInfo.contractNumber}
{ reviewData.fileInfo.fileType != "1" ? "卷宗" : "合同" }
{reviewData.fileInfo.contractNumber}
{reviewData.fileInfo.fileSize && (
<span className="text-xs text-gray-500 ml-2">
| {reviewData.fileInfo.fileSize} | {reviewData.fileInfo.fileFormat} | {reviewData.fileInfo.pageCount}&nbsp;
@@ -643,7 +649,8 @@ function getMockReviewData(): ReviewData {
pageCount: 5,
uploadTime: "2023-10-25 14:30:45",
uploadUser: "张三",
auditStatus: 0
auditStatus: 0,
fileType: "1"
},
contractInfo: {
contractType: "销售合同",