From c90971980141e30d87bf1c5d19c1497053587823 Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Thu, 9 Jul 2026 10:43:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(payment):=20=E4=BA=A7=E5=93=81=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=8E=A5=E5=85=A5=E5=85=A8=E5=B1=80=E6=B2=99=E7=AE=B1?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E6=9F=A5=E8=AF=A2=E5=B9=B6=E9=80=82=E9=85=8D?= =?UTF-8?q?=E8=A3=B8=E5=B8=83=E5=B0=94=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/payment/masterdata/pay-env.api.ts | 15 +++++++++++ .../payment/config/product/ProductConfig.vue | 26 ++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 apps/daxpay-admin/src/api/payment/masterdata/pay-env.api.ts diff --git a/apps/daxpay-admin/src/api/payment/masterdata/pay-env.api.ts b/apps/daxpay-admin/src/api/payment/masterdata/pay-env.api.ts new file mode 100644 index 000000000..3c6704765 --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/masterdata/pay-env.api.ts @@ -0,0 +1,15 @@ +import type { Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 支付环境配置 API(全局沙箱开关等) + */ +export const PayEnvApi = { + /** + * 查询沙箱环境全局开关状态 + */ + sandboxEnabled(): Promise> { + return defHttp.get({ url: '/admin/pay-env/sandbox-enabled' }); + }, +}; diff --git a/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue b/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue index bebc1c20e..4d09d824b 100644 --- a/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue +++ b/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue @@ -7,6 +7,7 @@ import { IconifyIcon } from '@vben-core/icons'; import { PayProductConfigApi, type PayProductConfigResult } from '#/api/payment/config/pay-product-config.api'; + import { PayEnvApi } from '#/api/payment/masterdata/pay-env.api'; import ChannelLogo from '#/components/channel/ChannelLogo.vue'; import { useMessage } from '#/hooks/useMessage'; @@ -18,11 +19,15 @@ const loading = ref(false); const productList = ref([]); const radioRefreshKey = ref(0); + // 全局沙箱环境开关(后端控制), 关闭时不展示沙箱相关选项 + const sandboxEnabled = ref(false); /** * 获取当前激活的环境值 */ function getActiveEnvValue(row: PayProductConfigResult): string { + // 全局沙箱关闭时强制显示生产环境 + if (!sandboxEnabled.value) return 'prod'; return row.activeEnv === 'sandbox' ? 'sandbox' : 'prod'; } @@ -90,7 +95,22 @@ }); } + /** + * 加载全局沙箱环境开关状态 + */ + function loadSandboxEnabled() { + PayEnvApi.sandboxEnabled() + .then(({ data }) => { + sandboxEnabled.value = !!data; + }) + .catch(() => { + // 查询失败按关闭处理, 仅展示生产环境 + sandboxEnabled.value = false; + }); + } + onMounted(() => { + loadSandboxEnabled(); loadProductConfig(); }); @@ -134,7 +154,7 @@ {{ $t('payment.constant.product.productConfig.prodLabel') }} - {{ + {{ $t('payment.constant.product.productConfig.sandboxLabel') }} @@ -158,7 +178,7 @@ >
@@ -170,7 +190,7 @@