|
@@ -1,120 +1,97 @@
|
|
|
-import Vue from 'vue'
|
|
|
+import storage from 'store'
|
|
|
import {
|
|
|
SIDEBAR_TYPE,
|
|
|
- DEFAULT_THEME,
|
|
|
- DEFAULT_LAYOUT_MODE,
|
|
|
- DEFAULT_COLOR,
|
|
|
- DEFAULT_COLOR_WEAK,
|
|
|
- DEFAULT_FIXED_HEADER,
|
|
|
- DEFAULT_FIXED_SIDEMENU,
|
|
|
- DEFAULT_FIXED_HEADER_HIDDEN,
|
|
|
- DEFAULT_CONTENT_WIDTH_TYPE,
|
|
|
- DEFAULT_MULTI_TAB
|
|
|
+ TOGGLE_MOBILE_TYPE,
|
|
|
+ TOGGLE_NAV_THEME,
|
|
|
+ TOGGLE_LAYOUT,
|
|
|
+ TOGGLE_FIXED_HEADER,
|
|
|
+ TOGGLE_FIXED_SIDEBAR,
|
|
|
+ TOGGLE_CONTENT_WIDTH,
|
|
|
+ TOGGLE_HIDE_HEADER,
|
|
|
+ TOGGLE_COLOR,
|
|
|
+ TOGGLE_WEAK,
|
|
|
+ TOGGLE_MULTI_TAB,
|
|
|
+ // i18n
|
|
|
+ APP_LANGUAGE
|
|
|
} from '@/store/mutation-types'
|
|
|
+import { loadLanguageAsync } from '@/locales'
|
|
|
|
|
|
const app = {
|
|
|
state: {
|
|
|
- sidebar: true,
|
|
|
- device: 'desktop',
|
|
|
- theme: '',
|
|
|
+ sideCollapsed: false,
|
|
|
+ isMobile: false,
|
|
|
+ theme: 'dark',
|
|
|
layout: '',
|
|
|
contentWidth: '',
|
|
|
fixedHeader: false,
|
|
|
- fixSiderbar: false,
|
|
|
+ fixedSidebar: false,
|
|
|
autoHideHeader: false,
|
|
|
- color: null,
|
|
|
+ color: '',
|
|
|
weak: false,
|
|
|
- multiTab: true
|
|
|
+ multiTab: true,
|
|
|
+ lang: 'en-US',
|
|
|
+ _antLocale: {}
|
|
|
},
|
|
|
mutations: {
|
|
|
- SET_SIDEBAR_TYPE: (state, type) => {
|
|
|
- state.sidebar = type
|
|
|
- Vue.ls.set(SIDEBAR_TYPE, type)
|
|
|
+ [SIDEBAR_TYPE]: (state, type) => {
|
|
|
+ state.sideCollapsed = type
|
|
|
+ storage.set(SIDEBAR_TYPE, type)
|
|
|
},
|
|
|
- CLOSE_SIDEBAR: (state) => {
|
|
|
- Vue.ls.set(SIDEBAR_TYPE, true)
|
|
|
- state.sidebar = false
|
|
|
+ [TOGGLE_MOBILE_TYPE]: (state, isMobile) => {
|
|
|
+ state.isMobile = isMobile
|
|
|
},
|
|
|
- TOGGLE_DEVICE: (state, device) => {
|
|
|
- state.device = device
|
|
|
- },
|
|
|
- TOGGLE_THEME: (state, theme) => {
|
|
|
- // setStore('_DEFAULT_THEME', theme)
|
|
|
- Vue.ls.set(DEFAULT_THEME, theme)
|
|
|
+ [TOGGLE_NAV_THEME]: (state, theme) => {
|
|
|
state.theme = theme
|
|
|
+ storage.set(TOGGLE_NAV_THEME, theme)
|
|
|
},
|
|
|
- TOGGLE_LAYOUT_MODE: (state, layout) => {
|
|
|
- Vue.ls.set(DEFAULT_LAYOUT_MODE, layout)
|
|
|
- state.layout = layout
|
|
|
- },
|
|
|
- TOGGLE_FIXED_HEADER: (state, fixed) => {
|
|
|
- Vue.ls.set(DEFAULT_FIXED_HEADER, fixed)
|
|
|
- state.fixedHeader = fixed
|
|
|
+ [TOGGLE_LAYOUT]: (state, mode) => {
|
|
|
+ state.layout = mode
|
|
|
+ storage.set(TOGGLE_LAYOUT, mode)
|
|
|
},
|
|
|
- TOGGLE_FIXED_SIDERBAR: (state, fixed) => {
|
|
|
- Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed)
|
|
|
- state.fixSiderbar = fixed
|
|
|
+ [TOGGLE_FIXED_HEADER]: (state, mode) => {
|
|
|
+ state.fixedHeader = mode
|
|
|
+ storage.set(TOGGLE_FIXED_HEADER, mode)
|
|
|
},
|
|
|
- TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => {
|
|
|
- Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
|
|
|
- state.autoHideHeader = show
|
|
|
+ [TOGGLE_FIXED_SIDEBAR]: (state, mode) => {
|
|
|
+ state.fixedSidebar = mode
|
|
|
+ storage.set(TOGGLE_FIXED_SIDEBAR, mode)
|
|
|
},
|
|
|
- TOGGLE_CONTENT_WIDTH: (state, type) => {
|
|
|
- Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
|
|
|
+ [TOGGLE_CONTENT_WIDTH]: (state, type) => {
|
|
|
state.contentWidth = type
|
|
|
+ storage.set(TOGGLE_CONTENT_WIDTH, type)
|
|
|
},
|
|
|
- TOGGLE_COLOR: (state, color) => {
|
|
|
- Vue.ls.set(DEFAULT_COLOR, color)
|
|
|
+ [TOGGLE_HIDE_HEADER]: (state, type) => {
|
|
|
+ state.autoHideHeader = type
|
|
|
+ storage.set(TOGGLE_HIDE_HEADER, type)
|
|
|
+ },
|
|
|
+ [TOGGLE_COLOR]: (state, color) => {
|
|
|
state.color = color
|
|
|
+ storage.set(TOGGLE_COLOR, color)
|
|
|
+ },
|
|
|
+ [TOGGLE_WEAK]: (state, mode) => {
|
|
|
+ state.weak = mode
|
|
|
+ storage.set(TOGGLE_WEAK, mode)
|
|
|
},
|
|
|
- TOGGLE_WEAK: (state, flag) => {
|
|
|
- Vue.ls.set(DEFAULT_COLOR_WEAK, flag)
|
|
|
- state.weak = flag
|
|
|
+ [APP_LANGUAGE]: (state, lang, antd = {}) => {
|
|
|
+ state.lang = lang
|
|
|
+ state._antLocale = antd
|
|
|
+ storage.set(APP_LANGUAGE, lang)
|
|
|
},
|
|
|
- TOGGLE_MULTI_TAB: (state, bool) => {
|
|
|
- Vue.ls.set(DEFAULT_MULTI_TAB, bool)
|
|
|
+ [TOGGLE_MULTI_TAB]: (state, bool) => {
|
|
|
+ storage.set(TOGGLE_MULTI_TAB, bool)
|
|
|
state.multiTab = bool
|
|
|
}
|
|
|
},
|
|
|
actions: {
|
|
|
- setSidebar ({ commit }, type) {
|
|
|
- commit('SET_SIDEBAR_TYPE', type)
|
|
|
- },
|
|
|
- CloseSidebar ({ commit }) {
|
|
|
- commit('CLOSE_SIDEBAR')
|
|
|
- },
|
|
|
- ToggleDevice ({ commit }, device) {
|
|
|
- commit('TOGGLE_DEVICE', device)
|
|
|
- },
|
|
|
- ToggleTheme ({ commit }, theme) {
|
|
|
- commit('TOGGLE_THEME', theme)
|
|
|
- },
|
|
|
- ToggleLayoutMode ({ commit }, mode) {
|
|
|
- commit('TOGGLE_LAYOUT_MODE', mode)
|
|
|
- },
|
|
|
- ToggleFixedHeader ({ commit }, fixedHeader) {
|
|
|
- if (!fixedHeader) {
|
|
|
- commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
|
|
|
- }
|
|
|
- commit('TOGGLE_FIXED_HEADER', fixedHeader)
|
|
|
- },
|
|
|
- ToggleFixSiderbar ({ commit }, fixSiderbar) {
|
|
|
- commit('TOGGLE_FIXED_SIDERBAR', fixSiderbar)
|
|
|
- },
|
|
|
- ToggleFixedHeaderHidden ({ commit }, show) {
|
|
|
- commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
|
|
|
- },
|
|
|
- ToggleContentWidth ({ commit }, type) {
|
|
|
- commit('TOGGLE_CONTENT_WIDTH', type)
|
|
|
- },
|
|
|
- ToggleColor ({ commit }, color) {
|
|
|
- commit('TOGGLE_COLOR', color)
|
|
|
- },
|
|
|
- ToggleWeak ({ commit }, weakFlag) {
|
|
|
- commit('TOGGLE_WEAK', weakFlag)
|
|
|
- },
|
|
|
- ToggleMultiTab ({ commit }, bool) {
|
|
|
- commit('TOGGLE_MULTI_TAB', bool)
|
|
|
+ setLang ({ commit }, lang) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ commit(APP_LANGUAGE, lang)
|
|
|
+ loadLanguageAsync(lang).then(() => {
|
|
|
+ resolve()
|
|
|
+ }).catch((e) => {
|
|
|
+ reject(e)
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|