index.js 2.49 KB

export default {
  state: {
    isCollapse: sessionStorage.getItem('isCollapse') && sessionStorage.getItem('isCollapse') == 1 ? true : false || false,
    logoShow: sessionStorage.getItem('isCollapse') && sessionStorage.getItem('isCollapse') == 1 ? true : false || false,
    uniquerouter: true,
    rightNav: {},
    tabnavBox: JSON.parse(sessionStorage.getItem("addTab")) || [{
      title: "home",
      path: "/index"
    }]
  },
  mutations: {
    addTab(state, arg) {
      state.isActive = arg.path
      if (state.tabnavBox[0] && state.tabnavBox[0].title !== "home") {
        state.tabnavBox.unshift({
          title: "home",
          path: "/index"
        })
      }

      for (let i = 0; i < state.tabnavBox.length; i++) {
        if (state.tabnavBox[i].path === arg.path) {
          return false
        }
      }
      state.tabnavBox.push({
        title: arg.title,
        path: arg.path
      })

      sessionStorage.setItem("addTab", JSON.stringify(state.tabnavBox))
    },
    openMenu(state, arg) {
      state.rightNav = arg
    },
    removeTab(state, arg) {
      let index = state.tabnavBox.findIndex(function (value, key) {
        return value.path === arg.tabItem.path
      })
      state.tabnavBox.splice(index, 1)
      if (arg.tabItem.path === arg.fullPath) {
        let tabActive = state.tabnavBox[index] || state.tabnavBox[index - 1]
        arg.router.push(tabActive.path)
      }
      sessionStorage.setItem("addTab", JSON.stringify(state.tabnavBox))
    },
    removeOtherTab(state, arg) {
      state.tabnavBox = [{
        title: "home",
        path: "/index"
      }]
      if (arg.all) {
        arg.router.push("/index")
        return false
      }
      state.tabnavBox.push(arg.tabItem)
      arg.router.push(arg.tabItem.path)
      sessionStorage.setItem("addTab", JSON.stringify(state.tabnavBox))
    },
    collapse(state, arg) {
      state.isCollapse = !state.isCollapse
      sessionStorage.setItem('isCollapse', state.isCollapse ? 1 : 0)
      if (state.logoShow) {
        setTimeout(function () {
          state.logoShow = false
        }, 300)
      } else {
        state.logoShow = true
      }
    }
  },
  actions: {
    addTab({ commit }, arg) {
      commit("addTab", arg)
    },
    openMenu({ commit }, arg) {
      commit("openMenu", arg)
    },
    removeTab({ commit }, arg) {
      commit("removeTab", arg)
    },
    removeOtherTab({ commit }, arg) {
      commit("removeOtherTab", arg)
    },
    collapse({ commit }, arg) {
      commit("collapse", arg)
    }
  }
}