2024-02-18 11:15:17 +00:00
|
|
|
<template>
|
|
|
|
|
<a-layout id="components-layout-demo-fixed-sider">
|
|
|
|
|
<a-layout-sider :trigger="null" v-model="collapsed" collapsible>
|
|
|
|
|
<div class="logo">
|
2024-06-24 16:23:39 +00:00
|
|
|
欢迎
|
2024-02-18 11:15:17 +00:00
|
|
|
</div>
|
2024-06-24 16:23:39 +00:00
|
|
|
<a-menu theme="dark" mode="inline" v-model="selectedKeys">
|
|
|
|
|
<a-menu-item key="1" v-for="item in menus" :key="item.key">
|
|
|
|
|
<a-icon :type="item.icon"/>
|
|
|
|
|
<span class="nav-text">{{ item.title }}</span>
|
2024-02-18 11:15:17 +00:00
|
|
|
</a-menu-item>
|
|
|
|
|
</a-menu>
|
|
|
|
|
</a-layout-sider>
|
2024-06-24 16:23:39 +00:00
|
|
|
<a-layout>
|
2024-02-18 11:15:17 +00:00
|
|
|
<a-layout-header
|
|
|
|
|
style="background: #fff; padding: 0"
|
|
|
|
|
ref="header"
|
|
|
|
|
:title="pageTitle"
|
|
|
|
|
:breadcrumb="{ props: { routes } }"
|
|
|
|
|
>
|
|
|
|
|
<div class="header-con">
|
|
|
|
|
|
|
|
|
|
<a-icon
|
|
|
|
|
class="trigger"
|
|
|
|
|
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
|
|
|
|
|
@click="() => (collapsed = !collapsed)"
|
|
|
|
|
/>
|
2024-06-24 16:23:39 +00:00
|
|
|
<a-menu class="cus-menu">
|
|
|
|
|
<a-sub-menu>
|
|
|
|
|
<span slot="title" class="submenu-title-wrapper">
|
|
|
|
|
<a-icon type="setting"/>
|
|
|
|
|
操作
|
|
|
|
|
</span>
|
|
|
|
|
<a-menu-item key="setting:2">修改密码</a-menu-item>
|
|
|
|
|
<a-menu-item key="setting:1">退出</a-menu-item>
|
|
|
|
|
</a-sub-menu>
|
|
|
|
|
</a-menu>
|
|
|
|
|
|
2024-02-18 11:15:17 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a-layout-header>
|
|
|
|
|
<a-layout-content :style="contentStyle">
|
|
|
|
|
<div :style="containerStyle">
|
|
|
|
|
<nuxt/>
|
|
|
|
|
</div>
|
|
|
|
|
</a-layout-content>
|
2024-06-24 16:23:39 +00:00
|
|
|
<!-- <a-layout-footer :style="{ textAlign: 'center' }" ref="footer">
|
|
|
|
|
Ant Design ©2018 Created by Ant UED
|
|
|
|
|
</a-layout-footer>-->
|
2024-02-18 11:15:17 +00:00
|
|
|
</a-layout>
|
|
|
|
|
</a-layout>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
name: "manager",
|
2024-06-24 16:23:39 +00:00
|
|
|
data() {
|
2024-02-18 11:15:17 +00:00
|
|
|
return {
|
|
|
|
|
collapsed: false,
|
|
|
|
|
headerHeight: 0,
|
|
|
|
|
footerHeight: 0,
|
|
|
|
|
routes: [
|
|
|
|
|
{
|
|
|
|
|
path: 'index',
|
|
|
|
|
breadcrumbName: 'First-level Menu',
|
|
|
|
|
},
|
|
|
|
|
],
|
2024-06-24 16:23:39 +00:00
|
|
|
pageTitle: '123',
|
|
|
|
|
menus: [
|
|
|
|
|
{
|
|
|
|
|
link: '/manager/user',
|
|
|
|
|
title: '用户管理',
|
|
|
|
|
icon: 'user',
|
|
|
|
|
key: 'manager-user'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
link: '/manager/role',
|
|
|
|
|
title: '角色管理',
|
2024-06-26 00:19:02 +00:00
|
|
|
icon: 'branches',
|
2024-06-24 16:23:39 +00:00
|
|
|
key: 'manager-role'
|
2024-06-26 00:19:02 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
link: '/manager/menu',
|
|
|
|
|
title: '菜单管理',
|
|
|
|
|
icon: 'link',
|
|
|
|
|
key: 'manager-menu'
|
2024-06-24 16:23:39 +00:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
selectedKeys: []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
watch: {
|
|
|
|
|
'$route': {
|
|
|
|
|
immediate: true,
|
|
|
|
|
handler (to) {
|
|
|
|
|
this.selectedKeys = [to.name]
|
|
|
|
|
}
|
2024-06-26 00:19:02 +00:00
|
|
|
},
|
|
|
|
|
selectedKeys ([key]) {
|
|
|
|
|
this.$router.push({ name: key })
|
2024-02-18 11:15:17 +00:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
2024-06-24 16:23:39 +00:00
|
|
|
contentStyle() {
|
2024-02-18 11:15:17 +00:00
|
|
|
return {
|
|
|
|
|
margin: '24px 16px 24px',
|
|
|
|
|
overflow: 'inherit',
|
|
|
|
|
height: `calc(100vh - ${this.headerHeight + this.footerHeight + 48}px)`,
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-06-24 16:23:39 +00:00
|
|
|
containerStyle() {
|
2024-02-18 11:15:17 +00:00
|
|
|
return {
|
|
|
|
|
padding: '24px',
|
|
|
|
|
background: '#fff',
|
|
|
|
|
textAlign: 'center',
|
|
|
|
|
height: `100%`,
|
|
|
|
|
overflow: 'auto',
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-06-24 16:23:39 +00:00
|
|
|
mounted() {
|
|
|
|
|
this.$nextTick(() => {
|
2024-02-18 11:15:17 +00:00
|
|
|
if (this.$refs.header) {
|
|
|
|
|
this.headerHeight = this.$refs.header.$el.offsetHeight
|
|
|
|
|
// this.footerHeight = this.$refs.footer.$el.offsetHeight
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="less">
|
2024-06-24 16:23:39 +00:00
|
|
|
.cus-menu {
|
|
|
|
|
/deep/ .ant-menu-submenu-arrow {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-18 11:15:17 +00:00
|
|
|
#components-layout-demo-fixed-sider {
|
|
|
|
|
.header-con {
|
2024-06-24 16:23:39 +00:00
|
|
|
width: 100%;
|
2024-02-18 11:15:17 +00:00
|
|
|
display: flex;
|
2024-06-24 16:23:39 +00:00
|
|
|
justify-content: space-between;
|
2024-02-18 11:15:17 +00:00
|
|
|
align-items: center;
|
|
|
|
|
}
|
2024-06-24 16:23:39 +00:00
|
|
|
|
2024-02-18 11:15:17 +00:00
|
|
|
.trigger:hover {
|
|
|
|
|
color: #1890ff;
|
|
|
|
|
}
|
2024-06-24 16:23:39 +00:00
|
|
|
|
2024-02-18 11:15:17 +00:00
|
|
|
.trigger {
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
line-height: 64px;
|
|
|
|
|
padding: 0 24px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: color 0.3s;
|
|
|
|
|
}
|
2024-06-24 16:23:39 +00:00
|
|
|
|
2024-02-18 11:15:17 +00:00
|
|
|
.logo {
|
|
|
|
|
width: 80%;
|
|
|
|
|
padding: 0 10px;
|
|
|
|
|
height: 31px;
|
|
|
|
|
background: rgba(255, 255, 255, 0.2);
|
|
|
|
|
margin: 16px auto 16px;
|
|
|
|
|
line-height: 31px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
overflow: inherit;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|