diff --git a/apps/src/api/legacy/pay.ts b/apps/src/api/legacy/pay.ts index 1c8755d..b11e120 100644 --- a/apps/src/api/legacy/pay.ts +++ b/apps/src/api/legacy/pay.ts @@ -78,6 +78,13 @@ export async function updatePayOpenCountyShelf( }); } +export async function syncPayOpenCountryCurrencyRates(data: Record) { + return requestClient.post>( + '/sys-pay-open-country/sync-currency-rates', + data, + ); +} + export async function pagePayChannel(params: Record) { return requestClient.get>>( '/sys-pay-channel/page', diff --git a/apps/src/views/operate/pay-country.vue b/apps/src/views/operate/pay-country.vue index 7bbd67d..963f327 100644 --- a/apps/src/views/operate/pay-country.vue +++ b/apps/src/views/operate/pay-country.vue @@ -8,6 +8,7 @@ import { Page } from '@vben/common-ui'; import { pagePayOpenCounty, + syncPayOpenCountryCurrencyRates, updatePayOpenCountryCurrent, updatePayOpenCountryExchangeRate, updatePayOpenCountrySort, @@ -41,6 +42,9 @@ const activeRow = ref>({}); const editOpen = ref(false); const editLoading = ref(false); const editValue = ref(''); +const syncOpen = ref(false); +const syncLoading = ref(false); +const syncMarkupPercent = ref(''); const editConfig = reactive({ field: '' as 'currency' | 'rate' | 'sort' | '', title: '', @@ -172,6 +176,34 @@ function openAssociated(row: Record) { associatedOpen.value = true; } +function openSyncRates() { + syncMarkupPercent.value = ''; + syncOpen.value = true; +} + +function validateSyncMarkupPercent() { + return /^(100(\.0{1,4})?|([1-9]\d?|0)(\.\d{1,4})?)$/.test(syncMarkupPercent.value.trim()); +} + +async function submitSyncRates() { + if (!validateSyncMarkupPercent()) { + message.warning('请输入0~100之间的上浮比例,最多四位小数'); + return; + } + syncLoading.value = true; + try { + const result = await syncPayOpenCountryCurrencyRates({ + markupPercent: syncMarkupPercent.value.trim(), + }); + const skippedText = result?.skippedCount ? `,跳过${result.skippedCount}个` : ''; + message.success(`同步成功,更新${result?.updatedCount || 0}个国家${skippedText}`); + syncOpen.value = false; + await loadData(); + } finally { + syncLoading.value = false; + } +} + void loadData(true); @@ -188,6 +220,7 @@ void loadData(true); /> + + + + +