guonan
2025-05-20 f1fbe8049ba01186f033037e6ae36d51915c7418
src/views/left/CitySim.vue
@@ -11,12 +11,17 @@
      重点区域仿真(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>
@@ -57,7 +62,7 @@
          <el-select
            @change="changeGeom"
            v-model="forms.geom"
            placeholder="Select"
            placeholder="请选择模拟区域"
            style="max-width: 600px"
          >
            <el-option
@@ -75,7 +80,7 @@
          <el-select
            @change="changeGeom"
            v-model="forms.geom"
            placeholder="Select"
            placeholder="请选择模拟区域"
            style="max-width: 600px"
          >
            <el-option
@@ -91,7 +96,7 @@
          <el-input
            v-model="forms.rainfall"
            style="max-width: 600px"
            placeholder="Please input"
            placeholder="请输入降雨量"
          >
            <template #append>mm</template>
          </el-input>
@@ -120,7 +125,7 @@
            disabled
            v-model="forms.duration"
            style="max-width: 600px"
            placeholder="Please input"
            placeholder="请输入降雨时长"
          >
            <template #append>h</template>
          </el-input>
@@ -130,7 +135,7 @@
          <el-input
            v-model="forms.intensity"
            style="max-width: 600px"
            placeholder="Please input"
            placeholder="请输入降雨强度"
          >
            <template #append>mm/h</template>
          </el-input>
@@ -140,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>
@@ -153,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"; // 引入事件总线
@@ -466,9 +472,35 @@
};
// 开始模拟
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>