import { ref, onMounted, computed } from 'vue' import { customApi } from '@/service/custom' import Config from '@/config/index' const { Code } = Config import useUserStore from '@/stores/use-user-store' export function useAccountOptions() { const { loginOptions, saveLoginOptions } = useUserStore() // 响应式状态 const isLoaded = ref(false) // 是否已完成请求(成功/失败都算完成) const isSuccess = ref(false) // 是否请求成功(成功才有数据) const loading = ref(false) // 补全缺失的 loading // 获取账户列表 const getDateList = async () => { try { loading.value = true isLoaded.value = false isSuccess.value = false const res = await customApi.CustomDropdown({ platform: '' }) if (res.code === Code.StatusOK) { if (res.data.length === 0) { saveLoginOptions([]) return } else { const options = res.data?.map(item => ({ ...item, value: item.login, text: item.login })) || [] console.log(options, 1212); saveLoginOptions(options) } isSuccess.value = true // 标记成功 } else { uni.showToast({ title: res.msg || '获取账户失败', icon: 'none' }) } } catch (err) { uni.showToast({ title: err.msg || '网络异常,请重试', icon: 'none' }) console.error('获取账户异常:', err) } finally { loading.value = false isLoaded.value = true // 无论如何都标记请求结束 } } onMounted(() => { // 缓存没有 → 才请求 if (!loginOptions || loginOptions.length === 0) { getDateList() } else { // 有缓存 → 直接标记加载完成 isLoaded.value = true isSuccess.value = true } }) return { loginOptions, isLoaded, isSuccess, loading, getDateList } }