index.js 7.6 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. role_id: getStoreValue('role_id') || {},
  25. //菜单信息
  26. menus: getStoreValue('menus') || [],
  27. buttons: getStoreValue('buttons') || {},
  28. //项目合同段数据
  29. projectContract: getStoreValue('projectContract') || [],
  30. projectInfo: getStoreValue('projectInfo') || {},
  31. contractInfo: getStoreValue('contractInfo') || {},
  32. projectId: getStoreValue('projectId') || '',
  33. contractId: getStoreValue('contractId') || '',
  34. //其他配置信息
  35. bubble: getStoreValue('bubble') || false,
  36. orderServiceTipModal: getStoreValue('orderServiceTipModal') ?? 1, //0不弹出,1弹出
  37. shotWebRtc: getStoreValue('shotWebRtc') || 0, //WebRtc截图方式: 0关闭,1开启
  38. fullScreen: getStoreValue('fullScreen') || 0, //全屏截图:0关闭,1开启
  39. isCollapse: getStoreValue('isCollapse') || false, //菜单折叠
  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. getRoleId: state => state.role_id,
  59. //菜单信息
  60. getMenus: state => state.menus,
  61. getButtons: state => state.buttons,
  62. //项目合同段数据
  63. getProjectContract: state => state.projectContract,
  64. getProjectInfo: state => state.projectInfo,
  65. getContractInfo: state => state.contractInfo,
  66. getProjectId: state => state.projectId,
  67. getContractId: state => state.contractId,
  68. //其他配置信息
  69. getBubble: state => state.bubble,
  70. getScreenShort: state => state.isScreenShort,
  71. getOrderServiceTipModal: state => state.orderServiceTipModal,
  72. getShotWebRtc: state => state.shotWebRtc,
  73. getFullScreen: state => state.fullScreen,
  74. getCollapse: state => state.isCollapse
  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. setRoleId(value){
  127. this.role_id = value
  128. setStoreValue('role_id',value)
  129. },
  130. //菜单信息
  131. setMenus(value){
  132. this.menus = value
  133. setStoreValue('menus',value)
  134. },
  135. setButtons(value){
  136. this.buttons = value
  137. setStoreValue('buttons',value)
  138. },
  139. getButtonsVal(value) {
  140. return this.buttons[value] || false;
  141. },
  142. //项目合同段数据
  143. setProjectContract(value) {
  144. this.projectContract = value
  145. setStoreValue('projectContract',value)
  146. },
  147. setProjectInfo(value) {
  148. this.projectInfo = value
  149. setStoreValue('projectInfo',value)
  150. },
  151. setContractInfo(value) {
  152. this.contractInfo = value
  153. setStoreValue('contractInfo',value)
  154. },
  155. setProjectId(value) {
  156. this.projectId = value
  157. setStoreValue('projectId',value)
  158. },
  159. setContractId(value) {
  160. this.contractId = value
  161. setStoreValue('contractId',value)
  162. },
  163. //其他配置信息
  164. setBubble(value) {
  165. this.bubble = value
  166. setStoreValue('bubble',value)
  167. },
  168. setOrderServiceTipModal(value) {
  169. this.orderServiceTipModal = value
  170. setStoreValue('orderServiceTipModal',value)
  171. },
  172. setScreenShort(value) {
  173. this.isScreenShort = value
  174. },
  175. setShotWebRtc(value) {
  176. this.shotWebRtc = value
  177. setStoreValue('shotWebRtc',value)
  178. },
  179. setFullScreen(value) {
  180. this.fullScreen = value
  181. setStoreValue('fullScreen',value)
  182. },
  183. setCollapse(value) { //菜单折叠
  184. this.isCollapse = value
  185. setStoreValue('isCollapse',value)
  186. },
  187. //清除缓存和token
  188. clearStoreData() {
  189. //清除状态
  190. this.title = null
  191. this.logoIcon = null
  192. this.logoName = null
  193. this.token = null
  194. this.refreshToken = null
  195. this.tenantId = null
  196. this.userInfo = null
  197. this.menus = null
  198. this.buttons = null
  199. this.projectContract = null
  200. this.projectInfo = null
  201. this.contractInfo = null
  202. this.projectId = null
  203. this.contractId = null
  204. this.orderServiceTipModal = null
  205. this.shotWebRtc = null
  206. this.fullScreen = null
  207. this.isCollapse = false
  208. //清除缓存
  209. clearStoreAll()
  210. removeToken()
  211. removeRefreshToken()
  212. },
  213. }
  214. })
  215. export default function useUserStoreWidthOut() {
  216. return useAppStore(pinia);
  217. }