From bc3bd6bc43fbc04108eae6d3e85fd649046951a8 Mon Sep 17 00:00:00 2001 From: Zyy Date: Sat, 15 Aug 2026 15:39:31 +0800 Subject: [PATCH] refactor(frontend): unify component design system Co-authored-by: Codex --- .../components/AccountGroupCheckboxGrid.vue | 8 +- frontend/src/components/AccountGroupMarks.vue | 4 +- .../components/AccountGroupMultiSelect.vue | 73 +-- .../components/ProviderFilterSegmented.vue | 5 +- frontend/src/components/ProviderIconGroup.vue | 8 +- frontend/src/components/base/BaseButton.vue | 140 ++--- frontend/src/components/base/BaseCard.vue | 68 +-- frontend/src/components/base/BaseCheckbox.vue | 71 ++- .../src/components/base/BaseColorPicker.vue | 54 +- .../src/components/base/BaseConfirmModal.vue | 29 +- frontend/src/components/base/BaseEmpty.vue | 37 +- .../src/components/base/BaseForm/FormItem.vue | 53 +- .../src/components/base/BaseForm/context.ts | 10 + .../src/components/base/BaseForm/index.vue | 49 +- .../src/components/base/BaseIconButton.vue | 90 ++++ frontend/src/components/base/BaseInput.vue | 104 ++-- frontend/src/components/base/BaseMenuItem.vue | 51 ++ frontend/src/components/base/BaseModal.vue | 149 +++--- .../src/components/base/BasePageHeader.vue | 17 +- frontend/src/components/base/BasePopover.vue | 49 +- .../src/components/base/BaseScrollbar.vue | 77 ++- .../src/components/base/BaseSegmented.vue | 130 +++-- frontend/src/components/base/BaseSelect.vue | 110 ++-- frontend/src/components/base/BaseSwitch.vue | 66 ++- .../base/BaseTable/BaseTablePagination.vue | 47 +- .../src/components/base/BaseTable/columns.ts | 317 ++++++++---- .../src/components/base/BaseTable/index.vue | 486 ++++++++---------- .../BaseTable/useHorizontalStickyShadow.ts | 101 ---- frontend/src/components/base/BaseTextarea.vue | 66 ++- .../components/base/BaseToast/BaseToast.vue | 52 +- frontend/src/directives/loading.ts | 4 +- .../src/layout/components/AppAboutModal.vue | 20 +- frontend/src/layout/components/AppSidebar.vue | 85 ++- .../components/FloatingSidebarToggle.vue | 2 +- .../layout/components/SystemUpdateModal.vue | 121 ++--- frontend/src/layout/index.vue | 17 +- frontend/src/styles/index.css | 72 ++- frontend/src/styles/tokens.css | 32 +- .../components/AccountGroupActions.vue | 23 +- .../components/AccountGroupFilters.vue | 4 +- .../components/AccountGroupFormModal.vue | 6 +- .../components/AccountGroupMetricsCell.vue | 12 +- .../src/views/account-groups/constants.ts | 83 +-- frontend/src/views/account-groups/index.vue | 167 +++--- .../components/AccountBatchEditModal.vue | 6 +- .../components/AccountConnectionTestModal.vue | 111 ++-- .../components/AccountCreateModal.vue | 52 +- .../accounts/components/AccountEditModal.vue | 8 +- .../accounts/components/AccountFilters.vue | 14 +- .../components/AccountIdentityCell.vue | 14 +- .../components/AccountOverviewCards.vue | 14 +- .../accounts/components/AccountPlanBadge.vue | 12 +- .../components/AccountProviderChooser.vue | 4 +- .../accounts/components/AccountQuotaPanel.vue | 19 +- .../components/AccountQuotaSummaryCell.vue | 4 +- .../components/AccountStatusBadge.vue | 78 +-- .../components/AccountTableActions.vue | 114 ++-- .../accounts/components/AccountUsagePanel.vue | 46 +- .../components/AccountUsageWindow.vue | 26 +- .../composables/useAccountConnectionTest.ts | 16 +- frontend/src/views/accounts/constants.ts | 127 ++--- frontend/src/views/accounts/index.vue | 210 ++++---- .../api-keys/components/ApiKeyActions.vue | 39 +- .../api-keys/components/ApiKeyCreateModal.vue | 28 +- .../api-keys/components/ApiKeyFilters.vue | 4 +- .../components/ApiKeyIdentityCell.vue | 4 +- .../api-keys/components/ApiKeyPrefixCell.vue | 9 +- .../api-keys/components/ApiKeyScopeCell.vue | 2 +- .../api-keys/components/ApiKeyStatusBadge.vue | 4 +- .../api-keys/components/ApiKeyUseModal.vue | 27 +- frontend/src/views/api-keys/constants.ts | 60 +-- frontend/src/views/api-keys/index.vue | 135 ++--- .../components/AccountOverviewCard.vue | 72 +-- .../components/DashboardHeartbeat.vue | 4 +- .../components/HealthTimelinePointPopover.vue | 38 +- .../views/dashboard/components/MetricCard.vue | 22 +- .../components/RequestHealthTimelineCard.vue | 14 +- .../dashboard/components/RequestTrendCard.vue | 26 +- .../dashboard/components/UsageRecordCard.vue | 3 +- .../dashboard/components/WireProfileCard.vue | 56 +- frontend/src/views/dashboard/constants.ts | 54 +- frontend/src/views/dashboard/index.vue | 15 +- .../src/views/login/components/LoginPanel.vue | 14 +- frontend/src/views/login/index.vue | 8 +- .../settings/components/AdminApiKeyCard.vue | 22 +- .../settings/components/ModelAliasesCard.vue | 27 +- .../components/RotationStrategyCard.vue | 13 +- .../components/RuntimeSettingsCard.vue | 3 +- .../components/backup/BackupRecordsCard.vue | 174 +++---- .../components/backup/BackupScheduleCard.vue | 3 +- .../components/backup/BackupStatusBadge.vue | 20 +- .../components/backup/BackupStorageCard.vue | 24 +- .../components/backup/R2GuideModal.vue | 30 +- .../backup/SettingsBackupSection.vue | 5 +- .../settings/composables/useBackupRecords.ts | 23 +- frontend/src/views/settings/index.vue | 7 +- .../usage/components/OpsErrorDetailModal.vue | 34 +- .../views/usage/components/OpsErrorPanel.vue | 111 ++-- .../usage/components/UsageBillingCell.vue | 14 +- .../usage/components/UsageClientIpCell.vue | 2 +- .../views/usage/components/UsageCostCard.vue | 8 +- .../usage/components/UsageDetailCodePanel.vue | 11 +- .../usage/components/UsageDetailFieldGrid.vue | 2 +- .../usage/components/UsageDetailPopover.vue | 12 +- .../usage/components/UsageDiagnosticCard.vue | 56 +- .../views/usage/components/UsageFilters.vue | 13 +- .../usage/components/UsageHealthCard.vue | 5 +- .../usage/components/UsageLatencyCell.vue | 30 +- .../views/usage/components/UsageModelCell.vue | 6 +- .../usage/components/UsagePerformanceCard.vue | 8 +- .../components/UsageReasoningEffortCell.vue | 4 +- .../components/UsageRecordDetailModal.vue | 84 ++- .../usage/components/UsageRecordsTable.vue | 31 +- .../usage/components/UsageStatusCodeBadge.vue | 8 +- .../usage/components/UsageSummaryCards.vue | 16 +- .../views/usage/components/UsageTokenCell.vue | 18 +- frontend/src/views/usage/constants.ts | 176 ++----- frontend/src/views/usage/index.vue | 67 +-- frontend/src/views/usage/utils/detail.ts | 4 +- frontend/src/views/usage/utils/records.ts | 8 +- 120 files changed, 2809 insertions(+), 2952 deletions(-) create mode 100644 frontend/src/components/base/BaseForm/context.ts create mode 100644 frontend/src/components/base/BaseIconButton.vue create mode 100644 frontend/src/components/base/BaseMenuItem.vue delete mode 100644 frontend/src/components/base/BaseTable/useHorizontalStickyShadow.ts diff --git a/frontend/src/components/AccountGroupCheckboxGrid.vue b/frontend/src/components/AccountGroupCheckboxGrid.vue index 1d54b7d01..0bc884aac 100644 --- a/frontend/src/components/AccountGroupCheckboxGrid.vue +++ b/frontend/src/components/AccountGroupCheckboxGrid.vue @@ -32,11 +32,11 @@ function updateGroup(groupId: string, selected: boolean) {
已禁用 @@ -58,7 +58,7 @@ function updateGroup(groupId: string, selected: boolean) {

{{ loading ? '正在加载分组...' : '暂无分组,请先在分组管理中创建。' }}

diff --git a/frontend/src/components/AccountGroupMarks.vue b/frontend/src/components/AccountGroupMarks.vue index 07eb3c836..39495c472 100644 --- a/frontend/src/components/AccountGroupMarks.vue +++ b/frontend/src/components/AccountGroupMarks.vue @@ -21,11 +21,11 @@ const fullNames = computed(() => props.groups