From 6650c2f07bdfcb199ec36954df5b1be9e8eb37b5 Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期三, 07 八月 2024 17:05:19 +0800
Subject: [PATCH] 登录跳转权限配置页面

---
 src/views/session/sessionRecordsManager/index.vue |  608 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 335 insertions(+), 273 deletions(-)

diff --git a/src/views/session/sessionRecordsManager/index.vue b/src/views/session/sessionRecordsManager/index.vue
index 1dd9235..fb879ba 100644
--- a/src/views/session/sessionRecordsManager/index.vue
+++ b/src/views/session/sessionRecordsManager/index.vue
@@ -1,122 +1,19 @@
-<script setup lang="ts">
-  import {
-    IconSearch,
-    IconTiktokColor,
-    IconSend,
-    IconClose,
-  } from '@arco-design/web-vue/es/icon';
-  import { useAppStore } from '@/store';
-  import { computed, ref, onMounted, reactive, nextTick } from 'vue';
-  import { Message } from '@arco-design/web-vue';
-  import moment from 'moment';
-  import AddSession from '@/views/session/sessionManager/components/addSession.vue';
-  import {
-    sessionListApi,
-    deleteSessionApi,
-    getSessionDetailsApi,
-    chatApi,
-  } from '@/api/session';
-  const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯�
-  const sessionList = ref([]); //浼氳瘽鍒楄〃
-  const modalObj = reactive({ add: false });
-
-  const currIndex = ref(0);
-  const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛�
-  let timer: number | null = null;
-  const streamStr = ref('');
-  const inputMsg = ref('');
-  const activeSessionId = ref('');
-
-  const sendMessage = async (event) => {
-    event.preventDefault();
-    if (!activeSessionId.value) {
-      Message.warning('璇烽�夋嫨浼氳瘽');
-      return;
-    }
-    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('娑堟伅涓嶈兘涓虹┖');
-    }
-  };
-  const querySessionDetail = async (session) => {
-    activeSessionId.value = session.id;
-    const { code, data } = await getSessionDetailsApi(session.id);
-    if (code === 200) {
-      sessionDetailList.value = data.message;
-      refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
-    }
-  };
-  const scrollbar = ref(null);
-  const refreshScroll = () => {
-    nextTick(() => {
-      const container = document.getElementById('home');
-      scrollbar.value.scrollTop(container.scrollHeight);
-    });
-  };
-  // 鏌ヨ浼氳瘽鍒楄〃
-  const querySessionList = async () => {
-    const { code, data } = await sessionListApi();
-    if (code === 200) {
-      sessionList.value = data;
-    } else {
-      Message.warning('鏌ヨ澶辫触');
-    }
-  };
-  //鏂板浼氳瘽涔嬪悗鍒锋柊浼氳瘽鍒楄〃
-  const addSession = () => {
-    querySessionList();
-  };
-  onMounted(() => {
-    querySessionList();
-  });
-  const appStore = useAppStore();
-  const theme = computed(() => {
-    return appStore.theme;
-  });
-  //鏂囧瓧鍔ㄦ�佽緭鍑�
-  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;
-    }
-  };
-</script>
-
 <template>
   <div class="container">
     <AddSession :modalObj="modalObj" @addSession="addSession"></AddSession>
     <a-card class="top-title">AI浼氳瘽璁板綍</a-card>
     <a-row :gutter="[5, 5]" style="margin-top: 3px">
       <a-col :span="4">
-        <a-card style="height: 60px">
+        <a-card>
+              <a-select
+                v-model="selectValue"
+                :options="dialogs"
+                :field-names="fieldNames"
+                @change="dialogChange"
+              >
+              </a-select>
+        </a-card>
+        <a-card style="height: 50px">
           <template #cover>
             <div style="display: flex; justify-content: space-between">
               <a-button
@@ -149,13 +46,15 @@
               :class="{ isLeftActive: activeSessionId === session.id }"
             >
               <div class="text" :class="{ light: theme === 'dark' }">{{
-                session.name
-              }}</div>
+                  session.name
+                }}
+              </div>
               <div class="time">{{
-                moment(new Date(session.create_time)).format(
-                  'YYYY-MM-DD HH:mm:ss'
-                )
-              }}</div>
+                  moment(new Date(session.create_time)).format(
+                    "YYYY-MM-DD HH:mm:ss"
+                  )
+                }}
+              </div>
             </div>
           </a-scrollbar>
         </a-card>
