From 2f43e5a8fb6a0c81ec12ec9a9e6eeb699c6a0bf5 Mon Sep 17 00:00:00 2001 From: erio Date: Mon, 6 Apr 2026 21:07:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(payment):=20redesign=20provider=20cards=20?= =?UTF-8?q?=E2=80=94=20full-width,=20inline=20toggles,=20greyed-out=20when?= =?UTF-8?q?=20type=20disabled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Provider cards: one per row (full width), remove 2-column grid - Add inline toggle switches for enabled/disabled and refund on each card - Toggle switches call API directly without opening edit dialog - When provider type is disabled above, entire card is greyed out with pointer-events-none and shows hint text - Rename "启用的支付方式" → "服务商" --- frontend/src/views/admin/SettingsView.vue | 54 ++++++++++++++++++----- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/frontend/src/views/admin/SettingsView.vue b/frontend/src/views/admin/SettingsView.vue index 3653d4c51e..fa15b227af 100644 --- a/frontend/src/views/admin/SettingsView.vue +++ b/frontend/src/views/admin/SettingsView.vue @@ -1726,28 +1726,50 @@
-
-
-
-
+
+
+
+ +
{{ provider.name }} - {{ providerKeyLabel(provider.provider_key) }} - ({{ t('admin.settings.payment.typeDisabled') }}) + {{ providerKeyLabel(provider.provider_key) }}
-
- {{ provider.enabled ? t('common.enabled') : t('common.disabled') }} - - + +
+ + + + +
+ + +
-
+ +
+ {{ t('admin.settings.payment.typeDisabled') }} — {{ t('admin.settings.payment.enableTypesFirst') }} +
+ +
{{ t('admin.settings.payment.supportedTypes') }}: {{ provider.supported_types || '-' }} - {{ t('admin.settings.payment.refundEnabled') }}: {{ provider.refund_enabled ? 'Yes' : 'No' }}
@@ -3075,6 +3097,14 @@ function onProviderConfigChange(key: string) { function providerKeyLabel(key: string): string { return providerKeyOptions.value.find(o => o.value === key)?.label || key } +async function toggleProviderField(provider: ProviderInstance, field: 'enabled' | 'refundEnabled') { + const newValue = field === 'enabled' ? !provider.enabled : !provider.refund_enabled + try { + await adminAPI.payment.updateProvider(provider.id, { [field]: newValue }) + if (field === 'enabled') provider.enabled = newValue + else provider.refund_enabled = newValue + } catch (err: unknown) { appStore.showError(extractApiErrorMessage(err, t('common.error'))) } +} async function loadProviders() { providersLoading.value = true try { const res = await adminAPI.payment.getProviders(); providers.value = res.data || [] }