From 9ddb9ea60355afa8cf87eecdad705d475a872f7f Mon Sep 17 00:00:00 2001 From: wzy-warehouse <18135009705@163.com> Date: Tue, 28 Apr 2026 16:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rain-earthquake/LeftButtonComponent.vue | 19 ++++++++++++++++ .../rain-earthquake/RightButtonComponent.vue | 22 ++++++++++++++++++- src/hooks/rainstorm/useRainDisasterChain.ts | 7 ++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/component/rain-earthquake/LeftButtonComponent.vue b/src/component/rain-earthquake/LeftButtonComponent.vue index 14e1975..c4b9e1f 100644 --- a/src/component/rain-earthquake/LeftButtonComponent.vue +++ b/src/component/rain-earthquake/LeftButtonComponent.vue @@ -25,6 +25,7 @@ import { leftBlueButton, leftOrangeButton } from '@/assets'; import { useButtonSelectedIdStore } from '@/stores/useButtonSelectedIdStore.ts'; import { useStatusStore } from '@/stores/useStatusStore.ts'; + import { onMounted } from 'vue'; // 接收父组件传递的参数 const props = defineProps<{ @@ -32,9 +33,27 @@ name: string; callback: (...args: unknown[]) => unknown; executeOnce?: boolean; + selected?: boolean; }[]; }>(); + // 组件挂载时初始化选中状态 + onMounted(() => { + // 查找最后一个设置了 selected: true 的按钮 + let lastSelectedIndex = -1; + for (let i = 0; i < props.buttonList.length; i++) { + if (props.buttonList[i].selected === true) { + lastSelectedIndex = i; + } + } + + // 如果找到了选中的按钮,设置选中状态,同时执行回调函数 + if (lastSelectedIndex !== -1) { + useButtonSelectedIdStore().leftButtonSelectedId = lastSelectedIndex; + props.buttonList[lastSelectedIndex].callback(); + } + }); + // 点击按钮触发 const handelButton = ( index: number, diff --git a/src/component/rain-earthquake/RightButtonComponent.vue b/src/component/rain-earthquake/RightButtonComponent.vue index 798a1a0..9d145a8 100644 --- a/src/component/rain-earthquake/RightButtonComponent.vue +++ b/src/component/rain-earthquake/RightButtonComponent.vue @@ -22,6 +22,7 @@ import { rightBlueButton, rightOrangeButton } from '@/assets'; import { useButtonSelectedIdStore } from '@/stores/useButtonSelectedIdStore.ts'; import { useStatusStore } from '@/stores/useStatusStore.ts'; + import { onMounted } from 'vue'; // 接收父组件传递的参数 const props = defineProps<{ @@ -29,9 +30,27 @@ name: string; callback: (...args: unknown[]) => unknown; executeOnce?: boolean; + selected?: boolean; }[]; }>(); + // 组件挂载时初始化选中状态 + onMounted(() => { + // 查找最后一个设置了 selected: true 的按钮 + let lastSelectedIndex = -1; + for (let i = 0; i < props.buttonList.length; i++) { + if (props.buttonList[i].selected === true) { + lastSelectedIndex = i; + } + } + + // 如果找到了选中的按钮,设置选中状态,同时执行回调函数 + if (lastSelectedIndex !== -1) { + useButtonSelectedIdStore().rightButtonSelectedId = lastSelectedIndex; + props.buttonList[lastSelectedIndex].callback(); + } + }); + // 点击按钮触发 const handelButton = ( index: number, @@ -39,6 +58,7 @@ ) => { if (index == useButtonSelectedIdStore().rightButtonSelectedId) { useButtonSelectedIdStore().rightButtonSelectedId = -1; + callback(false); return; } else if ( useButtonSelectedIdStore().rightButtonSelectedId != -1 && @@ -47,7 +67,7 @@ return; } useButtonSelectedIdStore().rightButtonSelectedId = index; - callback(); + callback(true); if (props.buttonList[index].executeOnce) { useButtonSelectedIdStore().rightButtonSelectedId = -1; } diff --git a/src/hooks/rainstorm/useRainDisasterChain.ts b/src/hooks/rainstorm/useRainDisasterChain.ts index 82a9c2f..b6cc479 100644 --- a/src/hooks/rainstorm/useRainDisasterChain.ts +++ b/src/hooks/rainstorm/useRainDisasterChain.ts @@ -185,6 +185,13 @@ export const useRainDisasterChain = () => { * 右侧按钮信息 */ const rightButtonInfo = [ + { + name: '暴雨模拟', + callback: () => { + console.log('暴雨模拟'); + }, + selected: true, + }, { name: '暴雨触发', callback: () => {