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