fix: 1. 修改dockerFile
2. 修复一些合同起草的刷新报错问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user