guonan
2025-04-22 8d7fca46fd7f1bf85dbe9fa6fcfd287f45ad1b71
tab报错
已修改5个文件
446 ■■■■ 文件已修改
src/api/trApi.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/monifangzhen/schemeCard.vue 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/simAPI.js 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/left/CitySim.vue 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/left/Simulation.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/trApi.js
@@ -1,7 +1,7 @@
import instance from "./requestTR.js";
// 获取区域数据
export async function getData(params = {}) {
export async function getRegionData(params = {}) {
  try {
    const defaultParams = {
      id: undefined,       
src/components/monifangzhen/schemeCard.vue
@@ -1,9 +1,6 @@
<template>
  <div class="listCard">
    <!-- <div>方案数量: {{ simStore.schemCard.length }}</div> -->
    <!-- 接口版本删除该代码块 -->
    <!-- <el-card v-if="!schemeInfoShow" v-for="(item, key) in simStore.schemCard" :key="key"
      :class="{ selected: selectedId === item.id }" @click="selectScheme(item.id)"> -->
    <el-card v-if="!schemeInfoShow" v-for="(item, key) in schemeList" :key="key"
      :class="{ selected: selectedId === item.id }" @click="selectScheme(item.id)">
      <div>
@@ -50,248 +47,7 @@
function selectScheme(id) {
  selectedId.value = id;
}
// simStore.setSchemCard([
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2025-01-13 19:33:04",
//     datPath: "e:/data/hydro/11011611021801/1878767214615695362",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-08-01 01:59:59",
//     fileCount: 299,
//     fileName: "东江沟雨量计0110.xls",
//     hotStart: false,
//     id: "1878767214431145986",
//     name: "降雨数据:房山区东江沟数据",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-30 00:00:00",
//     taskId: "1878767214615695362",
//     taskStatus: 2,
//     updateTime: "2025-01-13 19:33:04",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2025-01-10 14:33:49",
//     datPath: "e:/data/hydro/11011611021801/1877604741980196866",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-08-02 01:00:00",
//     fileCount: 450,
//     fileName: "东江沟雨量计0110.xls",
//     hotStart: false,
//     id: "1877604741590126594",
//     name: "东江沟0729-0801",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-29 22:00:00",
//     taskId: "1877604741980196866",
//     taskStatus: 2,
//     updateTime: "2025-01-10 14:33:49",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-12-27 12:28:45",
//     datPath: "e:/data/hydro/11011611021801/1872499838538584065",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-08-02 09:00:00",
//     fileCount: 654,
//     fileName: "东江沟雨量计0110.xls",
//     hotStart: false,
//     id: "1872499838278537217",
//     name: "北京市731暴雨",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-28 20:00:00",
//     taskId: "1872499838538584065",
//     taskStatus: 2,
//     updateTime: "2024-12-27 12:28:45",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-12-20 15:00:11",
//     datPath: "e:/data/hydro/11011611021801/1870001233680502786",
//     dataType: 0,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2024-12-20 06:00:00",
//     fileCount: 86,
//     fileName: "",
//     hotStart: false,
//     id: "1870001233646948354",
//     name: "雨强30mm",
//     noRainTime: 0,
//     outputPeriod: 300,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2024-12-20 00:00:00",
//     taskId: "1870001233680502786",
//     taskStatus: 2,
//     updateTime: "2024-12-20 15:00:11",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-12-19 17:34:34",
//     datPath: "e:/data/hydro/11011611021801/1869677696923045889",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-08-01 03:00:44",
//     fileCount: 388,
//     fileName: "截流坝雨量计0068.xls",
//     hotStart: false,
//     id: "1869677696608473090",
//     name: "截流坝数据模拟0729-0731",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-29 21:00:13",
//     taskId: "1869677696923045889",
//     taskStatus: 2,
//     updateTime: "2024-12-19 17:34:34",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-12-13 15:03:24",
//     datPath: "e:/data/hydro/11011611021801/1867465327392165890",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-07-31 12:00:00",
//     fileCount: 288,
//     fileName: "东江沟雨量计0110.xls",
//     hotStart: false,
//     id: "1867465327106953218",
//     name: "东江沟数据模拟0729-0731",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-29 12:00:00",
//     taskId: "1867465327392165890",
//     taskStatus: 2,
//     updateTime: "2024-12-13 15:03:24",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-11-28 19:01:16",
//     datPath: "e:/data/hydro/11011611021801/1862089369491931138",
//     dataType: 2,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2023-07-31 00:00:00",
//     fileCount: 145,
//     fileName: "东江沟雨量计0110.xls",
//     hotStart: false,
//     id: "1862089369462571010",
//     name: "东江沟雨量0731",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2023-07-30 00:00:00",
//     taskId: "1862089369491931138",
//     taskStatus: 2,
//     updateTime: "2024-11-28 19:01:16",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-11-28 18:47:45",
//     datPath: "e:/data/hydro/11011611021801/1862085967261270017",
//     dataType: 0,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2024-08-31 00:00:00",
//     fileCount: 145,
//     fileName: "",
//     hotStart: false,
//     id: "1862085967252881410",
//     name: "雨强模拟方案0830",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2024-08-30 00:00:00",
//     taskId: "1862085967261270017",
//     taskStatus: 2,
//     updateTime: "2024-11-28 18:47:45",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-11-28 18:39:49",
//     datPath: "e:/data/hydro/11011611021801/1862083971414294529",
//     dataType: 1,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2024-07-31 00:00:00",
//     fileCount: 145,
//     fileName: "",
//     hotStart: false,
//     id: "1862083971003252737",
//     name: "雨量模拟方案0730",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2024-07-30 00:00:00",
//     taskId: "1862083971414294529",
//     taskStatus: 2,
//     updateTime: "2024-11-28 18:39:49",
//     userId: "0",
//   },
//   {
//     area: "孙胡沟",
//     areaId: "0",
//     createTime: "2024-11-28 17:26:45",
//     datPath: "e:/data/hydro/11011611021801/1862065584806100994",
//     dataType: 0,
//     dataValue: "",
//     depthThreshold: 0,
//     endTime: "2024-11-28 09:26:17",
//     fileCount: 57,
//     fileName: "",
//     hotStart: false,
//     id: "1862065584743186434",
//     name: "雨强模拟方案1128",
//     noRainTime: 0,
//     outputPeriod: 600,
//     shpPath: "e:/data/hydro/11011611021801/shp",
//     simulateType: 1,
//     startTime: "2024-11-28 00:00:00",
//     taskId: "1862065584806100994",
//     taskStatus: 2,
//     updateTime: "2024-11-28 17:26:45",
//     userId: "0",
//   },
// ]);
const statusText = {
  0: "未开始",
  1: "进行中",
@@ -338,24 +94,12 @@
// 注册事件监听器
EventBus.on("hide-schemeInfo", handleHideSchemeInfo);
//////////////////////////////////// 暴露选中的 ID 给父组件(接口版本删除)////////////////////////////////////
// defineExpose({
//   getSelectedId: () => selectedId.value,
// });
/////////////////////// 调用接口(使用时打开) ///////////////////////
import { getData, getSimData, deleteSimData } from "@/api/trApi.js";
import { getRegionData, getSimData, deleteSimData } from "@/api/trApi.js";
onMounted(() => {
  getScheme();
  // 111
  getData({ type:2 })
    .then(data => {
      console.log('Data:', data);
    })
    .catch(error => {
      console.error('Error:', error);
    });
});
const props = defineProps({
src/store/simAPI.js
@@ -45,8 +45,38 @@
        return true
    }
    // 弹窗
    const openSaveDialog = async (forms) => {
    // 保存方案逻辑
    const saveScheme = async (forms) => {
        if (isLoading.value) {
            ElMessage.warning('正在保存,请稍候...')
            return
        }
        isLoading.value = true
        try {
            const params = {
                areaType: getAreaType(selectTab.value),
                createTime: Date.now(),
                name: forms.name,
                type: getRainType(forms.type),
                status: 0,
                data: forms.data
            }
            const res = await createSimData(params)
            ElMessage.success('方案保存成功')
            return res
        } catch (error) {
            console.error('保存失败:', error)
            ElMessage.error('保存失败: ' + (error.message || '请稍后重试'))
            throw error
        } finally {
            isLoading.value = false
        }
    }
    // 保存方案弹窗
    const addSimCheme = async (forms) => {
        if (!validateForm(forms)) return
        try {
@@ -66,66 +96,12 @@
        }
    }
    const saveScheme = async (forms) => {
        if (isLoading.value) {
            ElMessage.warning('正在保存,请稍候...')
            return
        }
        isLoading.value = true
        try {
            const params = {
                areaType: getAreaType(selectTab.value),
                createTime: Date.now(),
                name: forms.name,
                type: getRainType(forms.type),
                status: 0,
                data: forms.data
            }
            const response = await createSimData(params)
            ElMessage.success('方案保存成功')
            return response
        } catch (error) {
            console.error('保存失败:', error)
            ElMessage.error('保存失败: ' + (error.message || '请稍后重试'))
            throw error
        } finally {
            isLoading.value = false
        }
    }
    // // 新建方案
    // const createSimulation = async (forms) => {
    //     console.log(forms, 'ffffffff')
    //     const params = {
    //         areaType: getAreaType(selectTab),
    //         createTime: Date.now(),
    //         name: forms.name,
    //         // 1为预测模拟,2为实时模拟,3为历史模拟
    //         type: getRainType(forms.type),
    //         // 0为创建仿真,1为预处理,2为分析中,10为完成,20为出错
    //         status: 0,
    //         data: forms.data
    //     }
    //     console.log(params, 'params')
    //     try {
    //         await createSimData(params)
    //     } catch (error) {
    //         console.error('创建仿真失败:', error)
    //     }
    // }
    return {
        // 状态
        selectTab,
        isLoading,
        // 方法
        handleClickTab,
        openSaveDialog,
        addSimCheme,
        saveScheme,
    }
})
src/views/left/CitySim.vue
@@ -104,7 +104,7 @@
        <!-- <el-form-item label="仿真参数:"></el-form-item> -->
      </el-form>
      <div style="display: flex; justify-content: flex-end">
        <el-button type="primary" @click="openSaveDialog">保存方案</el-button>
        <el-button type="primary" @click="addSimCheme">保存方案</el-button>
        <el-button type="success" @click="startPlay">开始模拟</el-button>
      </div>
    </div>
@@ -112,12 +112,30 @@
</template>
<script setup>
import { reactive, ref, watch, inject, computed } from "vue";
import { reactive, ref, watch, inject, computed, onMounted } from "vue";
import * as XLSX from "xlsx";
import Papa from "papaparse";
import { ElMessage, ElMessageBox } from "element-plus";
import { initeWaterPrimitiveView } from "@/utils/water";
import { SimAPIStore } from "@/store/simAPI";
import { getRegionData } from "@/api/trApi";
const cityOptions = reactive([]);
onMounted(() => {
  getRegionData({ type: 1 }).then((res) => {
    console.log(res, "res");
    // 使用响应式数组的方法更新内容
    cityOptions.splice(
      0,
      cityOptions.length,
      ...res.data.map((item) => ({
        value: item.geom,
        label: item.name,
      }))
    );
  });
});
const simStore = SimAPIStore();
@@ -134,26 +152,6 @@
  fileList: [],
});
// 城市和重点区域选项
const cityOptions = [
  { value: "北京市", label: "北京市" },
  { value: "东城区", label: "东城区" },
  { value: "西城区", label: "西城区" },
  { value: "朝阳区", label: "朝阳区" },
  { value: "海淀区", label: "海淀区" },
  { value: "丰台区", label: "丰台区" },
  { value: "石景山区", label: "石景山区" },
  { value: "门头沟区", label: "门头沟区" },
  { value: "房山区", label: "房山区" },
  { value: "通州区", label: "通州区" },
  { value: "顺义区", label: "顺义区" },
  { value: "昌平区", label: "昌平区" },
  { value: "大兴区", label: "大兴区" },
  { value: "怀柔区", label: "怀柔区" },
  { value: "平谷区", label: "平谷区" },
  { value: "密云区", label: "密云区" },
  { value: "延庆区", label: "延庆区" },
];
const earesOptions = [
  { value: "孙胡沟", label: "孙胡沟" },
  { value: "鱼水洞后沟", label: "鱼水洞后沟" },
@@ -174,55 +172,9 @@
  return forms.fileList.map((file) => file.name).join(", ") || "无";
});
//////////////////////////////////接口版本启用//////////////////////////////////
const openSaveDialog = async () => {
  await simStore.openSaveDialog(forms);
const addSimCheme = async () => {
  await simStore.addSimCheme(forms);
};
// const isLoading = ref(false);
// // 保存方案
// const openSaveDialog = () => {
//   if (
//     !forms.rainfall ||
//     !forms.duration ||
//     !forms.intensity ||
//     (simStore.selectTab === "行政区划仿真" && !forms.eare) ||
//     (simStore.selectTab === "重点区域仿真" && !forms.eares)
//   ) {
//     ElMessage.warning("请先填写所有必填项");
//     return;
//   }
//   ElMessageBox.confirm("确定要保存当前方案吗?", dialogTitle.value, {
//     confirmButtonText: "确定",
//     cancelButtonText: "取消",
//     type: "warning",
//   })
//     .then(confirmSave)
//     .catch(() => {
//       ElMessage({
//         type: "info",
//         message: "已取消保存",
//       });
//     });
// };
// const confirmSave = async () => {
//   if (isLoading.value) {
//     ElMessage.warning("正在保存,请稍候...");
//     return; // 防止重复提交
//   }
//   isLoading.value = true; // 开始加载状态
//   try {
//     await simStore.createSimulation(forms); // 调用 Store 中的保存方法
//     ElMessage.success("保存成功");
//     saveDialogVisible.value = true; // 显示保存对话框(如果需要)
//   } catch (error) {
//     console.error("保存失败:", error);
//     ElMessage.error("保存失败,请稍后重试");
//   } finally {
//     isLoading.value = false; // 结束加载状态
//   }
// };
//////////////////////////////////接口版本启用//////////////////////////////////
// 重置表单
const resetForm = () => {
src/views/left/Simulation.vue
@@ -44,7 +44,7 @@
// 标签点击事件
const handleClick = (tab) => {
  SimAPIStore.handleClickTab(tab.props.label);
  simStore.handleClickTab(tab.props.label);
};
// 返回上一级