From 2a9112650755dc3c98e6806f8eec48bce7741c20 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 06 六月 2025 17:28:10 +0800 Subject: [PATCH] 1.样式根据页面宽度修改 2.系统标题修改 --- src/layout/components/Navbar.vue | 108 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 67 insertions(+), 41 deletions(-) diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index cab43c5..b6312ca 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -1,35 +1,18 @@ <template> <div class="navbar"> - <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> - <breadcrumb v-if="!settingsStore.topNav" id="breadcrumb-container" class="breadcrumb-container" /> - <top-nav v-if="settingsStore.topNav" id="topmenu-container" class="topmenu-container" /> - +<!-- <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />--> +<!-- <breadcrumb v-if="!settingsStore.topNav" id="breadcrumb-container" class="breadcrumb-container" />--> + <div v-if="sidebar.hide"> + <top-nav id="topmenu-container" class="topmenu-container" /> + </div> + <div class="logo" v-if="!sidebar.hide"> + <img src="@/assets/logo/logo.png" alt=""/> + </div> <div class="right-menu"> <template v-if="appStore.device !== 'mobile'"> <header-search id="header-search" class="right-menu-item" /> - - <el-tooltip content="婧愮爜鍦板潃" effect="dark" placement="bottom"> - <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /> - </el-tooltip> - - <el-tooltip content="鏂囨。鍦板潃" effect="dark" placement="bottom"> - <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> - </el-tooltip> - <screenfull id="screenfull" class="right-menu-item hover-effect" /> - - <el-tooltip content="涓婚妯″紡" effect="dark" placement="bottom"> - <div class="right-menu-item hover-effect theme-switch-wrapper" @click="toggleTheme"> - <svg-icon v-if="settingsStore.isDark" icon-class="sunny" /> - <svg-icon v-if="!settingsStore.isDark" icon-class="moon" /> - </div> - </el-tooltip> - - <el-tooltip content="甯冨眬澶у皬" effect="dark" placement="bottom"> - <size-select id="size-select" class="right-menu-item hover-effect" /> - </el-tooltip> </template> - <el-dropdown @command="handleCommand" class="avatar-container right-menu-item hover-effect" trigger="hover"> <div class="avatar-wrapper"> <img :src="userStore.avatar" class="user-avatar" /> @@ -40,20 +23,24 @@ <router-link to="/user/profile"> <el-dropdown-item>涓汉涓績</el-dropdown-item> </router-link> +<!-- <el-dropdown-item command="setLayout" v-if="settingsStore.showSettings">--> +<!-- <span>甯冨眬璁剧疆</span>--> +<!-- </el-dropdown-item>--> <el-dropdown-item divided command="logout"> <span>閫�鍑虹櫥褰�</span> </el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> - <div class="right-menu-item hover-effect setting" @click="setLayout" v-if="settingsStore.showSettings"> - <svg-icon icon-class="more-up" /> - </div> +<!-- <div class="right-menu-item hover-effect setting" @click="setLayout" v-if="settingsStore.showSettings">--> +<!-- <svg-icon icon-class="more-up" />--> +<!-- </div>--> </div> </div> </template> <script setup> +import {useWindowSize} from '@vueuse/core' import { ElMessageBox } from 'element-plus' import Breadcrumb from '@/components/Breadcrumb' import TopNav from '@/components/TopNav' @@ -66,11 +53,47 @@ import useAppStore from '@/store/modules/app' import useUserStore from '@/store/modules/user' import useSettingsStore from '@/store/modules/settings' +const sidebar = computed(() => useAppStore().sidebar) +const device = computed(() => useAppStore().device) +import Sidebar from "@/layout/components/Sidebar/index.vue"; const appStore = useAppStore() const userStore = useUserStore() const settingsStore = useSettingsStore() +const isShowTop = ref(false) +const { width, height } = useWindowSize() +const WIDTH = 992 // refer to Bootstrap's responsive design + +watch(() => device.value, () => { + if (device.value === 'mobile' && sidebar.value.opened) { + useAppStore().closeSideBar({ withoutAnimation: false }) + } +}) + +watchEffect(() => { + if (width.value - 1 < WIDTH) { + useAppStore().toggleDevice('mobile') + appStore.toggleSideBarHide(true) + useAppStore().closeSideBar({ withoutAnimation: true }) + } else { + useAppStore().toggleDevice('desktop') + appStore.toggleSideBarHide(false) + } +}) +// 鏍规嵁绐楀彛瀹藉害璁剧疆 isShowTop +// const handleResize = () => { +// settingsStore.topNav = !(window.innerWidth < 992) +// } +// +// onMounted(() => { +// handleResize() // 鍒濆鍒ゆ柇涓�娆� +// window.addEventListener('resize', handleResize) +// }) +// +// onUnmounted(() => { +// window.removeEventListener('resize', handleResize) +// }) function toggleSideBar() { appStore.toggleSideBar() } @@ -114,20 +137,24 @@ .navbar { height: 50px; overflow: hidden; - position: relative; + position: fixed; /* 灏嗗ご閮ㄥ浐瀹� */ + top: 0; /* 鍦ㄩ《閮ㄥ浐瀹� */ + width: 100%; /* 瀹藉害100%锛岃鐩栨暣涓鍙� */ + //background-color: #f8f9fa; /* 璁剧疆鑳屾櫙棰滆壊锛屼互渚挎洿鏄庢樉鍦扮湅鍒版晥鏋� */ + z-index: 1000; /* 纭繚澶撮儴鍦ㄥ叾浠栧唴瀹逛箣涓� */ background: var(--navbar-bg); box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); - - .hamburger-container { - line-height: 46px; - height: 100%; - float: left; - cursor: pointer; - transition: background 0.3s; - -webkit-tap-highlight-color: transparent; - - &:hover { - background: rgba(0, 0, 0, 0.025); + display: flex; + justify-content: space-between; + padding: 0 20px; + + .logo { + height: 50px; + line-height: 50px; + img { + cursor: pointer; + width: 146px; + height: 46px; } } @@ -137,7 +164,6 @@ .topmenu-container { position: absolute; - left: 50px; } .errLog-container { -- Gitblit v1.9.3