feat: 1. 实现一键替换。

2. 优化追加附件和模板上传的样式。
This commit is contained in:
2025-12-03 12:07:56 +08:00
parent 2897423404
commit d88cfc818b
13 changed files with 627 additions and 141 deletions
+21
View File
@@ -337,6 +337,11 @@ export default function CrossCheckingResult() {
const [targetPage, setTargetPage] = useState<number | undefined>(undefined);
const [charPositions, setCharPositions] = useState<CharPosition[] | undefined>(undefined);
const [localScoringProposals, setLocalScoringProposals] = useState<ScoringProposal[]>(scoring_proposals || []); // 本地状态管理scoringProposals
const [aiSuggestionReplace, setAiSuggestionReplace] = useState<{
searchText: string;
replaceText: string;
pageNumber: number;
} | undefined>(undefined);
// 使用ref来跟踪loading状态,避免不必要的重新渲染
const isProcessingRef = useRef(false);
@@ -432,6 +437,19 @@ export default function CrossCheckingResult() {
setCharPositions(charPositions);
}
}, [activeReviewPointResultId]);
const handleAiSuggestionReplace = useCallback((searchText: string, replaceText: string, pageNumber: number) => {
console.log('[CrossCheckingResult] AI建议替换:', { searchText, replaceText, pageNumber });
setAiSuggestionReplace({
searchText,
replaceText,
pageNumber
});
// 重置状态,避免重复触发
setTimeout(() => {
setAiSuggestionReplace(undefined);
}, 1000);
}, []);
// 处理评审点状态变更
@@ -760,6 +778,7 @@ export default function CrossCheckingResult() {
activeReviewPointResultId={activeReviewPointResultId}
targetPage={targetPage}
charPositions={charPositions}
aiSuggestionReplace={aiSuggestionReplace}
/>
</div>
@@ -775,6 +794,8 @@ export default function CrossCheckingResult() {
jwtToken={jwtToken}
userInfo={userInfo}
onOpinionSubmitted={handleOpinionSubmitted}
fileFormat={reviewData.fileInfo.fileFormat}
onAiSuggestionReplace={handleAiSuggestionReplace}
/>
</div>
</div>