You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.1 KiB
113 lines
3.1 KiB
import config from '@/config' |
|
import {ADMIN} from '@/config/default' |
|
import {formatFullPath} from '@/utils/i18n' |
|
import {filterMenu} from '@/utils/authority-utils' |
|
import {getLocalSetting} from '@/utils/themeUtil' |
|
|
|
const localSetting = getLocalSetting(true) |
|
const customTitlesStr = sessionStorage.getItem(process.env.VUE_APP_TBAS_TITLES_KEY) |
|
const customTitles = (customTitlesStr && JSON.parse(customTitlesStr)) || [] |
|
|
|
export default { |
|
namespaced: true, |
|
state: { |
|
isMobile: false, |
|
animates: ADMIN.animates, |
|
palettes: ADMIN.palettes, |
|
pageMinHeight: 0, |
|
menuData: [], |
|
activatedFirst: undefined, |
|
customTitles, |
|
...config, |
|
...localSetting |
|
}, |
|
getters: { |
|
menuData(state, getters, rootState) { |
|
if (state.filterMenu) { |
|
const {permissions, roles} = rootState.account |
|
filterMenu(state.menuData, permissions, roles) |
|
} |
|
return state.menuData |
|
}, |
|
firstMenu(state) { |
|
const {menuData} = state |
|
if (menuData.length > 0 && !menuData[0].fullPath) { |
|
formatFullPath(menuData) |
|
} |
|
return menuData.map(item => { |
|
const menuItem = {...item} |
|
delete menuItem.children |
|
return menuItem |
|
}) |
|
}, |
|
subMenu(state) { |
|
const {menuData, activatedFirst} = state |
|
if (menuData.length > 0 && !menuData[0].fullPath) { |
|
formatFullPath(menuData) |
|
} |
|
const current = menuData.find(menu => menu.fullPath === activatedFirst) |
|
return current && current.children || [] |
|
} |
|
}, |
|
mutations: { |
|
setDevice (state, isMobile) { |
|
state.isMobile = isMobile |
|
}, |
|
setTheme (state, theme) { |
|
state.theme = theme |
|
}, |
|
setLayout (state, layout) { |
|
state.layout = layout |
|
}, |
|
setMultiPage (state, multiPage) { |
|
state.multiPage = multiPage |
|
}, |
|
setAnimate (state, animate) { |
|
state.animate = animate |
|
}, |
|
setWeekMode(state, weekMode) { |
|
state.weekMode = weekMode |
|
}, |
|
setFixedHeader(state, fixedHeader) { |
|
state.fixedHeader = fixedHeader |
|
}, |
|
setFixedSideBar(state, fixedSideBar) { |
|
state.fixedSideBar = fixedSideBar |
|
}, |
|
setLang(state, lang) { |
|
state.lang = lang |
|
}, |
|
setHideSetting(state, hideSetting) { |
|
state.hideSetting = hideSetting |
|
}, |
|
correctPageMinHeight(state, minHeight) { |
|
state.pageMinHeight += minHeight |
|
}, |
|
setMenuData(state, menuData) { |
|
state.menuData = menuData |
|
}, |
|
setAsyncRoutes(state, asyncRoutes) { |
|
state.asyncRoutes = asyncRoutes |
|
}, |
|
setPageWidth(state, pageWidth) { |
|
state.pageWidth = pageWidth |
|
}, |
|
setActivatedFirst(state, activatedFirst) { |
|
state.activatedFirst = activatedFirst |
|
}, |
|
setFixedTabs(state, fixedTabs) { |
|
state.fixedTabs = fixedTabs |
|
}, |
|
setCustomTitle(state, {path, title}) { |
|
if (title) { |
|
const obj = state.customTitles.find(item => item.path === path) |
|
if (obj) { |
|
obj.title = title |
|
} else { |
|
state.customTitles.push({path, title}) |
|
} |
|
sessionStorage.setItem(process.env.VUE_APP_TBAS_TITLES_KEY, JSON.stringify(state.customTitles)) |
|
} |
|
} |
|
} |
|
}
|
|
|