|
@@ -3,8 +3,6 @@
|
|
|
<a-layout-sider
|
|
|
breakpoint="lg"
|
|
|
collapsed-width="80"
|
|
|
- @collapse="onCollapse"
|
|
|
- @breakpoint="onBreakpoint"
|
|
|
>
|
|
|
<div
|
|
|
class="logo"
|
|
@@ -17,41 +15,46 @@
|
|
|
theme="dark"
|
|
|
mode="inline"
|
|
|
>
|
|
|
- <a-menu-item key="1">
|
|
|
+ <a-menu-item
|
|
|
+ v-for="menu in menus"
|
|
|
+ :key="menu.name"
|
|
|
+ @click="toPageHandle(menu.name)"
|
|
|
+ >
|
|
|
<user-outlined />
|
|
|
- <span class="nav-text">nav 1</span>
|
|
|
- </a-menu-item>
|
|
|
- <a-menu-item key="2">
|
|
|
- <video-camera-outlined />
|
|
|
- <span class="nav-text">nav 2</span>
|
|
|
- </a-menu-item>
|
|
|
- <a-menu-item key="3">
|
|
|
- <upload-outlined />
|
|
|
- <span class="nav-text">nav 3</span>
|
|
|
- </a-menu-item>
|
|
|
- <a-menu-item key="4">
|
|
|
- <user-outlined />
|
|
|
- <span class="nav-text">nav 4</span>
|
|
|
+ <span class="nav-text">{{ menu.name }}</span>
|
|
|
</a-menu-item>
|
|
|
</a-menu>
|
|
|
</a-layout-sider>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
- import { ref } from 'vue';
|
|
|
- import { useRouter } from 'vue-router';
|
|
|
- const selectedKeys = ref<string[]>(['4'])
|
|
|
- const router = useRouter()
|
|
|
+ import { ref, computed, watch, toRef } from 'vue';
|
|
|
+ import { useRouter, useRoute, onBeforeRouteUpdate } from 'vue-router';
|
|
|
+ import { AppStore } from '@/store/modules/app';
|
|
|
+ import type { RouteRecordName, RouteLocationNormalized } from 'vue-router'
|
|
|
|
|
|
- const onCollapse = (collapsed: boolean, type: string) => {
|
|
|
- console.log(collapsed, type);
|
|
|
- };
|
|
|
-
|
|
|
- const onBreakpoint = (broken: boolean) => {
|
|
|
- console.log(broken);
|
|
|
- };
|
|
|
+ const router = useRouter()
|
|
|
+ const route = useRoute()
|
|
|
+ const store = AppStore()
|
|
|
+ const selectedKeys = ref<string[]>([])
|
|
|
+ const menus = computed(() => store.authRoutes)
|
|
|
+ const matchRouteHandle = (to: RouteLocationNormalized) => {
|
|
|
+ menus.value.forEach(el => {
|
|
|
+ if (el.name === to.name) {
|
|
|
+ console.log(el, to);
|
|
|
+ selectedKeys.value = [to.name as string]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // onBeforeRouteUpdate(to => {
|
|
|
+ // matchRouteHandle(to)
|
|
|
+ // })
|
|
|
+ matchRouteHandle(route)
|
|
|
const toHomeHandle = () => {
|
|
|
router.push('/')
|
|
|
}
|
|
|
+ const toPageHandle = (name: RouteRecordName | undefined) => {
|
|
|
+ router.push({ name })
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|