| | |
| | | <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; height: 50px" |
| | | 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> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ref } from 'vue' |
| | | import { Search } from '@element-plus/icons-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, |
| | |
| | | { |
| | | 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 = () => {} |
| | | const gotoPage = () => {} |
| | | 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; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .navBox { |
| | | .navItem { |
| | | display: inline-block; |
| | |
| | | line-height: 50px; |
| | | font-size: 16px; |
| | | cursor: pointer; |
| | | |
| | | &.active { |
| | | background: #144941; |
| | | color: #fff; |
| | |
| | | } |
| | | } |
| | | </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> |