From 8043571cec16c529141e800dd442288a2075ea67 Mon Sep 17 00:00:00 2001 From: zhx Date: Mon, 25 May 2026 22:10:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8C=BA=E5=9F=9F=E9=A3=98?= =?UTF-8?q?=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/src/views/operate/region-broadcast.vue | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/src/views/operate/region-broadcast.vue b/apps/src/views/operate/region-broadcast.vue index 2d104b1..f7ce239 100644 --- a/apps/src/views/operate/region-broadcast.vue +++ b/apps/src/views/operate/region-broadcast.vue @@ -10,6 +10,7 @@ import { startRegionBroadcastWorker, stopRegionBroadcastWorker, } from '#/api/legacy/region-broadcast'; +import { regionConfigTable } from '#/api/legacy/system'; import { getAllowedSysOrigins } from '#/views/system/shared'; import SystemRegionSelect from './components/system-region-select.vue'; @@ -69,6 +70,7 @@ const form = reactive>({ const sending = ref(false); const workerLoading = ref(false); const resultText = ref(''); +const regionList = ref>>([]); const workerStatus = ref>({}); const workerForm = reactive>({ betAmounts: '100,200,500,1000', @@ -103,11 +105,20 @@ watch( form.regionCode = ''; workerForm.regionCodes = []; if (value) { + void loadRegionList(); void refreshWorkerStatus(); } }, ); +async function loadRegionList() { + if (!form.sysOrigin) { + regionList.value = []; + return; + } + regionList.value = (await regionConfigTable({ sysOrigin: form.sysOrigin })) || []; +} + function handleRegionChange(_value: any, item: Record | null) { form.regionCode = item?.regionCode || item?.code || String(item?.id || ''); } @@ -199,11 +210,25 @@ function buildWorkerPayload() { maxDelaySeconds: Number(workerForm.maxDelaySeconds || 0), minDelaySeconds: Number(workerForm.minDelaySeconds || 0), multiples: parseFloatList(workerForm.multiples), - regionCodes: workerForm.regionCodes || [], + regionCodes: normalizeWorkerRegionCodes(workerForm.regionCodes || []), sysOrigin: form.sysOrigin, }; } +function normalizeWorkerRegionCodes(values: any[]) { + return values + .map((value) => { + const raw = String(value || '').trim(); + const item = regionList.value.find((region) => + [region.id, region.regionCode, region.code, region.regionName] + .filter((current) => current !== undefined && current !== null) + .some((current) => String(current).trim() === raw), + ); + return String(item?.regionCode || item?.code || item?.regionName || raw).trim(); + }) + .filter(Boolean); +} + async function refreshWorkerStatus() { workerLoading.value = true; try { @@ -214,6 +239,7 @@ async function refreshWorkerStatus() { } async function handleStartWorker() { + await loadRegionList(); const payload = buildWorkerPayload(); if (!payload.sysOrigin) { message.warning('请选择系统来源');