|
|
@@ -1,159 +0,0 @@
|
|
|
-<template>
|
|
|
- <n-layout has-sider>
|
|
|
- <n-layout-sider
|
|
|
- v-model:collapsed="isTrigger"
|
|
|
- bordered
|
|
|
- show-trigger
|
|
|
- collapse-mode="width"
|
|
|
- width="216"
|
|
|
- :native-scrollbar="false"
|
|
|
- >
|
|
|
- <n-menu
|
|
|
- v-model:value="selectedKey"
|
|
|
- accordion
|
|
|
- :collapsed-icon-size="24"
|
|
|
- :options="menuOptions"
|
|
|
- />
|
|
|
- </n-layout-sider>
|
|
|
- <n-layout>
|
|
|
- <router-view />
|
|
|
- </n-layout>
|
|
|
- </n-layout>
|
|
|
-</template>
|
|
|
-<script setup lang="ts">
|
|
|
-import {
|
|
|
- h, onMounted, onUnmounted, ref
|
|
|
-} from 'vue'
|
|
|
-import Icon from '@/components/icon.vue'
|
|
|
-import { RouterLink, useRoute } from 'vue-router'
|
|
|
-
|
|
|
-const isTrigger = ref(false)
|
|
|
-const menuOptions = [
|
|
|
- {
|
|
|
- label: () => h('img', {
|
|
|
- src: new URL('@/assets/icons/1.svg', import.meta.url).href,
|
|
|
- width: '100%',
|
|
|
- height: '100%'
|
|
|
- }),
|
|
|
- icon: () => h(Icon, {
|
|
|
- name: '2',
|
|
|
- size: 24
|
|
|
- }),
|
|
|
- disabled: true,
|
|
|
- key: ''
|
|
|
- },
|
|
|
- {
|
|
|
- icon: () => h('img', {
|
|
|
- src: new URL('@/assets/icons/3.svg', import.meta.url).href,
|
|
|
- width: (isTrigger.value ? '0px' : '60px'),
|
|
|
- height: (isTrigger.value ? '0px' : '60px'),
|
|
|
- style: {
|
|
|
- transition: '0.2s'
|
|
|
- }
|
|
|
- }),
|
|
|
- label: () => h('div', {
|
|
|
- style: {
|
|
|
- margin: '0 0 0 15px'
|
|
|
- }
|
|
|
- }, [
|
|
|
- h('p', {
|
|
|
- style: {
|
|
|
- margin: 0
|
|
|
- }
|
|
|
- }, { default: () => '欢迎回家' }),
|
|
|
- h('p', {
|
|
|
- style: {
|
|
|
- margin: 0
|
|
|
- }
|
|
|
- }, { default: () => '捷克' })
|
|
|
- ]),
|
|
|
- disabled: true,
|
|
|
- key: ''
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/room' } }, { default: () => '房间' }),
|
|
|
- key: 'room',
|
|
|
- icon: () => h(Icon, { name: '4', size: 24 })
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/device' } }, { default: () => '设备' }),
|
|
|
- key: 'device',
|
|
|
- icon: () => h(Icon, { name: '5', size: 24 })
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/person' } }, { default: () => '成员' }),
|
|
|
- key: 'person',
|
|
|
- icon: () => h(Icon, { name: '6', size: 24 })
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/static' } }, { default: () => '统计' }),
|
|
|
- key: 'static',
|
|
|
- icon: () => h(Icon, { name: '7', size: 24 })
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/seting' } }, { default: () => '设置' }),
|
|
|
- key: 'seting',
|
|
|
- icon: () => h(Icon, { name: '8', size: 24 })
|
|
|
- },
|
|
|
- {
|
|
|
- label: () => h(RouterLink, { to: { path: '/' } }, { default: () => '退出' }),
|
|
|
- key: 'logout',
|
|
|
- icon: () => h(Icon, { name: '9', size: 24 })
|
|
|
- }
|
|
|
-]
|
|
|
-const route = useRoute()
|
|
|
-const selectedKey = ref((route.name as string || '').split('/')[0])
|
|
|
-
|
|
|
-function changeTrigger() {
|
|
|
- isTrigger.value = document.documentElement.clientWidth < 550
|
|
|
-}
|
|
|
-window.addEventListener('resize', changeTrigger, false)
|
|
|
-onMounted(() => changeTrigger())
|
|
|
-onUnmounted(() => window.removeEventListener('resize', changeTrigger, false))
|
|
|
-</script>
|
|
|
-<style lang="scss" scoped>
|
|
|
-:deep(.n-menu) {
|
|
|
- --n-item-height: 55px;
|
|
|
- height: 100%;
|
|
|
- padding: 0;
|
|
|
-
|
|
|
- .n-menu-item-content {
|
|
|
- padding-right: 32px;
|
|
|
- }
|
|
|
-
|
|
|
- &>div {
|
|
|
- &:first-child {
|
|
|
- margin: 0;
|
|
|
- --n-item-height: 80px;
|
|
|
-
|
|
|
- &>div {
|
|
|
- height: 80px;
|
|
|
- position: relative;
|
|
|
- opacity: 1;
|
|
|
-
|
|
|
- &::after {
|
|
|
- content: '';
|
|
|
- width: 80%;
|
|
|
- height: 2px;
|
|
|
- background: var(--n-border-color);
|
|
|
- position: absolute;
|
|
|
- left: 50%;
|
|
|
- transform: translate(-50%, 0);
|
|
|
- bottom: 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- &:nth-child(2) {
|
|
|
- --n-item-height: 80px;
|
|
|
- margin: 20px 0 60px 0;
|
|
|
-
|
|
|
- &>div {
|
|
|
- opacity: 1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-</style>
|