¶Ô±ÈÐÂÎļþ |
| | |
| | | const jsonFetch = ref(null); |
| | | const currentReplayIndex = ref(0); |
| | | const isReplaySequencePlaying = ref(false); // æ°å¢ï¼æ è®°æ¯å¦æ£å¨é¡ºåºææ¾ |
| | | |
| | | async function initializeSimulationData(force = false, replayItem = null) { |
| | | try { |
| | | const schemeInfo = selectedScheme.value; |
| | | serviceInfo = schemeInfo.serviceName; |
| | | |
| | | if (schemeInfo.type == 2) { |
| | | if (replayItem || (simStore.rePlayList && simStore.rePlayList.length != 0)) { |
| | | jsonFetch.value = replayItem || simStore.rePlayList[currentReplayIndex.value]; |
| | | speedShow.value = true; |
| | | } else { |
| | | jsonFetch.value = layerDate.value; |
| | | speedShow.value = false; |
| | | } |
| | | } else { |
| | | getRainfallData(); |
| | | speedShow.value = true; |
| | | jsonFetch.value = null; |
| | | } |
| | | |
| | | const { |
| | | waterTimestamps: timestamps, |
| | | watersMaxHeight, |
| | | watersMinHeight, |
| | | } = await fetchWaterSimulationData(serviceInfo, jsonFetch.value); |
| | | |
| | | if (timestamps) { |
| | | frameNum.value = timestamps.length; |
| | | waterTimestamps.value = timestamps; |
| | | updateTimelineRange(); |
| | | timeMarkers.value = generateTimeMarkers(timestamps); |
| | | sendCurrentPlayingTime.value = timestamps[0]; |
| | | currentPlayingTime.value = dayjs(timestamps[0]).format( |
| | | "YYYY-MM-DD HH:mm:ss" |
| | | ); |
| | | } |
| | | minFlowRate = watersMinHeight; |
| | | maxFlowRate = watersMaxHeight; |
| | | |
| | | // 妿æ¯åæ¾æ¨¡å¼ä¸ä¸æ¯å¼ºå¶å·æ°ï¼åå¼å§ææ¾ |
| | | if (schemeInfo.type == 2 && !force && isReplaySequencePlaying.value) { |
| | | togglePlay(); |
| | | } |
| | | } catch (error) { |
| | | console.error("Error loading water simulation data:", error); |
| | | ElMessage({ |
| | | message: "é鍿°æ®åºéï¼è¯·éæ°æ°å»ºæ¨¡ææ¹æ¡ï¼", |
| | | type: "warning", |
| | | }); |
| | | } |
| | | } |
| | | |
| | | function handlePlayFinished() { |
| | | if (selectedScheme.value.type !== 2 || !isReplaySequencePlaying.value) return; |
| | | |
| | | // ç¡®ä¿ææ¾ç¶æå·²åæ¢ |
| | | isPlaying.value = false; |
| | | |
| | | // ææ¾ä¸ä¸ä¸ªæç»æåºå |
| | | currentReplayIndex.value++; |
| | | |
| | | if (currentReplayIndex.value < simStore.rePlayList.length) { |
| | | // çæå»¶è¿ç¡®ä¿ç¶æå®å
¨éç½® |
| | | setTimeout(() => { |
| | | initializeSimulationData(false, simStore.rePlayList[currentReplayIndex.value]); |
| | | }, 100); |
| | | } else { |
| | | // åºåææ¾ç»æ |
| | | isReplaySequencePlaying.value = false; |
| | | currentReplayIndex.value = 0; |
| | | } |
| | | } |
| | | |
| | | // å¼å§é¡ºåºææ¾ææé¡¹ç® |
| | | function startReplaySequence() { |
| | | if (simStore.rePlayList?.length > 0) { |
| | | currentReplayIndex.value = 0; |
| | | isReplaySequencePlaying.value = true; |
| | | initializeSimulationData(false, simStore.rePlayList[0]); |
| | | } |
| | | } |
| | | |
| | | // æè½½æ¶è°ç¨ |
| | | onMounted(async () => { |
| | | await initializeSimulationData(); |
| | | }); |
| | | |
| | | // ç嬿æ¾å®æäºä»¶ |
| | | watch(() => finishPlay.value, (newVal) => { |
| | | if (newVal && selectedScheme.value.type === 2 && isReplaySequencePlaying.value) { |
| | | handlePlayFinished(); |
| | | } |
| | | }); |
| | | |
| | | // å
¶ä»åæä»£ç ä¿æä¸å... |