import { ref } from 'vue'; /** * 工作台 widget 统一刷新:卡片右上角刷新按钮触发,转 loading + 执行加载动作,并发期内忽略重复点击。 * * - 已接真实接口的 widget:传入 loader(内部 await 拉取并回填数据)。 * - 尚未接接口的 mock widget:不传 loader,转一拍 loading 给出可感知反馈;接口接通后补 loader 即自动生效。 */ export function useWorkbenchRefresh(loader?: () => Promise | void) { const loading = ref(false); async function refresh() { if (loading.value) return; loading.value = true; try { if (loader) { await loader(); } else { // 占位:mock widget 无真实数据源,转一拍 loading;接口接通后传入 loader 替代 await new Promise(resolve => { setTimeout(resolve, 400); }); } } finally { loading.value = false; } } return { loading, refresh }; }