|
|
@@ -2,34 +2,43 @@
|
|
|
<a-row>
|
|
|
<a-col>
|
|
|
<a-layout-sider
|
|
|
- width="200"
|
|
|
- style="background: #fff; height: 100%;"
|
|
|
+ :trigger="null"
|
|
|
+ v-model:collapsed="collapsed"
|
|
|
+ collapsible
|
|
|
+ style="background: #fff; height: 92.5%;"
|
|
|
breakpoint="lg"
|
|
|
- collapsed-width="0"
|
|
|
@collapse="onCollapse"
|
|
|
@breakpoint="onBreakpoint"
|
|
|
>
|
|
|
<a-menu
|
|
|
v-model:selectedKeys="selectedKeys2"
|
|
|
v-model:openKeys="openKeys"
|
|
|
-
|
|
|
mode="inline"
|
|
|
:style="{ height: '100%', borderRight: 0 }"
|
|
|
>
|
|
|
<template v-for="item in appRouter.router.sider.route" :key="item.path">
|
|
|
<a-sub-menu v-if="item.children" :key="item.path">
|
|
|
<template #title>
|
|
|
- <span>
|
|
|
- <user-outlined />
|
|
|
+ <user-outlined />
|
|
|
+ <span>
|
|
|
{{item.name}}
|
|
|
- </span>
|
|
|
+ </span>
|
|
|
</template>
|
|
|
- <a-menu-item @click="changeRoute(_)" v-for="_ in item.children" :key="_.path" >{{_.name}}</a-menu-item>
|
|
|
+ <a-menu-item @click="changeRoute(_)" v-for="_ in item.children" :key="_.path" >
|
|
|
+ <user-outlined />{{_.name}}
|
|
|
+ </a-menu-item>
|
|
|
</a-sub-menu>
|
|
|
- <a-menu-item v-else @click="changeRoute(item)" >{{item.name}}</a-menu-item>
|
|
|
+ <a-menu-item v-else @click="changeRoute(item)" >
|
|
|
+ <user-outlined />
|
|
|
+ <span>{{item.name}}</span>
|
|
|
+ </a-menu-item>
|
|
|
</template>
|
|
|
- </a-menu>
|
|
|
+ </a-menu>
|
|
|
</a-layout-sider>
|
|
|
+ <div class="control" >
|
|
|
+ <menu-fold-outlined @click="collapsed = true" v-if="!collapsed" style="font-size: 30px;cursor: pointer;" />
|
|
|
+ <menu-unfold-outlined @click="collapsed = false" v-else style="font-size: 30px;cursor: pointer;" />
|
|
|
+ </div>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
</template>
|
|
|
@@ -40,13 +49,15 @@ import RootRouter from '@/router/index'
|
|
|
import { useAppRouter } from '@/store/router'
|
|
|
import { useEmitter } from '@/hooks/index'
|
|
|
import { Emitter } from '@/enum/emitter'
|
|
|
-
|
|
|
+import { MenuFoldOutlined, MenuUnfoldOutlined, UserOutlined } from '@ant-design/icons-vue'
|
|
|
const emitter = useEmitter()
|
|
|
const appRouter = useAppRouter()
|
|
|
|
|
|
const onCollapse = () => {}
|
|
|
const onBreakpoint = () => {}
|
|
|
|
|
|
+const collapsed = ref<boolean>(false)
|
|
|
+
|
|
|
const selectedKeys2 = ref<string[]>([appRouter.router.sider!.selectPath])
|
|
|
const openKeys = ref<string[]>(appRouter.router.sider!.openKeys)
|
|
|
|
|
|
@@ -62,5 +73,13 @@ const changeRoute = (route: Router.RoutesProps) => {
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped >
|
|
|
+.control {
|
|
|
+ width: 100%;
|
|
|
+ height: 5%;
|
|
|
+ background-color: #fff;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
|
|
|
+}
|
|
|
</style>
|