import { create } from 'zustand'; import { caseApi } from '@/services/api'; interface DiseaseState { availableDiagnoses: string[]; selectedDiagnoses: string[]; isLoading: boolean; error: string | null; fetchDiagnoses: () => Promise; setSelectedDiagnoses: (diagnoses: string[]) => void; clearDiagnoses: () => void; clearError: () => void; } export const useDiseaseStore = create((set, get) => ({ availableDiagnoses: [], selectedDiagnoses: [], isLoading: false, error: null, clearError: () => set({ error: null }), fetchDiagnoses: async () => { const { availableDiagnoses } = get(); if (availableDiagnoses.length > 0) return; // already loaded set({ isLoading: true, error: null }); try { const data = await caseApi.getDiagnoses(); set({ availableDiagnoses: data.diagnoses || [], isLoading: false }); } catch (e) { set({ error: (e as Error).message || '加载诊断列表失败', isLoading: false }); } }, setSelectedDiagnoses: (diagnoses) => set({ selectedDiagnoses: diagnoses }), clearDiagnoses: () => set({ selectedDiagnoses: [] }), }));