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