xiangpei
2025-04-18 7feee0463330ee014b0ac1a6f8e31118bb699f12
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import Vue from 'vue'
import Vuex from 'vuex'
import menu from './menu'
import page from './page'
import role from './role'
import dictType from './dict-type'
import dictData from './dict-data'
import org from './org'
import user from './user'
import quartz from './quartz'
import upload from './upload'
import router from "@/router";
 
Vue.use(Vuex)
 
export default new Vuex.Store({
  state: {
    // token
    token: '',
    // 验证码id
    verfyId: '',
    // 用户权限(菜单)
    permissions: [],
    dynamicRouters: JSON.parse(sessionStorage.getItem("dynamicRouters")),
    isFresh: '',
    // 动态导航标签默认值
    editableTabsValue: '/home',
    editableTabs:[],
    // editableTabs: [{
    //   title: "主页",
    //   name: "Welcome"
    // },],
 
  },
  getters: {
    // 防止刷新页面丢失当前tab
    // editableTabs: state => {
    //   if (sessionStorage.getItem("nowTab")) {
    //      state.editableTabs.push({title: '首页', name: '/Index'});
    //      state.editableTabs.push(JSON.parse(sessionStorage.getItem("nowTable")));
    //      return state.editableTabs;
    //   }
    // },
    // editableTabsValue: state => {
    //   if (sessionStorage.getItem("nowTabValue")) {
    //     return state.editableTabs = sessionStorage.getItem("nowTableValue");
    //   }
    // }
  },
  mutations: {
    addTab(state, tab) {
      // console.log("这是tab")
      // console.log(tab)
      sessionStorage.setItem("nowTab", JSON.stringify({title: tab.title, name: tab.name}));
      sessionStorage.setItem("nowTabValue", tab.name);
      let index = state.editableTabs.findIndex(e => e.name === tab.name)
      if(index === -1) {
        state.editableTabs.push({
          title: tab.title,
          name: tab.name,
        });
      }
      state.editableTabsValue = tab.name;
    },
    dynamicRouters(state, menus) {
      let routers = {
        path: '/index',
        name: 'Index',
        component: () => import('../views/IndexView.vue'),
        children: [
          // {
          //   path: '/home',
          //   name: 'Home',
          //   meta: {
          //     title: '主页'
          //   },
          //   component: () => import(/* webpackChunkName: "about" */ '../views/HomeView.vue')
          // },
        ]
      }
      if (menus) {
        menus.forEach((menu) => {
          if (menu.children.length > 0) {
            menu.children.forEach((item) => {
              // 菜单类型为1才是菜单,0是目录,2是按钮
              if (item.menuType === '1' && item.routerComponent) {
                let newRouter = {
                  path: item.menuPath,
                  name: item.routerName,
                  meta: {
                    title: item.menuName
                  },
                  component: () => import(`@/views/${item.routerComponent}.vue`)
                };
                const isRouteExists = router.getRoutes().some(route => route.name === newRouter.name || route.path === newRouter.path);
                if (!isRouteExists) {
                  routers.children.push(newRouter);
                }
              }
            })
          } else {
            // 菜单类型为1才是菜单,0是目录,2是按钮
            if (menu.menuType === '1' && menu.routerComponent) {
              let newRouter = {
                path: menu.menuPath,
                name: menu.routerName,
                meta: {
                  title: menu.menuName
                },
                component: () => import(`@/views/${menu.routerComponent}.vue`)
              }
              const isRouteExists = router.getRoutes().some(route => route.name === newRouter.name || route.path === newRouter.path);
              if (!isRouteExists) {
                routers.children.push(newRouter);
              }
            }
          }
        })
 
        router.addRoute(routers)
        state.dynamicRouters = routers;
        state.isFresh = "xp"
 
 
        sessionStorage.setItem("doIt", "yes")
      }
    }
  },
  actions: {
  },
  modules: {
    menu: menu,
    page: page,
    role: role,
    dictType: dictType,
    dictData: dictData,
    user: user,
    quartz: quartz,
    upload: upload,
    org: org,
  }
})