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-sub-menu.vue |   87 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 87 insertions(+), 0 deletions(-)

diff --git a/src/views/main-sidebar-sub-menu.vue b/src/views/main-sidebar-sub-menu.vue
new file mode 100644
index 0000000..2c4a20f
--- /dev/null
+++ b/src/views/main-sidebar-sub-menu.vue
@@ -0,0 +1,87 @@
+<template>
+ <!-- 左侧菜单组件 -->
+  <el-submenu 
+    v-if="menu.list && menu.list.length >= 1"
+    :index="menu.menuId + ''"
+    :popper-append-to-body="false"
+    :popper-class="'site-sidebar--' + sidebarLayoutSkin + '-popper'">
+    <template slot="title">
+      <icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg>
+      <span>{{ menu.name }}</span>
+      <el-badge class="mark" :value="countNum(menu.name+'_'+menu.type)" v-if="countNum(menu.name+'_'+menu.type) > 0"/>
+    </template>
+    <sub-menu
+      v-for="item in menu.list" 
+      :key="item.menuId"
+      :menu="item"
+      :dynamicMenuRoutes="dynamicMenuRoutes">
+    </sub-menu>
+  </el-submenu>
+  <el-menu-item v-else :index="menu.menuId + ''" @click="gotoRouteHandle(menu)">
+    <icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg>
+    <span>{{ menu.name }}</span>
+    <el-badge class="mark" :value="countNum(menu.name+'_'+menu.type)" v-if="countNum(menu.name+'_'+menu.type) > 0"/>
+  </el-menu-item>
+
+</template>
+
+<script>
+  import SubMenu from './main-sidebar-sub-menu'
+  export default {
+    name: 'sub-menu',
+    props: {
+      menu: {
+        type: Object,
+        required: true
+      },
+      dynamicMenuRoutes: {
+        type: Array,
+        required: true
+      }
+    },
+    components: {
+      SubMenu
+    },
+    computed: {
+      sidebarLayoutSkin: {
+        get () { return this.$store.state.common.sidebarLayoutSkin }
+      }
+    },
+    methods: {
+      // 通过menuId与动态(菜单)路由进行匹配跳转至指定路由
+      gotoRouteHandle (menu) {
+        var route = this.dynamicMenuRoutes.filter(item => item.meta.menuId === menu.menuId)
+        console.log(menu)
+        if (route.length >= 1) {
+          this.$router.push({ name: route[0].name })
+        }
+      },
+      countNum(name){
+        if(!this.menuMap){
+          // console.log(name + "-->");
+          return 0;
+        }
+        let type = this.menuMap[name];
+        let num = this.main.tips[type]
+        if(isNaN(num)){
+          num = 0
+        }
+        // console.log(name + "-->" + type + "-->" + num);
+        return num;
+      }
+    }
+  }
+</script>
+<style scoped>
+::v-deep .el-menu--popup-right-start{
+  margin-left: 0px !important;
+  border: none !important;
+}
+/* ::v-deep .el-submenu__title{
+    background: rgba(44, 44, 44, 0);
+    color:#BBCAFF !important;
+  } */
+  /* ::v-deep .el-menu-item{
+    color: white;
+  } */
+</style>

--
Gitblit v1.9.3