index.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. import {defineStore} from 'pinia'
  2. import pinia from "~src/store/init"
  3. import appConfig from '~src/config/app';
  4. import logoIcon from "~src/assets/logo/icon.png";
  5. import logoName from "~src/assets/logo/name.png";
  6. import {getStoreValue, setStoreValue, clearStoreAll} from '~src/utils/storage'
  7. import {setToken, setRefreshToken, removeToken, removeRefreshToken} from '~src/api/util/auth'
  8. export const useAppStore = defineStore('main', {
  9. state: () => ({
  10. //系统信息
  11. title: getStoreValue('title') || appConfig.title,
  12. logoIcon: getStoreValue('logoIcon') || logoIcon,
  13. logoName: getStoreValue('logoName') || logoName,
  14. //主题信息
  15. theme: getStoreValue('theme') || appConfig.theme, //用户可选择类型:auto,light, dark
  16. themeVal: getStoreValue('themeVal') || '', //实际主题:light, dark
  17. color: getStoreValue('color') || appConfig.color,
  18. homeTheme: getStoreValue('homeTheme') || appConfig.homeTheme,
  19. //用户信息
  20. token: getStoreValue('token') || '',
  21. refreshToken: getStoreValue('refreshToken') || '',
  22. tenantId: getStoreValue('tenantId') || '',
  23. userInfo: getStoreValue('userInfo') || {},
  24. //菜单信息
  25. menus: getStoreValue('menus') || [],
  26. buttons: getStoreValue('buttons') || {},
  27. //项目合同段数据
  28. projectContract: getStoreValue('projectContract') || [],
  29. projectInfo: getStoreValue('projectInfo') || {},
  30. contractInfo: getStoreValue('contractInfo') || {},
  31. projectId: getStoreValue('projectId') || '',
  32. contractId: getStoreValue('contractId') || '',
  33. //其他配置信息
  34. bubble: getStoreValue('bubble') || false,
  35. orderServiceTipModal: getStoreValue('orderServiceTipModal') ?? 1, //0不弹出,1弹出
  36. shotWebRtc: getStoreValue('shotWebRtc') || 0, //WebRtc截图方式: 0关闭,1开启
  37. fullScreen: getStoreValue('fullScreen') || 0, //全屏截图:0关闭,1开启
  38. isCollapse: getStoreValue('isCollapse') || false, //菜单折叠
  39. dragModalSortTop: [], //拖拽弹窗排序
  40. isScreenShort: false,
  41. barMenuName: '',
  42. }),
  43. getters: {
  44. //系统信息
  45. getTitle: state => state.title,
  46. getLogoIcon: state => state.logoIcon,
  47. getLogoName: state => state.logoName,
  48. //主题信息
  49. getTheme: state => state.theme,
  50. getThemeVal: state => state.themeVal,
  51. getColor: state => state.color,
  52. getHomeTheme: state => state.homeTheme,
  53. //用户信息
  54. getToken: state => state.token,
  55. getRefreshToken: state => state.refreshToken,
  56. getTenantId: state => state.tenantId,
  57. getUserInfo: state => state.userInfo,
  58. //菜单信息
  59. getMenus: state => state.menus,
  60. getButtons: state => state.buttons,
  61. //项目合同段数据
  62. getProjectContract: state => state.projectContract,
  63. getProjectInfo: state => state.projectInfo,
  64. getContractInfo: state => state.contractInfo,
  65. getProjectId: state => state.projectId,
  66. getContractId: state => state.contractId,
  67. //其他配置信息
  68. getBubble: state => state.bubble,
  69. getScreenShort: state => state.isScreenShort,
  70. getOrderServiceTipModal: state => state.orderServiceTipModal,
  71. getShotWebRtc: state => state.shotWebRtc,
  72. getFullScreen: state => state.fullScreen,
  73. getCollapse: state => state.isCollapse,
  74. getDragModalSortTop: state => state.dragModalSortTop,
  75. },
  76. actions: {
  77. //系统信息
  78. setTitle(value) {
  79. this.title = value
  80. setStoreValue('title', value)
  81. },
  82. setLogoIcon(value) {
  83. this.logoIcon = value
  84. setStoreValue('logoIcon', value)
  85. },
  86. setLogoName(value) {
  87. this.logoName = value
  88. setStoreValue('logoName', value)
  89. },
  90. //主题信息
  91. setTheme(value) {
  92. this.theme = value
  93. setStoreValue('theme', value)
  94. },
  95. setThemeVal(value) {
  96. this.themeVal = value
  97. setStoreValue('themeVal', value)
  98. },
  99. setColor(value) {
  100. this.color = value
  101. setStoreValue('color', value)
  102. },
  103. setHomeTheme(value) {
  104. this.homeTheme = value
  105. setStoreValue('homeTheme', value)
  106. },
  107. //用户信息
  108. setTokenVal(value) {
  109. this.token = value
  110. setToken(value)
  111. setStoreValue('token', value)
  112. },
  113. setRefreshTokenVal(value) {
  114. this.refreshToken = value
  115. setRefreshToken(value)
  116. setStoreValue('refreshToken', value)
  117. },
  118. setTenantId(value) {
  119. this.tenantId = value
  120. setStoreValue('tenantId', value)
  121. },
  122. setUserInfo(value) {
  123. this.userInfo = value
  124. setStoreValue('userInfo', value)
  125. },
  126. //菜单信息
  127. setMenus(value) {
  128. this.menus = value
  129. setStoreValue('menus', value)
  130. },
  131. setButtons(value) {
  132. this.buttons = value
  133. setStoreValue('buttons', value)
  134. },
  135. getButtonsVal(value) {
  136. return this.buttons[value] || false;
  137. },
  138. //项目合同段数据
  139. setProjectContract(value) {
  140. this.projectContract = value
  141. setStoreValue('projectContract', value)
  142. },
  143. setProjectInfo(value) {
  144. this.projectInfo = value
  145. setStoreValue('projectInfo', value)
  146. },
  147. setContractInfo(value) {
  148. this.contractInfo = value
  149. setStoreValue('contractInfo', value)
  150. },
  151. setProjectId(value) {
  152. this.projectId = value
  153. setStoreValue('projectId', value)
  154. },
  155. setContractId(value) {
  156. this.contractId = value
  157. setStoreValue('contractId', value)
  158. },
  159. //其他配置信息
  160. setBubble(value) {
  161. this.bubble = value
  162. setStoreValue('bubble', value)
  163. },
  164. setOrderServiceTipModal(value) {
  165. this.orderServiceTipModal = value
  166. setStoreValue('orderServiceTipModal', value)
  167. },
  168. setScreenShort(value) {
  169. this.isScreenShort = value
  170. },
  171. setShotWebRtc(value) {
  172. this.shotWebRtc = value
  173. setStoreValue('shotWebRtc', value)
  174. },
  175. setFullScreen(value) {
  176. this.fullScreen = value
  177. setStoreValue('fullScreen', value)
  178. },
  179. setCollapse(value) { //菜单折叠
  180. this.isCollapse = value
  181. setStoreValue('isCollapse', value)
  182. },
  183. setDragModalSortTop(value) {
  184. this.dragModalSortTop = value
  185. },
  186. //清除缓存和token
  187. clearStoreData() {
  188. //清除状态
  189. this.title = null
  190. this.logoIcon = null
  191. this.logoName = null
  192. this.token = null
  193. this.refreshToken = null
  194. this.tenantId = null
  195. this.userInfo = null
  196. this.menus = null
  197. this.buttons = null
  198. this.projectContract = null
  199. this.projectInfo = null
  200. this.contractInfo = null
  201. this.projectId = null
  202. this.contractId = null
  203. this.orderServiceTipModal = null
  204. this.shotWebRtc = null
  205. this.fullScreen = null
  206. this.isCollapse = false
  207. this.dragModalSortTop = []
  208. //清除缓存
  209. clearStoreAll()
  210. removeToken()
  211. removeRefreshToken()
  212. },
  213. }
  214. })
  215. export default function useUserStoreWidthOut() {
  216. return useAppStore(pinia);
  217. }