_tenant.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import apis from "@a"
  2. import appStore from "@s"
  3. export const useTenantStore = defineStore("tenant", () => {
  4. const dynamicTenant = ref("")
  5. const isNewPage = ref(false)
  6. const tenantEnabled = ref(true)
  7. const tenantList = ref<any>([])
  8. const getCompanyName = () => {
  9. return (
  10. tenantList.value.find((item: any) => {
  11. return item.tenantId === getTenantId()
  12. })?.companyName ?? ""
  13. )
  14. }
  15. const initTenant = async () => {
  16. return new Promise((resolve, reject) => {
  17. apis.loginApi.getTenantList().then((res: any) => {
  18. tenantEnabled.value = res.data.tenantEnabled === undefined ? true : res.data.tenantEnabled
  19. if (tenantEnabled.value) {
  20. tenantList.value = res.data.voList
  21. resolve(res.data.voList)
  22. } else {
  23. reject(false)
  24. }
  25. })
  26. })
  27. }
  28. function getTenantList() {
  29. return tenantList.value
  30. }
  31. function enable() {
  32. return tenantEnabled.value
  33. }
  34. function setTenantId(tenantId: string) {
  35. localCache.set("tenantId", tenantId)
  36. }
  37. function setTenantNewPage(tenantId: string) {
  38. return new Promise((resolve, reject) => {
  39. dynamicTenant.value = tenantId
  40. isNewPage.value = true
  41. appStore.tagViewStore.delAllViews().then(() => {
  42. resolve(tenantId)
  43. })
  44. })
  45. }
  46. function setDynamicTenant(tenantId: string) {
  47. return new Promise((resolve, reject) => {
  48. dynamicTenant.value = tenantId
  49. appStore.tagViewStore.delAllViews().then(() => {
  50. resolve(tenantId)
  51. })
  52. })
  53. }
  54. function getTenantId() {
  55. return dynamicTenant.value || localCache.get("tenantId") || "000000"
  56. }
  57. function getTenantName() {
  58. return getCompanyName() || ""
  59. }
  60. function canChangeTenant() {
  61. return enable() && (
  62. !isNewPage.value &&
  63. (appStore.authStore.user.roles.includes("super_admin") ||
  64. appStore.authStore.user.permissions.includes("system:tenant"))
  65. )
  66. }
  67. function isDynamic() {
  68. return getTenantId() != appStore.authStore.user.tenantId
  69. }
  70. function clearDynamicTenant() {
  71. return new Promise((resolve, reject) => {
  72. apis.system.tenantApi
  73. .dynamicClear()
  74. .then((res: any) => {
  75. setDynamicTenant("")
  76. appStore.tagViewStore.delAllViews().then(() => {
  77. resolve(res)
  78. })
  79. })
  80. .catch((err) => {
  81. reject(err)
  82. })
  83. })
  84. }
  85. return {
  86. initTenant,
  87. getTenantList,
  88. enable,
  89. canChangeTenant,
  90. setDynamicTenant,
  91. setTenantNewPage,
  92. clearDynamicTenant,
  93. setTenantId,
  94. getTenantId,
  95. getTenantName,
  96. isDynamic
  97. }
  98. })