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
  | import Vue from 'vue' 
 |  import Vuex from 'vuex' 
 |  Vue.use(Vuex) 
 |    
 |  const state = { 
 |    // 登录用户信息 
 |    userInfo: null, 
 |    primaryColor: '#2080f7', 
 |    // 首页 
 |    homePage: null, 
 |    // 菜单 
 |    menuData: { 
 |      // 菜单列表 
 |      list: [], 
 |      // 是否收起 
 |      collapse: false 
 |    }, 
 |    // tags数组 
 |    tags: [], 
 |    // tagsview标签显示隐藏 
 |    isCollapse: false 
 |  } 
 |    
 |  const mutations = { 
 |    // 切换菜单状态 
 |    switchCollapseMenu (state, value) { 
 |      if (value != null) { 
 |        state.menuData.collapse = value 
 |      } else { 
 |        state.menuData.collapse = !state.menuData.collapse 
 |      } 
 |      window.localStorage.setItem('MENU_STATUS', state.menuData.collapse) 
 |    }, 
 |    // 设置已登录的用户信息 
 |    setUserInfo: (state, data) => { 
 |      state.userInfo = { 
 |        ...state.userInfo, 
 |        ...data 
 |      } 
 |    }, 
 |    
 |    clearUserInfo: (state) => { 
 |      state.userInfo = null 
 |    }, 
 |    
 |    // 设置首页路由信息 
 |    setHomePage (state, homePage) { 
 |      state.homePage = homePage 
 |    }, 
 |    // 重置菜单 
 |    resetMenus: (state) => { 
 |      state.menuData.list = [] 
 |    }, 
 |    //  tags 
 |    pushtags (state, val) { 
 |      // 如果等于-1说明tabs不存在那么插入,否则什么都不做 
 |      // findindex找角标,循环判断一下,如果等于那么就代表有相同的,就不必添加,如果找不到那就是-1.就添加 
 |      const result = state.tags.findIndex(item => item.index === val.index) 
 |      if (result === -1) { 
 |        state.tags.push({ ...val, keepAlive: false }) 
 |      } else { 
 |        state.tags[result] = { ...val, keepAlive: true } 
 |      } 
 |      // result === -1 ? state.tags.push(val) : (state.tags[result]==val) 
 |    }, 
 |    // 关闭标签 
 |    closeTab (state, val) { 
 |      // 同上,找角标,然后用角标的位置对应删除一位。splice:这是数组的删除方法 
 |      const result = state.tags.findIndex(item => item.index === val.index) 
 |      state.tags.splice(result, 1) 
 |    }, 
 |    // 关闭所有tagsview标签 
 |    cleartagsview (state, val) { 
 |      // 清空数组 
 |      state.tags = [] 
 |      // 跳转到首页,val接受传过来的当前路由 
 |      if (val !== '/index') { 
 |        router.push({ path: '/index' }) 
 |      } 
 |    }, 
 |    // 改变tagsview显示隐藏 
 |    changeisshow (state) { 
 |      state.isCollapse = !state.isCollapse 
 |    } 
 |  } 
 |  const actions = {} 
 |  const getters = {} 
 |  export default new Vuex.Store({ 
 |    state, 
 |    mutations, 
 |    actions, 
 |    getters 
 |  }) 
 |  
  |