@@ -176,7 +75,8 @@
             <a-row justify="space-around" class="center-list">
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -184,7 +84,8 @@
               </a-col>
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -192,7 +93,8 @@
               </a-col>
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -200,7 +102,8 @@
               </a-col>
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -208,7 +111,8 @@
               </a-col>
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -216,7 +120,8 @@
               </a-col>
               <a-col :span="7" class="item">
                 <div class="item-title">
-                  <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                  <IconTiktokColor></IconTiktokColor>
+                  鎶栭煶甯﹁揣鑴氭湰
                 </div>
                 <div class="item-content" :class="{ dark: theme === 'dark' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -237,9 +142,10 @@
                 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>
+                  <div>{{
+                      sessionDetail.content
+                    }}
+                  </div>
                 </template>
               </a-comment>
               <a-comment
@@ -252,8 +158,9 @@
                     style="background-color: rgba(63, 64, 79, 1)"
                   >
                     <div :class="{ light: theme === 'light' }">{{
-                      sessionDetail.content
-                    }}</div>
+                        sessionDetail.content
+                      }}
+                    </div>
                   </a-card>
                 </template>
               </a-comment>
@@ -267,7 +174,7 @@
                     auto-size
                     v-model="displayedText"
                     class="chat-item-answer"
-                    style="background-color: rgba(63, 64, 79, 1)"
+                    style="background-color:rgba(192,172,172,0.88)"
                   >
                   </a-textarea>
                 </template>
@@ -309,25 +216,30 @@
           <div class="right-tag">
             <a-space>
               <a-button type="primary" shape="round" size="mini" class="btn"
-                >鍏ㄩ儴</a-button
+              >鍏ㄩ儴
+              </a-button
               >
               <a-button type="outline" shape="round" size="mini" class="btn"
-                >鏂囨。鍒涗綔</a-button
+              >鏂囨。鍒涗綔
+              </a-button
               >
               <a-button type="outline" shape="round" size="mini" class="btn"
-                >鐭ヨ瘑瀛︿範</a-button
+              >鐭ヨ瘑瀛︿範
+              </a-button
               >
             </a-space>
             <a-space style="margin-top: 10px">
               <a-button type="outline" shape="round" size="mini" class="btn"
-                >鏁堢巼鎻愬崌</a-button
+              >鏁堢巼鎻愬崌
+              </a-button
               >
             </a-space>
           </div>
           <div class="right-list">
             <div class="right-item">
               <div class="item-title">
-                <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                <IconTiktokColor></IconTiktokColor>
+                鎶栭煶甯﹁揣鑴氭湰
               </div>
               <div class="item-content" :class="{ dark: theme === 'dark' }">
                 缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -335,7 +247,8 @@
             </div>
             <div class="right-item">
               <div class="item-title">
-                <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                <IconTiktokColor></IconTiktokColor>
+                鎶栭煶甯﹁揣鑴氭湰
               </div>
               <div class="item-content" :class="{ dark: theme === 'dark' }">
                 缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -343,7 +256,8 @@
             </div>
             <div class="right-item">
               <div class="item-title">
-                <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                <IconTiktokColor></IconTiktokColor>
+                鎶栭煶甯﹁揣鑴氭湰
               </div>
               <div class="item-content" :class="{ dark: theme === 'dark' }">
                 缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -355,141 +269,289 @@
     </a-row>
   </div>
 </template>
+<script setup lang="ts">
+import { IconClose, IconSearch, IconTiktokColor } from "@arco-design/web-vue/es/icon";
+import { useAppStore } from "@/store";
+import { computed, nextTick, onMounted, reactive, ref } from "vue";
+import { Message } from "@arco-design/web-vue";
+import moment from "moment";
+import AddSession from "@/views/session/sessionManager/components/addSession.vue";
+import { chatApi, getDialogListApi, getSessionDetailsApi, sessionListApi } from "@/api/session";
 
