themeConfig.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import { Module } from 'vuex';
  2. import { ThemeConfigState, RootStateTypes } from '/@/store/interface/index';
  3. import { Local } from '/@/utils/storage';
  4. /**
  5. * 2020.05.28 by lyt 优化
  6. * 修改一下配置时,需要每次都清理 `window.localStorage` 浏览器永久缓存,配置才会生效
  7. * 哪个大佬有解决办法,欢迎pr,感谢💕!
  8. */
  9. const themeConfigModule: Module<ThemeConfigState, RootStateTypes> = {
  10. namespaced: true,
  11. state: {
  12. themeConfig: {
  13. // 是否开启布局配置抽屉
  14. isDrawer: false,
  15. /**
  16. * 全局主题
  17. */
  18. // 默认 primary 主题颜色
  19. primary: '#409eff',
  20. /**
  21. * 菜单 / 顶栏
  22. * 注意:v1.0.17 版本去除设置布局切换,重置主题样式(initSetLayoutChange),
  23. * 切换布局需手动设置样式,设置的样式自动同步各布局,
  24. * 代码位置:/@/layout/navBars/breadcrumb/setings.vue
  25. */
  26. // 默认顶栏导航背景颜色
  27. topBar: '#ffffff',
  28. // 默认顶栏导航字体颜色
  29. topBarColor: '#606266',
  30. // 是否开启顶栏背景颜色渐变
  31. isTopBarColorGradual: false,
  32. // 默认菜单导航背景颜色
  33. menuBar: '#ffffff',
  34. // 默认菜单导航字体颜色
  35. menuBarColor: '#eaeaea',
  36. // 是否开启菜单背景颜色渐变
  37. isMenuBarColorGradual: false,
  38. // 默认分栏菜单背景颜色
  39. columnsMenuBar: '#ffffff',
  40. // 默认分栏菜单字体颜色
  41. columnsMenuBarColor: '#000000',
  42. // 是否开启分栏菜单背景颜色渐变
  43. isColumnsMenuBarColorGradual: false,
  44. /**
  45. * 界面设置
  46. */
  47. // 是否开启菜单水平折叠效果
  48. isCollapse: false,
  49. // 是否开启菜单手风琴效果
  50. isUniqueOpened: false,
  51. // 是否开启固定 Header
  52. isFixedHeader: false,
  53. // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除
  54. isFixedHeaderChange: false,
  55. // 是否开启经典布局分割菜单(仅经典布局生效)
  56. isClassicSplitMenu: false,
  57. // 是否开启自动锁屏
  58. isLockScreen: false,
  59. // 开启自动锁屏倒计时(s/秒)
  60. lockScreenTime: 30,
  61. /**
  62. * 界面显示
  63. */
  64. // 是否开启侧边栏 Logo
  65. isShowLogo: true,
  66. // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
  67. isShowLogoChange: false,
  68. // 是否开启 Breadcrumb,强制经典、横向布局不显示
  69. isBreadcrumb: true,
  70. // 是否开启 Tagsview
  71. isTagsview: true,
  72. // 是否开启 Breadcrumb 图标
  73. isBreadcrumbIcon: false,
  74. // 是否开启 Tagsview 图标
  75. isTagsviewIcon: false,
  76. // 是否开启 TagsView 缓存
  77. isCacheTagsView: false,
  78. // 是否开启 TagsView 拖拽
  79. isSortableTagsView: true,
  80. // 是否开启 TagsView 共用
  81. isShareTagsView: false,
  82. // 是否开启 Footer 底部版权信息
  83. isFooter: false,
  84. // 是否开启灰色模式
  85. isGrayscale: false,
  86. // 是否开启色弱模式
  87. isInvert: false,
  88. // 是否开启深色模式, 自动获取当前模式
  89. isIsDark: localStorage.isDark ? localStorage.isDark === '1' : window.matchMedia('(prefers-color-scheme: dark)').matches,
  90. // 是否开启水印
  91. isWartermark: false,
  92. // 水印文案
  93. wartermarkText: 'sagoo IOT',
  94. /**
  95. * 其它设置
  96. */
  97. // Tagsview 风格:可选值"<tags-style-one|tags-style-four|tags-style-five>",默认 tags-style-five
  98. // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名
  99. tagsStyle: 'tags-style-five',
  100. // 主页面切换动画:可选值"<slide-right|slide-left|opacitys>",默认 slide-right
  101. animation: 'slide-right',
  102. // 分栏高亮风格:可选值"<columns-round|columns-card>",默认 columns-round
  103. columnsAsideStyle: 'columns-round',
  104. // 分栏布局风格:可选值"<columns-horizontal|columns-vertical>",默认 columns-horizontal
  105. columnsAsideLayout: 'columns-vertical',
  106. /**
  107. * 布局切换
  108. * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue
  109. * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
  110. */
  111. // 布局切换:可选值"<defaults|classic|transverse|columns>",默认 defaults
  112. layout: 'defaults',
  113. /**
  114. * 后端控制路由
  115. */
  116. // 是否开启后端控制路由
  117. isRequestRoutes: true,
  118. /**
  119. * 全局网站标题 / 副标题
  120. */
  121. // 网站主标题(菜单导航、浏览器当前网页标题)
  122. globalTitle: 'IOT管理系统',
  123. // 网站副标题(登录页顶部文字)
  124. globalViceTitle: 'IOT管理系统',
  125. // 默认初始语言,可选值"<zh-cn|en|zh-tw>",默认 zh-cn
  126. globalI18n: Local.get('themeConfig')?.globalI18n || 'zh-cn',
  127. // 默认全局组件大小,可选值"<large|'default'|small>",默认 'large'
  128. globalComponentSize: 'default',
  129. },
  130. },
  131. mutations: {
  132. // 设置布局配置
  133. getThemeConfig(state: any, data: any) {
  134. state.themeConfig = data;
  135. localStorage.setItem('isDark', data?.isIsDark ? '1' : '0')
  136. },
  137. },
  138. actions: {
  139. // 设置布局配置
  140. setThemeConfig({ commit }, data: object) {
  141. commit('getThemeConfig', data);
  142. },
  143. },
  144. };
  145. export default themeConfigModule;