From f1fbe8049ba01186f033037e6ae36d51915c7418 Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期二, 20 五月 2025 15:09:59 +0800 Subject: [PATCH] 调用求解器 --- src/components/monifangzhen/schemeInfo.vue | 77 ++++++--- src/api/trApi.js | 78 ++++++--- src/views/Home.vue | 3 src/views/left/KGSimOption/PredictiveSimulation.vue | 34 +++ src/components/tools/Message.vue | 94 ++++++++--- src/views/left/KGSimOption/HistorySimulation.vue | 29 +++ src/views/left/Left.vue | 25 --- src/views/left/CitySim.vue | 38 +++ src/components/monifangzhen/schemeCard.vue | 73 ++++++-- src/views/left/KGSimOption/RealTimeSimulation.vue | 2 10 files changed, 302 insertions(+), 151 deletions(-) diff --git a/src/api/trApi.js b/src/api/trApi.js index 7588136..1b9a699 100644 --- a/src/api/trApi.js +++ b/src/api/trApi.js @@ -32,6 +32,17 @@ } } +// 鏍规嵁鏂规id鑾峰彇鏂规鍒楄〃 +export async function getSimDataById(id) { + try { + const res = await instance.get(`/simu/selectPage?id=${id}`); + return res.data; // 杩斿洖瀹為檯鏁版嵁锛堥�氬父 res.data 鎵嶆槸鎺ュ彛杩斿洖鐨勫唴瀹癸級 + } catch (error) { + console.error("Error fetching data:", error); + throw error; // 鎶涘嚭閿欒锛岃璋冪敤鏂瑰彲浠ユ崟鑾� + } +} + // 鏂板缓浠跨湡鏂规 export async function createSimData(simData) { try { @@ -57,45 +68,56 @@ throw error; } } + +// 寮�濮嬫ā鎷� +export async function getSimStart(ids) { + try { + const res = await instance.get(`/simu/start?id=${ids}`); + return res.data; + } catch (error) { + console.error("Error deleting simulation data:", error); + throw error; + } +} // ************************************************************************************************************** // 瑙f瀽json鑾峰彇娉ョ煶娴佸弬鏁� export function parseWaterSimulationData(jsonData) { try { - const startTime = jsonData.duration.start; // 鐩存帴浣跨敤鍘熷鏃堕棿 - const endTime = jsonData.duration.end; // 鐩存帴浣跨敤鍘熷鏃堕棿 - const extension = jsonData.extension; - const terrainSizes = jsonData.terrain.size; // 鍒嗚鲸鐜� - const waterTimestamps = jsonData.waters.data.map((timestamp) => { - return timestamp; // 涓嶈繘琛屾椂闂存牸寮忓寲 - }); - return { - startTime: startTime, // 鍘熷鏃堕棿 - endTime: endTime, // 鍘熷鏃堕棿 - extension: { - maxHeight: extension.maxHeight, - minHeight: extension.minHeight, - maxX: extension.maxx, - maxY: extension.maxy, - minX: extension.minx, - minY: extension.miny, - }, - terrainSizes: terrainSizes, - flowUrl: jsonData.flowUrl, - waterUrl: jsonData.waterUrl, - version: jsonData.version, - waterTimestamps: waterTimestamps, // 鍘熷鏃堕棿鏁扮粍 - }; + const startTime = jsonData.duration.start; // 鐩存帴浣跨敤鍘熷鏃堕棿 + const endTime = jsonData.duration.end; // 鐩存帴浣跨敤鍘熷鏃堕棿 + const extension = jsonData.extension; + const terrainSizes = jsonData.terrain.size; // 鍒嗚鲸鐜� + const waterTimestamps = jsonData.waters.data.map((timestamp) => { + return timestamp; // 涓嶈繘琛屾椂闂存牸寮忓寲 + }); + return { + startTime: startTime, // 鍘熷鏃堕棿 + endTime: endTime, // 鍘熷鏃堕棿 + extension: { + maxHeight: extension.maxHeight, + minHeight: extension.minHeight, + maxX: extension.maxx, + maxY: extension.maxy, + minX: extension.minx, + minY: extension.miny, + }, + terrainSizes: terrainSizes, + flowUrl: jsonData.flowUrl, + waterUrl: jsonData.waterUrl, + version: jsonData.version, + waterTimestamps: waterTimestamps, // 鍘熷鏃堕棿鏁扮粍 + }; } catch (error) { - console.error("瑙f瀽姘存ā鎷熸暟鎹椂鍑洪敊:", error); - return null; + console.error("瑙f瀽姘存ā鎷熸暟鎹椂鍑洪敊:", error); + return null; } } // 閫氳繃鎺ュ彛鍘昏姹俲son锛屽皢璇锋眰鐨刯son瑙f瀽鑾峰彇娉ョ煶娴佸弬鏁� export async function fetchWaterSimulationData(serviceInfo) { try { - // const response = await fetch(`/simu/${serviceInfo}/layer.json`); // 鍙戣捣璇锋眰 - const response = await fetch(`/simu/c2h1dc/layer.json`); // 鍙戣捣璇锋眰 + const response = await fetch(`/simu/${serviceInfo}/layer.json`); // 鍙戣捣璇锋眰 + // const response = await fetch(`/simu/c2h1dc/layer.json`); // 鍙戣捣璇锋眰 if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } diff --git a/src/components/monifangzhen/schemeCard.vue b/src/components/monifangzhen/schemeCard.vue index 413eb16..4c2d825 100644 --- a/src/components/monifangzhen/schemeCard.vue +++ b/src/components/monifangzhen/schemeCard.vue @@ -13,9 +13,10 @@ <p>鍒涘缓鏃堕棿 : {{ formatTime(item.createTime) }}</p> <p> 鏂规鐘舵�� : - <span style="color: aquamarine">{{ + <span style="color: aquamarine">{{ item.result || "鍒涘缓浠跨湡" }}</span> + <!-- <span style="color: aquamarine">{{ statusText[item.status] || "鏈煡" - }}</span> + }}</span> --> </p> </div> <div class="cardMenu"> @@ -24,7 +25,7 @@ >鏂规璇︽儏</el-button > <el-button size="small" @click="startPlay(item)">杩涘叆妯℃嫙</el-button> - <!-- :disabled="item.taskStatus !== 2" --> + <!-- :disabled="item.status !== 2" --> </div> </div> </el-card> @@ -52,6 +53,7 @@ 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"; const simStore = useSimStore(); // 閫変腑鐨勬柟妗� ID @@ -85,25 +87,41 @@ } function startPlay(item) { - // if (item.taskStatus !== 2) { - // alert("褰撳墠鏂规灏氭湭瀹屾垚锛屾棤娉曡繘鍏ユā鎷燂紒"); - // return; - // } - // if (!item.serviceName) { - // ElMessage({ - // message: "serviceName 涓嶅瓨鍦紝鏃犳硶缁х画锛�", - // type: "warning", - // }); - // return; // 闃绘鍚庣画閫昏緫鎵ц - // } - console.log(item,'iteeeeeeeem'); - simStore.setSelectedScheme(item); + // 鍒嗘瀽涓� + if (item.status == 2) { + ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,鏃犳硶杩涘叆妯℃嫙锛�"); + return; + } + // 鍑洪敊 + if (item.status == 20) { + ElMessage.error("褰撳墠鏂规鍒嗘瀽鍑洪敊,璇烽噸鏂版柊寤烘柟妗堬紒"); + return; + } + // 璋冪敤姹傝В鍣ㄥ苟鎷垮埌鏈�鏂扮敓鎴愮殑serviceName + // 鏂板垱寤虹殑鏂规娌℃湁鐘舵�佷互鍙妔erviceName鍒欐墽琛岃皟鐢ㄦ眰瑙e櫒 + if (!item.status && !item.serviceName) { + getSimStart(item.id).then((res) => { + getSimDataById(item.id).then((res) => { + item.serviceName = res.data[0].serviceName; + simStore.setSelectedScheme(item); + console.log(item, "鏃犳湇鍔″悕绉�"); + ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,璇风◢鍚庡啀妯℃嫙"); + getScheme(); + }); + }); + } else { + simStore.setSelectedScheme(item); + console.log("鏈夋湇鍔″悕绉�"); + } - currentScheme.value = item; - schemeInfoShow.value = true; - emit("closeBtn", false); - initeWaterPrimitiveView(); - emit("start"); + // 姹傝В鍣ㄦ眰瑙e畬鎴愪箣鍚庢墠鍙互鏄剧ず鏃堕棿杞� + if (item.status == 10) { + initeWaterPrimitiveView(); + currentScheme.value = item; + schemeInfoShow.value = true; + emit("closeBtn", false); + emit("start"); + } } function endPlay() { emit("end"); @@ -125,7 +143,15 @@ import { getRegionData, getSimData, deleteSimData } from "@/api/trApi.js"; onMounted(() => { - getScheme(); + getScheme(); // 椤甸潰鍔犺浇鏃剁珛鍗宠幏鍙栨暟鎹� + intervalId = setInterval(getScheme, 60 * 1000); // 姣忛殧涓�鍒嗛挓鎵ц涓�娆� +}); + +onUnmounted(() => { + if (intervalId !== null) { + clearInterval(intervalId); // 娓呴櫎瀹氭椂鍣� + intervalId = null; // 閲嶇疆 intervalId + } }); const props = defineProps({ @@ -133,8 +159,9 @@ showAddIns: Boolean, }); -// 鑾峰彇浠跨湡鍒楄〃 const schemeList = ref([]); +let intervalId = null; // 鐢ㄤ簬瀛樺偍 setInterval 鐨勮繑鍥炲�� +// 鑾峰彇鏂规鍒楄〃 async function getScheme() { try { const res = await getSimData(); diff --git a/src/components/monifangzhen/schemeInfo.vue b/src/components/monifangzhen/schemeInfo.vue index df5c387..100d392 100644 --- a/src/components/monifangzhen/schemeInfo.vue +++ b/src/components/monifangzhen/schemeInfo.vue @@ -1,13 +1,18 @@ <template> <div class="listCard"> - <div class="top"><span>鏂规璇︽儏</span> - </div> + <div class="top"><span>鏂规璇︽儏</span></div> <div class="details"> <div v-if="formattedData.length" class="input-group"> - <div v-for="(item, index) in formattedData" :key="index" class="input-item"> + <div + v-for="(item, index) in formattedData" + :key="index" + class="input-item" + > <label>{{ item.name }}</label> - <span :class="{ 'clickable': item.isClickable }" - @click="item.isClickable ? openGaugeDialog(item.gauges) : null"> + <span + :class="{ clickable: item.isClickable }" + @click="item.isClickable ? openGaugeDialog(item.gauges) : null" + > {{ item.value }} </span> </div> @@ -16,14 +21,22 @@ <p style="text-align: center">鏆傛棤鏂规淇℃伅</p> </div> </div> - <div> - - </div> + <div></div> </div> - <Message @close="close" class="mess" v-show="messageShow" :mesData="mesData" /> + <Message + @close="close" + class="mess" + v-show="messageShow" + :mesData="mesData" + /> <!-- 娣诲姞闆ㄩ噺璁″脊绐� --> <div class="dialoog"> - <el-dialog v-model="dialogVisible" title="闆ㄩ噺璁¤鎯�" width="50%" :before-close="handleClose"> + <el-dialog + v-model="dialogVisible" + title="闆ㄩ噺璁¤鎯�" + width="50%" + :before-close="handleClose" + > <div class="table-container"> <el-table :data="gaugesData" border stripe height="100%"> <el-table-column prop="name" label="鍚嶇О"></el-table-column> @@ -39,12 +52,17 @@ </template> --> </el-dialog> </div> - </template> <script setup> import { defineProps, defineEmits, inject, ref, watch } from "vue"; -import { ElDialog, ElTable, ElTableColumn, ElButton ,ElMessage} from "element-plus"; +import { + ElDialog, + ElTable, + ElTableColumn, + ElButton, + ElMessage, +} from "element-plus"; import dayjs from "dayjs"; // 鍏叡渚濊禆 const props = defineProps({ selectedScheme: { type: Object, default: null } }); @@ -54,13 +72,12 @@ // 鐘舵�佺鐞� const formattedData = ref([]); - // 鏄犲皠琛� const areaTypeMap = { 0: "鑷畾涔夊尯鍩熶豢鐪�", 1: "琛屾斂鍖哄垝浠跨湡", 2: "閲嶇偣鍖哄煙浠跨湡", - 3: "閲嶇偣娌熶豢鐪�" + 3: "閲嶇偣娌熶豢鐪�", }; const statusMap = { @@ -68,17 +85,25 @@ 1: "棰勫鐞�", 2: "鍒嗘瀽涓�", 10: "瀹屾垚", - 20: "鍑洪敊" + 20: "鍑洪敊", }; const typeMap = { 1: "棰勬祴妯℃嫙", 2: "瀹炴椂妯℃嫙", - 3: "鍘嗗彶妯℃嫙" + 3: "鍘嗗彶妯℃嫙", }; // 璺宠繃瀛楁鍒楄〃 -const skipKeys = ["geom", "id", "serviceName", "updateTime", "updateUser", "createUser", "bak"]; +const skipKeys = [ + "geom", + "id", + "serviceName", + "updateTime", + "updateUser", + "createUser", + "bak", +]; // 澶勭悊 data 瀛楁瑙f瀽 function parseDataField(dataStr) { @@ -92,24 +117,24 @@ intensity: "闄嶉洦寮哄害锛坢m/灏忔椂锛夛細", prediction: "闄嶉洦鍦烘锛�", model: "闄嶉洦妯″紡锛�", - history: "鍘嗗彶闄嶉洦锛�" + history: "鍘嗗彶闄嶉洦锛�", }; const result = Object.entries(parsed) .filter(([k]) => fields[k]) .map(([k, v]) => ({ name: fields[k], - value: v || "鏃�" + value: v || "鏃�", })); // 澶勭悊闆ㄩ噺璁℃暟鎹� - if (parsed.gauges && Array.isArray(parsed.gauges)) { - const gaugeNames = parsed.gauges.map(g => g.name).join(", ") || "鏃�"; + if (parsed.type == 2 && parsed.gauges && Array.isArray(parsed.gauges)) { + const gaugeNames = parsed.gauges.map((g) => g.name).join(", ") || "鏃�"; result.push({ name: "闆ㄩ噺璁″垪琛細", - value: '鏌ョ湅闆ㄩ噺璁″垪琛�', + value: "鏌ョ湅闆ㄩ噺璁″垪琛�", isClickable: true, - gauges: parsed.gauges + gauges: parsed.gauges, }); } @@ -136,7 +161,7 @@ const entries = Object.entries(newScheme); const areaType = newScheme.areaType; - console.log(newScheme, 'news'); + // console.log(newScheme, "news"); const result = entries.reduce((acc, [key, value]) => { if (skipKeys.includes(key)) return acc; @@ -185,11 +210,11 @@ // 鎵撳紑闆ㄩ噺璁″脊绐� function openGaugeDialog(gauges) { if (Array.isArray(gauges) && gauges.length > 0) { - gaugesData.value = gauges.map(g => ({ + gaugesData.value = gauges.map((g) => ({ name: g.name || "鏈煡", x: g.x != null ? g.x.toFixed(2) : "-", y: g.y != null ? g.y.toFixed(2) : "-", - r: g.r || "-" + r: g.r || "-", })); dialogVisible.value = true; } else { diff --git a/src/components/tools/Message.vue b/src/components/tools/Message.vue index 43fad94..5fa5261 100644 --- a/src/components/tools/Message.vue +++ b/src/components/tools/Message.vue @@ -5,17 +5,27 @@ <div class="message-context"> <div v-for="(item, key) in messageList" :key="key" class="message-item"> <div class="message-name">{{ item.name }}</div> - <div class="message-value" v-if="!(item.name.includes('闆ㄩ噺璁″垪琛�'))"> + <div class="message-value" v-if="!item.name.includes('闆ㄩ噺璁″垪琛�')"> {{ item.value }} </div> - <div v-if="item.name.includes('闆ㄩ噺璁″垪琛�')" @click="openDialog" - style="color: #5bc0de; cursor: pointer;"> + <div + v-if="item.name.includes('闆ㄩ噺璁″垪琛�')" + @click="openDialog" + style="color: #5bc0de; cursor: pointer" + > 鏌ョ湅闆ㄩ噺璁″垪琛� </div> </div> </div> - <el-dialog title="闆ㄩ噺璁¤鎯�" v-model="dialogVisible" :width="'60%'" :before-close="handleClose" - style="background-color: rgb(5,75,69);"> + + <!-- 闆ㄩ噺璁″脊绐� --> + <el-dialog + title="闆ㄩ噺璁¤鎯�" + v-model="dialogVisible" + width="60%" + :before-close="handleClose" + style="background-color: rgb(5, 75, 69)" + > <div class="table-container"> <el-table :data="gaugesData" border stripe height="100%"> <el-table-column prop="name" label="鍚嶇О"></el-table-column> @@ -24,11 +34,6 @@ <el-table-column prop="r" label="鍗婂緞(r)"></el-table-column> </el-table> </div> - <!-- <template #footer> - <span class="dialog-footer"> - <el-button @click="dialogVisible = false">鍏� 闂�</el-button> - </span> - </template> --> </el-dialog> </div> </template> @@ -54,12 +59,11 @@ function openDialog() { if (gaugesData.value.length > 0) { dialogVisible.value = true; - }else { + } else { ElMessage({ message: "鏈壘鍒伴洦閲忚鏁版嵁锛�", type: "warning", }); - return; // 闃绘鍚庣画閫昏緫鎵ц } } @@ -79,10 +83,25 @@ } const formattedData = []; - const areaType = newMesData.areaType !== undefined ? newMesData.areaType : null; + const areaType = + newMesData.areaType !== undefined ? newMesData.areaType : null; + + // 鑾峰彇褰撳墠鐨� type 鍊� + const currentType = newMesData.type; for (const [key, value] of Object.entries(newMesData)) { - if (["geom", "id", "serviceName", "updateTime", "updateUser", "createUser", "bak"].includes(key)) continue; + if ( + [ + "geom", + "id", + "serviceName", + "updateTime", + "updateUser", + "createUser", + "bak", + ].includes(key) + ) + continue; if (key === "createTime" && typeof value === "number") { formattedData.push({ name: "鍒涘缓鏃堕棿锛�", value: formatDate(value) }); @@ -96,7 +115,10 @@ 2: "閲嶇偣鍖哄煙浠跨湡", 3: "閲嶇偣娌熶豢鐪�", }; - formattedData.push({ name: "鍖哄煙绫诲埆锛�", value: areaTypeMap[value] || "鏈煡" }); + formattedData.push({ + name: "鍖哄煙绫诲埆锛�", + value: areaTypeMap[value] || "鏈煡", + }); continue; } @@ -108,14 +130,20 @@ 10: "瀹屾垚", 20: "鍑洪敊", }; - formattedData.push({ name: "浠跨湡鐘舵�侊細", value: statusMap[value] || "鏈煡" }); + formattedData.push({ + name: "浠跨湡鐘舵�侊細", + value: statusMap[value] || "鏈煡", + }); continue; } if (key === "type") { if (![1, 2].includes(areaType)) { const typeMap = { 1: "棰勬祴妯℃嫙", 2: "瀹炴椂妯℃嫙", 3: "鍘嗗彶妯℃嫙" }; - formattedData.push({ name: "妯℃嫙绫诲埆锛�", value: typeMap[value] || "鏈煡" }); + formattedData.push({ + name: "妯℃嫙绫诲埆锛�", + value: typeMap[value] || "鏈煡", + }); } continue; } @@ -138,11 +166,14 @@ if (key === "data" && typeof value === "string") { try { const parsedData = JSON.parse(value); - console.log('Parsed Data:', parsedData); + // 澶勭悊 data 涓殑鍚勪釜瀛楁 const addField = (fieldKey, label) => { if (parsedData[fieldKey] !== undefined) { - formattedData.push({ name: `${label}锛歚, value: parsedData[fieldKey] || "鏃�" }); + formattedData.push({ + name: `${label}锛歚, + value: parsedData[fieldKey] || "鏃�", + }); } }; @@ -153,8 +184,12 @@ addField("model", "闄嶉洦妯″紡"); addField("history", "鍘嗗彶闄嶉洦"); - // 澶勭悊闆ㄩ噺璁℃暟鎹� - if (parsedData.gauges && Array.isArray(parsedData.gauges)) { + // 鍒ゆ柇 type 鏄惁涓� 2锛屽喅瀹氭槸鍚︽坊鍔犻洦閲忚淇℃伅 + if ( + currentType == 2 && + parsedData.gauges && + Array.isArray(parsedData.gauges) + ) { gaugesData.value = parsedData.gauges.map((gauge) => ({ name: gauge.name || "鏈煡", x: gauge.x != null ? gauge.x.toFixed(2) : "-", @@ -162,8 +197,11 @@ r: gauge.r || "-", })); - const gaugeNames = gaugesData.value.map(g => g.name).join(", "); - formattedData.push({ name: "闆ㄩ噺璁″垪琛細", value: gaugeNames || "鏃�" }); + const gaugeNames = gaugesData.value.map((g) => g.name).join(", "); + formattedData.push({ + name: "闆ㄩ噺璁″垪琛細", + value: gaugeNames || "鏃�", + }); } } catch (e) { formattedData.push({ name: "鏁版嵁锛�", value: value || "鏃�" }); @@ -175,8 +213,6 @@ } messageList.value = formattedData; - console.log(messageList.value, 'wwwwwwwwwwwwwwwwwwwwwwwwwwwwww'); - }, { immediate: true } ); @@ -264,8 +300,8 @@ max-width: 200px; } .table-container { - max-height: 500px; // 鎺у埗鏈�澶ч珮搴︼紝瓒呰繃鍒欏嚭鐜版粴鍔ㄦ潯 - overflow-y: auto; // 鍨傜洿婊氬姩 + max-height: 500px; + overflow-y: auto; padding: 10px; border-radius: 4px; } @@ -274,7 +310,7 @@ padding-top: 10px; padding-bottom: 10px; } -/deep/.el-dialog__title{ +/deep/.el-dialog__title { color: #fff !important; } .table-container .el-table { @@ -282,4 +318,4 @@ border-radius: 4px; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); } -</style> \ No newline at end of file +</style> diff --git a/src/views/Home.vue b/src/views/Home.vue index 0c755e4..cc0b587 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -59,7 +59,6 @@ // import DangerAssess from "@/components/monifangzhen/DangerAssess.vue"; import { showDeviceDetail } from "@/store"; import { setupTokenRefresh, getDangerPoint } from "@/api/hpApi.js"; -import { getSimData, fetchWaterSimulationData } from "@/api/trApi.js"; import { convertToWKT } from "@/utils/wktUtils"; const route = useRoute(); @@ -103,7 +102,7 @@ onMounted(async () => { setupTokenRefresh(); // 鑾峰彇瀹忓浘token - getSimData(); //娴嬭瘯tr鍚庣 + // getSimData(); //娴嬭瘯tr鍚庣 // 鑾峰彇闅愭偅鐐瑰垪琛紙鍥犱负涓杞悗绔帴鍙h幏鍙栧姞杞芥椂闂磋緝闀匡級 getDangerPoint().then((res) => { simStore.DangerPoint = res.data.pageData; diff --git a/src/views/left/CitySim.vue b/src/views/left/CitySim.vue index cdc0e91..dd8bf81 100644 --- a/src/views/left/CitySim.vue +++ b/src/views/left/CitySim.vue @@ -145,7 +145,7 @@ </el-form> <div style="display: flex; justify-content: flex-end"> <el-button type="primary" @click="addSimCheme">淇濆瓨鏂规</el-button> - <el-button type="success" @click="startPlay">寮�濮嬫ā鎷�</el-button> + <el-button type="success" @click="startPlay">淇濆瓨骞跺紑濮嬫ā鎷�</el-button> </div> </div> </div> @@ -158,7 +158,8 @@ import { ElMessage, ElMessageBox } from "element-plus"; import { initeWaterPrimitiveView } from "@/utils/water"; import { SimAPIStore } from "@/store/simAPI"; -import { getRegionData } from "@/api/trApi"; +import { getRegionData, getSimStart, getSimDataById } from "@/api/trApi"; + import { storeToRefs } from "pinia"; import dayjs from "dayjs"; import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎 @@ -472,11 +473,34 @@ // 寮�濮嬫ā鎷� async function startPlay() { - // 寮�濮嬫ā鎷熷墠闇�瑕佸厛淇濆瓨鏂规 - await simStore.addSimCheme(forms); - EventBus.emit("close-selectArea"); - initeWaterPrimitiveView(); - startSimulate(); + try { + // 淇濆瓨鏂规 + const res = await simStore.addSimCheme(forms); + const schemeId = res.data?.data?.id; + + if (!schemeId) { + ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID"); + return; + } + + // 璋冪敤姹傝В鍣� + const simStartRes = await getSimStart(schemeId); + console.log(simStartRes, "getSimStart 杩斿洖缁撴灉"); + + // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷� + EventBus.emit("close-selectArea"); + // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷� + // initeWaterPrimitiveView(); + // startSimulate(); + + ElMessage.warning({ + message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒", + duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣 + }); + } catch (error) { + console.error("鍚姩妯℃嫙杩囩▼涓彂鐢熼敊璇細", error); + ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯"); + } } </script> diff --git a/src/views/left/KGSimOption/HistorySimulation.vue b/src/views/left/KGSimOption/HistorySimulation.vue index 2e0d2b9..71f022b 100644 --- a/src/views/left/KGSimOption/HistorySimulation.vue +++ b/src/views/left/KGSimOption/HistorySimulation.vue @@ -175,13 +175,32 @@ async function startPlay() { try { formData.geom = props.selectedArea; - await simStore.addSimCheme(formData); + // 淇濆瓨鏂规 + const res = await simStore.addSimCheme(formData); + const schemeId = res.data?.data?.id; + + if (!schemeId) { + ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID"); + return; + } + + // 璋冪敤姹傝В鍣� + const simStartRes = await getSimStart(schemeId); + console.log(simStartRes, "getSimStart 杩斿洖缁撴灉"); + + // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷� EventBus.emit("close-selectArea"); - initeWaterPrimitiveView(); - startSimulate(); - ElMessage.success("妯℃嫙寮�濮�"); + // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷� + // initeWaterPrimitiveView(); + // startSimulate(); + + ElMessage.warning({ + message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒", + duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣 + }); + } catch (error) { - ElMessage.error("妯℃嫙鍚姩澶辫触"); + ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯"); } } </script> diff --git a/src/views/left/KGSimOption/PredictiveSimulation.vue b/src/views/left/KGSimOption/PredictiveSimulation.vue index 1f1eed4..9ef983d 100644 --- a/src/views/left/KGSimOption/PredictiveSimulation.vue +++ b/src/views/left/KGSimOption/PredictiveSimulation.vue @@ -259,11 +259,35 @@ // 寮�濮嬫ā鎷� async function startPlay() { - forms.geom = props.selectedArea; - await simStore.addSimCheme(forms); - EventBus.emit("close-selectArea"); - initeWaterPrimitiveView(); - startSimulate(); + try { + formData.geom = props.selectedArea; + // 淇濆瓨鏂规 + const res = await simStore.addSimCheme(forms); + const schemeId = res.data?.data?.id; + + if (!schemeId) { + ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID"); + return; + } + + // 璋冪敤姹傝В鍣� + const simStartRes = await getSimStart(schemeId); + console.log(simStartRes, "getSimStart 杩斿洖缁撴灉"); + + // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷� + EventBus.emit("close-selectArea"); + // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷� + // initeWaterPrimitiveView(); + // startSimulate(); + + ElMessage.warning({ + message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒", + duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣 + }); + + } catch (error) { + ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯"); + } } // 鎵撳紑鏂规 diff --git a/src/views/left/KGSimOption/RealTimeSimulation.vue b/src/views/left/KGSimOption/RealTimeSimulation.vue index 217790c..d3192ae 100644 --- a/src/views/left/KGSimOption/RealTimeSimulation.vue +++ b/src/views/left/KGSimOption/RealTimeSimulation.vue @@ -188,7 +188,7 @@ .filter((item) => item.selected) .map((item) => ({ id: item.deviceCode, - deviceName: item.deviceName, + name: item.deviceName, x: item.longitude, y: item.latitude, r: 10000, diff --git a/src/views/left/Left.vue b/src/views/left/Left.vue index 20a3514..d4d97dd 100644 --- a/src/views/left/Left.vue +++ b/src/views/left/Left.vue @@ -401,31 +401,6 @@ } const schemeCardRef = ref(null); -// function deleteSelectedScheme() { -// const selectedId = schemeCardRef.value.getSelectedId(); -// const selectedScheme = simStore.schemCard.find( -// (item) => item.id === selectedId -// ); -// if (!selectedId) { -// ElMessage.warning("璇峰厛閫夋嫨涓�涓柟妗堬紒"); -// return; -// } -// ElMessageBox.confirm( -// `纭畾瑕佸垹闄� "${selectedScheme.name}" 鏂规鍚楋紵`, -// "鍒犻櫎纭", -// { -// confirmButtonText: "纭畾", -// cancelButtonText: "鍙栨秷", -// type: "warning", -// } -// ) -// .then(() => { -// simStore.removeSchemCardItem(selectedId); -// ElMessage.success(`鏂规 "${selectedScheme.name}" 鍒犻櫎鎴愬姛锛乣); -// }) -// .catch(() => { }); -// } - function start(form) { emits("start", form); } -- Gitblit v1.9.3