From 31a48e3a3c7d4e37a05ef43fa4b65c84989cc353 Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期四, 29 八月 2024 09:26:25 +0800
Subject: [PATCH] select role

---
 src/views/sessionManager/index.vue |  244 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 201 insertions(+), 43 deletions(-)

diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index d140f21..63cbc3f 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -78,9 +78,38 @@
                   />
                 </template>
                 <template #content>
-                  <div :class="{ chartUserText: theme === 'light' }"
-                    >{{ sessionDetail.content }}
+                  <div :class="{ chartUserText: theme === 'light' }">
+                    {{ sessionDetail.content }}
+                    <!-- <a-input
+                      :style="{ width: '100%' }"
+                      v-model="sessionDetail.content"
+                      v-if="isEdit"
+                    />
+
+                    <div v-else>
+                      {{ sessionDetail.content }}
+                    </div> -->
                   </div>
+                  <!-- <div v-if="!isEdit">
+                    <span
+                      class="action"
+                      v-if="index != 0"
+                      @click="copy(sessionDetail.content)"
+                    >
+                      <icon-copy /> 澶嶅埗
+                    </span>
+                    <span class="action" @click="edit()">
+                      <icon-pen /> 缂栬緫
+                    </span>
+                  </div>
+                  <a-space v-else>
+                    <a-button type="outline" size="mini" @click="cancelEdit(1)"
+                      >鍙栨秷</a-button
+                    >
+                    <a-button type="primary" size="mini" @click="cancelEdit(2)"
+                      >纭畾</a-button
+                    >
+                  </a-space> -->
                 </template>
               </a-comment>
               <a-comment v-else-if="sessionDetail.role === 'assistant'">
@@ -99,46 +128,94 @@
                         backgroundColor:
                           theme === 'light' ? '#ffffff' : '#000000',
                       }"
-                      style="border: none; display: inline"
-                      v-for="(item, tipIndex) in tipMatch(sessionDetail)"
+                      style="border: none"
+                      v-for="(breakContent, breakIndex) in breakLine(
+                        sessionDetail.content
+                      )"
                     >
-                      <span v-if="tipIndex == 0">
-                        {{ sessionDetail.content.substring(0, item.index) }}
-                        <a-tooltip
-                          background-color="#3491FA"
-                          :content="
-                            getTipContent(messagenList.reference, index)
-                          "
+                      <div
+                        :class="{ chatItemAnswer: theme === 'light' }"
+                        :style="{
+                          backgroundColor:
+                            theme === 'light' ? '#ffffff' : '#000000',
+                        }"
+                        style="border: none"
+                        v-if="isExistTip(breakContent)"
+                      >
+                        <div
+                          :class="{ chatItemAnswer: theme === 'light' }"
+                          :style="{
+                            backgroundColor:
+                              theme === 'light' ? '#ffffff' : '#000000',
+                          }"
+                          style="border: none"
+                          v-for="(item, tipIndex) in tipMatch(breakContent)"
                         >
-                          <img
-                            style="width: 20px; height: 20px"
-                            :src="tipImage"
-                          />
-                        </a-tooltip>
-                      </span>
-                      <span v-else>
-                        {{
-                          sessionDetail.content.substring(
-                            item.preIndex + item.item.length,
-                            item.index
-                          )
-                        }}
-                        <a-tooltip
-                          background-color="#3491FA"
-                          :content="
-                            getTipContent(messagenList.reference, index)
-                          "
-                        >
-                          <img
-                            style="width: 20px; height: 20px"
-                            :src="tipImage"
-                          />
-                        </a-tooltip>
-                      </span>
+                          <span v-if="tipIndex == 0">
+                            {{ breakContent.substring(0, item.index) }}
+                            <a-tooltip
+                              background-color="#3491FA"
+                              :content="
+                                getTipContent(messagenList.reference, index)
+                              "
+                            >
+                              <img
+                                style="width: 20px; height: 20px"
+                                :src="tipImage"
+                              />
+                            </a-tooltip>
+                          </span>
+                          <span v-else-if="tipIndex == item.len - 1">
+                            {{
+                              breakContent.substring(
+                                item.preIndex + item.item.length,
+                                item.index
+                              )
+                            }}
+                            <a-tooltip
+                              background-color="#3491FA"
+                              :content="
+                                getTipContent(messagenList.reference, index)
+                              "
+                            >
+                              <img
+                                style="width: 20px; height: 20px"
+                                :src="tipImage"
+                              />
+                            </a-tooltip>
+                            {{ breakContent.substring(item.index + 5) }}
+                          </span>
+                          <span v-else>
+                            {{
+                              breakContent.substring(
+                                item.preIndex + item.item.length,
+                                item.index
+                              )
+                            }}
+                            <a-tooltip
+                              background-color="#3491FA"
+                              :content="
+                                getTipContent(messagenList.reference, index)
+                              "
+                            >
+                              <img
+                                style="width: 20px; height: 20px"
+                                :src="tipImage"
+                              />
+                            </a-tooltip>
+                          </span>
+                        </div>
+                      </div>
+                      <div v-else>
+                        {{ breakContent }}
+                      </div>
                     </div>
                   </a-card>
                   <a-card v-else>
