mirror of https://gitee.com/xiaonuobase/snowy
175 lines
5.4 KiB
JavaScript
175 lines
5.4 KiB
JavaScript
/**
|
||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||
*/
|
||
import { defineStore } from 'pinia'
|
||
import { changeColor } from '@/utils/themeUtil'
|
||
import config from '@/config'
|
||
import { message } from 'ant-design-vue'
|
||
import tool from '@/utils/tool'
|
||
|
||
const toolDataGet = (key) => {
|
||
return tool.data.get(key)
|
||
}
|
||
|
||
// 获取缓存中的,如果取不到那就用配置的
|
||
const getCacheConfig = (value) => {
|
||
const data = toolDataGet(value)
|
||
if (data === null) {
|
||
return config[value]
|
||
}
|
||
return data
|
||
}
|
||
|
||
// deprecated 请使用 useGlobalStore
|
||
export const globalStore = defineStore('global', () => {
|
||
// 移动端布局
|
||
const isMobile = ref(false)
|
||
// 布局
|
||
const layout = ref(getCacheConfig('SNOWY_LAYOUT'))
|
||
// 菜单是否折叠 toggle
|
||
const menuIsCollapse = ref(getCacheConfig('SNOWY_MENU_COLLAPSE'))
|
||
// 侧边菜单是否排他展开
|
||
const sideUniqueOpen = ref(getCacheConfig('SNOWY_SIDE_UNIQUE_OPEN'))
|
||
// 多标签栏
|
||
const layoutTagsOpen = ref(getCacheConfig('SNOWY_LAYOUT_TAGS_OPEN'))
|
||
// 是否展示面包屑
|
||
const breadcrumbOpen = ref(getCacheConfig('SNOWY_BREADCRUMD_OPEN'))
|
||
// 是否开启固定宽度(顶栏菜单)
|
||
const fixedWidth = ref(getCacheConfig('SNOWY_FIXEDWIDTH_OPEN'))
|
||
// 顶栏是否应用主题色
|
||
const topHeaderThemeColorOpen = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_OPEN'))
|
||
// 顶栏主题色通栏
|
||
const topHeaderThemeColorSpread = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_SPREAD'))
|
||
// 登录用户水印
|
||
const loginUserWatermarkOpen = ref(getCacheConfig('SNOWY_LOGIN_USER_WATERMARK_OPEN'))
|
||
// 页脚版权信息
|
||
const footerCopyrightOpen = ref(getCacheConfig('SNOWY_FOOTER_COPYRIGHT_OPEN'))
|
||
// 模块坞
|
||
const moduleUnfoldOpen = ref(getCacheConfig('SNOWY_MODULE_UNFOLD_OPEN'))
|
||
// 主题
|
||
const theme = ref(getCacheConfig('SNOWY_THEME'))
|
||
// 主题颜色
|
||
const themeColor = ref(toolDataGet('SNOWY_THEME_COLOR') || config.COLOR)
|
||
// 圆角分格
|
||
const roundedCornerStyleOpen = ref(getCacheConfig('SNOWY_ROUNDED_CORNER_STYLE_OPEN'))
|
||
// 整体表单风格
|
||
const formStyle = ref(getCacheConfig('SNOWY_FORM_STYLE'))
|
||
// 用户信息
|
||
const userInfo = ref(toolDataGet('USER_INFO') || {})
|
||
// 系统配置
|
||
const sysBaseConfig = ref(toolDataGet('SNOWY_SYS_BASE_CONFIG') || config.SYS_BASE_CONFIG)
|
||
// 默认应用
|
||
const module = ref(getCacheConfig('SNOWY_MENU_MODULE_ID'))
|
||
|
||
// 定义action
|
||
const setIsMobile = (key) => {
|
||
isMobile.value = key
|
||
}
|
||
const setLayout = (key) => {
|
||
layout.value = key
|
||
}
|
||
const setTheme = (key) => {
|
||
theme.value = key
|
||
changeColor(themeColor.value, key).then()
|
||
}
|
||
const setThemeColor = (key) => {
|
||
themeColor.value = key
|
||
changeColor(key, theme.value).then()
|
||
}
|
||
const initTheme = () => {
|
||
changeColor(themeColor.value, theme.value).then()
|
||
}
|
||
const toggleConfig = (key) => {
|
||
switch (key) {
|
||
case 'menuIsCollapse':
|
||
menuIsCollapse.value = !menuIsCollapse.value
|
||
break
|
||
case 'topHeaderThemeColorSpread':
|
||
topHeaderThemeColorSpread.value = !topHeaderThemeColorSpread.value
|
||
break
|
||
case 'sideUniqueOpen':
|
||
sideUniqueOpen.value = !sideUniqueOpen.value
|
||
break
|
||
case 'layoutTagsOpen':
|
||
layoutTagsOpen.value = !layoutTagsOpen.value
|
||
break
|
||
case 'breadcrumbOpen':
|
||
breadcrumbOpen.value = !breadcrumbOpen.value
|
||
break
|
||
case 'fixedWidth':
|
||
fixedWidth.value = !fixedWidth.value
|
||
break
|
||
case 'topHeaderThemeColorOpen':
|
||
topHeaderThemeColorOpen.value = !topHeaderThemeColorOpen.value
|
||
topHeaderThemeColorSpread.value = topHeaderThemeColorOpen.value
|
||
? topHeaderThemeColorSpread.value
|
||
: topHeaderThemeColorOpen.value
|
||
break
|
||
case 'loginUserWatermarkOpen':
|
||
loginUserWatermarkOpen.value = !loginUserWatermarkOpen.value
|
||
break
|
||
case 'footerCopyrightOpen':
|
||
footerCopyrightOpen.value = !footerCopyrightOpen.value
|
||
break
|
||
case 'roundedCornerStyleOpen':
|
||
roundedCornerStyleOpen.value = !roundedCornerStyleOpen.value
|
||
break
|
||
case 'moduleUnfoldOpen':
|
||
moduleUnfoldOpen.value = !moduleUnfoldOpen.value
|
||
break
|
||
}
|
||
}
|
||
const setFormStyle = (key) => {
|
||
formStyle.value = key
|
||
}
|
||
const setUserInfo = (key) => {
|
||
userInfo.value = key
|
||
}
|
||
const setSysBaseConfig = (key) => {
|
||
sysBaseConfig.value = key
|
||
}
|
||
const setModule = (key) => {
|
||
module.value = key
|
||
}
|
||
return {
|
||
isMobile,
|
||
layout,
|
||
menuIsCollapse,
|
||
sideUniqueOpen,
|
||
layoutTagsOpen,
|
||
breadcrumbOpen,
|
||
fixedWidth,
|
||
topHeaderThemeColorOpen,
|
||
topHeaderThemeColorSpread,
|
||
loginUserWatermarkOpen,
|
||
footerCopyrightOpen,
|
||
moduleUnfoldOpen,
|
||
theme,
|
||
themeColor,
|
||
roundedCornerStyleOpen,
|
||
formStyle,
|
||
userInfo,
|
||
sysBaseConfig,
|
||
module,
|
||
setIsMobile,
|
||
setLayout,
|
||
setTheme,
|
||
setThemeColor,
|
||
initTheme,
|
||
toggleConfig,
|
||
setFormStyle,
|
||
setUserInfo,
|
||
setSysBaseConfig,
|
||
setModule
|
||
}
|
||
})
|
||
|
||
export const useGlobalStore = globalStore
|