| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- 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);
- },
- },
- });
|