| | |
| | | 重点区域仿真(10m精度) |
| | | </div> |
| | | <div class="forms"> |
| | | <el-form :model="forms" label-width="auto" style="max-width: 600px"> |
| | | <el-form |
| | | :rules="rules" |
| | | :model="forms" |
| | | label-width="auto" |
| | | style="max-width: 600px" |
| | | > |
| | | <el-form-item label="方案名称:"> |
| | | <el-input |
| | | v-model="forms.name" |
| | | style="max-width: 600px" |
| | | placeholder="Please input" |
| | | placeholder="请输入方案名称" |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | <el-select |
| | | @change="changeGeom" |
| | | v-model="forms.geom" |
| | | placeholder="Select" |
| | | placeholder="请选择模拟区域" |
| | | style="max-width: 600px" |
| | | > |
| | | <el-option |
| | |
| | | <el-select |
| | | @change="changeGeom" |
| | | v-model="forms.geom" |
| | | placeholder="Select" |
| | | placeholder="请选择模拟区域" |
| | | style="max-width: 600px" |
| | | > |
| | | <el-option |
| | |
| | | <el-input |
| | | v-model="forms.rainfall" |
| | | style="max-width: 600px" |
| | | placeholder="Please input" |
| | | placeholder="请输入降雨量" |
| | | > |
| | | <template #append>mm</template> |
| | | </el-input> |
| | |
| | | disabled |
| | | v-model="forms.duration" |
| | | style="max-width: 600px" |
| | | placeholder="Please input" |
| | | placeholder="请输入降雨时长" |
| | | > |
| | | <template #append>h</template> |
| | | </el-input> |
| | |
| | | <el-input |
| | | v-model="forms.intensity" |
| | | style="max-width: 600px" |
| | | placeholder="Please input" |
| | | placeholder="请输入降雨强度" |
| | | > |
| | | <template #append>mm/h</template> |
| | | </el-input> |
| | |
| | | </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> |
| | |
| | | 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"; // 引入事件总线 |
| | |
| | | console.log(intensityColumn, "intensityColumnintensityColumnintensityColumn"); |
| | | // 3. 提取第二列的单位(如 "(mm/h)" → "mm/h") |
| | | const intensityUnit = extractUnitFromHeader(intensityColumn); |
| | | console.log( |
| | | intensityUnit, |
| | | "intensityUnitintensityUnitintensityUnitintensityUnit" |
| | | ); |
| | | forms.intensityUnit = intensityUnit; // 存储单位(可选) |
| | | |
| | | // 4. 如果校验通过,继续处理数据 |
| | |
| | | }; |
| | | |
| | | // 开始模拟 |
| | | function startPlay() { |
| | | initeWaterPrimitiveView(); |
| | | startSimulate(); |
| | | async function startPlay() { |
| | | 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> |
| | | |