menu.js 3.08 KB
import portal from '@/api/portal.js'

const state = {
  menus: [],
  registRouter: false,
  bookmark: {},
  selectedMenu: {},
  appMenus: [],
  appTypes: [],
}

const getters = {
  menus: function (state) {
    return state.menus
  },
  bookmark: function (state) {
    return state.bookmark
  },
  appMenus: (state) => state.appMenus,
  appTypes: (state) => state.appTypes,
}

const actions = {
  actionRegistRouter({commit, state}) {
    commit('mutationRegistRouter')
  },
  actionMenus({commit, state}) {
    return new Promise((resolve, reject) => {
      if (state.menus && state.menus.length >= 1) {
        resolve(state.menus)
        return
      }
      portal
        .getMenus()
        .then((data) => {
          sessionStorage.setItem('currentMenus', JSON.stringify(data))
          commit('mutationMenus', data)
          resolve(data)
        })
        .catch((error) => {
          reject(error)
        })
    })
  },
  actionMenusEmpty({commit, state}) {
    return new Promise((resolve, reject) => {
      commit('mutationMenus', [])
    })
  },
  //附件在线预览
  onlinePreview({commit, state}, id) {
    return new Promise((resolve, reject) => {
      portal.onlinePreview(id, (response) => {
        resolve(response.data)
      })
    })
  },
  //附件下载
  downloadFile({commit, state}, id) {
    portal.downloadFile(id)
  },
  //获取用户头像
  downloadImg({commit, state}, fileId) {
    return new Promise((resolve, reject) => {
      portal.downloadImg(fileId, (response) => {
        resolve(response)
      })
    })
  },
  actionMenuBookmark({commit, state}) {
    return new Promise((resolve, reject) => {
      portal.getMenuBookmark().then((data) => {
        sessionStorage.setItem('currentMenuBookmark', JSON.stringify(data))
        commit('mutationBookmark', data)
        resolve(data)
      })
    })
  },
  removeMenuBookmark({commit, state}, ids) {
    return new Promise((resolve, reject) => {
      portal.removeBookmarkByMenuIds(ids).then((result) => {
        portal.getMenuBookmark().then((data) => {
          sessionStorage.setItem('currentMenuBookmark', JSON.stringify(data))
          commit('mutationBookmark', data)
          resolve(data)
        })
      })
    })
  },
  async getAppMenus({commit, state}, id) {
    let data = await portal.getSysAppTree(id)
    commit('setAppMenus', data)
    return data
  },
  async getAppTypes({commit, state}) {
    let data = await portal.getMenuTree()
    let treeData = data[0].children.filter((item) => item.alias === 'app_menu')
    commit('setAppTypes', treeData[0].children)
    return data.value
  },
}

const mutations = {
  mutationRegistRouter(state) {
    state.registRouter = true
  },
  mutationMenus(state, menus) {
    state.menus = menus
  },
  mutationBookmark(state, bookmark) {
    state.bookmark = bookmark
  },
  setSelectedMenu(state, currentMenu) {
    state.selectedMenu = currentMenu
  },
  setAppMenus(state, appMenus) {
    state.appMenus = appMenus
  },
  setAppTypes(state, appTypes) {
    state.appTypes = appTypes
  },
}

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations,
}