SubMenu.vue 1.53 KB
Newer Older
1 2
<template>
  <div>
3
    <template v-for="(item) in subMenuList">
4 5
      <el-submenu
        v-if="item.children && item.children.length > 0"
6 7
        :key="item.index"
        :index="item.index"
8 9
      >
        <template slot="title">
10 11 12 13 14
          <i
            class="el-icon-caret-bottom"
            v-if="getOpenFlag(item.index)"
          ></i>
          <i class="el-icon-caret-right" v-else></i>
liushikai committed
15
          <!-- <img :src="item.icon" alt=""> -->
16 17
          <span>{{ item.name }}</span>
        </template>
18
        <SubMenu :subMenuList="item.children" :openFlgArr="openFlgArr" />
19
      </el-submenu>
潘际乾 committed
20 21
      <el-menu-item v-else :key="item.path" :index="item.path" 
        :route="item.isDz ? { name: 'DzSys', params: { path: getDynamicPath(item.path), title: item.name}} : { path: item.path }">
22 23 24 25 26 27 28 29 30 31 32 33 34
        <template slot="title">
          <i :class="item.icon"></i>
          <span>{{ item.name }}</span>
        </template>
      </el-menu-item>
    </template>
  </div>
</template>

<script>
import SubMenu from "./SubMenu.vue";

export default {
35
  name: "SubMenu",
36
  components: { SubMenu },
37 38 39 40 41
  props: ["subMenuList", "openFlgArr"],
  methods: {
    getOpenFlag(index) {
      return this.openFlgArr.includes(index);
    },
潘际乾 committed
42 43 44 45
    getDynamicPath(path) {
      const p = path.split("/")
      return p[p.length - 1]
    }
46
  },
47 48 49 50
};
</script>

<style>
51 52 53 54 55 56 57
.el-menu--collapse > div > .el-menu-item span,
.el-menu--collapse > div > .el-submenu > .el-submenu__title span {
  height: 0;
  width: 0;
  overflow: hidden;
  visibility: hidden;
  display: inline-block;
58 59
}
</style>