删除所有console.log输出,优化评查结果的表格的显示,添加新的页码获取逻辑
This commit is contained in:
@@ -131,13 +131,6 @@ interface Statistics {
|
||||
score: number;
|
||||
}
|
||||
|
||||
// 统一规则的类型
|
||||
// interface pointRule {
|
||||
// id: string;
|
||||
// type: string;
|
||||
// config: Record<string, unknown>;
|
||||
// }
|
||||
|
||||
interface ReviewPointsListProps {
|
||||
reviewPoints: ReviewPoint[];
|
||||
statistics: Statistics;
|
||||
@@ -240,11 +233,14 @@ const ReactTableTooltip = ({ content }: { content: string }) => {
|
||||
const [showTooltip, setShowTooltip] = useState(false);
|
||||
const textRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const isTableLike = content.includes('\t') && content.includes('\n');
|
||||
|
||||
useEffect(() => {
|
||||
const checkTextOverflow = () => {
|
||||
const element = textRef.current;
|
||||
if (element) {
|
||||
setShowTooltip(element.scrollHeight > element.clientHeight);
|
||||
// 如果是表格格式,总是显示tooltip;否则只在文本溢出时显示
|
||||
setShowTooltip(isTableLike || element.scrollHeight > element.clientHeight);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -253,7 +249,7 @@ const ReactTableTooltip = ({ content }: { content: string }) => {
|
||||
return () => {
|
||||
window.removeEventListener('resize', checkTextOverflow);
|
||||
};
|
||||
}, [content]);
|
||||
}, [content, isTableLike]);
|
||||
|
||||
// 解析表格数据
|
||||
const parseTableData = (text: string) => {
|
||||
@@ -268,7 +264,7 @@ const ReactTableTooltip = ({ content }: { content: string }) => {
|
||||
const hasHeader = tableData.length > 0;
|
||||
|
||||
return (
|
||||
<div className="overflow-auto max-h-[400px]">
|
||||
<div>
|
||||
<table className="min-w-full border-collapse border border-gray-300">
|
||||
{hasHeader && (
|
||||
<thead>
|
||||
@@ -307,8 +303,7 @@ const ReactTableTooltip = ({ content }: { content: string }) => {
|
||||
}
|
||||
};
|
||||
|
||||
// 检测内容是否像表格
|
||||
const isTableLike = content.includes('\t') && content.includes('\n');
|
||||
|
||||
|
||||
return (
|
||||
<div className="text-xs p-1 rounded cursor-text w-full text-left">
|
||||
@@ -321,6 +316,8 @@ const ReactTableTooltip = ({ content }: { content: string }) => {
|
||||
showArrow={true}
|
||||
className="tooltip-custom-offset"
|
||||
// fixedPlacement={true}
|
||||
// scrollable={true}
|
||||
maxHeight={400}
|
||||
>
|
||||
<div className="text-gray-800 break-all overflow-hidden line-clamp-2" ref={textRef}>
|
||||
{content}
|
||||
@@ -352,8 +349,8 @@ export function ReviewPointsList({
|
||||
// 添加重新审核意见的状态/ 用户输入的修改内容 / 用户提前写好的修改内容
|
||||
const [manualReviewNotes, setManualReviewNotes] = useState<Record<string, string>>({});
|
||||
|
||||
// 存放属于有无判断,格式判断,逻辑判断,正则表达式这一类的评查点规则设置
|
||||
// const [otherRule, setOtherRule] = useState<Record<string, unknown>[]>([]);
|
||||
// 存放评查点ID与有效页码的映射
|
||||
const [effectivePages, setEffectivePages] = useState<Record<string, number>>({});
|
||||
|
||||
// 初始化建议文本
|
||||
useEffect(() => {
|
||||
@@ -874,6 +871,35 @@ export function ReviewPointsList({
|
||||
// 处理配对数据
|
||||
const pairs = config.pairs;
|
||||
|
||||
// 获取第一个有效页码
|
||||
if (reviewPoint.id && !effectivePages[reviewPoint.id]) {
|
||||
for (const pair of pairs) {
|
||||
// 检查sourceField中是否有有效页码
|
||||
const sourceFieldKey = Object.keys(pair.sourceField)[0];
|
||||
if (sourceFieldKey && pair.sourceField[sourceFieldKey].page &&
|
||||
Number(pair.sourceField[sourceFieldKey].page) > 0) {
|
||||
// 保存页码
|
||||
setEffectivePages(prev => ({
|
||||
...prev,
|
||||
[reviewPoint.id || '']: Number(pair.sourceField[sourceFieldKey].page)
|
||||
}));
|
||||
break;
|
||||
}
|
||||
|
||||
// 如果sourceField没有有效页码,检查targetField
|
||||
const targetFieldKey = Object.keys(pair.targetField)[0];
|
||||
if (targetFieldKey && pair.targetField[targetFieldKey].page &&
|
||||
Number(pair.targetField[targetFieldKey].page) > 0) {
|
||||
// 保存页码
|
||||
setEffectivePages(prev => ({
|
||||
...prev,
|
||||
[reviewPoint.id || '']: Number(pair.targetField[targetFieldKey].page)
|
||||
}));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 查找链条关系
|
||||
const findChains = () => {
|
||||
type ChainItem = {
|
||||
@@ -1169,7 +1195,11 @@ export function ReviewPointsList({
|
||||
if (reviewPointId && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPointId, Number(item.data.page));
|
||||
}
|
||||
}else{
|
||||
}
|
||||
else if(reviewPoint.contentPage && reviewPoint.contentPage[item.field]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[item.field]));
|
||||
}
|
||||
else{
|
||||
toastService.error(`没有找到${item.field}对应的索引内容`);
|
||||
}
|
||||
}}
|
||||
@@ -1177,7 +1207,7 @@ export function ReviewPointsList({
|
||||
>
|
||||
<div className="flex justify-between w-full">
|
||||
<ReactTableTooltip content={item.data.value?.toString() || ''} />
|
||||
{!item.data.page && !item.data.value && (
|
||||
{!item.data.page && (reviewPoint.contentPage && !reviewPoint.contentPage[item.field]) && (
|
||||
<i className="ri-information-line text-red-500 text-xs" title="没有找到对应的文书内容"></i>
|
||||
)}
|
||||
</div>
|
||||
@@ -1248,14 +1278,18 @@ export function ReviewPointsList({
|
||||
if (reviewPointId && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPointId, chain[0].data.page);
|
||||
}
|
||||
}else{
|
||||
}
|
||||
else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[0].field]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[0].field]));
|
||||
}
|
||||
else{
|
||||
toastService.error(`没有找到${chain[0].field}对应的索引内容`);
|
||||
}
|
||||
}}
|
||||
aria-label={`查看${chain[0].field}内容详情`}
|
||||
>
|
||||
<div className="value-source text-xs text-gray-500 mb-1">{chain[0].field}
|
||||
{!chain[0].data.page && !chain[0].data.value && (
|
||||
{!chain[0].data.page && (reviewPoint.contentPage && !reviewPoint.contentPage[chain[0].field]) && (
|
||||
<i className="ri-information-line text-red-500 text-xs ml-1" title="没有找到对应的文书内容"></i>
|
||||
)}
|
||||
</div>
|
||||
@@ -1270,14 +1304,18 @@ export function ReviewPointsList({
|
||||
if (reviewPointId && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPointId, chain[1].data.page);
|
||||
}
|
||||
}else{
|
||||
}
|
||||
else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[1].field]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[1].field]));
|
||||
}
|
||||
else{
|
||||
toastService.error(`没有找到${chain[1].field}对应的索引内容`);
|
||||
}
|
||||
}}
|
||||
aria-label={`查看${chain[1].field}内容详情`}
|
||||
>
|
||||
<div className="value-source text-xs text-gray-500 mb-1">{chain[1].field}
|
||||
{!chain[1].data.page && !chain[1].data.value && (
|
||||
{!chain[1].data.page && (reviewPoint.contentPage && !reviewPoint.contentPage[chain[1].field]) && (
|
||||
<i className="ri-information-line text-red-500 text-xs ml-1" title="没有找到对应的文书内容"></i>
|
||||
)}
|
||||
</div>
|
||||
@@ -1404,6 +1442,8 @@ export function ReviewPointsList({
|
||||
e.stopPropagation();
|
||||
if (mainTypeValue.page && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page));
|
||||
}else if(reviewPoint.contentPage && reviewPoint.contentPage[fieldKey]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]));
|
||||
}else{
|
||||
toastService.error(`没有找到${fieldKey}对应的索引内容`);
|
||||
}
|
||||
@@ -1425,7 +1465,7 @@ export function ReviewPointsList({
|
||||
{/* 字段名称 */}
|
||||
<div className="text-xs text-gray-500 mb-1">
|
||||
{fieldKey}
|
||||
{!mainTypeValue.page && !mainTypeValue.value && (
|
||||
{!mainTypeValue.page && (reviewPoint.contentPage && !reviewPoint.contentPage[fieldKey]) && (
|
||||
<i className="ri-information-line text-red-500 text-xs ml-1" title="没有找到对应的文书内容"></i>
|
||||
)}
|
||||
{/* 缺失显示 */}
|
||||
@@ -1492,6 +1532,19 @@ export function ReviewPointsList({
|
||||
|
||||
// 如果配置不存在,不渲染任何内容
|
||||
if (!config) return null;
|
||||
|
||||
// 获取第一个有效页码
|
||||
if (reviewPoint.id && !effectivePages[reviewPoint.id] && config.fields) {
|
||||
for (const field of Object.values(config.fields || {})) {
|
||||
if (field.page && Number(field.page) > 0) {
|
||||
setEffectivePages(prev => ({
|
||||
...prev,
|
||||
[reviewPoint.id || '']: Number(field.page)
|
||||
}));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 创建一个数组来存储需要渲染的JSX元素
|
||||
const fieldElements: JSX.Element[] = [];
|
||||
@@ -1510,6 +1563,8 @@ export function ReviewPointsList({
|
||||
e.stopPropagation();
|
||||
if (value.page && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPoint.id, Number(value.page));
|
||||
}else if(reviewPoint.contentPage && reviewPoint.contentPage[key]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[key]));
|
||||
}else{
|
||||
toastService.error(`没有找到${key}对应的索引内容`);
|
||||
}
|
||||
@@ -1520,6 +1575,8 @@ export function ReviewPointsList({
|
||||
e.preventDefault();
|
||||
if (value.page && typeof onReviewPointSelect === 'function') {
|
||||
onReviewPointSelect(reviewPoint.id, Number(value.page));
|
||||
}else if(reviewPoint.contentPage && reviewPoint.contentPage[key]){
|
||||
onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[key]));
|
||||
}else{
|
||||
toastService.error(`没有找到${key}对应的索引内容`);
|
||||
}
|
||||
@@ -1533,7 +1590,7 @@ export function ReviewPointsList({
|
||||
<div className="text-xs text-left text-gray-500 mb-1">
|
||||
{key}
|
||||
{/* 没有抽取到目录内容,page和value都为空 */}
|
||||
{!value.page && !value.value && (
|
||||
{!value.page && (reviewPoint.contentPage && !reviewPoint.contentPage[key]) && (
|
||||
<i className="ri-information-line text-red-500 text-xs ml-1" title="没有找到对应的文书内容"></i>
|
||||
)}
|
||||
{/* 缺失显示 */}
|
||||
@@ -1851,6 +1908,34 @@ export function ReviewPointsList({
|
||||
for (const key in fieldKeyMap) {
|
||||
mergedRules.push(fieldKeyMap[key]);
|
||||
}
|
||||
|
||||
// 获取第一个有效页码
|
||||
if (reviewPoint.id && !effectivePages[reviewPoint.id]) {
|
||||
// 遍历合并后的规则数组,查找第一个有效页码
|
||||
for (const rule of mergedRules) {
|
||||
// 遍历字段类型对象
|
||||
const typeEntries = Object.entries(rule.fieldValue.type);
|
||||
|
||||
// 遍历每种类型规则
|
||||
for (const [, typeValue] of typeEntries) {
|
||||
// 检查是否有有效页码
|
||||
if (typeValue.page && Number(typeValue.page) > 0) {
|
||||
// 找到有效页码,设置状态并跳出循环
|
||||
setEffectivePages(prev => ({
|
||||
...prev,
|
||||
[reviewPoint.id || '']: Number(typeValue.page)
|
||||
}));
|
||||
// 使用break跳出当前循环
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果已经找到有效页码,跳出外层循环
|
||||
if (reviewPoint.id && effectivePages[reviewPoint.id]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 返回合并后的规则数组
|
||||
return mergedRules;
|
||||
@@ -2148,24 +2233,19 @@ export function ReviewPointsList({
|
||||
const reviewPoint = reviewPoints.find(result => result.id === id);
|
||||
|
||||
// 如果评查点存在
|
||||
if (reviewPoint) {
|
||||
// // 使用checkContentPage方法获取页码和key
|
||||
// const { pageIndex, key } = checkContentPage(reviewPoint);
|
||||
|
||||
// // 如果有有效页码,传递ID和页码
|
||||
// if (pageIndex > 0) {
|
||||
// console.log(`跳转到页面 ${pageIndex},对应内容 ${key || '未知'}`);
|
||||
// onReviewPointSelect(id, pageIndex);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // 没有有效页码,只传递ID
|
||||
onReviewPointSelect(id);
|
||||
// console.log(`没有有效页码---评查点ID:${reviewPoint.pointId},评查点结果ID:${id}`);
|
||||
if (reviewPoint) {
|
||||
// 如果effectivePages有值,使用它
|
||||
if (reviewPoint.id && effectivePages[reviewPoint.id]) {
|
||||
// console.log('effectivePages', effectivePages[reviewPoint.id]);
|
||||
onReviewPointSelect(id, effectivePages[reviewPoint.id]);
|
||||
// return;
|
||||
} else {
|
||||
// 没有有效页码,只传递ID
|
||||
onReviewPointSelect(id);
|
||||
}
|
||||
} else {
|
||||
// // 没有找到评查点,只传递ID
|
||||
// 没有找到评查点,只传递ID
|
||||
onReviewPointSelect(id);
|
||||
// console.log(`没有找到评查点---评查点结果ID:${id}`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2225,7 +2305,7 @@ export function ReviewPointsList({
|
||||
tabIndex={0}
|
||||
style={{ userSelect: 'text' }}
|
||||
onClick={() => {
|
||||
console.log('reviewPoint', reviewPoint);
|
||||
// console.log('reviewPoint', reviewPoint);
|
||||
handleReviewPointClick(reviewPoint.id);
|
||||
}}
|
||||
onKeyDown={(e) => {
|
||||
|
||||
Reference in New Issue
Block a user