From cfe5d4c5ec91a88e492dae6607cb01273246958e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=A6=8D?= <1455167345@qq.com> Date: Thu, 20 Feb 2025 13:26:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=B3=E8=BD=AC=E6=96=B0?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/eventHandler.hook.ts | 30 ++- .../components/EventItem.vue | 226 +++++++++++++----- 2 files changed, 190 insertions(+), 66 deletions(-) diff --git a/src/hooks/eventHandler.hook.ts b/src/hooks/eventHandler.hook.ts index dbcbda3..421bfca 100644 --- a/src/hooks/eventHandler.hook.ts +++ b/src/hooks/eventHandler.hook.ts @@ -1,18 +1,38 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'; import { mapFun } from '@/hooks/ceshiFun.hook'; +import { router } from '@/router'; const chartEditStore = useChartEditStore(); const ceshiFunction = mapFun(); // 交互事件 -export const eventHandlerHook = (comonentList: any, elementList: any, params:any = null) => { +export const eventHandlerHook = (comonentList: any, elementList: any, params: any = null) => { let obj: any = {}; let index = 0; for (let i = 0; i < comonentList.length; i++) { for (let j = 0; j < elementList.length; j++) { if (elementList[j].movement == 'newaddress') { - // 跳转新地址 - window.open(elementList[j].url); + // 打开新页面 + if (elementList[j].openNewPage) { + if (elementList[j].skipType == 'routeLink') { + const routeUrl = router.resolve({ + path: elementList[j].url, + }); + window.open(routeUrl.href, '_blank'); + return; + } else { + window.open(elementList[j].url, '_blank'); + return; + } + } else { + if (elementList[j].skipType == 'routeLink') { + router.replace(elementList[j].url); + return; + } else { + window.open(elementList[j].url, '_self'); + return; + } + } } else if (elementList[j].movement == 'reveal') { // 显示 for (let k = 0; k < elementList[j].elementId.length; k++) { @@ -37,9 +57,9 @@ export const eventHandlerHook = (comonentList: any, elementList: any, params:any // 地图事件联动 for (let k = 0; k < elementList[j].elementId.length; k++) { if (comonentList[i].id == elementList[j].elementId[k]) { - if(params){ + if (params) { ceshiFunction[elementList[j].funName](params); - }else{ + } else { ceshiFunction[elementList[j].funName](); } } diff --git a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteractionConfiguration/components/EventItem.vue b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteractionConfiguration/components/EventItem.vue index 178e707..74bfe2b 100644 --- a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteractionConfiguration/components/EventItem.vue +++ b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteractionConfiguration/components/EventItem.vue @@ -71,10 +71,43 @@ :options="funSelectOptions" /> -