liuqiao преди 1 година
родител
ревизия
d35e556652
променени са 4 файла, в които са добавени 281 реда и са изтрити 36 реда
  1. 1 1
      src/utils/request.js
  2. 2 2
      src/view/evolutionView.vue
  3. 33 33
      src/view/index.vue
  4. 245 0
      src/view/model.vue

+ 1 - 1
src/utils/request.js

@@ -145,7 +145,7 @@ function getParams(params, channelNo) {
   let userId ='5f06c8bc77234f969d13e160b54c27e3';
   // let userId = store.getters.userId;
   // if (userId) {
-  //   params['userId'] = userId;
+  params['userId'] = userId;
   // }
   params['channelNo'] = channelNo;
   return params;

+ 2 - 2
src/view/evolutionView.vue

@@ -439,7 +439,7 @@ function handleCurrentChange(val){
         transCode: 'D00005',
         aid:aid.value,
         stype:activeName.value,
-        userId:userId.value
+        //userId:userId.value
         }
         request(params)
           .then((res) => { 
@@ -469,7 +469,7 @@ function pipelinedata(searchtag){
         count:pageSize4.value,
         page:currentPage4.value,
         searchtag:searchtag,
-        userId:userId.value
+       // userId:userId.value
         }
         request(params)
           .then((res) => { 

+ 33 - 33
src/view/tool.vue → src/view/index.vue

@@ -1,6 +1,15 @@
 <template>
-    <div>
+    <div class="bgcolor">
+   <vtkContainermodel  />
       <div class="tool">
+        <div
+          class="img"
+          v-for="(item, index) in listArray"
+          :key="index"
+          @click="add(item.id)"
+        >
+          <el-image :src="item.img" fit="cover" /><span>{{ item.name }}</span>
+        </div>
   
         <div class="left_container">
           <div class="leftdialong" v-show="dialogVisible">
@@ -41,8 +50,10 @@
           </div>
         </div>
       </div>
-          <div>
 
+          <div>
+      
+     <evolutionView ref="evolution" />
     </div>
     </div>
   </template>
@@ -56,6 +67,9 @@
   import * as d3 from "d3-scale";
   import { formatDefaultLocale } from "d3-format";
   import { ref, onMounted, reactive } from "vue";
+  import evolutionView  from "./evolutionView.vue"
+  import vtkContainermodel  from "./model.vue"
+
   let time = 3 * 60;
   let evolution=ref();
   let listArray = reactive([
@@ -111,6 +125,8 @@
       dialogVisible.value = true;
       evolution.value.isshow=false;
     }else if(id==1){
+      // router.push("/myDemo");
+  
   }
     else if(id==0){
     
@@ -119,28 +135,8 @@
       dialogVisible.value = false;
     }
   }
-
-  
-  // 用来修改状态、触发更新的函数
-  function inOpacity() {
-    opacity.value = opacity.value + 0.1;
-    actor.getProperty().setOpacity(opacity.value);
-    renderWindow.render();
-  }
-  function getMinMax(scalars) {
-    // console.log("getMinMax:",scalars);
-    min.value = scalars[0];
-    max.value = scalars[0];
-    for (let index = 0; index <= scalars.length; index++) {
-      let scalar = scalars[index];
-      if (min.value > scalar) {
-        min.value = scalar;
-      }
-      if (max.value < scalar) {
-        max.value = scalar;
-      }
-    }
-  }
+ 
+ 
   //时间
   function sleep(numberMillis) {
     var now = new Date();
@@ -160,6 +156,7 @@
   }
   //滑块
   function sliderchange(val) {
+    // console.log(val);
     changeScalar();
   }
   
@@ -172,9 +169,11 @@
       });
     let timer = async (timeout) => {
       while (count.value < endtime.value && isstop.value) {
+        // if (isstop.value == true) {
         await sleep(time);
         changeScalar();
         count.value++;
+        // }
       }
     };
     timer(time);
@@ -185,18 +184,12 @@
     count.value--;
     changeScalar();
   }
-  // 用来修改状态、触发更新的函数
-  function increment() {
-    isstop.value = false;
-    if (count.value == endtime.value) {
-      return;
-    }
-    count.value++;
-    changeScalar();
-  }
  
 
+  //安装时
+  onMounted(() => {
   
+  });
   </script>
   
   <style>
@@ -298,5 +291,12 @@
     transform: scale(0.8);
     color: #fff;
   }
+  body{
+      width: 100%;
+      height: 100vh;
+      margin: 0;
+    padding: 0;
+    background-color:#404c64;
+  }
   </style>
   

+ 245 - 0
src/view/model.vue

@@ -0,0 +1,245 @@
+<template>
+  <div>
+    <div>
+      <!--button @click="increment">Count is: {{ count }}</button-->
+    </div>
+    <div id="vtkContainer" />
+
+        <div>
+          <!-- :title1="title1" -->
+
+  </div>
+  </div>
+</template>
+
+<script setup>
+import * as d3 from "d3-scale";
+import { formatDefaultLocale } from "d3-format";
+import { ref, onMounted, reactive } from "vue";
+import "@kitware/vtk.js/Rendering/Profiles/Geometry";
+import vtkRenderWindowWithControlBar from "@kitware/vtk.js/Rendering/Misc/RenderWindowWithControlBar";
+import vtkFullScreenRenderWindow from "@kitware/vtk.js/Rendering/Misc/FullScreenRenderWindow";
+
+import vtkActor from "@kitware/vtk.js/Rendering/Core/Actor";
+import vtkMapper from "@kitware/vtk.js/Rendering/Core/Mapper";
+import vtkUnstructuredDataReader from "../reader/UnstructuredDataReader.js";
+import vtkScalarBarActor from "@kitware/vtk.js/Rendering/Core/ScalarBarActor";
+import vtkLookupTable from "@kitware/vtk.js/Common/Core/LookupTable";
+import vtkDataArray from "@kitware/vtk.js/Common/Core/DataArray.js";
+import vtkColorTransferFunction from "@kitware/vtk.js/Rendering/Core/ColorTransferFunction";
+import { I } from "@kitware/vtk.js/macros2.js";
+import { Representation } from '@kitware/vtk.js/Rendering/Core/Property/Constants';
+
+// import {RouterView,RouterLink} from "vue-router"
+// const router=RouterView();
+
+// const props = {};
+let time = 3 * 60;
+let evolution=ref();
+// let title1=ref("我是父组件")
+let dialogVisible = ref(false);
+let num = ref(4);
+let starttime = ref(1);
+let endtime = ref(60);
+let timenum = ref(2);
+let isstop = ref(false);
+let arrvalue = reactive([]);
+
+function add(id) {
+  if (id == 2) {
+    dialogVisible.value = true;
+    evolution.value.isshow=false;
+  }else if(id==1){
+    // router.push("/myDemo");
+
+}
+  else if(id==0){
+  
+    evolution.value.isshow=true;
+    evolution.value.getdata();
+    dialogVisible.value = false;
+  }
+}
+// 响应式状态
+const count = ref(0);
+const opacity = ref(0.1);
+const min = ref(0);
+const max = ref(1);
+const scalarFAll = ref([]); //火灾标量
+const scalarWAll = ref([]); //水灾标量
+/*
+Temperature:温度
+Pressure:压强
+SO2:SO2
+CO2:CO2
+Height:水位高度
+*/
+// const scalarName = ref("CO2");
+//  const filedir =ref("data/Fire/");
+//const scalarName = ref("Height");
+const filedir = ref("data/Water/");
+// const renderWindowWith = vtkRenderWindowWithControlBar.newInstance({
+//     controlSize: 11,
+//   });
+const renderWindowWith = vtkFullScreenRenderWindow.newInstance();
+const renderer = renderWindowWith.getRenderer();
+// renderer.setBackground([0.1,0.2,0]);
+const renderWindow = renderWindowWith.getRenderWindow();
+const resetCamera = renderer.resetCamera;
+const render = renderWindow.render;
+const mapper = vtkMapper.newInstance();
+//Sets scalarMode to USE_POINT_DATA
+// mapper.setScalarModeToUsePointData();
+const actor = vtkActor.newInstance();
+const reader = vtkUnstructuredDataReader.newInstance();
+const scalarBarActor = vtkScalarBarActor.newInstance();
+// actor.getProperty().setRepresentation(Representation.WIREFRAME);//线
+// actor.getProperty().setRepresentation(Representation.POINTS);//点
+actor.getProperty().setRepresentation(Representation.SURFACE);//面
+
+// 用来修改状态、触发更新的函数
+function inOpacity() {
+  opacity.value = opacity.value + 0.1;
+  actor.getProperty().setOpacity(opacity.value);
+  renderWindow.render();
+}
+function getMinMax(scalars) {
+  // console.log("getMinMax:",scalars);
+  min.value = scalars[0];
+  max.value = scalars[0];
+  for (let index = 0; index <= scalars.length; index++) {
+    let scalar = scalars[index];
+    if (min.value > scalar) {
+      min.value = scalar;
+    }
+    if (max.value < scalar) {
+      max.value = scalar;
+    }
+  }
+  // console.log("max,min:", max.value, min.value);
+}
+
+
+// 用来修改状态、触发更新的函数
+function increment() {
+  isstop.value = false;
+  if (count.value == endtime.value) {
+    return;
+  }
+  count.value++;
+  changeScalar();
+}
+function changeScalar() {
+  var scalars;
+  if (arrvalue[0] == "fire") {
+    scalars = scalarFAll.value[count.value];
+  } else {
+    scalars = scalarWAll.value[count.value];
+  }
+  const polydata = mapper.getInputData();
+  const scalarArray = scalars.get(arrvalue[1]);
+  // console.log("scalarArray:", scalarArray);
+  const dataArray = vtkDataArray.newInstance({
+    name: arrvalue[1],
+    size: polydata.getNumberOfPoints(),
+  });
+  dataArray.setData(scalarArray);
+  getMinMax(scalarArray);
+  mapper.setScalarRange(min.value, max.value); //设置范围
+  scalarBarActor.setAxisLabel(arrvalue[1]);
+  polydata.getPointData().setScalars(dataArray);
+  mapper.clearColorArrays(); //强制重建颜色
+  actor.getProperty().setOpacity(count.value); //设置错误的透明度使得页面重新加载  不设置不刷新页面
+  renderWindow.render();
+}
+//加载所有 标量数据
+function loadScalarAll() {
+  //水灾
+  for (let index = 0; index <= 60; index++) {
+    const reader = vtkUnstructuredDataReader.newInstance();
+    reader.setUrl("data/Water/" + "POST" + index + ".vtk").then(() => {
+      const scalars = reader.getOutputData(1);
+      scalarWAll.value[index] = scalars;
+    });
+  }
+  //火灾
+  for (let index = 0; index <= 60; index++) {
+    const reader = vtkUnstructuredDataReader.newInstance();
+    reader.setUrl("data/Fire/" + "POST" + index + ".vtk").then(() => {
+      const scalars = reader.getOutputData(1);
+      scalarFAll.value[index] = scalars;
+    });
+  }
+  //  console.log("scalarAll.value:",scalarAll.value);
+}
+//设置
+function generateTicks(numberOfTicks) {
+  return (helper) => {
+    const lastTickBounds = helper.getLastTickBounds();
+    // compute tick marks for axes
+    const scale = d3
+      .scaleLinear()
+      .domain([0.0, 1.0])
+      .range([lastTickBounds[0], lastTickBounds[1]]);
+    const samples = scale.ticks(numberOfTicks);
+    const ticks = samples.map((tick) => scale(tick));
+    // Replace minus "\u2212" with hyphen-minus "\u002D" so that parseFloat() works
+    formatDefaultLocale({ minus: "\u002D" });
+    const format = scale.tickFormat(ticks[0], ticks[ticks.length - 1], numberOfTicks);
+    const tickStrings = ticks
+      .map(format)
+      .map((tick) => Number(parseFloat(tick).toPrecision(12)).toPrecision()); // d3 sometimes adds unwanted whitespace
+    helper.setTicks(ticks);
+    helper.setTickStrings(tickStrings);
+  };
+}
+//安装时
+onMounted(() => {
+ // console.log(process.env.VUE_APP_BASE_websokt);
+ // console.log(1111)
+  arrvalue = ["Water", "Height"];
+  reader.setUrl(filedir.value + "POST1.vtk").then(() => {
+    const polydata = reader.getOutputData(0);
+    const scalars = reader.getOutputData(1);
+    const scalarArray = scalars.get(arrvalue[1]);
+    // console.log("scalarArray:", scalarArray);
+    const dataArray = vtkDataArray.newInstance({
+      name: arrvalue[1],
+      size: polydata.getNumberOfPoints(),
+    });
+    dataArray.setData(scalarArray);
+    polydata.getPointData().setScalars(dataArray);
+    actor.setMapper(mapper);
+    mapper.setInputData(polydata);
+    getMinMax(scalarArray);
+    mapper.setScalarRange(min.value, max.value); //设置范围
+
+    renderer.addActor(actor);
+
+    let lut = mapper.getLookupTable();
+
+    renderer.addActor(scalarBarActor);
+    scalarBarActor.setScalarsToColors(lut);
+    // console.log("lut:", lut.getRange());
+    // Change the number of ticks (TODO: add numberOfTicks to ScalarBarActor)
+    scalarBarActor.setGenerateTicks(generateTicks(5));
+    scalarBarActor.setAxisLabel(arrvalue[1]);
+    scalarBarActor.setDrawAboveRangeSwatch(true);
+
+    //修改设条颜色
+    const ctf = vtkColorTransferFunction.newInstance();
+    ctf.addRGBPoint(0.0, 0.0, 0.0, 1.0);
+    ctf.addRGBPoint(1.0, 0.0, 1.0, 0.5);
+    ctf.addRGBPoint(2.0, 0.0, 1.0, 0.0);
+    ctf.addRGBPoint(3.0, 1.0, 0.5, 0.0);
+    ctf.addRGBPoint(4.0, 1.0, 0.0, 0.0);
+    mapper.setLookupTable(ctf);
+    lut = mapper.getLookupTable();
+    scalarBarActor.setScalarsToColors(lut);
+    resetCamera();
+    render();
+  });
+  loadScalarAll();
+});
+</script>
+