xiaoguang_li 1 месяц назад
Родитель
Сommit
3fc0eac5c7
1 измененных файлов с 23 добавлено и 3 удалено
  1. 23 3
      desktop/core/src/desktop/templates/assist.mako

+ 23 - 3
desktop/core/src/desktop/templates/assist.mako

@@ -2788,16 +2788,16 @@ from desktop.views import _ko
           </div>
         </div>
         <!-- 显示区域 -->
-        <div class="display-area" data-bind="foreach: messages">
+        <div class="display-area" data-bind="foreach: { data: messages, afterAdd: scrollToBottom }">
             <!-- 消息 -->
             <div class="message" data-bind="html: content, css:{ 'ai-message': type==='ai', 'user-message': type==='user'}"></div>
         </div>
 
         <!-- 输入区域 -->
         <div class="input-area">
-            <textarea class="user-input clearable" placeholder="请输入你的问题..."
+            <textarea rows="1" class="user-input clearable" placeholder="请输入你的问题..."
                       data-bind="clearable: query, textInput: query, event: { keydown: ask, input: autoResize} "></textarea>
-            <button class="send-btn" data-bind="click: answer">发送</button>
+        <!--    <button class="send-btn" data-bind="click: answer">发送</button>-->
         </div>
       </div>
     </div>
@@ -2890,6 +2890,26 @@ from desktop.views import _ko
         inputArea.style.height = inputArea.scrollHeight + 'px';
       };
 
+      // 滚动到底部函数
+      ChatPanel.prototype.scrollToBottom = function(elem) {
+        // elem 是刚被添加的 .message 元素
+        // 但我们更关心整个 .display-area 容器
+        const container = $('.display-area')[0];
+
+        // 判断是否“接近底部”(允许 2px 误差)
+        const isAtBottom = container.scrollHeight - container.scrollTop <= container.clientHeight + 2;
+
+        if (isAtBottom) {
+          if (container.scroll) {
+            // 或平滑滚动:
+            container.scroll({ top: container.scrollHeight, behavior: 'smooth' });
+          } else {
+            // 用户在看底部 → 自动跟新
+            container.scrollTop = container.scrollHeight;
+          }
+        }
+      };
+
       ko.components.register('chat-panel', {
         viewModel: ChatPanel,
         template: { element: 'chat-panel-template' }