src/api/trApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/monifangzhen/schemeCard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/store/simAPI.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/store/simulation.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/left/CitySim.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/left/KGSimOption/PredictiveSimulation.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/left/KGSimOption/RealTimeSimulation copy.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/trApi.js
@@ -24,8 +24,10 @@ // è·åæ¹æ¡å表 export async function getSimData() { try { const res = await instance.get("/simu/selectPage"); return res.data; // è¿åå®é æ°æ®ï¼é常 res.data ææ¯æ¥å£è¿åçå å®¹ï¼ const res = await instance.get("/simu/selectPage", { params: { pageSize: 100 }, }); return res.data; } catch (error) { console.error("Error fetching data:", error); throw error; // æåºé误ï¼è®©è°ç¨æ¹å¯ä»¥æè· @@ -36,7 +38,7 @@ export async function getSimDataById(id) { try { const res = await instance.get(`/simu/selectPage?id=${id}`); return res.data; // è¿åå®é æ°æ®ï¼é常 res.data ææ¯æ¥å£è¿åçå å®¹ï¼ return res.data; } catch (error) { console.error("Error fetching data:", error); throw error; // æåºé误ï¼è®©è°ç¨æ¹å¯ä»¥æè· @@ -132,7 +134,7 @@ // è·åæ°´ä½æ°´æ·± export async function getFlowRate(data) { // console.log(data,'åéçæ°æ®ï¼'); try { const res = await instance.get("/simu/position", { params: data src/components/monifangzhen/schemeCard.vue
@@ -13,7 +13,10 @@ <p>å建æ¶é´ : {{ formatTime(item.createTime) }}</p> <p> æ¹æ¡ç¶æ : <span style="color: aquamarine">{{ item.result || "å建仿ç" }}</span> <span style="color: aquamarine"> {{ item.result === -1 ? "åºé" : item.result || "å建仿ç" }} </span> <!-- <span style="color: aquamarine">{{ item.result || "å建仿ç" }}</span> --> <!-- <span style="color: aquamarine">{{ statusText[item.status] || "æªç¥" }}</span> --> @@ -50,12 +53,20 @@ import { initeWaterPrimitiveView } from "@/utils/water"; import Message from "@/components/tools/Message.vue"; import { useSimStore } from "@/store/simulation.js"; import { SimAPIStore } from "@/store/simAPI"; import schemeInfo from "@/components/monifangzhen/schemeInfo.vue"; import { ElMessage, ElMessageBox } from "element-plus"; const emit = defineEmits(["start", "end", "reset", "closeBtn"]); import { getSimStart, getSimDataById } from "@/api/trApi"; import { getRegionData, getSimData, deleteSimData, getSimStart, getSimDataById, } from "@/api/trApi.js"; const simStore = useSimStore(); const simAPIStore = SimAPIStore(); // éä¸çæ¹æ¡ ID const selectedId = ref(null); // å½åéä¸çæ¹æ¡ä¿¡æ¯ @@ -72,16 +83,22 @@ 10: "宿", 20: "åºé", }; function formatTime(time) { return dayjs(time).format("YYYY-MM-DD HH:mm:ss"); } const messageShow = ref(false); const schemeInfoShow = ref(false); const mesData = ref(null); function setSchemClick(item) { mesData.value = item; messageShow.value = true; } function close() { messageShow.value = false; } @@ -113,8 +130,11 @@ simStore.setSelectedScheme(item); console.log("ææå¡åç§°"); } const flyHeight = ref(100000); const shouldShowFill = false; // æ±è§£å¨æ±è§£å®æä¹åæå¯ä»¥æ¾ç¤ºæ¶é´è½´ if (item.status == 10) { // åªæè¡æ¿åºåæ§è¡ @@ -135,14 +155,17 @@ emit("start"); } } function endPlay() { emit("end"); } function handleBack(value) { if (value === false) { schemeInfoShow.value = false; } } const handleHideSchemeInfo = () => { schemeInfoShow.value = false; emit("closeBtn", true); @@ -151,26 +174,6 @@ // 注åäºä»¶çå¬å¨ EventBus.on("hide-schemeInfo", handleHideSchemeInfo); /////////////////////// è°ç¨æ¥å£ï¼ä½¿ç¨æ¶æå¼ï¼ /////////////////////// import { getRegionData, getSimData, deleteSimData } from "@/api/trApi.js"; onMounted(() => { getScheme(); // 页é¢å è½½æ¶ç«å³è·åæ°æ® intervalId = setInterval(getScheme, 60 * 1000); // æ¯éä¸åéæ§è¡ä¸æ¬¡ }); onUnmounted(() => { if (intervalId !== null) { clearInterval(intervalId); // æ¸ é¤å®æ¶å¨ intervalId = null; // éç½® intervalId } }); const props = defineProps({ deleteSim: Boolean, // æ¥æ¶ç¶ç»ä»¶ä¼ éç彿° showAddIns: Boolean, }); const schemeList = ref([]); let intervalId = null; // ç¨äºåå¨ setInterval çè¿åå¼ // è·åæ¹æ¡å表 @@ -178,10 +181,49 @@ try { const res = await getSimData(); schemeList.value = res.data; const shouldStop = schemeList.value.every( (item) => item.result == "å建仿ç" || item.result == "宿" || item.result == "-1" ); simAPIStore.shouldPoll = !shouldStop; // ä¿®æ¹ Pinia ç¶æ // 3. 妿éè¦åæ¢ if (shouldStop) { if (intervalId) { clearInterval(intervalId); intervalId = null; console.log("åæ¢è½®è¯¢"); } return; } } catch (error) { console.error("Error fetching data:", error); } } // çå¬ shouldPoll ç¶æåå watch( () => simAPIStore.shouldPoll, (isStarted) => { console.log(isStarted, "宿¶å¨"); if (isStarted) { getScheme(); // 馿¬¡ç«å³è·å䏿¬¡ intervalId = setInterval(getScheme, 60 * 1000); // æ¯éä¸åéæ§è¡ } // else if (intervalId !== null) { // clearInterval(intervalId); // intervalId = null; // } }, { immediate: true } ); const props = defineProps({ deleteSim: Boolean, // æ¥æ¶ç¶ç»ä»¶ä¼ éç彿° showAddIns: Boolean, }); // æ°å»ºæ¹æ¡å®æä¹åæ¹æ¡å表é宿¶å·æ° watch( @@ -231,9 +273,18 @@ }) .catch(() => {}); }; /////////////////////// è°ç¨æ¥å£ç»æ /////////////////////// onMounted(() => { getScheme(); // 页é¢å è½½æ¶ç«å³è·åæ°æ® }); onUnmounted(() => { EventBus.off("hide-schemeInfo", handleHideSchemeInfo); if (intervalId !== null) { clearInterval(intervalId); // æ¸ é¤å®æ¶å¨ intervalId = null; // éç½® intervalId } }); </script> src/store/simAPI.js
@@ -5,6 +5,10 @@ import dayjs from 'dayjs' export const SimAPIStore = defineStore('SimAPI', () => { // 宿¶å¨ const shouldPoll = ref(false) const selectTab = ref("è¡æ¿åºå仿ç") const isLoading = ref(false) @@ -133,6 +137,7 @@ return { selectTab, isLoading, shouldPoll, handleClickTab, addSimCheme, saveScheme, src/store/simulation.js
@@ -1,7 +1,6 @@ // stores/ui.js import { defineStore } from 'pinia' import { ref } from 'vue' import { createSimData } from '@/api/trApi' export const useSimStore = defineStore('simulation', () => { // 鿣ç¹å表 @@ -30,7 +29,9 @@ const schemCard = ref([]) const backToHome = ref(false) const selectedScheme = ref(null) // é鍿°æ®å表 const rainFalls = ref() // éé¨åä½ const intensityUnit = ref() const setSelectedScheme = (scheme) => { selectedScheme.value = scheme src/views/left/CitySim.vue
@@ -512,10 +512,11 @@ // è°ç¨æ±è§£å¨ const simStartRes = await getSimStart(schemeId); console.log(simStartRes, "getSimStart è¿åç»æ"); // å ³ééæ©åºåçªå£ãåå§åè§å¾å¹¶å¼å§æ¨¡æ EventBus.emit("close-selectArea"); simStore.shouldPoll = true; // ææ¶ä¸å¨æ¤å¤å¼å§æ¨¡æï¼æ¨¡æé½å¨æ¹æ¡å表ä¸è¿è¡æ¨¡æ // initeWaterPrimitiveView(); // startSimulate(); src/views/left/KGSimOption/PredictiveSimulation.vue
@@ -88,7 +88,7 @@ ></el-option> </el-select> </el-form-item> <el-form-item label="éæ©æ¶é´:"> <el-form-item label="éæ©æ¶é´:" v-show="forms.prediction != 'éé¨åºæ¬¡'"> <el-date-picker v-model="forms.hours" type="datetimerange" @@ -98,6 +98,13 @@ date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" @change="change" /> </el-form-item> <el-form-item label="éæ©æ¶é´:" v-show="forms.prediction == 'éé¨åºæ¬¡'"> <el-date-picker v-model="forms.hours" type="datetime" placeholder="è¯·éæ©å¼å§æ¶é´" /> </el-form-item> <el-form-item label="é¢è®¡æ¶é¿:"> @@ -113,7 +120,7 @@ <div class="buttons"> <el-button type="primary" @click="openPlan">æå¼æ¹æ¡</el-button> <el-button type="primary" @click="openSaveDialog">ä¿åæ¹æ¡</el-button> <el-button type="success" @click="startPlay">å¼å§æ¨¡æ</el-button> <el-button type="success" @click="startPlay">ä¿åå¹¶å¼å§æ¨¡æ</el-button> </div> </div> </template> @@ -209,7 +216,7 @@ }; // éé¨åºæ¬¡éæ© const rainFallChange = (val) => { // console.log(val, "val"); console.log(val, "val"); const decimalHours = (val.rainfallDuration.match(/(\d+)æ¶(\d+)å/) || []) .slice(1) .reduce((acc, curr, i) => acc + parseInt(curr, 10) / (i === 0 ? 1 : 60), 0) @@ -261,7 +268,7 @@ // å¼å§æ¨¡æ async function startPlay() { try { formData.geom = props.selectedArea; forms.geom = props.selectedArea; // ä¿åæ¹æ¡ const res = await simStore.addSimCheme(forms); const schemeId = res.data?.data?.id; @@ -277,6 +284,8 @@ // å ³ééæ©åºåçªå£ãåå§åè§å¾å¹¶å¼å§æ¨¡æ EventBus.emit("close-selectArea"); simStore.shouldPoll = true; // ææ¶ä¸å¨æ¤å¤å¼å§æ¨¡æï¼æ¨¡æé½å¨æ¹æ¡å表ä¸è¿è¡æ¨¡æ // initeWaterPrimitiveView(); // startSimulate(); @@ -287,6 +296,7 @@ }); } catch (error) { ElMessage.error("å¯å¨æ¨¡æå¤±è´¥ï¼è¯·ç¨ååè¯"); console.log(error); } } src/views/left/KGSimOption/RealTimeSimulation copy.vue
ÎļþÒÑɾ³ý