rk
2025-09-28 a8fb7ae2dbb61a94141ed5e73d3bb2632b7b84df
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
import Vue from 'vue'
import Vuex from 'vuex'
import router from '../router'
Vue.use(Vuex)
 
const state = {
  // 登录用户信息
  userInfo: null,
  tableHeightNew: 300,
  primaryColor: '#2080f7',
  // 首页
  homePage: null,
  // 菜单
  menuData: {
    // 菜单列表
    list: [],
    // 是否收起
    collapse: false
  },
  topMenuCurrent: {
  },
  topMenuList: {
    // 菜单列表
    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
    }
  },
  setTableHeightNew: (state, data) => {
    state.tableHeightNew = data
  },
  clearUserInfo: (state) => {
    state.userInfo = null
  },
 
  // 设置首页路由信息
  setHomePage (state, homePage) {
    state.homePage = homePage
  },
  // 设置首页路由信息
  setTopMenuCurrent (state, current) {
    console.log("setTopMenuCurrent",current)
    if(current.id !== state.topMenuCurrent.id){
      state.topMenuList.list.forEach(item => {
        console.log(item.id, item.id)
        if (current.id == item.id) {
          state.topMenuCurrent = current
          state.menuData.list = item.children
        }
      })
    }
  },
  // 重置菜单
  resetMenus: (state) => {
    state.topMenuId=null
    state.menuData.list = []
  },
  //  tags
  pushtags (state, val) {
    // 如果等于-1说明tabs不存在那么插入,否则什么都不做
    // findindex找角标,循环判断一下,如果等于那么就代表有相同的,就不必添加,如果找不到那就是-1.就添加
    // state.tags = [{ ...val, keepAlive: false }]
    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: false }
    }
    // 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
})