|
@@ -0,0 +1,109 @@
|
|
|
+<template>
|
|
|
+ <div class="main flex flex-col">
|
|
|
+ <Header></Header>
|
|
|
+ <div class="flex-1 flex shrink-0" style="height:calc(100vh - 100px)">
|
|
|
+ <div class="h-full ">
|
|
|
+ <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose">
|
|
|
+ <el-sub-menu index="1">
|
|
|
+ <template #title>
|
|
|
+ <el-icon>
|
|
|
+ <location />
|
|
|
+ </el-icon>
|
|
|
+ <span>Navigator One</span>
|
|
|
+ </template>
|
|
|
+ <el-menu-item-group title="Group One">
|
|
|
+ <el-menu-item index="1-1">item one</el-menu-item>
|
|
|
+ <el-menu-item index="1-2">item two</el-menu-item>
|
|
|
+ </el-menu-item-group>
|
|
|
+ <el-menu-item-group title="Group Two">
|
|
|
+ <el-menu-item index="1-3">item three</el-menu-item>
|
|
|
+ </el-menu-item-group>
|
|
|
+ <el-sub-menu index="1-4">
|
|
|
+ <template #title>item four</template>
|
|
|
+ <el-menu-item index="1-4-1">item one</el-menu-item>
|
|
|
+ </el-sub-menu>
|
|
|
+ </el-sub-menu>
|
|
|
+ <el-menu-item index="2">
|
|
|
+ <el-icon><icon-menu /></el-icon>
|
|
|
+ <span>Navigator Two</span>
|
|
|
+ </el-menu-item>
|
|
|
+ <el-menu-item index="3" disabled>
|
|
|
+ <el-icon>
|
|
|
+ <document />
|
|
|
+ </el-icon>
|
|
|
+ <span>Navigator Three</span>
|
|
|
+ </el-menu-item>
|
|
|
+ <el-menu-item index="4">
|
|
|
+ <el-icon>
|
|
|
+ <setting />
|
|
|
+ </el-icon>
|
|
|
+ <span>Navigator Four</span>
|
|
|
+ </el-menu-item>
|
|
|
+ </el-menu>
|
|
|
+ </div>
|
|
|
+ <div class=" flex-1 overflow-y-auto">
|
|
|
+ <Transition name="slide-right">
|
|
|
+ <router-view />
|
|
|
+ </Transition>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import { ref } from 'vue'
|
|
|
+
|
|
|
+import { useI18n } from 'vue-i18n'
|
|
|
+import Header from './components/Header.vue'
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+import { useStoreI18n } from '@/hook/i18n'
|
|
|
+const { t, locale } = useI18n()
|
|
|
+const { $t } = useStoreI18n()
|
|
|
+const handleOpen = (key: string, keyPath: string[]) => {
|
|
|
+ console.log(key, keyPath)
|
|
|
+}
|
|
|
+const handleClose = (key: string, keyPath: string[]) => {
|
|
|
+ console.log(key, keyPath)
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+.slide-right-enter-active,
|
|
|
+.slide-right-leave-active {
|
|
|
+ transition: all 0.5s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.slide-right-enter-from {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateX(100%);
|
|
|
+}
|
|
|
+
|
|
|
+.slide-right-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateX(-100%);
|
|
|
+}
|
|
|
+
|
|
|
+.main {
|
|
|
+ width: 100%;
|
|
|
+ height: 100vh;
|
|
|
+ min-width: 1000px;
|
|
|
+ overflow-y: hidden;
|
|
|
+
|
|
|
+ .main-header {
|
|
|
+ // display: flex;
|
|
|
+ // justify-content: space-between;
|
|
|
+ // align-items: center;
|
|
|
+ height: 102px;
|
|
|
+ padding: 0 48px;
|
|
|
+
|
|
|
+ .logo {
|
|
|
+ width: 156px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 隐藏滚动条
|
|
|
+::-webkit-scrollbar {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+</style>
|