270 lines
5.0 KiB
JavaScript
270 lines
5.0 KiB
JavaScript
import Cookies from 'js-cookie'
|
|
import {
|
|
getDimension,
|
|
setDimension
|
|
} from '../../utils/auth'
|
|
import $storage from 'good-storage'
|
|
import {
|
|
switchPoint,
|
|
getUnreadMessageCount
|
|
} from '../../api/user.js'
|
|
import {
|
|
isMobile
|
|
} from '../../utils/base.js'
|
|
|
|
const state = {
|
|
sidebar: {
|
|
opened: isMobile() ? false : true,
|
|
withoutAnimation: false,
|
|
width: Cookies.get('sidebarWidth') || '230px'
|
|
},
|
|
topMenu: Cookies.get('topMenu'),
|
|
// 当前语言
|
|
language: Cookies.get('language') || 'en_US',
|
|
// 主题 '':亮色 / dark:暗黑
|
|
theme: $storage.get('theme') || '',
|
|
// 系统端
|
|
system: $storage.get('system') || '',
|
|
// 当前系统的所有多语言数据
|
|
i18nMessages: {},
|
|
// 组件全局尺寸
|
|
dimension: getDimension(),
|
|
// 字体尺寸
|
|
size: Cookies.get('size') || 'medium',
|
|
reloginVisible: false,
|
|
// 面包屑
|
|
breadcrumbList: [],
|
|
// 菜单打开项
|
|
openedKeys: [],
|
|
showMessage: false,
|
|
messageData: {},
|
|
messageCount: 0,
|
|
// 是否显示18禁弹窗
|
|
showForbidden: true,
|
|
// 阻止页面切换
|
|
showPrevent: false,
|
|
showLogin: false
|
|
}
|
|
|
|
const mutations = {
|
|
// 切换菜单显示隐藏
|
|
TOGGLE_SIDEBAR: (state) => {
|
|
state.sidebar.opened = !state.sidebar.opened
|
|
state.sidebar.withoutAnimation = false
|
|
if (state.sidebar.opened) {
|
|
Cookies.set('sidebarStatus', 1)
|
|
} else {
|
|
Cookies.set('sidebarStatus', 0)
|
|
}
|
|
},
|
|
CLOSE_SIDEBAR: (state) => {
|
|
Cookies.set('sidebarStatus', 0)
|
|
state.sidebar.opened = false
|
|
},
|
|
// 设置一级菜单值
|
|
SET_TOP_MENU: (state, value) => {
|
|
Cookies.set('topMenu', value)
|
|
state.topMenu = value
|
|
},
|
|
// 设置菜单宽度
|
|
SET_SIDEBAR_WIDTH: (state, width) => {
|
|
state.sidebar.width = width
|
|
Cookies.set('sidebarWidth', width)
|
|
},
|
|
SET_LANGUAGE: (state, language) => {
|
|
state.language = language
|
|
Cookies.set('language', language)
|
|
},
|
|
SET_SIZE: (state, size) => {
|
|
state.size = size
|
|
Cookies.set('size', size)
|
|
},
|
|
SET_DIMENSION: (state, value) => {
|
|
state.dimension = value
|
|
setDimension(value)
|
|
},
|
|
SET_I18N_MESSAGES: (state, value) => {
|
|
state.i18nMessages = value
|
|
},
|
|
SET_BREADCRUMB: (state, value) => {
|
|
state.breadcrumbList = value
|
|
},
|
|
SET_BREADCRUMB_NAME: (state, value) => {
|
|
if (!Array.isArray(value)) return
|
|
value.map((i) => {
|
|
state.breadcrumbList
|
|
.filter((bread) => bread?.meta?.title === i.currTitle)
|
|
.map((bread) => {
|
|
bread.meta.title = i.newTitle
|
|
bread.meta.i18n = false
|
|
if (i.redirect) bread.redirect = i.redirect
|
|
})
|
|
})
|
|
},
|
|
// 设置主题
|
|
SET_THEME(state, value) {
|
|
state.theme = value
|
|
$storage.set('theme', value)
|
|
},
|
|
// 设置系统端
|
|
SET_SYSTEM(state, value) {
|
|
state.system = value
|
|
$storage.set('system', value)
|
|
},
|
|
SET_OPENED_KEYS(state, value) {
|
|
state.openedKeys = value;
|
|
},
|
|
SHOW_MESSAGE(state, {
|
|
show,
|
|
source,
|
|
id,
|
|
orderid
|
|
}) {
|
|
state.showMessage = show;
|
|
state.messageData = {
|
|
source,
|
|
id,
|
|
orderid
|
|
}
|
|
|
|
},
|
|
SET_UNREAD_MESSAGE(state, value) {
|
|
state.messageCount = value;
|
|
},
|
|
SET_FORBIDDEN(state, value) {
|
|
state.showForbidden = value;
|
|
$storage.set('showForbidden', value)
|
|
},
|
|
SET_PREVENT(state, value) {
|
|
state.showPrevent = value;
|
|
},
|
|
SET_SHOW_LOGIN(state, value) {
|
|
state.showLogin = value;
|
|
}
|
|
}
|
|
|
|
const actions = {
|
|
setPrevent({
|
|
commit
|
|
}, value) {
|
|
commit('SET_PREVENT', value);
|
|
},
|
|
setShowLogin({
|
|
commit
|
|
}, value) {
|
|
commit('SET_SHOW_LOGIN', value);
|
|
},
|
|
toggleSideBar({
|
|
commit
|
|
}) {
|
|
commit('TOGGLE_SIDEBAR')
|
|
},
|
|
closeSideBar({
|
|
commit
|
|
}) {
|
|
commit('CLOSE_SIDEBAR')
|
|
},
|
|
setTopMenu({
|
|
commit
|
|
}, value) {
|
|
commit('SET_TOP_MENU', value)
|
|
},
|
|
setLanguage({
|
|
commit
|
|
}, language) {
|
|
commit('SET_LANGUAGE', language)
|
|
},
|
|
setSize({
|
|
commit
|
|
}, size) {
|
|
commit('SET_SIZE', size)
|
|
},
|
|
setDimension({
|
|
commit
|
|
}, value) {
|
|
commit('SET_DIMENSION', value)
|
|
},
|
|
setI18nMessages({
|
|
commit
|
|
}, messages) {
|
|
commit('SET_I18N_MESSAGES', messages)
|
|
},
|
|
// 设置面包屑
|
|
setBreadcrumb({
|
|
commit
|
|
}, value) {
|
|
commit('SET_BREADCRUMB', value)
|
|
},
|
|
// 设置面包屑名称
|
|
setBreadcrumbName({
|
|
commit
|
|
}, value) {
|
|
commit('SET_BREADCRUMB_NAME', value)
|
|
},
|
|
// 设置主题
|
|
setTheme({
|
|
commit
|
|
}, value) {
|
|
commit('SET_THEME', value)
|
|
},
|
|
// 设置当前系统端
|
|
setSystem({
|
|
commit
|
|
}, value) {
|
|
commit('SET_SYSTEM', value)
|
|
},
|
|
// 设置菜单展开项
|
|
setOpenedKeys({
|
|
commit
|
|
}, value) {
|
|
commit('SET_OPENED_KEYS', value)
|
|
},
|
|
// 显示消息提示
|
|
showMessage({
|
|
commit,
|
|
dispatch
|
|
}, value) {
|
|
return new Promise((resolve, reject) => {
|
|
let {
|
|
mid
|
|
} = value;
|
|
if (mid) {
|
|
dispatch('main/switchSystem', 'service', {
|
|
root: true
|
|
}).then((_) => {
|
|
dispatch('user/swichUser', mid, {
|
|
root: true
|
|
}).then((_) => {
|
|
commit('SHOW_MESSAGE', value)
|
|
resolve()
|
|
})
|
|
})
|
|
} else {
|
|
commit('SHOW_MESSAGE', value)
|
|
resolve()
|
|
}
|
|
})
|
|
|
|
},
|
|
// 读取未读消息数量
|
|
getUnreadMessage({
|
|
commit
|
|
}) {
|
|
getUnreadMessageCount().then(res => {
|
|
commit('SET_UNREAD_MESSAGE', parseInt(res))
|
|
})
|
|
},
|
|
// 设置是否显示18禁弹窗
|
|
setForbidden({
|
|
commit
|
|
}, value) {
|
|
commit('SET_FORBIDDEN', value)
|
|
},
|
|
}
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state,
|
|
mutations,
|
|
actions
|
|
} |