8
0

index.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { defineStore } from "pinia";
  2. import pinia from "~src/store/init";
  3. import website from "~src/config/index";
  4. import logoIcon from "~src/assets/logo/icon.png";
  5. import { clearStoreAll } from "hc-vue3-ui";
  6. import { getStoreValue, setStoreValue } from "~src/utils/storage";
  7. import {
  8. removeRefreshToken,
  9. removeToken,
  10. setRefreshToken,
  11. setToken,
  12. } from "~src/api/auth";
  13. export const useAppStore = defineStore("main", {
  14. state: () => ({
  15. //系统信息
  16. title: getStoreValue("title") || website.title,
  17. logoIcon: getStoreValue("logoIcon") || logoIcon,
  18. logoName: getStoreValue("logoName") || website.name,
  19. //主题信息
  20. theme: getStoreValue("theme") || website.theme,
  21. color: getStoreValue("color") || website.color,
  22. //用户信息
  23. token: getStoreValue("token") || "",
  24. refreshToken: getStoreValue("refreshToken") || "",
  25. tenantId: getStoreValue("tenantId") || "",
  26. userInfo: getStoreValue("userInfo") || {},
  27. //菜单信息
  28. menus: getStoreValue("menus") || [],
  29. buttons: getStoreValue("buttons") || {},
  30. //其他配置信息
  31. isCollapse: getStoreValue("isCollapse") || false, //菜单折叠
  32. //表单显示配置
  33. isShowName: getStoreValue("isShowName") || true, //表单显示名称
  34. }),
  35. getters: {
  36. //系统信息
  37. getTitle: (state) => state.title,
  38. getLogoIcon: (state) => state.logoIcon,
  39. getLogoName: (state) => state.logoName,
  40. //主题信息
  41. getTheme: (state) => state.theme,
  42. getColor: (state) => state.color,
  43. //用户信息
  44. getToken: (state) => state.token,
  45. getRefreshToken: (state) => state.refreshToken,
  46. getTenantId: (state) => state.tenantId,
  47. getUserInfo: (state) => state.userInfo,
  48. //菜单信息
  49. getMenus: (state) => state.menus,
  50. getButtons: (state) => state.buttons,
  51. //其他配置信息
  52. getCollapse: (state) => state.isCollapse,
  53. //表单显示配置
  54. getIsShowName: (state) => state.isShowName,
  55. },
  56. actions: {
  57. //系统信息
  58. setTitle(value) {
  59. this.title = value;
  60. setStoreValue("title", value);
  61. },
  62. setLogoIcon(value) {
  63. this.logoIcon = value;
  64. setStoreValue("logoIcon", value);
  65. },
  66. setLogoName(value) {
  67. this.logoName = value;
  68. setStoreValue("logoName", value);
  69. },
  70. //主题信息
  71. setTheme(value) {
  72. this.theme = value;
  73. setStoreValue("theme", value);
  74. },
  75. setColor(value) {
  76. this.color = value;
  77. setStoreValue("color", value);
  78. },
  79. //用户信息
  80. setTokenVal(value) {
  81. this.token = value;
  82. setToken(value);
  83. setStoreValue("token", value);
  84. },
  85. setRefreshTokenVal(value) {
  86. this.refreshToken = value;
  87. setRefreshToken(value);
  88. setStoreValue("refreshToken", value);
  89. },
  90. setTenantId(value) {
  91. this.tenantId = value;
  92. setStoreValue("tenantId", value);
  93. },
  94. setUserInfo(value) {
  95. this.userInfo = value;
  96. setStoreValue("userInfo", value);
  97. },
  98. //菜单信息
  99. setMenus(value) {
  100. this.menus = value;
  101. setStoreValue("menus", value);
  102. },
  103. setButtons(value) {
  104. this.buttons = value;
  105. setStoreValue("buttons", value);
  106. },
  107. getButtonsVal(value) {
  108. return this.buttons[value] || false;
  109. },
  110. //其他配置信息
  111. setCollapse(value) {
  112. //菜单折叠
  113. this.isCollapse = value;
  114. setStoreValue("isCollapse", value);
  115. },
  116. //表单显示
  117. setIsShowName(value) {
  118. this.isShowName = value;
  119. setStoreValue("isShowName", value);
  120. },
  121. //清除缓存和token
  122. clearStoreData() {
  123. this.title = null;
  124. this.logoIcon = null;
  125. this.logoName = null;
  126. this.theme = website.theme;
  127. this.color = website.color;
  128. this.token = null;
  129. this.refreshToken = null;
  130. this.tenantId = null;
  131. this.userInfo = null;
  132. this.menus = null;
  133. this.buttons = null;
  134. this.isCollapse = false;
  135. this.isShowName = true;
  136. //清除缓存
  137. clearStoreAll();
  138. removeToken();
  139. removeRefreshToken();
  140. },
  141. },
  142. });
  143. export default function useUserStoreWidthOut() {
  144. return useAppStore(pinia);
  145. }