马宇豪
2024-06-05 aa7e52de08a8905fd58cb9884d30a43fc1cd2f80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<template>
  <a-menu
    theme="dark"
    mode="inline"
    :selectedKeys="[$route.path]"
    :openKeys="openKeys"
    @openChange="onOpenChange"
  >
    <a-sub-menu :key="nav.MenuID" v-for="nav in navData">
      <div slot="title">
        <a-icon :type="nav.Icon" />
        <span>{{ nav.MenuTitle }} </span>
      </div>
      <a-menu-item :key="nChild.MenuPath" v-for="nChild in nav.Children">
        <router-link :to="nChild.MenuPath">
          {{ nChild.MenuTitle }}
        </router-link>
      </a-menu-item>
    </a-sub-menu>
  </a-menu>
</template>
 
<script>
import menu from './menu'
import { getUserInfo } from "@/util/storage";
export default {
  name: "menu-sider",
  data() {
    return {
      userInfo: {},
      navData: [],
      openKeys: ['1']
    };
  },
  created() {
    const t = this
    t.userInfo = getUserInfo()
    if(t.userInfo.role.id == 1){
      t.navData = menu.adminMenu
    }else if(t.userInfo.role.id == 3){
      if(t.userInfo.unittype == 1){
        t.navData = menu.workerMenu
      }else{
        t.navData = menu.workerMenu.map((i)=>{
          // if(i.Children.find(item=>item.MenuTitle == '常规群发')){
          //   i.Children = i.Children.filter(j=>j.MenuTitle !== '常规群发')
          // }
          if(i.Children.find(item=>item.MenuTitle == '短信记录')){
            i.Children = i.Children.filter(j=>j.MenuTitle !== '短信记录')
          }
          if(i.Children.find(item=>item.MenuTitle == '原通讯录')){
            i.Children = i.Children.filter(j=>j.MenuTitle !== '原通讯录')
          }
          return i
        })
      }
    }else{
      t.navData = menu.leaderMenu
    }
  },
  methods: {
    onOpenChange(openKeys) {
      // if (openKeys.length !== 0) {
      //   this.openKeys = [openKeys[1]]
      // } else {
      //   this.openKeys = ['']
      // }
      const rootSubmenuKeys = this.navData.map(i=>i.MenuID)
      const latestOpenKey = openKeys.find(key => this.openKeys.indexOf(key) === -1);
      if (rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
        this.openKeys = openKeys;
      } else {
        this.openKeys = latestOpenKey ? [latestOpenKey] : [];
      }
    },
  }
};
</script>