fix: 1. 修改dockerFile

2. 修复一些合同起草的刷新报错问题
This commit is contained in:
2025-12-09 14:46:07 +08:00
parent 59c127806c
commit de923f6521
10 changed files with 251 additions and 86 deletions
+49 -15
View File
@@ -283,24 +283,51 @@ export const CollaboraViewer = forwardRef<CollaboraViewerHandle, CollaboraViewer
// 根据 silentReplace 标志决定是否显示面板
if (silentReplace) {
// 静默替换模式:不显示面板
console.log('[CollaboraViewer] 静默替换模式,不显示面板');
// 静默替换模式:不显示面板,直接执行替换
console.log('[CollaboraViewer] 静默替换模式,不显示面板,直接执行替换');
// 延迟执行替换,确保 DOM 更新完成
const timer = setTimeout(async () => {
if (!iframeRef.current?.contentWindow) {
console.error('[CollaboraViewer] iframe 未就绪,无法执行替换');
return;
}
try {
// 步骤1:搜索文本(确保文本被选中,会自动跳转到匹配位置)
console.log(`[CollaboraViewer] 步骤1:搜索文本 "${newSearchText}"`);
unoSearchNext(iframeRef.current.contentWindow, newSearchText);
// 等待搜索完成
await new Promise(resolve => setTimeout(resolve, 300));
// 步骤2:执行替换(替换后光标保留在当前位置)
console.log(`[CollaboraViewer] 步骤2:替换为 "${newReplaceText}"`);
unoReplaceCurrent(iframeRef.current.contentWindow, newSearchText, newReplaceText);
// 等待替换完成
await new Promise(resolve => setTimeout(resolve, 200));
// 步骤3:自动搜索下一个相同的占位符(如果还有的话)
console.log(`[CollaboraViewer] 步骤3:定位到下一个 "${newSearchText}"`);
unoSearchNext(iframeRef.current.contentWindow, newSearchText);
console.log('[CollaboraViewer] ✓ 静默替换完成,已定位到下一个占位符(如有)');
} catch (error) {
console.error('[CollaboraViewer] 静默替换失败:', error);
}
}, 300);
return () => clearTimeout(timer);
} else {
// 显示搜索替换面板
setShowSearchReplacePanel(true);
}
// 设置搜索、替换和页码输入框的值
setSearchText(newSearchText);
setReplaceText(newReplaceText);
setSearchReplacePageNumber(String(pageNumber));
// 设置搜索、替换和页码输入框的值
setSearchText(newSearchText);
setReplaceText(newReplaceText);
setSearchReplacePageNumber(String(pageNumber));
// 根据模式设置对应的自动执行标志
if (silentReplace) {
// 静默替换:自动执行替换
shouldAutoReplaceRef.current = true;
console.log('[CollaboraViewer] 已设置自动替换标志');
} else {
// 普通模式:仅自动执行查找
shouldAutoSearchRef.current = true;
console.log('[CollaboraViewer] 已设置搜索参数,等待状态更新后自动执行查找');
@@ -326,7 +353,7 @@ export const CollaboraViewer = forwardRef<CollaboraViewerHandle, CollaboraViewer
}, [searchText, searchReplacePageNumber, isDocumentLoaded]); // eslint-disable-line react-hooks/exhaustive-deps
// 9. 当搜索参数更新完成后,自动执行替换(静默模式)
// 不跳转页面,直接在当前位置搜索并替换,替换后保留在替换位置
// 不跳转页面,直接在当前位置搜索并替换,替换后自动定位到下一个相同占位符
useEffect(() => {
if (shouldAutoReplaceRef.current && searchText && replaceText && isDocumentLoaded) {
console.log('[CollaboraViewer] 静默替换模式:自动执行替换:', { searchText, replaceText });
@@ -353,7 +380,14 @@ export const CollaboraViewer = forwardRef<CollaboraViewerHandle, CollaboraViewer
console.log(`[CollaboraViewer] 步骤2:替换为 "${replaceText}"`);
unoReplaceCurrent(iframeRef.current.contentWindow, searchText, replaceText);
console.log('[CollaboraViewer] ✓ 静默替换完成');
// 等待替换完成
await new Promise(resolve => setTimeout(resolve, 200));
// 步骤3:自动搜索下一个相同的占位符(如果还有的话)
console.log(`[CollaboraViewer] 步骤3:定位到下一个 "${searchText}"`);
unoSearchNext(iframeRef.current.contentWindow, searchText);
console.log('[CollaboraViewer] ✓ 静默替换完成,已定位到下一个占位符(如有)');
} catch (error) {
console.error('[CollaboraViewer] 静默替换失败:', error);
}