From 5614a89478982b1b70afeab266b538d7692b65c3 Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期四, 08 八月 2024 20:18:25 +0800
Subject: [PATCH] 滚动显示问题

---
 src/router/routes/modules/session.ts               |   13 -
 /dev/null                                          |  421 ----------------------------------------------------
 src/views/sessionManager/index.vue                 |    2 
 src/views/sessionManager/components/addSession.vue |    0 
 4 files changed, 3 insertions(+), 433 deletions(-)

diff --git a/src/router/routes/modules/session.ts b/src/router/routes/modules/session.ts
index 7404798..7728a62 100644
--- a/src/router/routes/modules/session.ts
+++ b/src/router/routes/modules/session.ts
@@ -20,18 +20,9 @@
                 requiresAuth: true,
                 roles: ['*'],
             },
-            component:()=>import('@/views/session/sessionManager/index.vue'),
+            component:()=>import('@/views/sessionManager/index.vue'),
         },
-        {
-            path:'sessionRecordsManager',
-            name:"sessionRecordsManager",
-            meta:{
-                locale: '浼氳瘽璁板綍',
-                requiresAuth: true,
-                roles: ['*'],
-            },
-            component:()=>import('@/views/session/sessionRecordsManager/index.vue'),
-        }
+
     ]
 };
 export default session;
