import apis from "@a" import appStore from "@s" export const useTenantStore = defineStore("tenant", () => { const dynamicTenant = ref("") const isNewPage = ref(false) const tenantEnabled = ref(true) const tenantList = ref([]) const getCompanyName = () => { return ( tenantList.value.find((item: any) => { return item.tenantId === getTenantId() })?.companyName ?? "" ) } const initTenant = async () => { return new Promise((resolve, reject) => { apis.loginApi.getTenantList().then((res: any) => { tenantEnabled.value = res.data.tenantEnabled === undefined ? true : res.data.tenantEnabled if (tenantEnabled.value) { tenantList.value = res.data.voList resolve(res.data.voList) } else { reject(false) } }) }) } function getTenantList() { return tenantList.value } function enable() { return tenantEnabled.value } function setTenantId(tenantId: string) { localCache.set("tenantId", tenantId) } function setTenantNewPage(tenantId: string) { return new Promise((resolve, reject) => { dynamicTenant.value = tenantId isNewPage.value = true appStore.tagViewStore.delAllViews().then(() => { resolve(tenantId) }) }) } function setDynamicTenant(tenantId: string) { return new Promise((resolve, reject) => { dynamicTenant.value = tenantId appStore.tagViewStore.delAllViews().then(() => { resolve(tenantId) }) }) } function getTenantId() { return dynamicTenant.value || localCache.get("tenantId") || "000000" } function getTenantName() { return getCompanyName() || "" } function canChangeTenant() { return enable() && ( !isNewPage.value && (appStore.authStore.user.roles.includes("super_admin") || appStore.authStore.user.permissions.includes("system:tenant")) ) } function isDynamic() { return getTenantId() != appStore.authStore.user.tenantId } function clearDynamicTenant() { return new Promise((resolve, reject) => { apis.system.tenantApi .dynamicClear() .then((res: any) => { setDynamicTenant("") appStore.tagViewStore.delAllViews().then(() => { resolve(res) }) }) .catch((err) => { reject(err) }) }) } return { initTenant, getTenantList, enable, canChangeTenant, setDynamicTenant, setTenantNewPage, clearDynamicTenant, setTenantId, getTenantId, getTenantName, isDynamic } })