From 9d90dedb812ac5d87af67da8ca59c643f098869f Mon Sep 17 00:00:00 2001 From: Zyy Date: Fri, 14 Aug 2026 01:07:12 +0800 Subject: [PATCH] fix(frontend): refresh account data without table loading Co-authored-by: Codex --- frontend/src/composables/usePagedQuery.ts | 16 ++++++++++------ .../accounts/components/AccountQuotaPanel.vue | 1 + .../accounts/composables/useAccountsQuery.ts | 1 + frontend/src/views/accounts/index.vue | 3 ++- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/frontend/src/composables/usePagedQuery.ts b/frontend/src/composables/usePagedQuery.ts index 9a1a5a68f..ce903c37c 100644 --- a/frontend/src/composables/usePagedQuery.ts +++ b/frontend/src/composables/usePagedQuery.ts @@ -27,10 +27,12 @@ export function usePagedQuery(options: { const error = shallowRef('') let requestSequence = 0 - async function execute() { + async function execute(execution: { silent?: boolean } = {}) { const requestId = ++requestSequence - loading.value = true - error.value = '' + if (!execution.silent) { + loading.value = true + error.value = '' + } try { const result = await options.load({ @@ -42,7 +44,7 @@ export function usePagedQuery(options: { if (result.items.length === 0 && result.page.total > 0 && result.page.page > 1) { page.value = clamp(result.page.totalPages, 1, Number.POSITIVE_INFINITY) - return execute() + return execute(execution) } items.value = result.items @@ -55,8 +57,10 @@ export function usePagedQuery(options: { catch (cause: unknown) { if (requestId !== requestSequence) return false - error.value = errorMessage(cause, '加载失败') - options.onError?.(cause) + if (!execution.silent) { + error.value = errorMessage(cause, '加载失败') + options.onError?.(cause) + } return false } finally { diff --git a/frontend/src/views/accounts/components/AccountQuotaPanel.vue b/frontend/src/views/accounts/components/AccountQuotaPanel.vue index c7975d7ad..9f3e5b872 100644 --- a/frontend/src/views/accounts/components/AccountQuotaPanel.vue +++ b/frontend/src/views/accounts/components/AccountQuotaPanel.vue @@ -45,6 +45,7 @@ const quotaWindows = computed(() => orderedPanelQuotaWindows(props.account.quota variant="ghost" size="sm" title="刷新额度" + spin-icon-on-loading :loading="refreshing" :disabled="refreshing" @click="emit('refreshQuota', account.id)" diff --git a/frontend/src/views/accounts/composables/useAccountsQuery.ts b/frontend/src/views/accounts/composables/useAccountsQuery.ts index 52edc56fc..00151d062 100644 --- a/frontend/src/views/accounts/composables/useAccountsQuery.ts +++ b/frontend/src/views/accounts/composables/useAccountsQuery.ts @@ -141,6 +141,7 @@ export function useAccountsQuery() { loading: query.loading, accounts: query.items, loadAccounts: query.execute, + refreshAccountsSilently: () => query.execute({ silent: true }), searchQuery, providerQuery, statusQuery, diff --git a/frontend/src/views/accounts/index.vue b/frontend/src/views/accounts/index.vue index e5bb8f9f4..f1869a2b4 100644 --- a/frontend/src/views/accounts/index.vue +++ b/frontend/src/views/accounts/index.vue @@ -37,6 +37,7 @@ const { loading, accounts, loadAccounts, + refreshAccountsSilently, searchQuery, providerQuery, statusQuery, @@ -108,7 +109,7 @@ const { openConnectionTest, handleRefreshConnectionTestModels, handleTestConnection, -} = useAccountConnectionTest({ reload: loadAccounts }) +} = useAccountConnectionTest({ reload: refreshAccountsSilently }) const { expandedAccountIds,