global.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /**
  2. * Copyright [2022] [https://www.xiaonuo.vip]
  3. * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
  4. * 1.请不要删除和修改根目录下的LICENSE文件。
  5. * 2.请不要删除和修改Snowy源码头部的版权声明。
  6. * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
  7. * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
  8. * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
  9. * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
  10. */
  11. import { defineStore } from 'pinia'
  12. import { changeColor } from '@/utils/themeUtil'
  13. import config from '@/config'
  14. import { message } from 'ant-design-vue'
  15. import tool from '@/utils/tool'
  16. const toolDataGet = (key) => {
  17. return tool.data.get(key)
  18. }
  19. // 获取缓存中的,如果取不到那就用配置的
  20. const getCacheConfig = (value) => {
  21. const data = toolDataGet(value)
  22. if (data === null) {
  23. return config[value]
  24. }
  25. return data
  26. }
  27. // deprecated 请使用 useGlobalStore
  28. export const globalStore = defineStore('global', () => {
  29. // 移动端布局
  30. const isMobile = ref(false)
  31. // 布局
  32. const layout = ref(getCacheConfig('SNOWY_LAYOUT'))
  33. // 菜单是否折叠 toggle
  34. const menuIsCollapse = ref(getCacheConfig('SNOWY_MENU_COLLAPSE'))
  35. // 侧边菜单是否排他展开
  36. const sideUniqueOpen = ref(getCacheConfig('SNOWY_SIDE_UNIQUE_OPEN'))
  37. // 多标签栏
  38. const layoutTagsOpen = ref(getCacheConfig('SNOWY_LAYOUT_TAGS_OPEN'))
  39. // 是否展示面包屑
  40. const breadcrumbOpen = ref(getCacheConfig('SNOWY_BREADCRUMD_OPEN'))
  41. // 是否开启固定宽度(顶栏菜单)
  42. const fixedWidth = ref(getCacheConfig('SNOWY_FIXEDWIDTH_OPEN'))
  43. // 顶栏是否应用主题色
  44. const topHeaderThemeColorOpen = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_OPEN'))
  45. // 顶栏主题色通栏
  46. const topHeaderThemeColorSpread = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_SPREAD'))
  47. // 登录用户水印
  48. const loginUserWatermarkOpen = ref(getCacheConfig('SNOWY_LOGIN_USER_WATERMARK_OPEN'))
  49. // 页脚版权信息
  50. const footerCopyrightOpen = ref(getCacheConfig('SNOWY_FOOTER_COPYRIGHT_OPEN'))
  51. // 模块坞
  52. const moduleUnfoldOpen = ref(getCacheConfig('SNOWY_MODULE_UNFOLD_OPEN'))
  53. // 主题
  54. const theme = ref(getCacheConfig('SNOWY_THEME'))
  55. // 主题颜色
  56. const themeColor = ref(toolDataGet('SNOWY_THEME_COLOR') || config.COLOR)
  57. // 圆角分格
  58. const roundedCornerStyleOpen = ref(getCacheConfig('SNOWY_ROUNDED_CORNER_STYLE_OPEN'))
  59. // 整体表单风格
  60. const formStyle = ref(getCacheConfig('SNOWY_FORM_STYLE'))
  61. // 用户信息
  62. const userInfo = ref(toolDataGet('USER_INFO') || {})
  63. // 系统配置
  64. const sysBaseConfig = ref(toolDataGet('SNOWY_SYS_BASE_CONFIG') || config.SYS_BASE_CONFIG)
  65. // 默认应用
  66. const module = ref(getCacheConfig('SNOWY_MENU_MODULE_ID'))
  67. // 定义action
  68. const setIsMobile = (key) => {
  69. isMobile.value = key
  70. }
  71. const setLayout = (key) => {
  72. layout.value = key
  73. }
  74. const setTheme = (key) => {
  75. theme.value = key
  76. const closeMessage = message.loading(`加载中...`)
  77. changeColor(themeColor.value, key).then(closeMessage)
  78. }
  79. const setThemeColor = (key) => {
  80. themeColor.value = key
  81. const closeMessage = message.loading(`加载中...`)
  82. changeColor(key, theme.value).then(closeMessage)
  83. }
  84. const initTheme = () => {
  85. const closeMessage = message.loading(`加载中...`)
  86. changeColor(themeColor.value, theme.value).then(closeMessage)
  87. }
  88. const toggleConfig = (key) => {
  89. switch (key) {
  90. case 'menuIsCollapse':
  91. menuIsCollapse.value = !menuIsCollapse.value
  92. break
  93. case 'topHeaderThemeColorSpread':
  94. topHeaderThemeColorSpread.value = !topHeaderThemeColorSpread.value
  95. break
  96. case 'sideUniqueOpen':
  97. sideUniqueOpen.value = !sideUniqueOpen.value
  98. break
  99. case 'layoutTagsOpen':
  100. layoutTagsOpen.value = !layoutTagsOpen.value
  101. break
  102. case 'breadcrumbOpen':
  103. breadcrumbOpen.value = !breadcrumbOpen.value
  104. break
  105. case 'fixedWidth':
  106. fixedWidth.value = !fixedWidth.value
  107. break
  108. case 'topHeaderThemeColorOpen':
  109. topHeaderThemeColorOpen.value = !topHeaderThemeColorOpen.value
  110. topHeaderThemeColorSpread.value = topHeaderThemeColorOpen.value
  111. ? topHeaderThemeColorSpread.value
  112. : topHeaderThemeColorOpen.value
  113. break
  114. case 'loginUserWatermarkOpen':
  115. loginUserWatermarkOpen.value = !loginUserWatermarkOpen.value
  116. break
  117. case 'footerCopyrightOpen':
  118. footerCopyrightOpen.value = !footerCopyrightOpen.value
  119. break
  120. case 'roundedCornerStyleOpen':
  121. roundedCornerStyleOpen.value = !roundedCornerStyleOpen.value
  122. break
  123. case 'moduleUnfoldOpen':
  124. moduleUnfoldOpen.value = !moduleUnfoldOpen.value
  125. break
  126. }
  127. }
  128. const setFormStyle = (key) => {
  129. formStyle.value = key
  130. }
  131. const setUserInfo = (key) => {
  132. userInfo.value = key
  133. }
  134. const setSysBaseConfig = (key) => {
  135. sysBaseConfig.value = key
  136. }
  137. const setModule = (key) => {
  138. module.value = key
  139. }
  140. return {
  141. isMobile,
  142. layout,
  143. menuIsCollapse,
  144. sideUniqueOpen,
  145. layoutTagsOpen,
  146. breadcrumbOpen,
  147. fixedWidth,
  148. topHeaderThemeColorOpen,
  149. topHeaderThemeColorSpread,
  150. loginUserWatermarkOpen,
  151. footerCopyrightOpen,
  152. moduleUnfoldOpen,
  153. theme,
  154. themeColor,
  155. roundedCornerStyleOpen,
  156. formStyle,
  157. userInfo,
  158. sysBaseConfig,
  159. module,
  160. setIsMobile,
  161. setLayout,
  162. setTheme,
  163. setThemeColor,
  164. initTheme,
  165. toggleConfig,
  166. setFormStyle,
  167. setUserInfo,
  168. setSysBaseConfig,
  169. setModule
  170. }
  171. })
  172. export const useGlobalStore = globalStore