import { defineStore } from 'pinia'; import { ref } from 'vue'; // 使用 ref 更简单直观 import { getBaseDropdown, getEngInfoDropdown, getFpssDropdown } from '@/api/select'; export const useShuJuTianBaoStore = defineStore('shuJuTianBao', () => { // 1. 直接使用 ref 定义状态,确保响应式 const fpssOption = ref([]); const fpssLoading = ref(false); const baseOption = ref([]); const baseLoading = ref(false); const engOption = ref([]); const engLoading = ref(false); const fishOption = ref([]); // 获取水电基地列表 const getBaseOption = async () => { try { baseLoading.value = true; const res = await getBaseDropdown({}); if (res.data && Array.isArray(res.data)) { const list = [...res.data]; // 直接赋值给 ref,触发响应式更新 baseOption.value = list; } } catch (error) { console.error('获取水电基地列表失败:', error); } finally { baseLoading.value = false; } }; // 获取电站列表 const getEngOption = async (baseId: string) => { try { engLoading.value = true; const param = baseId === 'all' ? {} : { baseId }; const res = await getEngInfoDropdown(param); if (res.data && Array.isArray(res.data)) { // 直接赋值给 ref engOption.value = res.data; } } catch (error) { console.error('获取电站列表失败:', error); } finally { engLoading.value = false; } }; // 获取过鱼设施列表 const getFpssOption = async (baseId: string, rstcd: string) => { try { fpssLoading.value = true; const res = await getFpssDropdown({ baseId, rstcd }); console.log(res.data) fpssOption.value = res.data; } catch (error) { console.log(error); } finally { fpssLoading.value = false; } }; const getFishOption = () => { return fishOption.value; }; const setFishOption = (data: any[]) => { fishOption.value = data; }; // 3. 直接返回 ref 和方法 // 在组件中使用时:store.baseOption 会自动解包为数组 return { fpssOption, baseOption, engOption, fishOption, fpssLoading, baseLoading, engLoading, getBaseOption, getEngOption, getFpssOption, getFishOption, setFishOption }; });