+const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯�
+const sessionList = ref([]); //浼氳瘽鍒楄〃
+const modalObj = reactive({ add: false });
+
+const currIndex = ref(0);
+const displayedText = ref(""); // 姝e湪鏄剧ず鐨勬枃瀛�
+let timer: number | null = null;
+const streamStr = ref("");
+const inputMsg = ref("");
+const activeSessionId = ref("");
+const fieldNames = { value: "id", label: "name" };
+const dialogs = ref([]);
+const selectValue = ref("");
+const DialogList = async () => {
+  const { code, data } = await getDialogListApi();
+  if (code === 200) {
+    if (data) {
+      selectValue.value = data[0].id;
+      dialogs.value = data;
+      querySessionList()
+    }
+  }
+};
+const dialogChange = (value) => {
+  querySessionList()
+};
+const sendMessage = async (event) => {
+  event.preventDefault();
+  if (!activeSessionId.value) {
+    Message.warning("璇烽�夋嫨浼氳瘽");
+    return;
+  }
+  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("娑堟伅涓嶈兘涓虹┖");
+  }
+};
+const querySessionDetail = async (session) => {
+  activeSessionId.value = session.id;
+  const { code, data } = await getSessionDetailsApi(session.id);
+  if (code === 200) {
+    sessionDetailList.value = data.message;
+    refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
+  }
+};
+const scrollbar = ref(null);
+const refreshScroll = () => {
+  nextTick(() => {
+    const container = document.getElementById("home");
+    scrollbar.value.scrollTop(container.scrollHeight);
+  });
+};
+// 鏌ヨ浼氳瘽鍒楄〃
+const querySessionList = async () => {
+  const { code, data } = await sessionListApi(selectValue.value);
+  if (code === 200) {
+    sessionList.value = data;
+  } else {
+    Message.warning("鏌ヨ澶辫触");
+  }
+};
+//鏂板浼氳瘽涔嬪悗鍒锋柊浼氳瘽鍒楄〃
+const addSession = () => {
+  querySessionList();
+};
+onMounted(() => {
+  DialogList();
+});
+const appStore = useAppStore();
+const theme = computed(() => {
+  return appStore.theme;
+});
+//鏂囧瓧鍔ㄦ�佽緭鍑�
+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;
+  }
+};
+</script>
 <style scoped lang="scss">