-                    <div
+                    <a-textarea
+                      readonly
+                      auto-size
+                      :default-value="chartText(sessionDetail.content)"
                       :class="{ chatItemAnswer: theme === 'light' }"
                       :style="{
                         backgroundColor:
@@ -146,9 +223,20 @@
                       }"
                       style="border: none"
                     >
-                      {{ sessionDetail.content }}
-                    </div>
+                    </a-textarea>
                   </a-card>
+                  <!-- <div class="prompt">
+                    <ul>
+                      <li class="prompt-item" @click="copyText('43234')">
+                        <span>
+                          344343klsdjkjksdjkjksdjk灏卞紑濮嬪ぇ瀹剁湅鏁版嵁搴撶櫥璁板崱鍙楁墦鍑诲嚡鎾掔櫥璁板崱鍙楁墦鍑诲嚡鎾掔櫥璁板崱鍙楁墦鍑诲嚡鎾掔殑43</span
+                        >
+                        <span style="margin-left: 20px">
+                          <icon-right />
+                        </span>
+                      </li>
+                    </ul>
+                  </div> -->
                 </template>
                 <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
                 <template #actions>
@@ -191,6 +279,7 @@
                   >
                     <icon-refresh /> 閲嶆柊鐢熸垚
                   </span>
+                  <!-- <span class="action"><icon-to-bottom />涓嬭浇 </span> -->
                 </template>
               </a-comment>
               <a-comment v-else-if="sessionDetail.role === 'last'">
@@ -456,6 +545,7 @@
   import docx from '@/views/dmx/knowledgeLib/components/docx.vue';
   import excel from '@/views/dmx/knowledgeLib/components/excel.vue';
   import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue';
+  import { is } from 'immutable';
 
   // const url = ref('../../assets/session/PDF.png');
 
@@ -539,13 +629,32 @@
     }
   };
 
-  const tipMatch = (session: any): any[] => {
+  const breakLine = (message: string): string[] => {
+    //鎸塡n鍒嗗壊瀛楃涓�
+    let arr = message.split('\n');
+    return arr;
+  };
+
+  const chartText = (message: string): string => {
+    //鍘婚櫎鎵�鏈夌殑#鍜�**
+    let arr = message.replace(/\*\*|\#\#\#/g, '');
+    return arr;
+  };
+
+  const tipMatch = (msg: string): any[] => {
     //match session.content涓殑##[0-9]$$鐨勭储寮�
+
     let indexs: any[] = [];
     let preTip = 0;
-    session.content.match(/##([0-9]+)\$\$/g)?.map((item) => {
-      let i = session.content.indexOf(item);
-      indexs.push({ index: i, item: item, preIndex: preTip });
+    let matches = msg.match(/##([0-9]+)\$\$/g);
+    matches?.map((item) => {
+      let i = msg.indexOf(item);
+      indexs.push({
+        index: i,
+        item: item,
+        preIndex: preTip,
+        len: matches.length,
+      });
       preTip = i;
     });
     return indexs;
@@ -659,6 +768,19 @@
     await toClipboard(text); //鍙傛暟涓鸿澶嶅埗鐨勬枃鏈�
   };
 
+  const isEdit = ref(false);
+  const edit = () => {
+    isEdit.value = !isEdit.value;
+  };
+  const cancelEdit = (val) => {
+    if (val == 1) {
+      isEdit.value = !isEdit.value;
+    } else {
+      //缂栬緫淇濆瓨
+      isEdit.value = !isEdit.value;
+    }
+  };
+
   const DialogList = async () => {
     const { code, data } = await getDialogListApi();
     if (code === 200) {
@@ -729,6 +851,7 @@
   // 鍙戦��
   const sentClick = () => {
     sendMessage('click');
+    uploaditemList.value = [];
   };
   // 閲嶆柊鐢熸垚
   const reGenerate = () => {
@@ -1089,6 +1212,28 @@
         }
       }
     }
+    .prompt {
+      ul {
+        margin: 0;
+        padding: 0;
+        display: flex;
+      }
+      ul > li {
+        list-style-type: none;
+      }
+      .prompt-item {
+        display: flex;
+        justify-content: space-between;
+        background-color: #fff;
+        cursor: pointer;
+        border-radius: 8px;
+        padding: 10px;
+        border: #e5e5e5;
+        &:hover {
+          background-color: #eee;
+        }
+      }
+    }
 
     .card-btn-1 {
       margin: 8px 15px;
@@ -1232,6 +1377,19 @@
         color: #333;
         margin-top: 4px;
       }
+      :deep(.arco-card-body) {
+        padding: 0;
+        border-radius: 10px;
+      }
+      :deep(.arco-textarea) {
+        padding-top: 10px !important;
+      }
+      :deep(.arco-comment-inner-content) {
+        border-radius: 10px;
+      }
+      :deep(.arco-card-bordered) {
+        border-radius: 10px;
+      }
 
       .icon-user-jpg {
         border: 1px solid #d9d9d9;

--
Gitblit v1.8.0