11<script lang="ts" setup>
2- import { ref } from ' vue'
2+ import { computed , ref } from ' vue'
33import Default_avatar from ' @/assets/svg/icon-member-default.svg'
44import icon_admin_outlined from ' @/assets/svg/icon_admin_outlined.svg'
55import icon_maybe_outlined from ' @/assets/svg/icon-maybe_outlined.svg'
@@ -12,16 +12,19 @@ import { useI18n } from 'vue-i18n'
1212import PwdForm from ' ./PwdForm.vue'
1313import { useRouter } from ' vue-router'
1414import { useUserStore } from ' @/stores/user'
15+ import { userApi } from ' @/api/auth'
1516const router = useRouter ()
1617const userStore = useUserStore ()
1718const pwdFormRef = ref ()
18- const { t } = useI18n ()
19+ const { t, locale } = useI18n ()
1920defineProps ({
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' )
2528const emit = defineEmits ([' selectPerson' ])
2629const dialogVisible = ref (false )
2730const 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]
4144const 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
4957const 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 }
0 commit comments