-  .isLeftActive {
-    background-color: lightgrey;
-  }
-  .light {
-    color: white !important;
-  }
-  .dark {
-    color: gray !important;
-  }
-  .container {
-    .top-title {
-      line-height: 60px;
-      font-size: 25px;
-      font-family: 榛戜綋;
-    }
-    .center,
-    .right {
-      box-sizing: border-box;
-      height: calc(100vh - 100px);
-    }
-    .left {
-      /* height: calc(100vh - 160px);
-            overflow-y: auto;
-            overflow-x: hidden;*/
-      border: 0px;
-      .left-list {
-        .item {
-          cursor: pointer;
-          .text,
-          .time {
-            line-height: 30px;
-          }
-          .text {
-            color: black;
-            padding-left: 10px;
-          }
-          .time {
-            color: gray;
-            font-size: 12px;
-            padding-left: 10px;
-          }
-        }
-      }
-    }
-    .card-btn-1 {
-      margin: 10px;
-      width: 75%;
-    }
-    .card-btn-2 {
-      margin: 10px 10px;
-    }
-    .center {
-      position: relative;
-      .center-title {
-        line-height: 60px;
-        font-size: 25px;
-        font-family: 榛戜綋;
-        color: deepskyblue;
-      }
-      .center-content {
-        font-size: 14px;
-        color: gray;
-      }
-      .center-question {
-        margin-top: 20px;
-        display: flex;
-        justify-content: space-between;
-        .center-question-left {
-          margin-top: 5px;
-          margin-left: 20px;
-        }
-        .center-question-right {
-          margin-right: 20px;
-        }
-      }
-      .center-list {
-        margin-top: 10px;
-        .item {
-          border-radius: 10px;
-          margin-top: 10px;
-          padding: 10px;
-          height: 120px;
-          background-color: lightcyan;
-          .item-title {
-            text-align: center;
-            line-height: 40px;
-            font-size: 20px;
-            font-family: 榛戜綋;
-            color: black;
-          }
-        }
-      }
-      .center-bottom {
-        position: absolute;
-        width: 90%;
-        bottom: 20px;
-        left: 5%;
-      }
-    }
-    .right {
-      .right-top {
-        display: flex;
-        justify-content: space-between;
-        .right-title {
-          font-size: 25px;
-          font-family: 榛戜綋;
-          color: black;
-        }
-        .right-btn {
-          position: relative;
-          left: 20px;
-          top: 0px;
-        }
-      }
-      .right-tag {
-        margin-top: 20px;
-      }
-      .right-list {
-        .right-item {
-          border-radius: 10px;
-          margin-top: 10px;
-          padding: 10px;
-          height: 120px;
-          background-color: lightcyan;
-          .item-title {
-            text-align: center;
-            line-height: 40px;
-            font-size: 20px;
-            font-family: 榛戜綋;
-            color: black;
-          }
-        }
-      }
-    }
-  }
+.isLeftActive {
+  background-color: lightgrey;
+}
+
+.light {
+  color: white !important;
+}
+
+.dark {
+  color: gray !important;
+}
+
+.container {
+
+.top-title {
+  line-height: 60px;
+  font-size: 25px;
+  font-family: 榛戜綋;
+}
+
+.center,
+.right {
+  box-sizing: border-box;
+  height: calc(100vh - 100px);
+}
+
+.left {
+  /* height: calc(100vh - 160px);
+        overflow-y: auto;
+        overflow-x: hidden;*/
+  border: 0px;
+
+.left-list {
+
+.item {
+  cursor: pointer;
+
+.text,
+.time {
+  line-height: 30px;
+}
+
+.text {
+  color: black;
+  padding-left: 10px;
+}
+
+.time {
+  color: gray;
+  font-size: 12px;
+  padding-left: 10px;
+}
+
+}
+}
+}
+.card-btn-1 {
+  margin: 10px;
+  width: 75%;
+}
+
+.card-btn-2 {
+  margin: 10px 10px;
+}
+
+.center {
+  position: relative;
+
+.center-title {
+  line-height: 60px;
+  font-size: 25px;
+  font-family: 榛戜綋;
+  color: deepskyblue;
+}
+
+.center-content {
+  font-size: 14px;
+  color: gray;
+}
+
+.center-question {
+  margin-top: 20px;
+  display: flex;
+  justify-content: space-between;
+
+.center-question-left {
+  margin-top: 5px;
+  margin-left: 20px;
+}
+
+.center-question-right {
+  margin-right: 20px;
+}
+
+}
+.center-list {
+  margin-top: 10px;
+
+.item {
+  border-radius: 10px;
+  margin-top: 10px;
+  padding: 10px;
+  height: 120px;
+  background-color: lightcyan;
+
+.item-title {
+  text-align: center;
+  line-height: 40px;
+  font-size: 20px;
+  font-family: 榛戜綋;
+  color: black;
+}
+
+}
+}
+.center-bottom {
+  position: absolute;
+  width: 90%;
+  bottom: 20px;
+  left: 5%;
+}
+
+}
+.right {
+
+.right-top {
+  display: flex;
+  justify-content: space-between;
+
+.right-title {
+  font-size: 25px;
+  font-family: 榛戜綋;
+  color: black;
+}
+
+.right-btn {
+  position: relative;
+  left: 20px;
+  top: 0px;
+}
+
+}
+.right-tag {
+  margin-top: 20px;
+}
+
+.right-list {
+
+.right-item {
+  border-radius: 10px;
+  margin-top: 10px;
+  padding: 10px;
+  height: 120px;
+  background-color: lightcyan;
+
+.item-title {
+  text-align: center;
+  line-height: 40px;
+  font-size: 20px;
+  font-family: 榛戜綋;
+  color: black;
+}
+
+}
+}
+}
+}
 </style>

--
Gitblit v1.8.0