优化评查详情,新增信息提示框组件

This commit is contained in:
2025-04-23 20:48:32 +08:00
parent ee36ce2620
commit be99fdec79
15 changed files with 1399 additions and 757 deletions
+35 -34
View File
@@ -18,6 +18,7 @@
* - 操作按钮: 提供一键替换和人工审核功能
*/
import { useState, useEffect } from 'react';
import { toastService } from '../ui/Toast';
// import { toastService } from '../ui/Toast';
/**
@@ -34,13 +35,13 @@ export interface ReviewPoint {
title: string;
groupName: string;
status: string;
content: Record<string, string | { page?: number, value?: string }>;
content: Record<string, { page?: number | string, value?: object }>;
suggestion: string;
needsHumanReview?: boolean;
humanReviewNote?: string;
humanReviewBy?: string;
humanReviewTime?: string;
contentPage?: Record<string, number[]>;
contentPage?: Record<string, number | string>;
position?: {
section: string;
index: number;
@@ -448,24 +449,27 @@ export function ReviewPointsList({
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"
onClick={(e) => {
e.stopPropagation();
console.log(`通过:单独点击${key}----`, reviewPoint);
console.log(`单独点击${key}----`, reviewPoint);
// 检查value中的page属性是否存在
if (value && typeof value === 'object' && value.page) {
if (value && typeof value === 'object' && value.page && parseInt(value.page as string) > 0) {
// 获取当前 key 对应的第一个页码并跳转
console.log(`通过:单独点击${key}----页码---`, value.page);
console.log(`单独点击${key}----页码---`, value.page);
onReviewPointSelect(reviewPoint.id, parseInt(value.page as string));
onReviewPointSelect(reviewPoint.id, value.page);
} else {
console.log(`通过:单独点击${key}--------没有对应页码`);
toastService.error(`无法找到"${key}"对应的索引内容`);
console.log(`单独点击${key}--------没有对应页码`);
}
}}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
if (value && typeof value === 'object' && value.page) {
onReviewPointSelect(reviewPoint.id, value.page);
if (value && typeof value === 'object' && value.page && parseInt(value.page as string) > 0) {
onReviewPointSelect(reviewPoint.id, parseInt(value.page as string));
} else {
console.log(`通过:单独点击${key}--------没有对应页码`);
toastService.error(`无法找到"${key}"对应的索引内容`);
console.log(`单独点击${key}--------没有对应页码`);
}
}
}}
@@ -474,11 +478,16 @@ export function ReviewPointsList({
aria-label={`查看${key}内容详情`}
>
<div className="flex justify-between items-center mb-1">
<span className="text-xs">{key}</span>
<span className={`text-xs w-15 ${value ? 'text-error' : 'text-warning'}`}>
{value ? '' : '缺失'}
<span className="text-xs pr-5">{key}</span>
<span className={`flex-shrink-0 text-xs w-15 ${value.value?.toString().trim() ? 'text-error' : 'text-warning'}`}>
{value.value?.toString().trim() ? '' : '缺失'}
</span>
</div>
<p className="text-xs text-left select-text">
{(value.value?.toString().trim() === '')
? <span className="invisible"></span>
: value.value?.toString() || ''}
</p>
</div>
))}
</>
@@ -551,7 +560,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">
{/* 修改评查结果的结构之前,先显示旧的结构 */}
{Object.entries(reviewPoint.content).map(([key, value], index) => (
{/* {Object.entries(reviewPoint.content).map(([key, value], index) => (
<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"
@@ -584,7 +593,6 @@ export function ReviewPointsList({
tabIndex={0}
aria-label={`查看${key}内容详情`}
>
{/* 使用flex布局使key和状态标签左右对齐 */}
<div className="flex justify-between items-center mb-1">
<span className="text-xs">{key}</span>
<span className={`text-xs w-15 ${value ? 'text-error' : 'text-warning'}`}>
@@ -597,9 +605,9 @@ export function ReviewPointsList({
: (value || (value === '' ? <span className="invisible">占位符</span> : ''))}
</p>
</div>
))}
))} */}
{/* 修改评查结果的结构之后,显示新的结构 */}
{/* {renderContent(reviewPoint)} */}
{renderContent(reviewPoint)}
</div>
)}
@@ -655,7 +663,7 @@ export function ReviewPointsList({
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
<div>
{/* 修改评查结果的结构之前,先显示旧的结构 */}
{Object.entries(reviewPoint.content).map(([key, value], index) => (
{/* {Object.entries(reviewPoint.content).map(([key, value], index) => (
<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"
@@ -688,7 +696,7 @@ export function ReviewPointsList({
tabIndex={0}
aria-label={`查看${key}内容详情`}
>
{/* 使用flex布局使key和状态标签左右对齐 */}
<div className="flex justify-between items-center mb-1">
<span className="text-xs">{key}</span>
<span className={`text-xs w-15 ${value ? 'text-error' : 'text-warning'}`}>
@@ -701,19 +709,15 @@ export function ReviewPointsList({
: (value || (value === '' ? <span className="invisible">占位符</span> : ''))}
</p>
</div>
))}
))} */}
{/* 修改评查结果的结构之后,显示新的结构 */}
{/* {renderContent(reviewPoint)} */}
{renderContent(reviewPoint)}
</div>
</div>
</>
);
}
// 非通过状态,显示内容和修改建议
const isErrorStatus = reviewPoint.result === false && reviewPoint.status === 'error';
return (
<div className="mt-2">
@@ -774,7 +778,7 @@ export function ReviewPointsList({
<div className="p-2 bg-white rounded border border-gray-200 text-xs mb-3 select-text">
<div>
{/* 修改评查结果的结构之前,先显示旧的结构 */}
{Object.entries(reviewPoint.content).map(([key, value], index) => (
{/* {Object.entries(reviewPoint.content).map(([key, value], index) => (
<div
key={index}
className="mb-2 pb-2 border-b border-gray-100 last:border-b-0 last:mb-0 cursor-pointer hover:bg-gray-100 transition-colors duration-200 rounded p-1"
@@ -810,7 +814,6 @@ export function ReviewPointsList({
tabIndex={0}
aria-label={`查看${key}内容详情`}
>
{/* 使用flex布局使key和状态标签左右对齐 */}
<div className="flex justify-between items-center mb-1">
<span className="text-xs">{key}</span>
<span className={`text-xs ${isErrorStatus ? 'text-error' : 'text-warning'}`}>
@@ -823,9 +826,9 @@ export function ReviewPointsList({
: (value || (value === '' ? <span className="invisible">占位符</span> : ''))}
</p>
</div>
))}
))} */}
{/* 修改评查结果的结构之后,显示新的结构 */}
{/* {renderContent(reviewPoint)} */}
{renderContent(reviewPoint)}
</div>
</div>
</>
@@ -969,12 +972,10 @@ export function ReviewPointsList({
// 遍历contentPage中的每个key
for (const key of Object.keys(reviewPoint.contentPage)) {
const pageArr = reviewPoint.contentPage[key];
// 如果数组存在且长度大于0
if (pageArr && pageArr.length > 0) {
// 返回第一个找到的有效页码,以及对应的key
if (reviewPoint.contentPage[key] && parseInt(reviewPoint.contentPage[key] as string) > 0) {
// 返回第一个找到的有效页码,以及对应的key
return {
pageIndex: pageArr[0],
pageIndex: parseInt(reviewPoint.contentPage[key] as string),
key,
id: reviewPoint.id
};