吴雨瞳添加了注释

master
wyt 4 months ago
parent 73009e5a2a
commit 78cf4006bc

@ -1,22 +1,32 @@
<template>
<div>
<!-- 导航栏容器 -->
<div class="nav-bar">
<!-- 汉堡菜单按钮点击触发侧边栏折叠/展开 -->
<div class="hambuger-container" @click="trigger">
<i :class="isFold" />
</div>
<!-- 面包屑导航组件 -->
<el-breadcrumb>
<el-breadcrumb-item v-for="item of breadcrumbs" :key="item.path">
<!-- 有重定向的面包屑项仅显示文本 -->
<span v-if="item.redirect">{{ item.name }}</span>
<!-- 无重定向的面包屑项显示为路由链接 -->
<router-link v-else :to="item.path">{{ item.name }}</router-link>
</el-breadcrumb-item>
</el-breadcrumb>
<!-- 右侧功能菜单区 -->
<div class="right-menu">
<!-- 全屏切换按钮 -->
<div class="screen-full" @click="fullScreen">
<i class="iconfont el-icon-myicwindowzoom48px" />
</div>
<!-- 用户下拉菜单 -->
<el-dropdown @command="handleCommand">
<!-- 用户头像从store中获取用户信息 -->
<el-avatar :size="40" :src="this.$store.state.userInfo.avatar" />
<i class="el-icon-caret-bottom" />
<!-- 下拉菜单内容 -->
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="setting"> <i class="el-icon-s-custom" />个人中心 </el-dropdown-item>
<el-dropdown-item command="logout" divided>
@ -26,70 +36,97 @@
</el-dropdown>
</div>
</div>
<!-- 标签页容器 -->
<div class="tabs-view-container">
<div class="tabs-wrapper">
<!-- 循环渲染标签页列表从store中获取 -->
<span :class="isActive(item)" v-for="item of this.$store.state.tabList" :key="item.path" @click="goTo(item)">
{{ item.name }}
<!-- 非首页标签显示关闭按钮点击停止事件冒泡并移除标签 -->
<i class="el-icon-close" v-if="item.path != '/'" @click.stop="removeTab(item)" />
</span>
</div>
<!-- 全部关闭按钮 -->
<div class="tabs-close-item" style="float: right" @click="closeAllTab"></div>
</div>
</div>
</template>
<script>
//
import { resetRouter } from '@/router'
export default {
//
created() {
// name
let matched = this.$route.matched.filter((item) => item.name)
const first = matched[0]
//
if (first && first.name !== '首页') {
matched = [{ path: '/', name: '首页' }].concat(matched)
}
//
this.breadcrumbs = matched
//
this.$store.commit('saveTab', this.$route)
},
data: function () {
return {
isSearch: false,
fullscreen: false,
breadcrumbs: []
isSearch: false, //
fullscreen: false, //
breadcrumbs: [] //
}
},
methods: {
//
goTo(tab) {
this.$router.push({ path: tab.path })
},
//
removeTab(tab) {
// storeremoveTab
this.$store.commit('removeTab', tab)
//
if (tab.path == this.$route.path) {
var tabList = this.$store.state.tabList
this.$router.push({ path: tabList[tabList.length - 1].path })
}
},
// /
trigger() {
this.$store.commit('trigger')
},
//
handleCommand(command) {
//
if (command == 'setting') {
this.$router.push({ path: '/setting' })
}
// 退
if (command == 'logout') {
this.axios.post('/api/users/logout').then(({ data }) => {
//
this.$store.commit('logout')
//
this.$store.commit('resetTab')
//
resetRouter()
//
this.$router.push({ path: '/login' })
})
}
},
//
closeAllTab() {
// storeresetTab
this.$store.commit('resetTab')
//
this.$router.push({ path: '/' })
},
//
fullScreen() {
let element = document.documentElement
// 退
if (this.fullscreen) {
if (document.exitFullscreen) {
document.exitFullscreen()
@ -101,6 +138,7 @@ export default {
document.msExitFullscreen()
}
} else {
//
if (element.requestFullscreen) {
element.requestFullscreen()
} else if (element.webkitRequestFullScreen) {
@ -111,10 +149,12 @@ export default {
element.msRequestFullscreen()
}
}
//
this.fullscreen = !this.fullscreen
}
},
computed: {
//
isActive() {
return function (tab) {
if (tab.path == this.$route.path) {
@ -123,6 +163,7 @@ export default {
return 'tabs-view-item'
}
},
//
isFold() {
return this.$store.state.collapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'
}
@ -233,6 +274,7 @@ export default {
margin-right: 1rem;
font-size: 1.25rem;
}
/* 自定义滚动条样式 */
*::-webkit-scrollbar {
width: 0.5rem;
height: 6px;
@ -241,4 +283,4 @@ export default {
border-radius: 0.5rem;
background-color: rgba(144, 147, 153, 0.3);
}
</style>
</style>
Loading…
Cancel
Save