import { ref, type Ref } from 'vue' import { debugError } from '@/shared/utils/debug' interface AdminQueryOptions { fetchFn: () => Promise immediate?: boolean initialData?: T } interface AdminQueryResult { loading: Ref error: Ref data: Ref load: () => Promise } export function useAdminQuery(options: AdminQueryOptions): AdminQueryResult { const loading = ref(false) const error = ref(null) const data = ref(options.initialData as T) as Ref async function load() { loading.value = true error.value = null try { data.value = await options.fetchFn() } catch (e) { error.value = e instanceof Error ? e.message : '加载失败' debugError('加载后台表格数据失败', e) } finally { loading.value = false } } if (options.immediate !== false) { load() } return { loading, error, data, load } } // 保持向后兼容 export const useAdminTable = useAdminQuery