Skip to content

Commit 0a70b4c

Browse files
perf: UI
1 parent 261a660 commit 0a70b4c

File tree

5 files changed

+45
-21
lines changed

5 files changed

+45
-21
lines changed

backend/apps/chat/task/llm.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
from apps.datasource.crud.datasource import get_table_schema
2323
from apps.datasource.models.datasource import CoreDatasource
2424
from apps.db.db import exec_sql
25-
from apps.system.crud.user import get_user_info
2625
from common.core.config import settings
2726
from common.core.deps import SessionDep, CurrentUser
2827

@@ -70,8 +69,7 @@ def __init__(self, session: SessionDep, current_user: CurrentUser, chat_question
7069
if ds:
7170
chat_question.db_schema = get_table_schema(session=self.session, ds=ds)
7271

73-
db_user = get_user_info(session=self.session, user_id=current_user.id)
74-
chat_question.lang = db_user.language
72+
chat_question.lang = current_user.language
7573

7674
self.ds = CoreDatasource(**ds.model_dump()) if ds else None
7775
self.chat_question = chat_question

backend/apps/system/api/user.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
from fastapi import APIRouter
2-
from apps.system.crud.user import get_db_user, get_user_info
2+
from apps.system.crud.user import get_db_user
33
from apps.system.models.user import UserModel
44
from apps.system.schemas.system_schema import PwdEditor, UserCreator, UserEditor, UserGrid, UserLanguage
55
from common.core.deps import CurrentUser, SessionDep
66
from common.core.pagination import Paginator
77
from common.core.schemas import PaginatedResponse, PaginationParams
88
from common.core.security import md5pwd, verify_md5pwd
9-
from common.utils.time import get_timestamp
109

1110
router = APIRouter(tags=["user"], prefix="/user")
1211

1312

1413
@router.get("/info")
1514
async def user_info(session: SessionDep, current_user: CurrentUser):
16-
db_user = get_user_info(session=session, user_id=current_user.id)
15+
db_user = get_db_user(session=session, user_id=current_user.id)
1716
if not db_user:
1817
return {"message": "User not found"}
1918
db_user.password = None

frontend/src/components/layout/Person.vue

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts" setup>
2-
import { ref } from 'vue'
2+
import { computed, ref } from 'vue'
33
import Default_avatar from '@/assets/svg/icon-member-default.svg'
44
import icon_admin_outlined from '@/assets/svg/icon_admin_outlined.svg'
55
import icon_maybe_outlined from '@/assets/svg/icon-maybe_outlined.svg'
@@ -12,16 +12,19 @@ import { useI18n } from 'vue-i18n'
1212
import PwdForm from './PwdForm.vue'
1313
import { useRouter } from 'vue-router'
1414
import { useUserStore } from '@/stores/user'
15+
import { userApi } from '@/api/auth'
1516
const router = useRouter()
1617
const userStore = useUserStore()
1718
const pwdFormRef = ref()
18-
const { t } = useI18n()
19+
const { t, locale } = useI18n()
1920
defineProps({
2021
collapse: { type: [Boolean], required: true },
2122
})
2223
23-
const name = ref('飞小致')
24-
const currentLanguage = ref('zh-CN')
24+
const name = computed(() => userStore.getName)
25+
const account = computed(() => userStore.getAccount)
26+
const currentLanguage = computed(() => userStore.getLanguage)
27+
const isAdmin = computed(() => userStore.getUid === '1')
2528
const emit = defineEmits(['selectPerson'])
2629
const dialogVisible = ref(false)
2730
const languageList = [
@@ -30,20 +33,25 @@ const languageList = [
3033
value: 'en',
3134
},
3235
{
33-
name: '简体中文',
36+
name: '中文',
3437
value: 'zh-CN',
35-
},
38+
} /* ,
3639
{
3740
name: '繁體中文',
3841
value: 'zh-CN',
39-
},
42+
}, */,
4043
]
4144
const handlePersonChange = () => {
4245
emit('selectPerson')
4346
}
4447
45-
const handleDefaultLanguageChange = (item: any) => {
46-
currentLanguage.value = item.value
48+
const changeLanguage = (lang: string) => {
49+
locale.value = lang
50+
userStore.setLanguage(lang)
51+
const param = {
52+
language: lang,
53+
}
54+
userApi.language(param)
4755
}
4856
4957
const openPwd = () => {
@@ -78,9 +86,9 @@ const logout = () => {
7886
<Default_avatar></Default_avatar>
7987
</el-icon>
8088
<div class="top">{{ name }}</div>
81-
<div class="bottom">feixaozhi</div>
89+
<div class="bottom">{{ account }}</div>
8290
</div>
83-
<div class="popover-item" @click="handlePersonChange">
91+
<div v-if="isAdmin" class="popover-item" @click="handlePersonChange">
8492
<el-icon size="16">
8593
<icon_admin_outlined></icon_admin_outlined>
8694
</el-icon>
@@ -110,7 +118,7 @@ const logout = () => {
110118
:key="ele.name"
111119
class="popover-item_language"
112120
:class="currentLanguage === ele.value && 'isActive'"
113-
@click="handleDefaultLanguageChange(ele)"
121+
@click="changeLanguage(ele.value)"
114122
>
115123
<div class="language-name">{{ ele.name }}</div>
116124
<el-icon size="16" class="done">
@@ -256,6 +264,12 @@ const logout = () => {
256264
padding-right: 8px;
257265
position: relative;
258266
cursor: pointer;
267+
&:hover {
268+
background-color: #1f23291a;
269+
}
270+
&:active {
271+
background-color: #1f232926;
272+
}
259273
.datasource-name {
260274
margin-left: 8px;
261275
}

frontend/src/router/watch.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ export const watchRouter = (router: any) => {
1818
next('/login')
1919
return
2020
}
21-
if (!wsCache.get('user.uid')) {
21+
if (!userStore.getUid) {
2222
await userStore.info()
2323
}
24+
/* if (!wsCache.get('user.uid')) {
25+
await userStore.info()
26+
} */
2427
if (to.path === '/') {
2528
next('/chat')
2629
return

frontend/src/stores/user.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const { wsCache } = useCache()
1010
interface UserState {
1111
token: string
1212
uid: string
13+
account: string
1314
name: string
1415
oid: string
1516
language: string
@@ -23,6 +24,7 @@ export const UserStore = defineStore('user', {
2324
return {
2425
token: '',
2526
uid: '',
27+
account: '',
2628
name: '',
2729
oid: '',
2830
language: 'zh-CN',
@@ -37,6 +39,9 @@ export const UserStore = defineStore('user', {
3739
getUid(): string {
3840
return this.uid
3941
},
42+
getAccount(): string {
43+
return this.account
44+
},
4045
getName(): string {
4146
return this.name
4247
},
@@ -67,7 +72,7 @@ export const UserStore = defineStore('user', {
6772
const res: any = await AuthApi.info()
6873
const res_data = res || {}
6974

70-
const keys = ['uid', 'name', 'oid', 'language', 'exp', 'time'] as const
75+
const keys = ['uid', 'account', 'name', 'oid', 'language', 'exp', 'time'] as const
7176

7277
keys.forEach((key) => {
7378
const dkey = key === 'uid' ? 'id' : key
@@ -98,6 +103,10 @@ export const UserStore = defineStore('user', {
98103
wsCache.set('user.uid', uid)
99104
this.uid = uid
100105
},
106+
setAccount(account: string) {
107+
wsCache.set('user.account', account)
108+
this.account = account
109+
},
101110
setName(name: string) {
102111
wsCache.set('user.name', name)
103112
this.name = name
@@ -118,8 +127,9 @@ export const UserStore = defineStore('user', {
118127
// locale.setLang(language)
119128
},
120129
clear() {
121-
const keys: string[] = ['token', 'uid', 'name', 'oid', 'language', 'exp', 'time']
130+
const keys: string[] = ['token', 'uid', 'account', 'name', 'oid', 'language', 'exp', 'time']
122131
keys.forEach((key) => wsCache.delete('user.' + key))
132+
this.$reset()
123133
},
124134
},
125135
})

0 commit comments

Comments
 (0)