import { defineStore } from "pinia"; import EnterpriseAPI from "@/api/module_payment/enterprise"; const ENTERPRISE_LIST_KEY = "enterpriseList"; const CURRENT_ENTERPRISE_KEY = "currentEnterprise"; export interface EnterpriseItem { enterprise_id: string; account_id: string; name: string; short_name?: string; status?: string; [key: string]: any; } export const useEnterpriseStore = defineStore("enterprise", { state: () => ({ enterpriseList: [] as EnterpriseItem[], currentEnterprise: null as EnterpriseItem | null, }), getters: { findEnterpriseById(state) { return (enterpriseId: string) => { return state.enterpriseList.find((item) => item.enterprise_id === enterpriseId); }; }, getEnterpriseList(state) { // if (state.enterpriseList.length > 0) { // return state.enterpriseList; // } // return JSON.parse(sessionStorage.getItem(ENTERPRISE_LIST_KEY) || "[]"); return state.enterpriseList || []; }, getCurrentEnterprise(state) { // if (state.currentEnterprise) { // return state.currentEnterprise; // } // const currentEnterpriseJson = sessionStorage.getItem(CURRENT_ENTERPRISE_KEY); // if (currentEnterpriseJson) { // return JSON.parse(currentEnterpriseJson); // } // return null; // 如果当前有选中的企业,直接返回 if (state.currentEnterprise) { return state.currentEnterprise; } // 从sessionStorage获取当前选中的企业 const currentEnterpriseJson = sessionStorage.getItem(CURRENT_ENTERPRISE_KEY); if (currentEnterpriseJson) { return JSON.parse(currentEnterpriseJson); } // 只有一个企业时自动选中,多个企业时不自动取(admin 需手动选择) if (state.enterpriseList && state.enterpriseList.length === 1) { return state.enterpriseList[0]; } return null; }, hasEnterprise(state) { return state.enterpriseList && state.enterpriseList.length > 0; }, }, actions: { async fetchEnterpriseList(tenantId?: number) { try { const res = await EnterpriseAPI.all(tenantId); const list = res.data.data || []; return list.map((item: any) => ({ enterprise_id: item.enterprise_id, account_id: item.account_id, name: item.name, short_name: item.short_name, status: item.status, transfer_enabled: item.transfer_enabled, })); } catch (error) { console.error("获取企业列表失败:", error); } }, async loadEnterpriseList(tenantId?: number) { // 传了 tenantId 则强制重载(跳过缓存) if (tenantId != null) { this.enterpriseList = (await this.fetchEnterpriseList(tenantId)) || []; return; } if (!this.enterpriseList || this.enterpriseList.length == 0) { this.enterpriseList = (await this.fetchEnterpriseList()) || []; console.log("this.enterpriseList:", this.enterpriseList); } }, setCurrentEnterprise(enterpriseId: string) { // this.currentEnterprise = // this.getEnterpriseList.find((e: EnterpriseItem) => e.enterprise_id === enterpriseId) || // null; // if (this.currentEnterprise) { // sessionStorage.setItem(CURRENT_ENTERPRISE_KEY, JSON.stringify(this.currentEnterprise)); // } this.currentEnterprise = this.enterpriseList.find((e: EnterpriseItem) => e.enterprise_id === enterpriseId) || null; if (this.currentEnterprise) { sessionStorage.setItem(CURRENT_ENTERPRISE_KEY, JSON.stringify(this.currentEnterprise)); } }, clearEnterprise() { this.currentEnterprise = null; this.enterpriseList = []; sessionStorage.removeItem(ENTERPRISE_LIST_KEY); sessionStorage.removeItem(CURRENT_ENTERPRISE_KEY); }, }, });