chore: rename some layout components; 🐶
This commit is contained in:
@@ -1,35 +1,35 @@
|
||||
<template>
|
||||
<a-layout :class="['global-layout', fixedSideBar ? 'fixed-side-bar' : '']">
|
||||
<a-layout :class="['admin-layout', fixedSideBar ? 'fixed-side-bar' : '']">
|
||||
<drawer v-if="isMobile" :openDrawer="collapsed" @change="onDrawerChange">
|
||||
<sider-menu :theme="theme" :menuData="menuData" :collapsed="false" :collapsible="false" @menuSelect="onMenuSelect"/>
|
||||
<side-menu :theme="theme" :menuData="menuData" :collapsed="false" :collapsible="false" @menuSelect="onMenuSelect"/>
|
||||
</drawer>
|
||||
<sider-menu :theme="theme" v-else-if="layout === 'side'" :menuData="menuData" :collapsed="collapsed" :collapsible="true" />
|
||||
<side-menu :theme="theme" v-else-if="layout === 'side'" :menuData="menuData" :collapsed="collapsed" :collapsible="true" />
|
||||
<drawer :open-drawer="showSetting" placement="right" @change="onSettingDrawerChange">
|
||||
<div class="setting" slot="handler">
|
||||
<a-icon :type="showSetting ? 'close' : 'setting'"/>
|
||||
</div>
|
||||
<setting />
|
||||
</drawer>
|
||||
<a-layout class="global-layout-main beauty-scroll">
|
||||
<global-header :style="headerStyle" :menuData="menuData" :collapsed="collapsed" @toggleCollapse="toggleCollapse"/>
|
||||
<a-layout class="admin-layout-main beauty-scroll">
|
||||
<admin-header :style="headerStyle" :menuData="menuData" :collapsed="collapsed" @toggleCollapse="toggleCollapse"/>
|
||||
<a-layout-header v-if="fixedHeader"></a-layout-header>
|
||||
<a-layout-content class="global-layout-content">
|
||||
<a-layout-content class="admin-layout-content">
|
||||
<div :style="`min-height: ${minHeight}px; position: relative`">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</a-layout-content>
|
||||
<a-layout-footer style="padding: 0px">
|
||||
<global-footer :link-list="footerLinks" :copyright="copyright" />
|
||||
<page-footer :link-list="footerLinks" :copyright="copyright" />
|
||||
</a-layout-footer>
|
||||
</a-layout>
|
||||
</a-layout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import GlobalHeader from './GlobalHeader'
|
||||
import GlobalFooter from './GlobalFooter'
|
||||
import AdminHeader from './header/AdminHeader'
|
||||
import PageFooter from './footer/PageFooter'
|
||||
import Drawer from '../components/tool/Drawer'
|
||||
import SiderMenu from '../components/menu/SiderMenu'
|
||||
import SideMenu from '../components/menu/SideMenu'
|
||||
import Setting from '../components/setting/Setting'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
@@ -38,8 +38,8 @@ const minHeight = window.innerHeight - 64 - 24 - 122
|
||||
let menuData = []
|
||||
|
||||
export default {
|
||||
name: 'GlobalLayout',
|
||||
components: {Setting, SiderMenu, Drawer, GlobalFooter, GlobalHeader},
|
||||
name: 'AdminLayout',
|
||||
components: {Setting, SideMenu, Drawer, PageFooter, AdminHeader},
|
||||
data () {
|
||||
return {
|
||||
minHeight: minHeight,
|
||||
@@ -87,20 +87,20 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.global-layout{
|
||||
.admin-layout{
|
||||
&.fixed-side-bar{
|
||||
height: 100vh;
|
||||
.global-layout-main{
|
||||
.admin-layout-main{
|
||||
overflow: scroll;
|
||||
}
|
||||
}
|
||||
.global-layout-main{
|
||||
.global-header{
|
||||
.admin-layout-main{
|
||||
.admin-header{
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
.global-layout-content{
|
||||
.admin-layout-content{
|
||||
padding: 24px 24px 0;
|
||||
min-height: auto;
|
||||
}
|
||||
@@ -12,7 +12,7 @@ import PageToggleTransition from '../components/transition/PageToggleTransition'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'RouteView',
|
||||
name: 'BlankView',
|
||||
components: {PageToggleTransition},
|
||||
computed: {
|
||||
...mapState('setting', ['multiPage', 'animate'])
|
||||
37
src/layouts/CommonLayout.vue
Normal file
37
src/layouts/CommonLayout.vue
Normal file
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div class="common-layout">
|
||||
<div class="content"><slot></slot></div>
|
||||
<page-footer :link-list="footerLinks" :copyright="copyright"></page-footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PageFooter from '@/layouts/footer/PageFooter'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'CommonLayout',
|
||||
components: {PageFooter},
|
||||
computed: {
|
||||
...mapState('setting', ['footerLinks', 'copyright'])
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.common-layout{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100vh;
|
||||
overflow: auto;
|
||||
background: #f0f2f5 url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg') no-repeat center 110px;
|
||||
background-size: 100%;
|
||||
.content{
|
||||
padding: 32px 0;
|
||||
flex: 1;
|
||||
@media (min-width: 768px){
|
||||
padding: 112px 0 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,39 +1,39 @@
|
||||
<template>
|
||||
<global-layout>
|
||||
<contextmenu :itemList="menuItemList" :visible.sync="menuVisible" @select="onMenuSelect" />
|
||||
<a-tabs
|
||||
@contextmenu.native="e => onContextmenu(e)"
|
||||
v-if="multiPage"
|
||||
:active-key="activePage"
|
||||
:style="`margin: -16px auto 8px; ${layout == 'head' ? 'max-width: 1400px;' : ''}`"
|
||||
:hide-add="true"
|
||||
type="editable-card"
|
||||
@change="changePage"
|
||||
@edit="editPage">
|
||||
<a-tab-pane :key="page.fullPath" v-for="page in pageList">
|
||||
<span slot="tab" :pagekey="page.fullPath">{{page.name}}</span>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<div class="menu-view-content">
|
||||
<page-toggle-transition :animate="animate.name" :direction="animate.direction">
|
||||
<keep-alive v-if="multiPage">
|
||||
<router-view />
|
||||
</keep-alive>
|
||||
<router-view v-else />
|
||||
</page-toggle-transition>
|
||||
</div>
|
||||
</global-layout>
|
||||
<admin-layout>
|
||||
<contextmenu :itemList="menuItemList" :visible.sync="menuVisible" @select="onMenuSelect" />
|
||||
<a-tabs
|
||||
@contextmenu.native="e => onContextmenu(e)"
|
||||
v-if="multiPage"
|
||||
:active-key="activePage"
|
||||
:style="`margin: -16px auto 8px; ${layout == 'head' ? 'max-width: 1400px;' : ''}`"
|
||||
:hide-add="true"
|
||||
type="editable-card"
|
||||
@change="changePage"
|
||||
@edit="editPage">
|
||||
<a-tab-pane :key="page.fullPath" v-for="page in pageList">
|
||||
<span slot="tab" :pagekey="page.fullPath">{{page.name}}</span>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<div class="tabs-view-content">
|
||||
<page-toggle-transition :animate="animate.name" :direction="animate.direction">
|
||||
<keep-alive v-if="multiPage">
|
||||
<router-view />
|
||||
</keep-alive>
|
||||
<router-view v-else />
|
||||
</page-toggle-transition>
|
||||
</div>
|
||||
</admin-layout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import GlobalLayout from './GlobalLayout'
|
||||
import AdminLayout from './AdminLayout'
|
||||
import Contextmenu from '../components/menu/Contextmenu'
|
||||
import PageToggleTransition from '../components/transition/PageToggleTransition'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'MenuView',
|
||||
components: {PageToggleTransition, Contextmenu, GlobalLayout},
|
||||
name: 'TabsView',
|
||||
components: {PageToggleTransition, Contextmenu, AdminLayout},
|
||||
data () {
|
||||
return {
|
||||
pageList: [],
|
||||
@@ -165,7 +165,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.menu-view-content{
|
||||
.tabs-view-content{
|
||||
position: relative;
|
||||
}
|
||||
</style>
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'GlobalFooter',
|
||||
name: 'PageFooter',
|
||||
props: ['copyright', 'linkList']
|
||||
}
|
||||
</script>
|
||||
@@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<a-layout-header :class="[headerTheme, 'global-header']">
|
||||
<div :class="['global-header-wide', layout]">
|
||||
<a-layout-header :class="[headerTheme, 'admin-header']">
|
||||
<div :class="['admin-header-wide', layout]">
|
||||
<router-link v-if="isMobile || layout === 'head'" to="/" :class="['logo', isMobile ? null : 'pc', headerTheme]">
|
||||
<img width="32" src="@/assets/img/logo.png" />
|
||||
<h1 v-if="!isMobile">{{systemName}}</h1>
|
||||
</router-link>
|
||||
<a-divider v-if="isMobile" type="vertical" />
|
||||
<a-icon v-if="layout === 'side'" class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click="toggleCollapse"/>
|
||||
<div v-if="layout == 'head' && !isMobile" class="global-header-menu">
|
||||
<div v-if="layout == 'head' && !isMobile" class="admin-header-menu">
|
||||
<i-menu style="height: 64px; line-height: 64px;" @i18nComplete="setRoutesI18n" :i18n="menuI18n" :theme="headerTheme" mode="horizontal" :options="menuData" @select="onSelect"/>
|
||||
</div>
|
||||
<div :class="['global-header-right', headerTheme]">
|
||||
<div :class="['admin-header-right', headerTheme]">
|
||||
<header-search class="header-item" />
|
||||
<a-tooltip class="header-item" title="帮助文档" placement="bottom" >
|
||||
<a>
|
||||
@@ -36,11 +36,11 @@
|
||||
import HeaderSearch from './HeaderSearch'
|
||||
import HeaderNotice from './HeaderNotice'
|
||||
import HeaderAvatar from './HeaderlAvatar'
|
||||
import IMenu from '../components/menu/menu'
|
||||
import IMenu from '@/components/menu/menu'
|
||||
import {mapState, mapMutations} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'GlobalHeader',
|
||||
name: 'AdminHeader',
|
||||
components: {IMenu, HeaderAvatar, HeaderNotice, HeaderSearch},
|
||||
props: ['collapsed', 'menuData'],
|
||||
inject: ['menuI18n'],
|
||||
@@ -86,7 +86,7 @@ export default {
|
||||
color: #1890ff;
|
||||
}
|
||||
}
|
||||
.global-header{
|
||||
.admin-header{
|
||||
padding: 0;
|
||||
-webkit-box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
@@ -101,7 +101,7 @@ export default {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.global-header-wide{
|
||||
.admin-header-wide{
|
||||
&.head{
|
||||
max-width: 1400px;
|
||||
margin: auto;
|
||||
@@ -132,10 +132,10 @@ export default {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.global-header-menu{
|
||||
.admin-header-menu{
|
||||
display: inline-block;
|
||||
}
|
||||
.global-header-right{
|
||||
.admin-header-right{
|
||||
float: right;
|
||||
display: flex;
|
||||
&.dark{
|
||||
Reference in New Issue
Block a user