From 2627bea177b22bc803926bba5a29518bfb6ee0eb Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期六, 24 八月 2024 17:54:54 +0800
Subject: [PATCH] bug fix

---
 /dev/null                          |  120 ------------------------------
 src/views/authority/role/index.vue |   10 +
 src/views/sessionManager/index.vue |   87 +++++++++++++++++----
 3 files changed, 76 insertions(+), 141 deletions(-)

diff --git a/src/store/modules/user/index.ts b/src/store/modules/user/index.ts
deleted file mode 100644
index 4c508a2..0000000
--- a/src/store/modules/user/index.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-import { defineStore } from 'pinia';
-import {
-  login as userLogin,
-  logout as userLogout,
-  getUserInfo,
-  LoginData,
-} from '@/api/user';
-import { setToken, clearToken, setUserInfo, setUserResources, clearUserResources } from "@/utils/auth";
-import { removeRouteListener } from '@/utils/route-listener';
-import { UserState } from './types';
-import useAppStore from '../app';
-import router from "@/router";
-
-
-const useUserStore = defineStore('user', {
-  state: (): UserState => ({
-    name: undefined,
-    avatar: undefined,
-    job: undefined,
-    organization: undefined,
-    location: undefined,
-    email: undefined,
-    introduction: undefined,
-    personalWebsite: undefined,
-    jobName: undefined,
-    organizationName: undefined,
-    locationName: undefined,
-    phone: undefined,
-    registrationDate: undefined,
-    accountId: undefined,
-    certification: undefined,
-    role: '',
-    resources:undefined,
-    hrefUrl:undefined
-  }),
-
-  getters: {
-    userInfo(state: UserState): UserState {
-      return { ...state };
-    },
-  },
-
-  actions: {
-    switchRoles() {
-      return new Promise((resolve) => {
-        this.role = this.role === 'user' ? 'admin' : 'user';
-        resolve(this.role);
-      });
-    },
-    // Set user's information
-    setInfo(partial: Partial<UserState>) {
-      this.$patch(partial);
-    },
-
-    // Reset user's information
-    resetInfo() {
-      clearUserResources()
-      this.$reset();
-    },
-
-    // Get user's information
-    async info() {
-      const res = await getUserInfo();
-
-      this.setInfo(res.data);
-    },
-
-    // Login
-    async login(loginForm: LoginData):string {
-      try {
-        const res = await userLogin(loginForm);
-
-        setToken(res.data.access_token);
-        const userInfo = {
-          avatar: res.data.avatar,
-          name: res.data.nickname,
-          email: res.data.email,
-        };
-     
-        if(res.data?.roles.length>0)
-            this.resources=res.data.roles[0].resources;
-            setUserInfo(JSON.stringify(userInfo));
-            setUserResources(JSON.stringify(this.resources))
-        for (const r of this.resources) {
-          if (r.menuType == 0) {
-            return r.component
-          }
-        }
-      } catch (err) {
-        clearToken();
-        throw err;
-      }
-    },
-    logoutCallBack() {
-      const appStore = useAppStore();
-      this.resetInfo();
-      clearToken();
-      removeRouteListener();
-      appStore.clearServerMenu();
-    },
-    // Logout
-    async logout() {
-      try {
-        await userLogout();
-      } finally {
-        router.push({
-          name: "login",
-        });
-        this.logoutCallBack();
-      }
-    },
-
-
-    getHreFurl(url: string) {
-      this.hrefUrl=url
-    },
-  },
-});
-
-export default useUserStore;
diff --git a/src/views/authority/role/index.vue b/src/views/authority/role/index.vue
index f049890..9f38faf 100644
--- a/src/views/authority/role/index.vue
+++ b/src/views/authority/role/index.vue
@@ -285,7 +285,7 @@
   import Authheader from '@/views/authority/components/authheader.vue';
   import router from "@/router";
   import { queryCanvasList } from "@/api/Agent";
-  import { getUserResources } from "@/utils/auth";
+  import { getUserInfo, getUserResources } from "@/utils/auth";
   import { forEach } from "lodash";
 
   let treeDataMenu = ref([]);