\ No newline at end of file
diff --git a/src/views/session/sessionManager/index.vue b/src/views/session/sessionManager/index.vue
deleted file mode 100644
index 1ab6516..0000000
--- a/src/views/session/sessionManager/index.vue
+++ /dev/null
@@ -1,421 +0,0 @@
-<script setup lang="ts">
-  import {
-    IconMoreVertical,
-    IconQuestionCircleFill,
-    IconPoweroff,
-    IconCommon,
-    IconSend,
-  } from '@arco-design/web-vue/es/icon';
-  import img1 from '@/assets/images/u64.png';
-  import img2 from '@/assets/images/u69.png';
-  import img3 from '@/assets/images/u74.png';
-  import AddSession from './components/addSession.vue';
-  import { ref, onMounted, computed, reactive, nextTick, watch } from 'vue';
-  import { useUserStore, useAppStore } from '@/store';
-  import {
-    sessionListApi,
-    deleteSessionApi,
-    getSessionDetailsApi,
-    chatApi,
-  } from '@/api/session';
-  import { Message } from '@arco-design/web-vue';
-  const userStore = useUserStore();
-  const appStore = useAppStore();
-  const theme = computed(() => {
-    return appStore.theme;
-  });
-  const sessionList = ref([]); //浼氳瘽鍒楄〃
-  const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯�
-  const activeSessionId = ref('');
-  const inputMsg = ref('');
-  const scrollbar = ref(null);
-
-  const currIndex = ref(0);
-  const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛�
-  let timer: number | null = null;
-  const streamStr = ref('');
-  const modalObj = reactive({ add: false });
-  //鏌ヨ浼氳瘽鍒楄〃
-  const querySessionList = async () => {
-    const { code, data } = await sessionListApi();
-    if (code === 200) {
-      sessionList.value = data;
-      if (Array.isArray(data) && data.length > 0) {
-        activeSessionId.value = data[0].id;
-        const res = await getSessionDetailsApi(data[0].id);
-        if (res.code === 200) {
-          sessionDetailList.value = res.data.message;
-          refreshScroll();
-        }
-      }
-    } else {
-      Message.warning('鏌ヨ澶辫触');
-    }
-  };
-  //鏍规嵁浼氳瘽id鍒犻櫎浼氳瘽
-  const deleteSession = async (session) => {
-    const { code } = await deleteSessionApi([session.id]);
-    if (code === 200) {
-      Message.success('鍒犻櫎鎴愬姛');
-      querySessionList();
-    }
-  };
-  // eslint-disable-next-line prettier/prettier
-  // 鏂板浼氳瘽涔嬪悗鍒锋柊浼氳瘽鍒楄〃
-  const addSession = () => {
-    querySessionList();
-  };
-  // 鍒濆鍖栨暟鎹�
-  const initData = () => {
-    querySessionList();
-  };
-  // 鑾峰彇鐧诲綍淇℃伅
-  const userName = computed(() => {
-    return userStore.name;
-  });
-  const avatar = computed(() => {
-    return userStore.avatar;
-  });
-  const refreshScroll = () => {
-    nextTick(() => {
-      const container = document.getElementById('home');
-      scrollbar.value.scrollTop(container.scrollHeight);
-    });
-  };
-  // 鏍规嵁浼氳瘽id 鏌ヨ浼氳瘽璇︽儏
-  const querySessionDetail = async (session) => {
-    activeSessionId.value = session.id;
-    const { code, data } = await getSessionDetailsApi(session.id);
-    if (code === 200) {
-      sessionDetailList.value = data.message;
-      refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
-    }
-  };
-  const sendMessage = async () => {
-    if (inputMsg.value) {
-      const { code, data } = await chatApi({
-        conversation_id: activeSessionId.value,
-        messages: inputMsg.value,
-      });
-      const res = await getSessionDetailsApi(activeSessionId.value);
-      if (res.code === 200) {
-        sessionDetailList.value = res.data.message.map((item, index) => {
-          if (index === res.data.message.length - 1) {
-            item.role = 'last';
-            displayedText.value = '';
-            currIndex.value = 0;
-            streamStr.value = item.content;
-            startDisplayStr();
-          }
-          return item;
-        });
-        refreshScroll();
-      }
-      inputMsg.value = '';
-    } else {
-      Message.warning('娑堟伅涓嶈兘涓虹┖');
-    }
-  };
-  onMounted(() => {
-    initData();
-  });
-  //鏂囧瓧鍔ㄦ�佽緭鍑�
-  const startDisplayStr = () => {
-    if (timer) {
-      clearTimeout(timer!);
-    }
-    const res = streamStr.value;
-    // 灏嗘暟缁勪腑鐨勫瓧绗︿覆鎷兼帴璧锋潵
-    if (currIndex.value < res.length) {
-      displayedText.value += res[currIndex.value];
-      currIndex.value++;
-      setTimeout(startDisplayStr, 100);
-    } else {
-      clearTimeout(timer!);
-      timer = null;
-    }
-  };
-  watch(
-    () => scrollbar.value,
-    (newScroll, oldScroll) => {
-      if (newScroll) {
-        // 鑾峰彇a-scroll鐨勯珮搴�
-        const height = newScroll.$el.offsetHeight;
-        console.log('a-scroll height changed to:', height);
-      }
-    },
-    { deep: true }
-  );
-</script>
-
-<template>
-  <div class="container">
-    <AddSession :modalObj="modalObj" @addSession="addSession"></AddSession>
-    <a-row :gutter="[0, 0]">
-      <a-col :span="5">
-        <a-card class="left">
-          <template #cover>
-            <a-button
-              type="outline"
-              class="card-btn"
-              @click="modalObj.add = true"
-            >
-              +鏂板缓浼氳瘽
-            </a-button>
-          </template>
-          <a-scrollbar class="left-list" style="height: 60vh; overflow-y: auto">
-            <div
-              class="item"
-              :class="{ isLeftActive: activeSessionId === session.id }"
-              v-for="session in sessionList"
-              :key="session.id"
-              @click="querySessionDetail(session)"
-            >
-              <div class="item-left">
-                <IconQuestionCircleFill />銆�
-                {{ session.name }}
-              </div>
-              <div class="item-right">
-                <a-popover position="bottom">
-                  <icon-more-vertical></icon-more-vertical>
-                  <template #content>
-                    <!--<div>
-                                            <a-button type="text" size="mini">缂栬緫</a-button>
-                                        </div>-->
-                    <div>
-                      <a-button
-                        type="text"
-                        size="mini"
-                        @click="deleteSession(session)"
-                        >鍒犻櫎</a-button
-                      >
-                    </div>
-                  </template>
-                </a-popover>
-              </div>
-            </div>
-          </a-scrollbar>
-          <div class="left-bottom">
-            <div class="item"><IconCommon />銆�<span>鍚戞湅鍙嬫帹鑽�</span></div>
-            <div class="item"><IconCommon />銆�<span>鏈�鏂版秷鎭�</span></div>
-            <div class="item"><IconCommon />銆�<span>闂鍙嶉</span></div>
-            <div class="item"><IconCommon />銆�<span>甯歌闂</span></div>
-            <div class="item"><IconPoweroff />銆�<span>閫�鍑�</span></div>
-          </div>
-        </a-card>
-      </a-col>
-      <a-col :span="19">
-        <a-card class="right">
-          <div v-if="sessionDetailList.length === 0">
-            <div class="right-title">ChatAI</div>
-            <a-row justify="center" class="right-middle">
-              <a-col :span="5" class="item">
-                <p><a-image :src="img1" width="50px"></a-image></p>
-                <p>绀轰緥</p>
-              </a-col>
-              <a-col :span="5" class="item">
-                <p><a-image :src="img2" width="50px"></a-image></p>
-                <p>鏍稿績鍔熻兘</p>
-              </a-col>
-              <a-col :span="5" class="item">
-                <p><a-image :src="img3" width="50px"></a-image></p>
-                <p>灞�闄愭��</p>
-              </a-col>
-            </a-row>
-            <a-row justify="center" class="right-middle-list">
-              <a-col :span="6" class="item">鈥滆鐢ㄧ畝鍗曠殑鏈瑙i噴閲忓瓙璁$畻鈥�</a-col>
-              <a-col :span="6" class="item">鍙互瀵瑰巻鍙插璇濊繘琛岃蹇�</a-col>
-              <a-col :span="6" class="item">鍙兘浼氬嚭鐜伴敊璇殑鍐呭</a-col>
-            </a-row>
-            <a-row justify="center" class="right-middle-list">
-              <a-col :span="6" class="item"
-                >鈥滄彁渚涗竴浜涘簡绁�10宀佸瀛愮敓鏃ョ殑鍒涙剰锛熲��</a-col
-              >
-              <a-col :span="6" class="item">鍏佽鐢ㄦ埛瀵圭瓟妗堣繘琛屼慨姝�</a-col>
-              <a-col :span="6" class="item">鍙兘浼氫骇鐢熸湁瀹虫垨铏氬亣鐨勫唴瀹�</a-col>
-            </a-row>
-            <a-row justify="center" class="right-middle-list">
-              <a-col :span="6" class="item"
-                >鈥滃浣曞湪Javascript涓彂鍑篽ttp璇锋眰锛熲��</a-col
-              >
-              <a-col :span="6" class="item">鍙互鎺ュ彈鎴栨嫆缁濅笉鎭板綋鐨勮缁�</a-col>
-              <a-col :span="6" class="item"
-                >瀵�2023骞翠互鍚庡緱涓栫晫鍜屼簨浠朵簡瑙f湁闄�</a-col
-              >
-            </a-row>
-          </div>
-          <a-scrollbar
-            ref="scrollbar"
-            id="home"
-            v-else
-            class="chat-list"
-            style="width: 90%; overflow: auto; height: 70vh; margin: 0px auto"
-          >
-            <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"
-              >
-                <template #content>
-                  <div :class="{ light: theme === 'light' }">{{
-                    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"
-              >
-                <template #content>
-                  <a-card
-                    class="chat-item-answer"
-                    style="background-color: rgba(63, 64, 79, 1)"
-                  >
-                    <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"
-              >
-                <template #content>
-                  <a-textarea
-                    readonly
-                    auto-size
-                    v-model="displayedText"
-                    class="chat-item-answer"
-                    style="background-color: rgba(63, 64, 79, 1)"
-                  >
-                  </a-textarea>
-                </template>
-              </a-comment>
-            </div>
-          </a-scrollbar>
-          <div class="bottom">
-            <div class="input">
-              <a-input
-                v-model="inputMsg"
-                @keydown.enter="sendMessage"
-                placeholder="杈撳叆鎮ㄦ兂浜嗚В鐨勫唴瀹癸紝鎸塃nter鍙戦��"
-              >
-                <template #suffix>
-                  <icon-send style="cursor: pointer" @click="sendMessage" />
-                </template> </a-input
-            ></div>
-            <div class="text"
-              >鍐呭鐢盇I鐢熸垚锛屼粎渚涘弬鑰冿紝璇烽伒瀹堛�婄敤鎴峰崗璁�嬨�併�婁釜浜轰俊鎭繚鎶よ鍒欍�嬶紝鍩轰簬ChatGPT澶фā鍨嬶紝鐗堟湰锛歏3.3.0</div
-            >
-          </div>
-        </a-card>
-      </a-col>
-    </a-row>
-  </div>
-</template>
-
-<style scoped lang="scss">
-  .isLeftActive {
-    background-color: rgba(52, 53, 66, 1);
-  }
-  .light {
-    color: white !important;
-  }
-  .container {
-    background-color: #1d2129;
-    .left,
-    .right {
-      color: white;
-      height: calc(100vh - 60px);
-      border: 0px;
-    }
-    .left {
-      position: relative;
-      background-color: rgba(30, 33, 34, 1);
-      .card-btn {
-        width: 90%;
-        margin: 15px auto;
-        border: 1px solid white;
-        color: white;
-      }
-      .left-list {
-        .item {
-          display: flex;
-          justify-content: space-between;
-          padding-left: 30px;
-          color: white;
-          cursor: pointer;
-          line-height: 40px;
-          .item-right {
-            margin-right: 10px;
-          }
-          &:hover {
-            background-color: rgba(52, 53, 66, 1);
-          }
-        }
-      }
-      .left-bottom {
-        position: absolute;
-        bottom: 30px;
-        left: 40px;
-        .item {
-          text-align: left;
-          color: white;
-          font-size: 12px;
-          line-height: 30px;
-        }
-      }
-    }
-    .right {
-      position: relative;
-      background-color: rgba(52, 53, 66, 1);
-      .right-title {
-        font-size: 30px;
-        color: white;
-        text-align: center;
-        margin-top: 100px;
-      }
-      .right-middle {
-        margin-top: 40px;
-        text-align: center;
-        color: white;
-      }
-      .right-middle-list {
-        color: white;
-        .item {
-          padding-top: 15px;
-          text-align: center;
-          height: 50px;
-          background-color: rgba(63, 64, 79, 1);
-          margin: 8px 20px;
-          border-radius: 10px;
-        }
-      }
-      .bottom {
-        width: 100%;
-        position: absolute;
-        bottom: 40px;
-        left: 20%;
-        .input {
-          width: 60%;
-        }
-        .text {
-          font-size: 12px;
-          color: lightgrey;
-          line-height: 40px;
-        }
-      }
-      .chat-list {
-        width: 90%;
-        margin: 0px auto;
-        .chat-item {
-          margin-top: 20px;
-          .chat-item-answer {
-            color: white;
-          }
-        }
-      }
-    }
-  }
-</style>
diff --git a/src/views/session/sessionManager/components/addSession.vue b/src/views/sessionManager/components/addSession.vue
similarity index 100%
rename from src/views/session/sessionManager/components/addSession.vue
rename to src/views/sessionManager/components/addSession.vue
diff --git a/src/views/session/sessionRecordsManager/index.vue b/src/views/sessionManager/index.vue
similarity index 99%
rename from src/views/session/sessionRecordsManager/index.vue
rename to src/views/sessionManager/index.vue
index 15079e2..d0d32a3 100644
--- a/src/views/session/sessionRecordsManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -323,7 +323,7 @@
   import { Message } from '@arco-design/web-vue';
   import { EventSourceParserStream } from 'eventsource-parser/stream';
   import moment from 'moment';
-  import AddSession from '@/views/session/sessionManager/components/addSession.vue';
+  import AddSession from '@/views/sessionManager/components/addSession.vue';
   import {
     chatApi,
     getDialogListApi,

--
Gitblit v1.8.0