|
|
|
@ -1,4 +1,7 @@
|
|
|
|
|
// 从 'vue' 库中导入 Vue 构造函数,它是 Vue.js 框架的核心,后续很多功能会依赖它来实现
|
|
|
|
|
import Vue from 'vue'
|
|
|
|
|
// 从 '../../store/mutation-types' 文件中解构导入多个常量,这些常量通常用于标识 Vuex 中 mutations 的类型
|
|
|
|
|
// 例如用于区分不同状态变更操作的名称,方便在代码中统一管理和调用相关的状态修改逻辑
|
|
|
|
|
import {
|
|
|
|
|
SIDEBAR_TYPE,
|
|
|
|
|
DEFAULT_THEME,
|
|
|
|
@ -14,109 +17,181 @@ import {
|
|
|
|
|
|
|
|
|
|
const app = {
|
|
|
|
|
state: {
|
|
|
|
|
// 表示侧边栏是否显示,初始值为 true,意味着默认侧边栏是显示状态
|
|
|
|
|
sidebar: true,
|
|
|
|
|
// 用于标识当前应用运行所在的设备类型,初始值为 'desktop',表示默认认为是桌面设备
|
|
|
|
|
device: 'desktop',
|
|
|
|
|
// 应用的主题相关状态,初始为空字符串,后续可通过相应操作来设置具体的主题值
|
|
|
|
|
theme: '',
|
|
|
|
|
// 应用的布局模式相关状态,初始为空字符串,可根据业务需求设置不同的布局模式
|
|
|
|
|
layout: '',
|
|
|
|
|
// 应用内容宽度相关状态,初始为空字符串,用来确定内容区域的宽度设置情况
|
|
|
|
|
contentWidth: '',
|
|
|
|
|
// 表示头部是否固定,初始值为 false,即默认头部不是固定状态
|
|
|
|
|
fixedHeader: false,
|
|
|
|
|
// 表示侧边栏是否固定,初始值为 false,意味着默认侧边栏不是固定的
|
|
|
|
|
fixSiderbar: false,
|
|
|
|
|
// 表示头部是否自动隐藏,初始值为 false,即默认头部不会自动隐藏
|
|
|
|
|
autoHideHeader: false,
|
|
|
|
|
// 应用的颜色相关设置,初始值为 null,后续会根据操作来设置具体颜色值
|
|
|
|
|
color: null,
|
|
|
|
|
// 可能与颜色弱化(比如淡色模式等)相关的状态标识,初始值为 false
|
|
|
|
|
weak: false,
|
|
|
|
|
// 用于标识是否启用多标签功能,初始值为 true,默认启用多标签
|
|
|
|
|
multiTab: true
|
|
|
|
|
},
|
|
|
|
|
mutations: {
|
|
|
|
|
// 用于设置侧边栏的显示类型,接收当前状态对象 state 和要设置的类型值 type
|
|
|
|
|
SET_SIDEBAR_TYPE: (state, type) => {
|
|
|
|
|
// 将 state 中的 sidebar 属性更新为传入的 type 值,改变侧边栏的显示状态
|
|
|
|
|
state.sidebar = type
|
|
|
|
|
// 使用 Vue.ls.set 方法(可能是自定义的本地存储操作)将 SIDEBAR_TYPE 对应的存储值设为 type
|
|
|
|
|
// 这样可以将侧边栏类型的设置持久化或者在其他地方能获取到该设置值
|
|
|
|
|
Vue.ls.set(SIDEBAR_TYPE, type)
|
|
|
|
|
},
|
|
|
|
|
// 用于关闭侧边栏的方法,该方法操作 state 来改变侧边栏状态
|
|
|
|
|
CLOSE_SIDEBAR: (state) => {
|
|
|
|
|
// 先通过 Vue.ls.set 将 SIDEBAR_TYPE 对应的存储值设为 true,具体含义由业务逻辑决定
|
|
|
|
|
Vue.ls.set(SIDEBAR_TYPE, true)
|
|
|
|
|
// 然后将 state 中的 sidebar 属性设置为 false,实现关闭侧边栏的效果
|
|
|
|
|
state.sidebar = false
|
|
|
|
|
},
|
|
|
|
|
// 用于切换设备类型的方法,接收要切换到的设备值 device,更新 state 中的 device 属性来反映设备类型变化
|
|
|
|
|
TOGGLE_DEVICE: (state, device) => {
|
|
|
|
|
state.device = device
|
|
|
|
|
},
|
|
|
|
|
// 用于切换应用主题的方法,接收要设置的主题值 theme
|
|
|
|
|
TOGGLE_THEME: (state, theme) => {
|
|
|
|
|
// setStore('_DEFAULT_THEME', theme)
|
|
|
|
|
// 原本可能有个 setStore 方法用于存储主题相关设置(当前被注释掉了)
|
|
|
|
|
// 现在使用 Vue.ls.set 方法将 DEFAULT_THEME 对应的存储值设为 theme,实现主题设置的持久化等操作
|
|
|
|
|
Vue.ls.set(DEFAULT_THEME, theme)
|
|
|
|
|
// 同时更新 state 中的 theme 属性,使应用内部的主题状态改变为传入的 theme 值
|
|
|
|
|
state.theme = theme
|
|
|
|
|
},
|
|
|
|
|
// 用于切换应用布局模式的方法,接收要设置的布局模式值 layout
|
|
|
|
|
TOGGLE_LAYOUT_MODE: (state, layout) => {
|
|
|
|
|
// 通过 Vue.ls.set 将 DEFAULT_LAYOUT_MODE 对应的存储值设为 layout,可能用于后续获取布局模式设置等
|
|
|
|
|
Vue.ls.set(DEFAULT_LAYOUT_MODE, layout)
|
|
|
|
|
// 更新 state 中的 layout 属性,使应用的布局模式改变为传入的 layout 值
|
|
|
|
|
state.layout = layout
|
|
|
|
|
},
|
|
|
|
|
// 用于切换头部是否固定的方法,接收表示固定与否的布尔值 fixed
|
|
|
|
|
TOGGLE_FIXED_HEADER: (state, fixed) => {
|
|
|
|
|
// 使用 Vue.ls.set 将 DEFAULT_FIXED_HEADER 对应的存储值设为 fixed,持久化头部固定状态设置
|
|
|
|
|
Vue.ls.set(DEFAULT_FIXED_HEADER, fixed)
|
|
|
|
|
// 更新 state 中的 fixedHeader 属性,改变头部固定的实际状态
|
|
|
|
|
state.fixedHeader = fixed
|
|
|
|
|
},
|
|
|
|
|
// 用于切换侧边栏是否固定的方法,接收表示固定与否的布尔值 fixed
|
|
|
|
|
TOGGLE_FIXED_SIDERBAR: (state, fixed) => {
|
|
|
|
|
// 通过 Vue.ls.set 将 DEFAULT_FIXED_SIDEMENU 对应的存储值设为 fixed,用于存储侧边栏固定状态设置
|
|
|
|
|
Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed)
|
|
|
|
|
// 更新 state 中的 fixSiderbar 属性,改变侧边栏固定的实际状态
|
|
|
|
|
state.fixSiderbar = fixed
|
|
|
|
|
},
|
|
|
|
|
// 用于切换头部是否自动隐藏的方法,接收表示隐藏与否的布尔值 show
|
|
|
|
|
TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => {
|
|
|
|
|
// 使用 Vue.ls.set 将 DEFAULT_FIXED_HEADER_HIDDEN 对应的存储值设为 show,持久化头部隐藏状态设置
|
|
|
|
|
Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
|
|
|
|
|
// 更新 state 中的 autoHideHeader 属性,改变头部自动隐藏的实际状态
|
|
|
|
|
state.autoHideHeader = show
|
|
|
|
|
},
|
|
|
|
|
// 用于切换应用内容宽度类型的方法,接收要设置的内容宽度类型值 type
|
|
|
|
|
TOGGLE_CONTENT_WIDTH: (state, type) => {
|
|
|
|
|
// 通过 Vue.ls.set 将 DEFAULT_CONTENT_WIDTH_TYPE 对应的存储值设为 type,方便后续获取该设置
|
|
|
|
|
Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
|
|
|
|
|
// 更新 state 中的 contentWidth 属性,改变应用内容宽度的实际类型
|
|
|
|
|
state.contentWidth = type
|
|
|
|
|
},
|
|
|
|
|
// 用于切换应用颜色的方法,接收要设置的颜色值 color
|
|
|
|
|
TOGGLE_COLOR: (state, color) => {
|
|
|
|
|
// 使用 Vue.ls.set 将 DEFAULT_COLOR 对应的存储值设为 color,持久化颜色设置
|
|
|
|
|
Vue.ls.set(DEFAULT_COLOR, color)
|
|
|
|
|
// 更新 state 中的 color 属性,改变应用的实际颜色设置
|
|
|
|
|
state.color = color
|
|
|
|
|
},
|
|
|
|
|
// 用于切换颜色弱化相关状态的方法,接收表示弱化与否的布尔值 flag
|
|
|
|
|
TOGGLE_WEAK: (state, flag) => {
|
|
|
|
|
// 通过 Vue.ls.set 将 DEFAULT_COLOR_WEAK 对应的存储值设为 flag,持久化颜色弱化状态设置
|
|
|
|
|
Vue.ls.set(DEFAULT_COLOR_WEAK, flag)
|
|
|
|
|
// 更新 state 中的 weak 属性,改变颜色弱化的实际状态
|
|
|
|
|
state.weak = flag
|
|
|
|
|
},
|
|
|
|
|
// 用于切换多标签相关状态的方法,接收表示启用与否的布尔值 bool
|
|
|
|
|
TOGGLE_MULTI_TAB: (state, bool) => {
|
|
|
|
|
// 使用 Vue.ls.set 将 DEFAULT_MULTI_TAB 对应的存储值设为 bool,持久化多标签设置
|
|
|
|
|
Vue.ls.set(DEFAULT_MULTI_TAB, bool)
|
|
|
|
|
// 更新 state 中的 multiTab 属性,改变多标签功能的实际启用状态
|
|
|
|
|
state.multiTab = bool
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
actions: {
|
|
|
|
|
// 名为 setSidebar 的 action 方法,用于触发 SET_SIDEBAR_TYPE 这个 mutation 来设置侧边栏类型
|
|
|
|
|
// 接收一个 type 参数,会将其传递给对应的 mutation 方法
|
|
|
|
|
setSidebar ({ commit }, type) {
|
|
|
|
|
commit('SET_SIDEBAR_TYPE', type)
|
|
|
|
|
},
|
|
|
|
|
// 名为 CloseSidebar 的 action 方法,用于触发 CLOSE_SIDEBAR 这个 mutation 来关闭侧边栏
|
|
|
|
|
CloseSidebar ({ commit }) {
|
|
|
|
|
commit('CLOSE_SIDEBAR')
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleDevice 的 action 方法,用于触发 TOGGLE_DEVICE 这个 mutation 来切换设备类型
|
|
|
|
|
// 接收要切换到的设备值 device,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleDevice ({ commit }, device) {
|
|
|
|
|
commit('TOGGLE_DEVICE', device)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleTheme 的 action 方法,用于触发 TOGGLE_THEME 这个 mutation 来切换应用主题
|
|
|
|
|
// 接收要设置的主题值 theme,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleTheme ({ commit }, theme) {
|
|
|
|
|
commit('TOGGLE_THEME', theme)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleLayoutMode 的 action 方法,用于触发 TOGGLE_LAYOUT_MODE 这个 mutation 来切换应用布局模式
|
|
|
|
|
// 接收要设置的布局模式值 mode,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleLayoutMode ({ commit }, mode) {
|
|
|
|
|
commit('TOGGLE_LAYOUT_MODE', mode)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleFixedHeader 的 action 方法,用于切换头部是否固定的状态
|
|
|
|
|
// 接收表示固定与否的布尔值 fixedHeader,先做一些额外逻辑判断(如果不是固定头部,则设置头部隐藏为 false)
|
|
|
|
|
// 再触发 TOGGLE_FIXED_HEADER 这个 mutation 来更新头部固定相关状态
|
|
|
|
|
ToggleFixedHeader ({ commit }, fixedHeader) {
|
|
|
|
|
if (!fixedHeader) {
|
|
|
|
|
commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
|
|
|
|
|
}
|
|
|
|
|
commit('TOGGLE_FIXED_HEADER', fixedHeader)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleFixSiderbar 的 action 方法,用于触发 TOGGLE_FIXED_SIDERBAR 这个 mutation 来切换侧边栏是否固定的状态
|
|
|
|
|
// 接收表示固定与否的布尔值 fixSiderbar,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleFixSiderbar ({ commit }, fixSiderbar) {
|
|
|
|
|
commit('TOGGLE_FIXED_SIDERBAR', fixSiderbar)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleFixedHeaderHidden 的 action 方法,用于触发 TOGGLE_FIXED_HEADER_HIDDEN 这个 mutation 来切换头部是否自动隐藏的状态
|
|
|
|
|
// 接收表示隐藏与否的布尔值 show,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleFixedHeaderHidden ({ commit }, show) {
|
|
|
|
|
commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleContentWidth 的 action 方法,用于触发 TOGGLE_CONTENT_WIDTH 这个 mutation 来切换应用内容宽度类型
|
|
|
|
|
// 接收要设置的内容宽度类型值 type,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleContentWidth ({ commit }, type) {
|
|
|
|
|
commit('TOGGLE_CONTENT_WIDTH', type)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleColor 的 action 方法,用于触发 TOGGLE_COLOR 这个 mutation 来切换应用颜色相关状态
|
|
|
|
|
// 接收要设置的颜色值 color,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleColor ({ commit }, color) {
|
|
|
|
|
commit('TOGGLE_COLOR', color)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleWeak 的 action 方法,用于触发 TOGGLE_WEAK 这个 mutation 来切换颜色弱化相关状态
|
|
|
|
|
// 接收表示弱化与否的布尔值 weakFlag,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleWeak ({ commit }, weakFlag) {
|
|
|
|
|
commit('TOGGLE_WEAK', weakFlag)
|
|
|
|
|
},
|
|
|
|
|
// 名为 ToggleMultiTab 的 action 方法,用于触发 TOGGLE_MULTI_TAB 这个 mutation 来切换多标签相关状态
|
|
|
|
|
// 接收表示启用与否的布尔值 bool,并传递给对应的 mutation 方法
|
|
|
|
|
ToggleMultiTab ({ commit }, bool) {
|
|
|
|
|
commit('TOGGLE_MULTI_TAB', bool)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default app
|
|
|
|
|
// 将定义好的 app 对象导出,使得在其他 JavaScript 文件中可以通过导入该模块来使用 app 中定义的 state、mutations 和 actions 等内容
|
|
|
|
|
// 进而构建 Vuex 相关的应用状态管理逻辑等
|
|
|
|
|
export default app
|