<template> <el-container> <el-header> <el-menu mode="horizontal" text-color="#fff" background-color="rgba(54,25,88,0.9)" active-text-color="rgba(54,25,88,1.0)" > <el-menu-item data-route="/" index="1"> <el-avatar size="small">Ta</el-avatar> <span style="margin-left:5px">ThinkAdmin For HTML</span> </el-menu-item> <el-sub-menu index="2"> <template #title>Workspace</template> <el-menu-item index="2-1">item one</el-menu-item> <el-menu-item index="2-2">item two</el-menu-item> <el-menu-item index="2-3">item three</el-menu-item> </el-sub-menu> <el-menu-item index="3">Info</el-menu-item> <el-menu-item index="4">Orders</el-menu-item> <el-sub-menu index="5"> <template #title> <el-avatar size="small">U</el-avatar> <span style="margin-left:5px">系统管理员</span> </template> <el-menu-item index="2-1">个人中心</el-menu-item> <el-menu-item index="2-2">安全设置</el-menu-item> <el-menu-item index="2-3">清空缓存</el-menu-item> <el-menu-item index="2-4">退出登录</el-menu-item> </el-sub-menu> </el-menu> </el-header> <el-container> <el-aside> <el-tabs tab-position="left"> <el-tab-pane v-for="menu in menus"> <template #label> <el-tooltip :content="menu.title" effect="dark" placement="right"> <div v-text="menu.name"></div> </el-tooltip> </template> <h5 v-text="menu.title"></h5> <el-menu :open="1"> <el-sub-menu index="1"> <template #title> <el-icon> <location></location> </el-icon> <span>Navigator One</span> </template> <el-menu-item index="1-1" data-route="/static/template/pages/one.vue">item one route</el-menu-item> <el-menu-item index="1-2" data-route="/static/template/pages/two.vue">item two route</el-menu-item> <el-menu-item index="1-3" data-route="/static/template/pages/thr.vue">item Three route</el-menu-item> </el-sub-menu> <el-menu-item index="2" data-route="/static/template/pages/two.vue"> <el-icon> <aim></aim> </el-icon> <span>Navigator Two</span> </el-menu-item> <el-menu-item index="3" data-route="/static/template/pages/thr.vue"> <el-icon> <document></document> </el-icon> <span>Navigator Three</span> </el-menu-item> <el-menu-item index="4" data-route="/static/template/pages/four.vue"> <el-icon> <setting></setting> </el-icon> <span>Navigator Four</span> </el-menu-item> </el-menu> </el-tab-pane> </el-tabs> </el-aside> <el-container> <el-main> <router-view></router-view> </el-main> <el-footer>©版权所有 2014-2021 ThinkAdmin</el-footer> </el-container> </el-container> </el-container> </template> <style lang="less"> html, body { margin: 0; height: 100%; padding: 0; display: block; } body > .el-container { height: 100%; > .el-header { margin: 0; padding: 0; user-select: none; -ms-user-select: none; -moz-user-select: none; .el-menu { border-bottom: 0; --el-menu-item-height: 60px; .el-menu-item { border-bottom: 0; &:not(.is-disabled) { &:first-child { width: 280px; padding: 0; font-weight: bold; &:hover, &:active, &:focus, &.is-active { color: #FFF !important; background: rgba(0, 0, 0, 0) !important; } } &:hover { color: #FFF !important; background: rgba(54, 25, 88, 0.9) !important; } &.is-active { color: #FFF !important; background: rgba(0, 0, 0, 0.4); } } } .el-sub-menu { &:last-child { margin-left: auto; } &.is-opened { .el-sub-menu__title { background: rgba(0, 0, 0, 0.1) !important; } } .el-sub-menu__title { color: #FFF !important; background: none !important; border-bottom: 0 !important; } } } } > .el-container { height: 1px; > .el-aside { z-index: 99; background: #53a8ff; --el-aside-width: 280px; .el-tabs { height: 100%; user-select: none; -ms-user-select: none; -moz-user-select: none; .el-tabs__header { width: 58px; margin: 0 !important; background: rgba(54, 25, 88, 0.8); .el-tabs__active-bar { display: none !important; } .el-tabs__nav-wrap { margin-right: 0 !important; &::after { display: none; } } .el-tabs__item { color: #FFF; width: 100% !important; padding: 0 !important; height: 58px !important; line-height: 58px !important; text-align: center !important; &.is-active { color: #333; background: #FFF; } &:hover:not(.is-active) { background: rgba(0, 0, 0, 0.1); } } } .el-tabs__content { width: 221px !important; height: 100% !important; background: #FFF !important; h5 { margin: 0; padding: 0; display: none; text-align: center; line-height: 58px; border-bottom: 1px solid #CCC; } .el-menu { border: none !important; } } } } > .el-container { > .el-main { padding: 0; background: #EFEFEF; > .el-container { height: 100%; > .el-header { z-index: 99; background: white; line-height: 60px; box-shadow: 0 0 6px 0 rgb(0 0 0 / 20%); } > .el-main { height: 1px; z-index: 88; --el-main-padding: 0; > .el-scrollbar { padding: 0; box-sizing: border-box; > .el-scrollbar__wrap { border-radius: 5px; > .el-scrollbar__view { margin: 15px; padding: 20px; background: #FFF; border-radius: 5px; box-shadow: 0 0 6px 0 rgb(0 0 0 / 20%); } } } } } } > .el-footer { color: #333; z-index: 99; box-shadow: 0 0 6px 0 rgb(0 0 0 / 20%); background: #FFF; line-height: 60px; text-align: center; } } } } </style> <script> export default { name: 'layout', data() { return { menus: [ {name: 'ONE', title: 'SHOW-ONE-LIST', subs: []}, {name: 'TWO', title: 'SHOW-TWO-LIST', subs: []}, {name: 'THR', title: 'SHOW-THR-LIST', subs: []}, {name: 'FOR', title: 'SHOW-FOR-LIST', subs: []}, {name: 'FIV', title: 'SHOW-FOR-LIST', subs: []}, {name: 'SIX', title: 'SHOW-FOR-LIST', subs: []}, {name: 'SEN', title: 'SHOW-FOR-LIST', subs: []}, {name: 'SIX', title: 'SHOW-FOR-LIST', subs: []}, {name: 'EVN', title: 'SHOW-FOR-LIST', subs: []}, {name: 'TEN', title: 'SHOW-FOR-LIST', subs: []}, {name: '111', title: 'SHOW-FOR-LIST', subs: []}, {name: '122', title: 'SHOW-FOR-LIST', subs: []}, {name: '133', title: 'SHOW-FOR-LIST', subs: []}, {name: '144', title: 'SHOW-FOR-LIST', subs: []}, {name: '155', title: 'SHOW-FOR-LIST', subs: []}, {name: '166', title: 'SHOW-FOR-LIST', subs: []}, {name: '177', title: 'SHOW-FOR-LIST', subs: []}, {name: '188', title: 'SHOW-FOR-LIST', subs: []}, {name: '199', title: 'SHOW-FOR-LIST', subs: []}, ] } }, created() { let app = this; // data-route 路由处理 document.addEventListener('click', function (event) { event.path.some(function (ele) { if (ele.dataset && ele.dataset.route) { app.$router.push(ele.dataset.route); return true; } }); }) } } </script>