diff --git a/src/views/AiEmotion.vue b/src/views/AiEmotion.vue index 4628fd7..70b04f8 100644 --- a/src/views/AiEmotion.vue +++ b/src/views/AiEmotion.vue @@ -659,10 +659,9 @@ const addStock = (stockData) => { console.log("历史记录股票已标记为已显示"); } - // 5. 使用nextTick确保DOM更新后启动高度监听器 + // 5. 使用nextTick确保DOM更新后完成历史记录恢复 nextTick(() => { - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); + // 历史记录恢复时不启动内部滚动监听器,完全依赖父组件管理 // 历史记录恢复时不滚动到底部,保持在顶部 // 6. 历史记录加载完成后,通知父组件重新启用输入框 @@ -2506,16 +2505,14 @@ async function handleSendMessage(input, onComplete) { // isLoading.value = false; isPageLoaded.value = true; - // 使用nextTick确保DOM更新后清空对话显示并启动高度监听器 + // 使用nextTick确保DOM更新后清空对话显示 nextTick(() => { messages.value = []; // 清空已添加股票的记录,避免重复添加 addedStocks.value.clear(); - // 搜索新数据成功,启用自动滚动 - shouldEnableAutoScroll.value = true; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); - // 立即滚动到底部 + // 搜索新数据成功,但不启用内部自动滚动监听器,避免与父组件冲突 + shouldEnableAutoScroll.value = false; + // 只通知父组件滚动到底部,不启动内部监听器 scrollToBottom(); }); @@ -2636,9 +2633,8 @@ async function handleSendMessage(input, onComplete) { messages.value = []; // 搜索失败恢复场景,不启用自动滚动 shouldEnableAutoScroll.value = false; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); - // 立即滚动到底部 + // 不启动内部滚动监听器,避免与父组件冲突 + // 只通知父组件滚动到底部 scrollToBottom(); }); console.log("请求工作流接口失败,但恢复显示之前的股票数据"); @@ -2725,9 +2721,8 @@ async function fetchData(code, market, stockName, queryText, stockId, presetUniq messages.value = []; // 数据验证失败恢复场景,不启用自动滚动 shouldEnableAutoScroll.value = false; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); - // 立即滚动到底部 + // 不启动内部滚动监听器,避免与父组件冲突 + // 只通知父组件滚动到底部 scrollToBottom(); }); console.log("数据验证失败,但恢复显示之前的股票数据"); @@ -2786,9 +2781,8 @@ async function fetchData(code, market, stockName, queryText, stockId, presetUniq messages.value = []; // API请求失败恢复场景,不启用自动滚动 shouldEnableAutoScroll.value = false; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); - // 立即滚动到底部 + // 不启动内部滚动监听器,避免与父组件冲突 + // 只通知父组件滚动到底部 scrollToBottom(); }); console.log("API请求失败,但恢复显示之前的股票数据"); @@ -2830,9 +2824,8 @@ async function fetchData(code, market, stockName, queryText, stockId, presetUniq messages.value = []; // 网络异常恢复场景,不启用自动滚动 shouldEnableAutoScroll.value = false; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); - // 立即滚动到底部 + // 不启动内部滚动监听器,避免与父组件冲突 + // 只通知父组件滚动到底部 scrollToBottom(); }); console.log("网络异常,但恢复显示之前的股票数据"); @@ -3561,13 +3554,12 @@ onMounted(async () => { // 恢复页面加载状态 isPageLoaded.value = true; - // 使用nextTick确保DOM更新后清空对话显示并启动高度监听器 + // 使用nextTick确保DOM更新后清空对话显示 nextTick(() => { messages.value = []; - // 组件挂载时恢复数据场景,不启用自动滚动 + // 组件挂载时恢复数据场景,不启用自动滚动,完全依赖父组件管理 shouldEnableAutoScroll.value = false; - // 启动页面高度监听器,实时监听内容变化并自动滚动 - startHeightObserver(); + // 不启动内部滚动监听器,避免与父组件冲突 // 组件挂载时恢复数据不滚动到底部,保持在顶部 });