| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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;
- }
- export const useEnterpriseStore = defineStore("enterprise", {
- state: () => ({
- enterpriseList: [] as EnterpriseItem[],
- currentEnterprise: null as EnterpriseItem | null,
- }),
- getters: {
- getEnterpriseList(state) {
- state.enterpriseList = state.enterpriseList || JSON.parse(sessionStorage.getItem(ENTERPRISE_LIST_KEY) || '[]');
- return state.enterpriseList;
- },
- getCurrentEnterprise(state) {
- state.currentEnterprise = state.currentEnterprise || JSON.parse(sessionStorage.getItem(CURRENT_ENTERPRISE_KEY) || '')
- return state.currentEnterprise;
- },
- hasEnterprise() {
- return this.getEnterpriseList.length > 0;
- },
- },
- actions: {
- async fetchEnterpriseList() {
- try {
- const res = await EnterpriseAPI.list(1, 100);
- const list = res.data.data?.items || [];
- return list.map((item: any) => ({
- enterprise_id: item.enterprise_id,
- account_id: item.account_id,
- name: item.name,
- short_name: item.short_name,
- ...item,
- }));
- } catch (error) {
- console.error("获取企业列表失败:", error);
- }
- },
- async loadEnterpriseList() {
- // 先从sessionStorage获取企业列表,避免重复请求
- let enterpriseListJson = sessionStorage.getItem(ENTERPRISE_LIST_KEY);
- if (enterpriseListJson) {
- this.enterpriseList = JSON.parse(enterpriseListJson);
- } else {
- this.enterpriseList = await this.fetchEnterpriseList() || [];
- if (this.enterpriseList.length > 0) {
- sessionStorage.setItem(ENTERPRISE_LIST_KEY, JSON.stringify(this.enterpriseList));
- }
- }
- },
- setCurrentEnterprise(enterpriseId: string) {
- this.currentEnterprise = this.enterpriseList.find((e) => 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);
- },
- },
- });
|