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 |  643 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 436 insertions(+), 207 deletions(-)

diff --git a/src/views/session/sessionRecordsManager/index.vue b/src/views/session/sessionRecordsManager/index.vue
index 1dd9235..4b5ca1c 100644
--- a/src/views/session/sessionRecordsManager/index.vue
+++ b/src/views/session/sessionRecordsManager/index.vue
@@ -1,122 +1,23 @@
-<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>
+    <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 style="height: 60px">
+      <a-col :span="6">
+        <a-card class="left-select">
+          <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
@@ -127,9 +28,9 @@
               >
                 +鏂板缓浼氳瘽
               </a-button>
-              <a-button type="text" shape="circle" class="card-btn-2">
+              <!-- <a-button type="text" shape="circle" class="card-btn-2">
                 <icon-search />
-              </a-button>
+              </a-button> -->
             </div>
           </template>
         </a-card>
@@ -137,32 +38,42 @@
           <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 }"
             >
-              <div class="text" :class="{ light: theme === 'dark' }">{{
-                session.name
-              }}</div>
-              <div class="time">{{
-                moment(new Date(session.create_time)).format(
-                  'YYYY-MM-DD HH:mm:ss'
-                )
-              }}</div>
+              <div class="text" :class="{ light: theme === 'dark' }"
+                >{{ session.name }}
+              </div>
+              <div class="time"
+                >{{
+                  moment(new Date(session.create_time)).format(
+                    'YYYY-MM-DD HH:mm:ss'
+                  )
+                }}
+              </div>
             </div>
           </a-scrollbar>
         </a-card>
       </a-col>
-      <a-col :span="15">
+      <a-col :span="18">
         <a-card class="center">
-          <div v-if="sessionDetailList.length === 0">
+          <div
+            v-if="sessionDetailList.length === 0"
+            style="
+              width: 90%;
+              overflow: auto;
+              height: 65vh;
+              margin: 0px auto 20px;
+            "
+          >
             <div class="center-title">鏅鸿兘闂瓟</div>
             <div class="center-content">
               鎴戝彲浠ョ悊瑙e拰瀛︿範浜虹被鐨勮瑷�锛屽叿澶囧杞璇濈殑鑳藉姏锛岀幇鍦ㄥ拰鎴戝紑濮嬩氦娴佸惂~
@@ -176,7 +87,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 +96,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 +105,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 +114,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 +123,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 +132,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' }">
                   缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -229,54 +146,71 @@
             id="home"
             v-else
             class="chat-list"
-            style="width: 90%; overflow: auto; height: 60vh; margin: 0px auto"
+            style="
+              width: 90%;
+              overflow: auto;
+              height: 65vh;
+              margin: 0px auto 20px;
+            "
           >
             <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 :class="{ light: theme === 'light' }">{{
-                    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)"
-                  >
-                    <div :class="{ light: theme === 'light' }">{{
-                      sessionDetail.content
-                    }}</div>
+                  <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(63, 64, 79, 1)"
                   >
                   </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="center-bottom">
-            <a-textarea
+          <div class="chat_bottom">
+            <div class="center-bottom">
+              <!-- <a-textarea
               v-model="inputMsg"
               @keydown.shift.enter="sendMessage"
               style="height: 180px"
@@ -285,11 +219,36 @@
               allow-clear
               show-word-limit
             >
-            </a-textarea>
+            </a-textarea> -->
+              <a-textarea
+                v-model="inputMsg"
+                @keydown.enter="sendMessage"
+                placeholder="杈撳叆鎮ㄦ兂浜嗚В鐨勫唴瀹癸紝Shift+Enter鎹㈣锛孍nter鍙戦��"
+                allow-clear
+                show-word-limit
+                :disabled="chatDis"
+                :auto-size="{
+                  minRows: 12,
+                  maxRows: 5,
+                }"
+              />
+              <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>
@@ -307,27 +266,22 @@
             </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">
               <div class="item-title">
-                <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                <IconTiktokColor></IconTiktokColor>
+                鎶栭煶甯﹁揣鑴氭湰
               </div>
               <div class="item-content" :class="{ dark: theme === 'dark' }">
                 缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -335,7 +289,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 +298,8 @@
             </div>
             <div class="right-item">
               <div class="item-title">
-                <IconTiktokColor></IconTiktokColor>鎶栭煶甯﹁揣鑴氭湰
+                <IconTiktokColor></IconTiktokColor>
+                鎶栭煶甯﹁揣鑴氭湰
               </div>
               <div class="item-content" :class="{ dark: theme === 'dark' }">
                 缂栧啓寮曚汉娉ㄧ洰涓斿叿鏈夎鏈嶅姏鐨勩�侀�傜敤浜庝骇鍝佺殑...
@@ -351,48 +307,245 @@
             </div>
           </div>
         </a-card>
-      </a-col>
+      </a-col> -->
     </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 { EventSourceParserStream } from 'eventsource-parser/stream';
+  import moment from 'moment';
+  import AddSession from '@/views/session/sessionManager/components/addSession.vue';
+  import {
+    chatApi,
+    getDialogListApi,
+    getSessionDetailsApi,
+    sessionListApi,
+  } from '@/api/session';
+  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湪鏄剧ず鐨勬枃瀛�
+  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 sectionList = 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 = (val) => {
+    dialogId.value = val;
+    querySessionList();
+  };
+  const sentClick = (event) => {
+    sendMessage(event);
+  };
+  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,
+          }),
+        }
+      );
+
+      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;
+          }
+        }
+      }
+      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) {
+      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;
+      activeSessionId.value = data[0].id; //榛樿閫夋嫨绗竴涓�
+      querySessionDetail(data[0]);
+    } 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);
+      refreshScroll();
+    } else {
+      clearTimeout(timer!);
+      timer = null;
+    }
+  };
+</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 {
     color: gray !important;
   }
+
   .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 {
       /* height: calc(100vh - 160px);
-            overflow-y: auto;
-            overflow-x: hidden;*/
+        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;
@@ -402,69 +555,133 @@
       }
     }
     .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 {
       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;
+          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;
           }
         }
       }
-      .center-bottom {
-        position: absolute;
-        width: 90%;
-        bottom: 20px;
-        left: 5%;
+      .chartStart {
+        color: #4955f5;
+        cursor: pointer;
+        font-family: PingFangSC-Medium;
+        font-size: 12px;
+        font-weight: 500;
+      }
+      .chat_bottom {
+        display: flex;
+        align-items: center;
+        .center-bottom {
+          // position: absolute;
+          // width: 90%;
+          // bottom: 20px;
+          // left: 5%;
+          background: #fff;
+          border: 1px solid #00000014;
+          border-radius: 24px;
+          display: flex;
+          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 {
       .right-top {
         display: flex;
         justify-content: space-between;
+
         .right-title {
           font-size: 25px;
-          font-family: 榛戜綋;
           color: black;
         }
+
         .right-btn {
           position: relative;
           left: 20px;
@@ -473,20 +690,32 @@
       }
       .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 {
         .right-item {
           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