5f9773fde02a943224a1d17489692abd29882b39.svn-base 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import Vue from 'vue'
  2. import {
  3. SIDEBAR_TYPE,
  4. DEFAULT_THEME,
  5. DEFAULT_LAYOUT_MODE,
  6. DEFAULT_COLOR,
  7. DEFAULT_COLOR_WEAK,
  8. DEFAULT_FIXED_HEADER,
  9. DEFAULT_FIXED_SIDEMENU,
  10. DEFAULT_FIXED_HEADER_HIDDEN,
  11. DEFAULT_CONTENT_WIDTH_TYPE,
  12. DEFAULT_MULTI_PAGE
  13. } from "@/store/mutation-types"
  14. const app = {
  15. state: {
  16. sidebar: {
  17. opened: true,
  18. withoutAnimation: false
  19. },
  20. device: 'desktop',
  21. theme: '',
  22. layout: '',
  23. contentWidth: '',
  24. fixedHeader: false,
  25. fixSiderbar: false,
  26. autoHideHeader: false,
  27. color: null,
  28. weak: false,
  29. multipage: true //默认多页签模式
  30. },
  31. mutations: {
  32. SET_SIDEBAR_TYPE: (state, type) => {
  33. state.sidebar.opened = type
  34. Vue.ls.set(SIDEBAR_TYPE, type)
  35. },
  36. CLOSE_SIDEBAR: (state, withoutAnimation) => {
  37. Vue.ls.set(SIDEBAR_TYPE, true)
  38. state.sidebar.opened = false
  39. state.sidebar.withoutAnimation = withoutAnimation
  40. },
  41. TOGGLE_DEVICE: (state, device) => {
  42. state.device = device
  43. },
  44. TOGGLE_THEME: (state, theme) => {
  45. // setStore('_DEFAULT_THEME', theme)
  46. Vue.ls.set(DEFAULT_THEME, theme)
  47. state.theme = theme
  48. },
  49. TOGGLE_LAYOUT_MODE: (state, layout) => {
  50. Vue.ls.set(DEFAULT_LAYOUT_MODE, layout)
  51. state.layout = layout
  52. },
  53. TOGGLE_FIXED_HEADER: (state, fixed) => {
  54. Vue.ls.set(DEFAULT_FIXED_HEADER, fixed)
  55. state.fixedHeader = fixed
  56. },
  57. TOGGLE_FIXED_SIDERBAR: (state, fixed) => {
  58. Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed)
  59. state.fixSiderbar = fixed
  60. },
  61. TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => {
  62. Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
  63. state.autoHideHeader = show
  64. },
  65. TOGGLE_CONTENT_WIDTH: (state, type) => {
  66. Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
  67. state.contentWidth = type
  68. },
  69. TOGGLE_COLOR: (state, color) => {
  70. Vue.ls.set(DEFAULT_COLOR, color)
  71. state.color = color
  72. },
  73. TOGGLE_WEAK: (state, flag) => {
  74. Vue.ls.set(DEFAULT_COLOR_WEAK, flag)
  75. state.weak = flag
  76. },
  77. SET_MULTI_PAGE (state, multipageFlag) {
  78. Vue.ls.set(DEFAULT_MULTI_PAGE, multipageFlag)
  79. state.multipage = multipageFlag
  80. }
  81. },
  82. actions: {
  83. setSidebar: ({ commit }, type) => {
  84. commit('SET_SIDEBAR_TYPE', type)
  85. },
  86. CloseSidebar({ commit }, { withoutAnimation }) {
  87. commit('CLOSE_SIDEBAR', withoutAnimation)
  88. },
  89. ToggleDevice({ commit }, device) {
  90. commit('TOGGLE_DEVICE', device)
  91. },
  92. ToggleTheme({ commit }, theme) {
  93. commit('TOGGLE_THEME', theme)
  94. },
  95. ToggleLayoutMode({ commit }, mode) {
  96. commit('TOGGLE_LAYOUT_MODE', mode)
  97. },
  98. ToggleFixedHeader({ commit }, fixedHeader) {
  99. if (!fixedHeader) {
  100. commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
  101. }
  102. commit('TOGGLE_FIXED_HEADER', fixedHeader)
  103. },
  104. ToggleFixSiderbar({ commit }, fixSiderbar) {
  105. commit( 'TOGGLE_FIXED_SIDERBAR', fixSiderbar)
  106. },
  107. ToggleFixedHeaderHidden({ commit }, show) {
  108. commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
  109. },
  110. ToggleContentWidth({ commit }, type) {
  111. commit('TOGGLE_CONTENT_WIDTH', type)
  112. },
  113. ToggleColor({ commit }, color) {
  114. commit('TOGGLE_COLOR', color)
  115. },
  116. ToggleWeak({ commit }, weakFlag) {
  117. commit('TOGGLE_WEAK', weakFlag)
  118. },
  119. ToggleMultipage({ commit }, multipageFlag) {
  120. commit('SET_MULTI_PAGE', multipageFlag)
  121. }
  122. }
  123. }
  124. export default app