@@ -597,6 +597,7 @@
       checkStrictlyKnowledge.value = [];
       checkedKeysKnowledge.value = [];
       checkStrictlyDialog.value = [];
+      checkStrictlyAgent.value = [];
       checkedKeysDialog.value = [];
       selectRole.value = record;
       if (record.resources) {
@@ -694,8 +695,11 @@
 
   const MenuData = async (key) => {
     await ResourceList(key).then((res) => {
-      let newTree=[]
-      removeChild(res.rows,newTree)
+      let newTree = [];
+      let u =JSON.parse(getUserInfo());
+      if (u.role != "admin") {
+        removeChild(res.rows, newTree);
+      }
       treeDataMenu.value = [...res.rows];
     });
   };
diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 96bc8bb..6654627 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -92,25 +92,40 @@
                   />
                 </template>
                 <template #content>
-                  <!--                  <a-card :class="{ chatItemAnswer: theme === 'light' }">-->
-                  <!--                    <div-->
-                  <!--                      :class="{ light: theme === 'light' }"-->
-                  <!--                      v-html="sessionDetail.content.replace(/\n/g, '<br/>')"-->
-                  <!--                    >-->
-                  <!--                    </div>-->
-                  <!--                  </a-card>-->
-                  <a-textarea
-                    readonly
-                    auto-size
-                    v-model="sessionDetail.content"
-                    :class="{ chatItemAnswer: theme === 'light' }"
-                    :style="{
+                  <a-card v-if="isExistTip(sessionDetail.content)">
+                    <div  :class="{ chatItemAnswer: theme === 'light' }"
+                      :style="{backgroundColor: theme === 'light' ? '#ffffff' : '#000000'}" style="border: none;display: inline;"  v-for="(item,tipIndex) in tipMatch(sessionDetail)"
+                    >
+                      <span v-if="tipIndex == 0">
+                        {{ sessionDetail.content.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>
+                        {{ 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>
+
+                    </div>
+                  </a-card>
+                  <a-card  v-else>
+                    <div :class="{ chatItemAnswer: theme === 'light' }"
+                         :style="{
                       backgroundColor:
                         theme === 'light' ? '#ffffff' : '#000000',
-                    }"
-                    style="border: none"
-                  >
-                  </a-textarea>
+                    }" style="border: none">
+                      {{ sessionDetail.content }}
+                    </div>
+                  </a-card>
                 </template>
                 <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
                 <template #actions>
@@ -407,6 +422,8 @@
   import pdfImg3 from '@/assets/session/execl.png';
   import pdfImg4 from '@/assets/session/icon-txt.png';
   import pdfImg5 from '@/assets/session/txt.png';
+  import tipImage from '@/assets/session/tip.png';
+  import { number } from "@intlify/core-base";
 
   // const url = ref('../../assets/session/PDF.png');
 
@@ -476,8 +493,28 @@
     }
   };
   let dataItem = [];
-  const getTxt = (data, role, message, index) => {
+  const isExistTip=(message:string):boolean=>{
     if (/##[0-9]\$\$/.test(message)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  const tipMatch = (session: any): 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 });
+      preTip = i;
+    });
+    return indexs;
+  }
+
+  const getTxt = (data, role, message, index) => {
+    if (isExistTip(message)) {
       if (role == 'assistant' && index) {
         let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0;
         dataItem = data[i].doc_aggs;
@@ -489,6 +526,20 @@
     return dataItem;
   };
 
+  const getTipContent = (data, index): string => {
+    let maxSimilarityContent = "";
+    let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0;
+    let maxSimilarity = 0;
+    data[i].chunks.forEach((chunk) => {
+        if (chunk.similarity > maxSimilarity) {
+          maxSimilarity = chunk.similarity;
+          maxSimilarityContent = chunk.content_with_weight;
+        }
+      }
+    );
+    return maxSimilarityContent;
+  };
+
   const clickHref = (item) => {
     // return Message.warning('鏆傛棤娉曟煡鐪�');
     // window.open(`/api/v1/document/get/${item.doc_id}`, '_blank');

--
Gitblit v1.8.0