import { fetchEnterpriseInfo } from '@/api/all/login'; import { useSidebarStore } from '@/stores/modules/side-bar'; import { useUserStore } from '@/stores/modules/user'; import { glsWithCatch, slsWithCatch, rlsWithCatch } from '@/utils/stroage'; interface EnterpriseInfo { id: number; name: string; update_name_quota: number; used_update_name_count: number; sub_account_quota: number; used_sub_account_count: number; permissions: string[]; } interface EnterpriseState { enterpriseInfo: EnterpriseInfo | null; } export const useEnterpriseStore = defineStore('enterprise', { state: (): EnterpriseState => ({ enterpriseInfo: (glsWithCatch('enterpriseInfo') && JSON.parse(glsWithCatch('enterpriseInfo') as string)) || null, }), actions: { setEnterpriseInfo(enterpriseInfo: EnterpriseInfo) { this.enterpriseInfo = enterpriseInfo; slsWithCatch('enterpriseInfo', JSON.stringify(enterpriseInfo)); }, clearUserEnterpriseInfo() { this.enterpriseInfo = null; localStorage.removeItem('enterpriseInfo'); }, setEnterpriseName(name: string) { if (this.enterpriseInfo) { this.enterpriseInfo.name = name; } }, incUsedUpdateNameCount() { if (this.enterpriseInfo) { this.enterpriseInfo.used_update_name_count++; } }, incUsedSubAccountCount() { if (this.enterpriseInfo) { this.enterpriseInfo.used_sub_account_count++; } }, async getUserEnterpriseInfo() { if (this.enterpriseInfo) { const { code, data } = await fetchEnterpriseInfo(this.enterpriseInfo!.id); if (code === 200) { this.setEnterpriseInfo(data); } } }, }, });