From fd127d2fb5e9fd2649a67871b04bf863606ecff5 Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 09 八月 2024 17:01:35 +0800
Subject: [PATCH] fix: 修改会话

---
 src/views/sessionManager/index.vue |  173 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 97 insertions(+), 76 deletions(-)

diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 4e9a7f7..b69652c 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -49,7 +49,7 @@
               @click="querySessionDetail(session)"
               :class="{ isLeftActive: activeSessionId === session.id }"
             >
-              <div class="text" :class="{ light: theme === 'dark' }"
+              <div class="text" :class="{ time: theme === 'dark' }"
                 >{{ session.name }}
               </div>
               <div class="time"
@@ -65,7 +65,7 @@
       </a-col>
       <a-col :span="18">
         <a-card class="center">
-          <div
+          <!-- <div
             v-if="sessionDetailList.length === 0"
             style="
               width: 90%;
@@ -140,16 +140,15 @@
                 </div>
               </a-col>
             </a-row>
-          </div>
+          </div> -->
           <a-scrollbar
             ref="scrollbar"
             id="home"
-            v-else
             class="chat-list"
             style="
               width: 90%;
               overflow: auto;
-              height: 65vh;
+              height: calc(100vh - 380px);
               margin: 0px auto 20px;
             "
           >
@@ -163,7 +162,7 @@
                   />
                 </template>
                 <template #content>
-                  <div class="chart-user-text"
+                  <div :class="{ chartUserText: theme === 'light' }"
                     >{{ sessionDetail.content }}
                   </div>
                 </template>
@@ -177,7 +176,7 @@
                   />
                 </template>
                 <template #content>
-                  <a-card class="chat-item-answer">
+                  <a-card :class="{ chatItemAnswer: theme === 'light' }">
                     <div :class="{ light: theme === 'light' }"
                       >{{ sessionDetail.content }}
                     </div>
@@ -197,7 +196,7 @@
                     readonly
                     auto-size
                     v-model="displayedText"
-                    class="chat-item-answer"
+                    :class="{ chatItemAnswer: theme === 'light' }"
                   >
                   </a-textarea>
                 </template>
@@ -222,11 +221,13 @@
             </a-textarea> -->
               <a-textarea
                 v-model="inputMsg"
+                @keydown.shift.enter="handleShiftEnter"
                 @keydown.enter="sendMessage"
                 placeholder="杈撳叆鎮ㄦ兂浜嗚В鐨勫唴瀹癸紝Shift+Enter鎹㈣锛孍nter鍙戦��"
                 allow-clear
                 show-word-limit
                 :disabled="chatDis"
+                :class="{ textItemAnswer: theme === 'dark' }"
                 :auto-size="{
                   minRows: 12,
                   maxRows: 5,
@@ -318,7 +319,7 @@
     IconTiktokColor,
   } from '@arco-design/web-vue/es/icon';
   import { useAppStore, useUserStore } from '@/store';
-  import { computed, nextTick, onMounted, reactive, ref } from 'vue';
+  import { computed, nextTick, onMounted, watch, reactive, ref } from 'vue';
 
   import { Message } from '@arco-design/web-vue';
   import { EventSourceParserStream } from 'eventsource-parser/stream';
@@ -359,83 +360,98 @@
       }
     }
   };
+  const handleShiftEnter = (event) => {
+    event.preventDefault();
+    inputMsg.value += '\n';
+  };
   const dialogChange = (val) => {
     dialogId.value = val;
     querySessionList();
   };
