From c891439d2a29cd96a7dbd566ed7fe5a95f374ffe Mon Sep 17 00:00:00 2001 From: erio Date: Mon, 6 Apr 2026 22:34:06 +0800 Subject: [PATCH] refactor(payment): extract provider management into components + add limits UI Components extracted from SettingsView: - providerConfig.ts: shared constants, types, helpers - PaymentProviderList.vue: provider card list with header - ProviderCard.vue: single provider card with inline toggles - ToggleSwitch.vue: reusable toggle switch component - PaymentProviderDialog.vue: create/edit dialog with config + limits Other changes: - Add per-payment-type limits config UI (singleMin, singleMax, dailyLimit) - Remove generic cid from EasyPay config (keep cidAlipay/cidWxpay only) - Backend: remove paymentMode constants, determine mode by PaymentType - Backend: add validateProviderRequest for create - Add limits field to ProviderInstance type - SettingsView reduced by ~200 lines of provider management code --- .../payment/PaymentProviderDialog.vue | 365 ++++++++++++++ .../payment/PaymentProviderList.vue | 118 +++++ .../src/components/payment/ProviderCard.vue | 102 ++++ .../src/components/payment/ToggleSwitch.vue | 25 + .../src/components/payment/providerConfig.ts | 105 ++++ frontend/src/i18n/locales/en.ts | 5 + frontend/src/i18n/locales/zh.ts | 5 + frontend/src/types/payment.ts | 1 + frontend/src/views/admin/SettingsView.vue | 448 ++++-------------- 9 files changed, 814 insertions(+), 360 deletions(-) create mode 100644 frontend/src/components/payment/PaymentProviderDialog.vue create mode 100644 frontend/src/components/payment/PaymentProviderList.vue create mode 100644 frontend/src/components/payment/ProviderCard.vue create mode 100644 frontend/src/components/payment/ToggleSwitch.vue create mode 100644 frontend/src/components/payment/providerConfig.ts diff --git a/frontend/src/components/payment/PaymentProviderDialog.vue b/frontend/src/components/payment/PaymentProviderDialog.vue new file mode 100644 index 0000000000..bf9abaa845 --- /dev/null +++ b/frontend/src/components/payment/PaymentProviderDialog.vue @@ -0,0 +1,365 @@ +