123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- <template>
- <div class="header">
- <!-- 折叠按钮 -->
- <div class="header-left">
- <img class="logo" src="../assets/img/logo.svg" alt="" />
- <div class="web-title">{{ $t('kingCasino') }}</div>
- <div class="collapse-btn" @click="collapseChage">
- <el-icon v-if="sidebar.collapse">
- <Expand />
- </el-icon>
- <el-icon v-else>
- <Fold />
- </el-icon>
- </div>
- </div>
- <div class="header-right">
- <div class="header-user-con">
- <!-- <div class="btn-icon" @click="router.push('/theme')">
- <i class="el-icon-lx-skin"></i>
- </div> -->
- <!-- <div class="btn-icon" @click="router.push('/ucenter')">
- <el-tooltip
- effect="dark"
- :content="message ? `有${message}条未读消息` : `消息中心`"
- placement="bottom"
- >
- <i class="el-icon-lx-notice"></i>
- </el-tooltip>
- <span class="btn-bell-badge" v-if="message"></span>
- </div> -->
- <div class="btn-icon" @click="setFullScreen">
-
- <i class="el-icon-lx-full"></i>
- </div>
- <div class="btn-icon" @click="setLanguage">
- <img src="../assets/img/lang.svg" style="width: 20px;"/>
- </div>
- <!-- 用户头像 -->
- <el-avatar class="user-avator" :size="30" :src="userInfo.icon || imgurl" />
- <!-- 用户名下拉菜单 -->
- <el-dropdown class="user-name" trigger="click" @command="handleCommand">
- <span class="el-dropdown-link">
- {{ userInfo.nickName}}
- <el-icon class="el-icon--right">
- <arrow-down />
- </el-icon>
- </span>
- <template #dropdown>
- <el-dropdown-menu>
- <el-dropdown-item command="password">{{$t('passwordSetting')}}</el-dropdown-item>
- <el-dropdown-item divided command="loginout">{{$t('loginout')}}</el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- </div>
- </div>
- </div>
- </template>
- <script setup>
- import { onMounted, ref } from 'vue';
- import { useSidebarStore } from '../store/sidebar';
- import { useRouter } from 'vue-router';
- import imgurl from '../assets/img/logo.svg';
- import request from '@/utils/request';
- import { userInfoStore } from '../store/userInfo';
- import { useI18n } from 'vue-i18n';
- const { locale } = useI18n()
- const currentLang = ref(locale.value);
- const userStore = userInfoStore();
- const userInfo = ref({})
- const sidebar = useSidebarStore();
- // 侧边栏折叠
- const collapseChage = () => {
- sidebar.handleCollapse();
- };
- onMounted(() => {
- if (localStorage.getItem('userInfo')) {
- userInfo.value = JSON.parse(localStorage.getItem('userInfo'))
- }
- if (document.body.clientWidth < 1500) {
- collapseChage();
- }
- });
- // 用户名下拉菜单选择事件
- const router = useRouter();
- const loginout = async () => {
- console.log(userInfo.value.nickName, 'userInfo');
-
- const res = await request('post', 'admin/user/logout',{username:userInfo.value.nickName})
- if (res.code === 200) {
- userStore.clearUserInfo();
- router.push('/login');
- }
- };
- const handleCommand = (command) => {
- if (command == 'loginout') {
- loginout();
- } else if (command == 'password') {
- router.push('/password');
- }
- };
- const setFullScreen = () => {
- if (document.fullscreenElement) {
- document.exitFullscreen();
- } else {
- document.body.requestFullscreen.call(document.body);
- }
- };
- const setLanguage = () => {
- console.log(currentLang.value, 'currentLang');
- console.log(document.title, 'document.title');
-
- const newLang = currentLang.value === 'es' ? 'en' : 'es';
- locale.value = newLang;
- currentLang.value = newLang;
- };
- </script>
- <style scoped>
- .header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- box-sizing: border-box;
- width: 100%;
- height: 70px;
- color: var(--header-text-color);
- background-color: var(--header-bg-color);
- border-bottom: 1px solid #ddd;
- }
- .header-left {
- display: flex;
- align-items: center;
- padding-left: 20px;
- height: 100%;
- }
- .logo {
- width: 35px;
- }
- .web-title {
- margin: 0 40px 0 10px;
- font-size: 22px;
- }
- .collapse-btn {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100%;
- padding: 0 10px;
- cursor: pointer;
- opacity: 0.8;
- font-size: 22px;
- }
- .collapse-btn:hover {
- opacity: 1;
- }
- .header-right {
- float: right;
- padding-right: 50px;
- }
- .header-user-con {
- display: flex;
- height: 70px;
- align-items: center;
- }
- .btn-fullscreen {
- transform: rotate(45deg);
- margin-right: 5px;
- font-size: 24px;
- }
- .btn-icon {
- position: relative;
- width: 30px;
- height: 30px;
- text-align: center;
- cursor: pointer;
- display: flex;
- align-items: center;
- color: var(--header-text-color);
- margin: 0 5px;
- font-size: 20px;
- }
- .btn-bell-badge {
- position: absolute;
- right: 4px;
- top: 0px;
- width: 8px;
- height: 8px;
- border-radius: 4px;
- background: #f56c6c;
- color: var(--header-text-color);
- }
- .user-avator {
- margin: 0 10px 0 20px;
- }
- .el-dropdown-link {
- color: var(--header-text-color);
- cursor: pointer;
- display: flex;
- align-items: center;
- }
- .el-dropdown-menu__item {
- text-align: center;
- }
- </style>
|