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