From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1
---
src/views/main-sidebar.vue | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 112 insertions(+), 0 deletions(-)
diff --git a/src/views/main-sidebar.vue b/src/views/main-sidebar.vue
new file mode 100644
index 0000000..ea763f0
--- /dev/null
+++ b/src/views/main-sidebar.vue
@@ -0,0 +1,112 @@
+<template>
+ <!-- 左侧菜单入口 -->
+ <aside class="site-sidebar" :class="'site-sidebar--' + sidebarLayoutSkin">
+ <div class="site-sidebar__inner">
+ <el-menu
+ :default-active="menuActiveName || 'home'"
+ :collapse="sidebarFold"
+ :collapseTransition="false"
+ class="site-sidebar__menu">
+ <el-menu-item index="home" @click="$router.push({ name: 'home' })">
+ <icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
+ <span slot="title">首页</span>
+ </el-menu-item>
+ <sub-menu
+ v-for="menu in menuList"
+ :key="menu.menuId"
+ :menu="menu"
+ :dynamicMenuRoutes="dynamicMenuRoutes">
+ </sub-menu>
+ </el-menu>
+ </div>
+ </aside>
+</template>
+
+<script>
+ import SubMenu from './main-sidebar-sub-menu'
+ import { isURL } from '@/utils/validate'
+ export default {
+ data () {
+ return {
+ dynamicMenuRoutes: []
+ }
+ },
+ components: {
+ SubMenu
+ },
+ computed: {
+ sidebarLayoutSkin: {
+ get () { return this.$store.state.common.sidebarLayoutSkin }
+ },
+ sidebarFold: {
+ get () { return this.$store.state.common.sidebarFold }
+ },
+ menuList: {
+ get () { return this.$store.state.common.menuList },
+ set (val) { this.$store.commit('common/updateMenuList', val) }
+ },
+ menuActiveName: {
+ get () { return this.$store.state.common.menuActiveName },
+ set (val) { this.$store.commit('common/updateMenuActiveName', val) }
+ },
+ mainTabs: {
+ get () { return this.$store.state.common.mainTabs },
+ set (val) { this.$store.commit('common/updateMainTabs', val) }
+ },
+ mainTabsActiveName: {
+ get () { return this.$store.state.common.mainTabsActiveName },
+ set (val) { this.$store.commit('common/updateMainTabsActiveName', val) }
+ }
+ },
+ watch: {
+ $route: 'routeHandle'
+ },
+ created () {
+ let menuList = [];
+ if (
+ sessionStorage.getItem("menuList") &&
+ sessionStorage.getItem("menuList") != `"[]"`
+ ) {
+ menuList = JSON.parse(sessionStorage.getItem("menuList"));
+ }
+ if(menuList.length>0){
+ this.menuList = menuList.filter(item => item.orderNum > 23 )
+ }
+
+ this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
+ this.routeHandle(this.$route)
+ },
+ methods: {
+ // 路由操作
+ routeHandle (route) {
+ if (route.meta.isTab) {
+ // tab选中, 不存在先添加
+ var tab = this.mainTabs.filter(item => item.name === route.name)[0]
+ if (!tab) {
+ if (route.meta.isDynamic) {
+ route = this.dynamicMenuRoutes.filter(item => item.name === route.name)[0]
+ if (!route) {
+ return console.error('未能找到可用标签页!')
+ }
+ }
+ tab = {
+ menuId: route.meta.menuId || route.name,
+ name: route.name,
+ title: route.meta.title,
+ type: isURL(route.meta.iframeUrl) ? 'iframe' : 'module',
+ iframeUrl: route.meta.iframeUrl || ''
+ }
+ this.mainTabs = this.mainTabs.concat(tab)
+ }
+ this.menuActiveName = tab.menuId + ''
+ this.mainTabsActiveName = tab.name
+ }
+ }
+ }
+ }
+</script>
+<style scoped>
+/* ::v-deep .el-submenu{
+ border-bottom: 1px solid #585555;
+} */
+</style>
\ No newline at end of file
--
Gitblit v1.9.3