From 49a435043b0b1a289a24606e35253365d7ab3956 Mon Sep 17 00:00:00 2001 From: QYF-GitLab1 <1940665526@qq.com> Date: 星期一, 25 八月 2025 17:51:57 +0800 Subject: [PATCH] 首页、及教学出版样式修改 --- src/layout/components/headerPage.vue | 228 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 150 insertions(+), 78 deletions(-) diff --git a/src/layout/components/headerPage.vue b/src/layout/components/headerPage.vue index c1664cb..1bb0e03 100644 --- a/src/layout/components/headerPage.vue +++ b/src/layout/components/headerPage.vue @@ -2,79 +2,57 @@ <div class="pageHeader"> <div class="contentBox logoBox"> <div class="logo"> - <img - @click=" - () => { - $router.push({ - path: '/home', - }) - } - " - src="@/assets/images/xiehe/home/Group_303.png" - /> + <img @click=" + () => { + $router.push({ + path: '/home', + }) + } + " src="@/assets/images/xiehe/home/logo.png" /> </div> <div class="searchBox" v-show="!hideSerch"> - <el-input - style="width: 500px" - placeholder="璇疯緭鍏ュ唴瀹�" - @change="gotoSearch" - v-model="searchKey" - :suffix-icon="Search" - > + <el-input style="width: 500px; height: 36px" placeholder="璇疯緭鍏ュ叧閿瘝/涔﹀悕/ISBN/浣滆��" v-model="searchKey" :suffix-icon="Search" + @keyup.enter="gotoSearch"> </el-input> <div class="loginInfoBox"> - <div v-if="!userInfo" class="loginBtnBox"> - <a - @click=" - () => { - $router.push({ - path: '/register', - }) - } - " - >娉ㄥ唽</a - > - | - <a - @click=" - () => { - $router.push({ - path: '/login', - query: { - redirectPath: $route.fullPath, - }, - }) - } - " - >鐧诲綍</a - > + <div v-if="!userInfo" class="loginBtnBox" style="width: 200px"> + <div class="loginBtn" @click=" + () => { + loginRef.logIn() + } + "> + <el-icon style="margin-right: 5px;"> + <UserFilled /> + </el-icon> + 娉ㄥ唽 / 鐧诲綍 + </div> </div> <div v-else class="userInfoBox"> <el-dropdown @command="handleCommand"> - <span style="cursor: pointer">娆㈣繋鎮紝{{ userInfo.name }}锛�</span> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item icon="el-icon-user" command="gotoPersonalCenter" - >涓汉涓績</el-dropdown-item - > - <el-dropdown-item icon="el-icon-switch-button" command="logout" - >閫�鍑虹櫥褰�</el-dropdown-item - > - </el-dropdown-menu> + <span class="el-dropdown-link"> + 娆㈣繋鎮紝{{ userStore?.userInfo.name }}锛� + <el-icon class="el-icon--right"> + <arrow-down /> + </el-icon> + </span> + <template #dropdown> + <el-dropdown-menu> + <el-dropdown-item :icon="Avatar" command="gotoPersonalCenter">涓汉涓績</el-dropdown-item> + <el-dropdown-item :icon="SwitchButton" command="logout">閫�鍑虹櫥褰�</el-dropdown-item> + </el-dropdown-menu> + </template> </el-dropdown> </div> </div> </div> </div> + <login ref="loginRef"></login> <div class="contentBox navBox" v-show="!hideNav"> - <div - :class="{ - navItem: true, - active: $route.fullPath.indexOf(item.path) > -1, - }" - v-for="(item, index) in navData" - :key="index" - @click="gotoPage(item)" - > + <div :class="{ + navItem: true, + // active: $route.fullPath.indexOf(item.path) > -1, + active: item.pathList.findIndex((citem) => citem == $route.path) > -1, + }" v-for="(item, index) in navData" :key="index" @click="gotoPage(item)"> {{ item.name }} </div> </div> @@ -82,8 +60,18 @@ </template> <script setup lang="ts"> -import { ref } from 'vue' +import login from './login.vue' +import { onMounted, provide, ref } from 'vue' +import { Search, Avatar, SwitchButton } from '@element-plus/icons-vue' +import { useUserStore } from '@/store' +import { useRouter, useRoute } from 'vue-router' +import { ElMessage } from 'element-plus' +const userStore = useUserStore() +const router = useRouter() +const route = useRoute() + +const loginRef = ref() const props = defineProps({ hideSerch: { type: Boolean, @@ -97,59 +85,135 @@ let searchKey = ref('') let userInfo = ref('') +const navData = ref([ + { + name: '棣栭〉', + path: '/home', + pathList: ['/home', '/search'], + }, + { + name: '鏁欒偛鍑虹増', + path: '/bookStore', + pathList: ['/bookStore', '/bookdetail'], + }, + { + name: '璇昏�呮湇鍔�', + path: '/teachingServices', + pathList: ['/teachingServices'], + }, + { + name: '鍏充簬鎴戜滑', + path: '/aboutUs', + pathList: ['/aboutUs'], + }, +]) -const gotoSearch = () => {} -const handleCommand = () => {} +onMounted(() => { + userInfo.value = userStore.userInfo + console.log(userInfo.value, 'userInfo') + console.log(route, 'route') +}) + +const gotoSearch = () => { + router.push({ + path: '/search', + query: { + key: searchKey.value, + }, + }) +} +const handleCommand = (item) => { + if (item === 'gotoPersonalCenter') { + router.push({ + path: '/personalCenter', + }) + } + if (item === 'logout') { + localStorage.clear() + userStore.delteUserInfo() + userInfo.value = null + router.push({ + path: '/home', + }) + } +} +const gotoPage = (item) => { + if (item.path === '/teachingServices') { + ElMessage({ + message: '寤鸿涓�...', + type: 'warning', + }) + } else { + router.push(item.path) + } +} </script> <style lang="less" scoped> .pageHeader { width: 100%; background-color: #fff; - border-bottom: 1px solid #e6e6e6; + .topBar { background: #e6e6e6; color: #808080; overflow: hidden; padding: 14px 0; + p { float: left; } - .loginInfoBox { - float: right; - .loginBtnBox { - a { - cursor: pointer; - text-decoration: none; - color: inherit; - margin: 0 4px; - } - } + } + + .loginInfoBox { + width: 200px; + margin-left: 20px; + + .loginBtn { + width: 125px; + background-color: #144941; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + padding: 12px 0; + border-radius: 20px; + color: #ffffff; + cursor: pointer; } } + .logoBox { padding: 25px 0; overflow: hidden; - max-width: 1200px !important; + max-width: 1369px !important; + display: flex; + align-items: center; + justify-content: space-between; + .logo { float: left; height: 66px; + img { - height: 100%; + width: 100%; cursor: pointer; } } + .searchBox { width: 670px; float: right; padding-right: 10px; - line-height: 66px; display: flex; justify-content: space-between; + align-items: center; + .searchItem { width: 120px; vertical-align: initial; } + .searchBtn { width: auto; background: #144941; @@ -159,6 +223,7 @@ } } } + .navBox { .navItem { display: inline-block; @@ -168,6 +233,7 @@ line-height: 50px; font-size: 16px; cursor: pointer; + &.active { background: #144941; color: #fff; @@ -176,9 +242,15 @@ } } </style> -<style> +<style scoped> .pageHeader .searchBox .el-input-group__prepend { background: #fff; color: #444; } + +::v-deep(.el-input__wrapper) { + border-radius: 50px !important; + height: 36px; + line-height: 36px; +} </style> -- Gitblit v1.9.1