From 96793ed66832fbeb253338a9949c7e5824f87bdd Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 09 八月 2024 14:26:25 +0800
Subject: [PATCH] fix: 修改登录会话管理样式

---
 src/views/session/sessionRecordsManager/index.vue |  272 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 182 insertions(+), 90 deletions(-)

diff --git a/src/views/session/sessionRecordsManager/index.vue b/src/views/session/sessionRecordsManager/index.vue
index 4b22809..4b5ca1c 100644
--- a/src/views/session/sessionRecordsManager/index.vue
+++ b/src/views/session/sessionRecordsManager/index.vue
@@ -1,10 +1,14 @@
 <template>
   <div class="container">
-    <AddSession :modalObj="modalObj" @addSession="addSession"></AddSession>
+    <AddSession
+      :modalObj="modalObj"
+      @addSession="addSession"
+      :dialogId="dialogId"
+    ></AddSession>
     <a-card class="top-title">AI浼氳瘽璁板綍</a-card>
     <a-row :gutter="[5, 5]" style="margin-top: 3px">
-      <a-col :span="4">
-        <a-card>
+      <a-col :span="6">
+        <a-card class="left-select">
           <a-select
             v-model="selectValue"
             :options="dialogs"
@@ -34,13 +38,13 @@
           <a-scrollbar
             class="left-list"
             style="
-              height: calc(100vh - 160px);
+              height: calc(100vh - 350px);
               overflow-y: auto;
               overflow-x: hidden;
             "
           >
             <div
-              class="item"
+              class="item left-list-item"
               v-for="session in sessionList"
               @click="querySessionDetail(session)"
               :class="{ isLeftActive: activeSessionId === session.id }"
@@ -59,7 +63,7 @@
           </a-scrollbar>
         </a-card>
       </a-col>
-      <a-col :span="15">
+      <a-col :span="18">
         <a-card class="center">
           <div
             v-if="sessionDetailList.length === 0"
@@ -150,45 +154,59 @@
             "
           >
             <div class="chat-item" v-for="sessionDetail in sessionDetailList">
-              <a-comment
-                v-if="sessionDetail.role === 'user'"
-                avatar="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp"
-              >
+              <a-comment v-if="sessionDetail.role === 'user'">
+                <template #avatar>
+                  <img
+                    class="icon-user-jpg"
+                    src="../../../assets/images/icon-user.jpg"
+                    alt="鏈湴鍥剧墖"
+                  />
+                </template>
                 <template #content>
-                  <div>{{ sessionDetail.content }} </div>
+                  <div class="chart-user-text"
+                    >{{ sessionDetail.content }}
+                  </div>
                 </template>
               </a-comment>
-              <a-comment
-                v-else-if="sessionDetail.role === 'assistant'"
-                avatar="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/9eeb1800d9b78349b24682c3518ac4a3.png~tplv-uwbnlip3yd-webp.webp"
-              >
+              <a-comment v-else-if="sessionDetail.role === 'assistant'">
+                <template #avatar>
+                  <img
+                    class="icon-user-jpg"
+                    src="../../../assets/images/icon-chart.png"
+                    alt="鏈湴鍥剧墖"
+                  />
+                </template>
                 <template #content>
-                  <a-card
-                    class="chat-item-answer"
-                    style="background-color: rgba(63, 64, 79, 1)"
-                  >
+                  <a-card class="chat-item-answer">
                     <div :class="{ light: theme === 'light' }"
                       >{{ sessionDetail.content }}
                     </div>
                   </a-card>
                 </template>
               </a-comment>
-              <a-comment
-                v-else-if="sessionDetail.role === 'last'"
-                avatar="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/9eeb1800d9b78349b24682c3518ac4a3.png~tplv-uwbnlip3yd-webp.webp"
-              >
+              <a-comment v-else-if="sessionDetail.role === 'last'">
+                <template #avatar>
+                  <img
+                    class="icon-user-jpg"
+                    src="../../../assets/images/icon-chart.png"
+                    alt="鏈湴鍥剧墖"
+                  />
+                </template>
                 <template #content>
                   <a-textarea
                     readonly
                     auto-size
                     v-model="displayedText"
                     class="chat-item-answer"
-                    style="background-color: rgba(192, 172, 172, 0.88)"
                   >
                   </a-textarea>
                 </template>
               </a-comment>
             </div>