-  const sentClick = (event) => {
-    sendMessage(event);
+  const sentClick = () => {
+    sendMessage('click');
   };
   const sendMessage = async (event) => {
-    event.preventDefault();
-    chatDis.value = true;
-    loading.value = true;
-    if (!activeSessionId.value) {
-      Message.warning('璇烽�夋嫨浼氳瘽');
-      chatDis.value = false;
-      loading.value = false;
-      return;
-    }
-
-    // if (displayedText.value) {
-    //   querySessionList();
-    // }
-
-    if (inputMsg.value) {
-      sessionDetailList.value.push({ content: inputMsg.value, role: 'user' });
-      sessionDetailList.value.push({ role: 'last' });
-      refreshScroll();
-      const response = await fetch(
-        '/api/tech/cloudminds/query?modeltype=localragflow',
-        {
-          method: 'POST',
-          headers: {
-            'Authorization': getAuthorization(),
-            'Content-Type': 'application/json',
-          },
-          body: JSON.stringify({
-            conversation_id: activeSessionId.value,
-            messages: inputMsg.value,
-          }),
+    if (event.keyCode == 13 || event === 'click') {
+      if (!event.shiftKey) {
+        //鍙湁enter娌℃湁shift锛屾垨杩涜浣犵殑鍏朵粬閫昏緫
+        if (event !== 'click') {
+          event.preventDefault(); // 闃绘榛樿琛屼负锛屽嵆涓嶆崲琛�
         }
-      );
 
-      const reader = response?.body
-        ?.pipeThrough(new TextDecoderStream())
-        .pipeThrough(new EventSourceParserStream())
-        .getReader();
-      currIndex.value = 0;
-      while (true) {
-        const x = await reader?.read();
-        if (x) {
-          const { done, value } = x;
-          console.log(x, 999);
-          try {
-            const val = JSON.parse(value?.data || '');
-            const d = val?.data;
-            if (typeof d !== 'boolean') {
-              console.info('data:', d);
-              streamStr.value = d.content;
-              startDisplayStr();
+        chatDis.value = true;
+        loading.value = true;
+        if (!activeSessionId.value) {
+          Message.warning('璇烽�夋嫨浼氳瘽');
+          chatDis.value = false;
+          loading.value = false;
+          return;
+        }
+
+        // if (displayedText.value) {
+        //   querySessionList();
+        // }
+
+        if (inputMsg.value) {
+          sessionDetailList.value.push({
+            content: inputMsg.value,
+            role: 'user',
+          });
+          sessionDetailList.value.push({ role: 'last' });
+          refreshScroll();
+          const response = await fetch(
+            '/api/tech/cloudminds/query?modeltype=localragflow',
+            {
+              method: 'POST',
+              headers: {
+                'Authorization': getAuthorization(),
+                'Content-Type': 'application/json',
+              },
+              body: JSON.stringify({
+                conversation_id: activeSessionId.value,
+                messages: inputMsg.value,
+              }),
             }
-          } catch (e) {
-            console.warn(e);
+          );
+
+          const reader = response?.body
+            ?.pipeThrough(new TextDecoderStream())
+            .pipeThrough(new EventSourceParserStream())
+            .getReader();
+          currIndex.value = 0;
+          while (true) {
+            const x = await reader?.read();
+            if (x) {
+              const { done, value } = x;
+              console.log(x, 999);
+              try {
+                const val = JSON.parse(value?.data || '');
+                const d = val?.data;
+                if (typeof d !== 'boolean') {
+                  console.info('data:', d);
+                  streamStr.value = d.content;
+                  startDisplayStr();
+                }
+              } catch (e) {
+                console.warn(e);
+              }
+              if (done) {
+                console.info('done');
+                displayedText.value = '';
+                querySessionDetail(sectionList.value);
+                break;
+              }
+            }
           }
-          if (done) {
-            console.info('done');
-            displayedText.value = '';
-            querySessionDetail(sectionList.value);
-            break;
-          }
+          chatDis.value = false;
+          loading.value = false;
+          inputMsg.value = '';
+        } else {
+          Message.warning('娑堟伅涓嶈兘涓虹┖');
+          chatDis.value = false;
+          loading.value = false;
         }
       }
-      chatDis.value = false;
-      loading.value = false;
-      inputMsg.value = '';
-    } else {
-      Message.warning('娑堟伅涓嶈兘涓虹┖');
-      chatDis.value = false;
-      loading.value = false;
     }
   };
   const querySessionDetail = async (session) => {
@@ -472,10 +488,12 @@
   onMounted(() => {
     DialogList();
   });
+
   const appStore = useAppStore();
   const theme = computed(() => {
     return appStore.theme;
   });
+
   //鏂囧瓧鍔ㄦ�佽緭鍑�
   const startDisplayStr = () => {
     if (timer) {
@@ -564,7 +582,7 @@
     .card-btn-2 {
       margin: 10px 10px;
     }
-    .chat-item-answer {
+    .chatItemAnswer {
       box-sizing: border-box;
       background: #f1f1f1;
       border-radius: 14px;
@@ -573,6 +591,9 @@
         background: #f1f1f1;
         border-radius: 14px;
       }
+    }
+    .textItemAnswer {
+      background-color: #373739;
     }
 
     .center {
@@ -663,7 +684,7 @@
     }
     .chat-item {
       padding: 10px 0;
-      .chart-user-text {
+      .chartUserText {
         font-weight: 600;
         font-size: 14px;
         color: #333;

--
Gitblit v1.8.0