+            <!-- <div class="chartStart" v-if="isStart" @click="startChat"
+              >鍋滄鐢熸垚</div
+            >
+            <div class="chartStart v-else" @click="stopChat">閲嶆柊鐢熸垚</div> -->
           </a-scrollbar>
           <div class="chat_bottom">
             <div class="center-bottom">
@@ -214,21 +232,23 @@
                   maxRows: 5,
                 }"
               />
-            </div>
-            <div style="margin-left: 10px">
-              <!-- <icon-send size="32" /> -->
-              <a-button
-                :disabled="chatDis"
-                @click="sentClick"
-                type="primary"
-                size="large"
-                >鍙戦��</a-button
-              >
+              <div class="btn-send">
+                <!-- <icon-send size="32" /> -->
+                <a-button
+                  :disabled="chatDis"
+                  @click="sentClick"
+                  type="primary"
+                  style="border-radius: 24px"
+                  :loading="loading"
+                  size="large"
+                  >鍙戦��</a-button
+                >
+              </div>
             </div>
           </div>
         </a-card>
       </a-col>
-      <a-col :span="5">
+      <!-- <a-col :span="5">
         <a-card class="right">
           <div class="right-top">
             <div class="right-title">鏁版櫤搴�</div>
@@ -246,22 +266,16 @@
             </div>
           </div>
           <div class="right-tag">
-            <a-space>
-              <a-button type="primary" shape="round" size="mini" class="btn"
-                >鍏ㄩ儴
-              </a-button>
-              <a-button type="outline" shape="round" size="mini" class="btn"
-                >鏂囨。鍒涗綔
-              </a-button>
-              <a-button type="outline" shape="round" size="mini" class="btn"
-                >鐭ヨ瘑瀛︿範
-              </a-button>
-            </a-space>
-            <a-space style="margin-top: 10px">
-              <a-button type="outline" shape="round" size="mini" class="btn"
-                >鏁堢巼鎻愬崌
-              </a-button>
-            </a-space>
+            <a-button type="primary" size="mini" class="btn">鍏ㄩ儴 </a-button>
+            <a-button type="outline" size="mini" class="btn"
+              >鏂囨。鍒涗綔
+            </a-button>
+            <a-button type="outline" size="mini" class="btn"
+              >鐭ヨ瘑瀛︿範
+            </a-button>
+            <a-button type="outline" size="mini" class="btn"
+              >鏁堢巼鎻愬崌
+            </a-button>
           </div>
           <div class="right-list">
             <div class="right-item">
@@ -293,7 +307,7 @@
             </div>
           </div>
         </a-card>
-      </a-col>
+      </a-col> -->
     </a-row>
   </div>
 </template>
@@ -315,13 +329,14 @@
     getSessionDetailsApi,
     sessionListApi,
   } from '@/api/session';
-  import { getAuthorization } from "@/utils/auth";
-
+  import { getAuthorization } from '@/utils/auth';
 
   const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯�
   const sessionList = ref([]); //浼氳瘽鍒楄〃
   const modalObj = reactive({ add: false });
+  const dialogId = ref('');
   const chatDis = ref(false);
+  const loading = ref(false);
 
   const currIndex = ref(0);
   const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛�
@@ -332,6 +347,7 @@
   const fieldNames = { value: 'id', label: 'name' };
   const dialogs = ref([]);
   const selectValue = ref('');
+  const sectionList = ref({});
   const DialogList = async () => {
     const { code, data } = await getDialogListApi();
     if (code === 200) {
@@ -342,7 +358,8 @@
       }
     }
   };
-  const dialogChange = (value) => {
+  const dialogChange = (val) => {
+    dialogId.value = val;
     querySessionList();
   };
   const sentClick = (event) => {
@@ -351,25 +368,36 @@
   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" });
+      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,
-        }),
-      });
+      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,
+          }),
+        }
+      );
 
       const reader = response?.body
         ?.pipeThrough(new TextDecoderStream())
@@ -380,12 +408,12 @@
         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);
+            if (typeof d !== 'boolean') {
+              console.info('data:', d);
               streamStr.value = d.content;
               startDisplayStr();
             }
@@ -394,17 +422,23 @@
           }
           if (done) {
             console.info('done');
+            displayedText.value = '';
+            querySessionDetail(sectionList.value);
             break;
           }
         }
       }
-      chatDis.value=false;
+      chatDis.value = false;
+      loading.value = false;
       inputMsg.value = '';
     } else {
       Message.warning('娑堟伅涓嶈兘涓虹┖');
+      chatDis.value = false;
+      loading.value = false;
     }
   };
   const querySessionDetail = async (session) => {
+    sectionList.value = session;
     activeSessionId.value = session.id;
     const { code, data } = await getSessionDetailsApi(session.id);
     if (code === 200) {
@@ -424,6 +458,8 @@
     const { code, data } = await sessionListApi(selectValue.value);
     if (code === 200) {
       sessionList.value = data;
+      activeSessionId.value = data[0].id; //榛樿閫夋嫨绗竴涓�
+      querySessionDetail(data[0]);
     } else {
       Message.warning('鏌ヨ澶辫触');
     }
@@ -459,11 +495,13 @@
 </script>
 <style scoped lang="scss">
   .isLeftActive {
-    background-color: lightgrey;
+    background-color: #ededf5;
   }
-
-  .light {
-    color: white !important;
+  .left-list-item {
+    margin-bottom: 2px;
+  }
+  .left-list-item:hover {
+    background-color: #ededf5;
   }
 
   .dark {
@@ -472,15 +510,20 @@
 
   .container {
     .top-title {
-      line-height: 60px;
-      font-size: 25px;
-      font-family: 榛戜綋;
+      line-height: 32px;
+      font-size: 16px;
+      color: #333;
+    }
+    .left-select {
+      :deep(.arco-select-view-single) {
+        border-radius: 5px;
+      }
     }
 
     .center,
     .right {
       box-sizing: border-box;
-      height: calc(100vh - 100px);
+      height: calc(100vh - 200px);
     }
 
     .left {
@@ -512,12 +555,23 @@
       }
     }
     .card-btn-1 {
-      margin: 10px;
-      width: 75%;
+      margin: 8px 15px;
+      width: 100%;
+      border-radius: 5px;
     }
 
     .card-btn-2 {
       margin: 10px 10px;
+    }
+    .chat-item-answer {
+      box-sizing: border-box;
+      background: #f1f1f1;
+      border-radius: 14px;
+      .light {
+        box-sizing: border-box;
+        background: #f1f1f1;
+        border-radius: 14px;
+      }
     }
 
     .center {
@@ -556,17 +610,26 @@
           border-radius: 10px;
           margin-top: 10px;
           padding: 10px;
-          height: 120px;
-          background-color: lightcyan;
-
+          min-height: 120px;
+          background-color: #e9f3ff;
+          .item-content {
+            color: #666;
+          }
           .item-title {
             text-align: center;
             line-height: 40px;
             font-size: 20px;
             font-family: 榛戜綋;
-            color: black;
+            color: #333;
           }
         }
+      }
+      .chartStart {
+        color: #4955f5;
+        cursor: pointer;
+        font-family: PingFangSC-Medium;
+        font-size: 12px;
+        font-weight: 500;
       }
       .chat_bottom {
         display: flex;
@@ -583,10 +646,30 @@
           flex: 1 1;
           flex-direction: column;
           overflow: hidden;
+          position: relative;
           :deep(.arco-textarea-wrapper) {
             border-radius: 24px;
           }
+
+          .btn-send {
+            position: absolute !important;
+            right: 5px;
+            bottom: 5px;
+            z-index: 10;
+          }
         }
+      }
+    }
+    .chat-item {
+      padding: 10px 0;
+      .chart-user-text {
+        font-weight: 600;
+        font-size: 14px;
+        color: #333;
+        margin-top: 4px;
+      }
+      .icon-user-jpg {
+        border: 1px solid #d9d9d9;
       }
     }
     .right {
@@ -596,7 +679,6 @@
 
         .right-title {
           font-size: 25px;
-          font-family: 榛戜綋;
           color: black;
         }
 
@@ -608,6 +690,16 @@
       }
       .right-tag {
         margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        :deep(.arco-btn-primary) {
+          margin-bottom: 10px !important;
+          &:hover {
+            background-color: #e9f3ff;
+            color: rgb(22, 93, 255);
+          }
+        }
       }
 
       .right-list {
@@ -615,15 +707,15 @@
           border-radius: 10px;
           margin-top: 10px;
           padding: 10px;
-          height: 120px;
-          background-color: lightcyan;
+          min-height: 120px;
+          background-color: #e9f3ff;
 
           .item-title {
             text-align: center;
             line-height: 40px;
             font-size: 20px;
             font-family: 榛戜綋;
-            color: black;
+            color: #333;
           }
         }
       }

--
Gitblit v1.8.0