管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-03-21 c2a697c7399dcfb3ebae5333f05f91f488d2cb41
src/views/Synthesis/LeftMenu.vue
@@ -17,6 +17,7 @@
    <queryinfo ref="queryinfo" />
    <terrainDig ref="terrainDig" />
    <modelAttach ref="modelAttach" />
    <undergroundModel ref="undergroundModel" />
    <input
      type="file"
      accept=".kml"
@@ -184,50 +185,6 @@
          </el-tab-pane>
        </el-tabs>
        <!-- <el-form :model="formInline">
          <el-form-item>
            <el-row :gutter="20">
              <el-col :span="20">
                <el-input
                  size="small"
                  disabled
                  v-model="formInline.file"
                ></el-input>
                <input
                  name="file1"
                  type="file"
                  id="insertFile"
                  multiple="multiple"
                  style="display: none"
                  @change="insertFile( )"
                />
              </el-col>
              <el-col :span="4">
                <el-link
                  @click="getInsertFile( )"
                  :underline="false"
                  icon="el-icon-folder"
                > </el-link>
              </el-col>
            </el-row>
          </el-form-item>
          <el-form-item>
            <el-button
              @click="setAttachInsert"
              size="mini"
              type="primary"
              plain
            >添加</el-button>
            <el-button
              type="danger"
              plain
              size="mini"
              @click="setAttachDel"
            >删除</el-button>
          </el-form-item>
        </el-form> -->
        <!--     @selection-change="handleAttatchChange" -->
      </div>
    </el-dialog>
@@ -241,6 +198,7 @@
import queryinfo from "../Tools/queryinfo.vue";
import terrainDig from "../Tools/terrainDig.vue";
import modelAttach from "../Tools/ModelAttach.vue";
import undergroundModel from "../Tools/undergroundModel";
import $ from "jquery";
import { getToken } from "@/utils/auth";
import ImageWMS from "ol/source/ImageWMS";
@@ -255,7 +213,11 @@
  comprehensive_deletes,
  comprehensive_selectModelByPageAndCount,
  comprehensive_insertModel,
  comprehensive_updateModel, selectByBuffer
  comprehensive_updateModel, selectByBuffer,
  dataQuery_selectTabByEntity,
  inquiry_selectDomains,
  inquiry_selectFields,
  dataQuery_selectByGid,
} from '../../api/api.js'
import {
  OverviewMap,
@@ -268,7 +230,7 @@
import { geometry } from "@turf/turf";
export default {
  components: { mapinfo, maplayer, queryinfo, terrainDig, modelAttach },
  components: { mapinfo, maplayer, queryinfo, terrainDig, modelAttach, undergroundModel },
  data() {
    return {
      showTwoMenuFlag: false,
@@ -691,7 +653,6 @@
      }
      this.$store.state.propertiesFlag = '';
      Viewer.entities.removeAll();
      if (this.isMenuFlag != val) {
        if (res.id != "b9") {
@@ -699,7 +660,7 @@
          this.$store.state.mapMenuBoxFlag = null;
          this.$store.state.mapPopBoolean = false;
          this.$store.state.mapPopBoxFlag = null;
          sgworld.Creator.SimpleGraphic.clear();
          this.isMenuFlag = val;
          if (this.entityaLayers.length != 0) {
            for (var i in this.entityaLayers) {
@@ -719,7 +680,10 @@
        }
      }
      this.showTwoMenuFlag = res.id;
      if (val != 'h' && res.id != "b9") {
        sgworld.Creator.SimpleGraphic.clear();
        Viewer.entities.removeAll();
      }
      switch (val) {
        case "a": //图层管理
          this.setCoverage(res.id);
@@ -749,6 +713,7 @@
      }
    },
    setPlot(res) {
      switch (res) {
        case "h1":
          sgworld.Creator.createSimpleGraphic(
@@ -1551,7 +1516,7 @@
          var that = this;
          that.modelClip = !that.modelClip;
          if (that.modelClip) {
            that.$store.state.propertiesFlag = '3';
            // that.$store.state.propertiesFlag = '3';
            if (window.model) {
              that.modelClipping();
            }
@@ -1576,7 +1541,7 @@
            }
          }
          else {
            that.$store.state.propertiesFlag = '';
            // that.$store.state.propertiesFlag = '';
            Viewer.entities.removeAll();
          }
          // window.model = sgworld.Creator.create3DTilesets(
@@ -1754,138 +1719,139 @@
    //模型裁切
    modelClipping() {
      const scene = Viewer.scene;
      let targetY = 0.0;
      let targetY = 40.0;
      let planeEntities = [];
      let selectedPlane;
      // let clippingPlanes = new Cesium.ClippingPlaneCollection({
      //   planes: [ // ClippingPlane对象数组集合
      //     new Cesium.ClippingPlane( // 裁切面
      //       new Cesium.Cartesian3(0.0, 0.0, -1.0), // 法线方向
      //       0// 原点到平面的最短距离,设置0就好
      //     ),
      //   ],
      //   enabled: true,
      //   edgeWidth: 1.0, // 模型被裁切部分的截面线宽
      // });
      let clippingPlanes = new Cesium.ClippingPlaneCollection({
        planes: [ // ClippingPlane对象数组集合
          //前后切割
          new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 1, 0), 0), //后
          new Cesium.ClippingPlane(new Cesium.Cartesian3(0, -1, 0), 0),  //前
          // 左右切割
          new Cesium.ClippingPlane(new Cesium.Cartesian3(1.0, 0.0, 0), 0), //左
          new Cesium.ClippingPlane(new Cesium.Cartesian3(-1.0, 0.0, 0), 0),  //右
          // 上下切割
          new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0.0, -1), 0),  //上→下
          // new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0.0, 1), 0),  //下→上、
          new Cesium.ClippingPlane( // 裁切面
            new Cesium.Cartesian3(0.0, 0.0, -1.0), // 法线方向
            0// 原点到平面的最短距离,设置0就好
          ),
        ],
        enabled: true,
        edgeWidth: 1.0, // 模型被裁切部分的截面线宽
        unionClippingRegions: true, //true 才能多个切割
      });
      // let clippingPlanes = new Cesium.ClippingPlaneCollection({
      //   planes: [ // ClippingPlane对象数组集合
      //     //前后切割
      //     new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 1, 0), 0), //后
      //     new Cesium.ClippingPlane(new Cesium.Cartesian3(0, -1, 0), 0),  //前
      //     // 左右切割
      //     new Cesium.ClippingPlane(new Cesium.Cartesian3(1.0, 0.0, 0), 0), //左
      //     new Cesium.ClippingPlane(new Cesium.Cartesian3(-1.0, 0.0, 0), 0),  //右
      //     // 上下切割
      //     new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0.0, -1), 0),  //上→下
      //     // new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0.0, 1), 0),  //下→上、
      //   ],
      //   enabled: true,
      //   edgeWidth: 1.0, // 模型被裁切部分的截面线宽
      //   unionClippingRegions: true, //true 才能多个切割
      // });
      let boundingSphere = window.model.boundingSphere;
      // 创建一个坐标轴,便于测试
      var transform = Cesium.Transforms.eastNorthUpToFixedFrame(boundingSphere.center);
      var modelMatrixPrimitive = Viewer.scene.primitives.add(new Cesium.DebugModelMatrixPrimitive({
        // modelMatrix: transform,
        length: 140.0
      }));
      // var transform = Cesium.Transforms.eastNorthUpToFixedFrame(boundingSphere.center);
      // var modelMatrixPrimitive = Viewer.scene.primitives.add(new Cesium.DebugModelMatrixPrimitive({
      //   // modelMatrix: transform,
      //   length: 140.0
      // }));
      // // 创建添加裁剪平面
      // for (let i = 0; i < clippingPlanes.length; ++i) {
      //   const plane = clippingPlanes.get(i);
      //   const planeEntity = Viewer.entities.add({
      //     position: boundingSphere.center,
      //     plane: {
      //       dimensions: new Cesium.Cartesian2(
      //         boundingSphere.radius * 1.5,
      //         boundingSphere.radius * 1.5
      //       ),//切面的长和宽
      //       material: Cesium.Color.WHITE.withAlpha(0.1),
      //       plane: new Cesium.CallbackProperty(
      //         // 添加绑定事件,不断调用
      //         createPlaneUpdateFunction(plane),
      //         false
      //       ),
      //       outline: true,
      //       outlineColor: Cesium.Color.WHITE,
      //     },
      //   });
      //   planeEntities.push(planeEntity);
      // }
      // 创建添加裁剪平面
      let m_box;
      for (let i = 0; i < clippingPlanes.length; ++i) {
        let plane = clippingPlanes.get(i);
        let getPlaneType = getType4Plane(plane);
        let planeEntity = Viewer.entities.add({ //添加平面实体 直观裁切面
          id: 'ClipPlane' + i,
          position: boundingSphere.center,// 根据3dtiles同步调整裁切面高度
        const plane = clippingPlanes.get(i);
        const planeEntity = Viewer.entities.add({
          position: boundingSphere.center,
          plane: {
            dimensions: new Cesium.Cartesian2(80, 80),//切面的长和宽
            plane: new Cesium.CallbackProperty(createPlaneUpdateFunction_box(plane, getPlaneType, boundingSphere.center), false),
            material: Cesium.Color.WHITE.withAlpha(0.01),
            outline: false,
            dimensions: new Cesium.Cartesian2(
              boundingSphere.radius * 1.5,
              boundingSphere.radius * 1.5
            ),//切面的长和宽
            material: Cesium.Color.WHITE.withAlpha(0.1),
            plane: new Cesium.CallbackProperty(
              // 添加绑定事件,不断调用
              createPlaneUpdateFunction(plane),
              false
            ),
            outline: true,
            outlineColor: Cesium.Color.WHITE,
          }
          },
        });
        if (!m_box) {
          m_box = Viewer.entities.add({
            id: 'ClopBox',
            modelMatrixPrimitive: modelMatrixPrimitive,
            position: boundingSphere.center,
            box: {
              dimensions: new Cesium.Cartesian3(boundingSphere.radius * 1.2, boundingSphere.radius * 1.2, 40),
              material: Cesium.Color.WHITE.withAlpha(0.3),
            }
          })
        }
        planeEntities.push(planeEntity);
      }
      // 创建添加裁剪平面
      // let m_box;
      // for (let i = 0; i < clippingPlanes.length; ++i) {
      //   let plane = clippingPlanes.get(i);
      //   let getPlaneType = getType4Plane(plane);
      //   let planeEntity = Viewer.entities.add({ //添加平面实体 直观裁切面
      //     id: 'ClipPlane' + i,
      //     position: boundingSphere.center,// 根据3dtiles同步调整裁切面高度
      //     plane: {
      //       dimensions: new Cesium.Cartesian2(80, 80),//切面的长和宽
      //       plane: new Cesium.CallbackProperty(createPlaneUpdateFunction_box(plane, getPlaneType, boundingSphere.center), false),
      //       material: Cesium.Color.WHITE.withAlpha(0.2),
      //       outline: false,
      //       outlineColor: Cesium.Color.WHITE,
      //     }
      //   });
      //   if (!m_box) {
      //     m_box = Viewer.entities.add({
      //       id: 'ClopBox',
      //       modelMatrixPrimitive: modelMatrixPrimitive,
      //       position: boundingSphere.center,
      //       box: {
      //         dimensions: new Cesium.Cartesian3(boundingSphere.radius * 1.2, boundingSphere.radius * 1.2, 40),
      //         material: Cesium.Color.WHITE.withAlpha(0.3),
      //       }
      //     })
      //   }
      // }
      window.model.clippingPlanes = clippingPlanes;
      // 绑定上移动事件
      // const downHandler = new Cesium.ScreenSpaceEventHandler(
      //   Viewer.scene.canvas
      // );
      // downHandler.setInputAction(function (movement) {
      //   const pickedObject = scene.pick(movement.position);
      //   if (
      //     Cesium.defined(pickedObject) &&
      //     Cesium.defined(pickedObject.id.plane)
      //   ) {
      //     selectedPlane = pickedObject.id.plane;
      //     selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.05);
      //     selectedPlane.outlineColor = Cesium.Color.WHITE;
      //     scene.screenSpaceCameraController.enableInputs = false;
      //   }
      // }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
      const downHandler = new Cesium.ScreenSpaceEventHandler(
        Viewer.scene.canvas
      );
      downHandler.setInputAction(function (movement) {
        const pickedObject = scene.pick(movement.position);
        if (
          Cesium.defined(pickedObject) &&
          Cesium.defined(pickedObject.id.plane)
        ) {
          selectedPlane = pickedObject.id.plane;
          selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.05);
          selectedPlane.outlineColor = Cesium.Color.WHITE;
          scene.screenSpaceCameraController.enableInputs = false;
        }
      }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
      // 绑定下移动事件
      // const upHandler = new Cesium.ScreenSpaceEventHandler(
      //   Viewer.scene.canvas
      // );
      // upHandler.setInputAction(function () {
      //   if (Cesium.defined(selectedPlane)) {
      //     selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.1);
      //     selectedPlane.outlineColor = Cesium.Color.WHITE;
      //     selectedPlane = undefined;
      //   }
      //   scene.screenSpaceCameraController.enableInputs = true;
      // }, Cesium.ScreenSpaceEventType.LEFT_UP);
      const upHandler = new Cesium.ScreenSpaceEventHandler(
        Viewer.scene.canvas
      );
      upHandler.setInputAction(function () {
        if (Cesium.defined(selectedPlane)) {
          selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.1);
          selectedPlane.outlineColor = Cesium.Color.WHITE;
          selectedPlane = undefined;
        }
        scene.screenSpaceCameraController.enableInputs = true;
      }, Cesium.ScreenSpaceEventType.LEFT_UP);
      // Update plane on mouse move
      // const moveHandler = new Cesium.ScreenSpaceEventHandler(
      //   Viewer.scene.canvas
      // );
      // moveHandler.setInputAction(function (movement) {
      //   if (Cesium.defined(selectedPlane)) {
      //     const deltaY = movement.startPosition.y - movement.endPosition.y;
      //     targetY += deltaY;
      //     console.log("targetY----",targetY)
      //   }
      // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
      const moveHandler = new Cesium.ScreenSpaceEventHandler(
        Viewer.scene.canvas
      );
      moveHandler.setInputAction(function (movement) {
        if (Cesium.defined(selectedPlane)) {
          const deltaY = movement.startPosition.y - movement.endPosition.y;
          targetY += deltaY;
          // console.log("targetY----",targetY)
        }
      }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
      function createPlaneUpdateFunction(plane) {
        return function () {
          plane.distance = targetY;
          // console.log("targetY----",targetY)
          return plane;
        };
      }
@@ -2198,8 +2164,18 @@
          this.$store.state.isNaviget = this.isNaviget;
          break;
        case "b9": //地下模式
          this.UndergroundMode = !this.UndergroundMode;
          window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3);
          // this.UndergroundMode = !this.UndergroundMode;
          // window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3);
          if (window.UndergroundMode) {
            this.$refs &&
              this.$refs.undergroundModel &&
              this.$refs.undergroundModel.close();
          } else {
            this.$refs &&
              this.$refs.undergroundModel &&
              this.$refs.undergroundModel.open("地下模式", null,);
          }
          break;
      }
    },
@@ -2364,19 +2340,82 @@
          name: tab.replaceAll("_", "")
        }
        this.$refs &&
          this.$refs.queryinfo &&
          this.$refs.queryinfo.close("queryinfo");
        this.$store.state.mapPopBoxFlag = "4";
        const res = await dataQuery_selectTabByEntity({
          name: this.$store.state.pickoption.name
        })
        this.$refs &&
          this.$refs.queryinfo &&
          this.$refs.queryinfo.open("拾取分析", null,);
        if (res.code != 200) {
          return;
        }
        var value = res.result.split('.')
        this.$store.state.propertiesName = {
          ns: value[0],
          enName: value[1],
          tabDesc: '拾取信息'
        }
        var name = this.$store.state.pickoption.name;
        const data = await inquiry_selectFields({ name: name })
        if (data.code != 200) {
          this.$message.error("列表调用失败")
        }
        const data1 = await inquiry_selectDomains({ name: name })
        if (data1.code != 200) {
          this.$message.error("列表调用失败")
        }
        this.optionx = []
        this.attributeData = []
        var valadata = data.result
        var laydomain = data1.result
        for (var i in valadata) {
          if (valadata[i].showtype == 1) {
            if (
              valadata[i].domainNa != null &&
              valadata[i].domainNa != undefined
            ) {
              for (var j in laydomain) {
                if (laydomain[j].domName == valadata[i].domainNa) {
                  valadata[i].domainNa = laydomain[j].codeDesc
                }
              }
            }
            this.optionx.push(valadata[i])
            this.attributeData.push(valadata[i])
          }
        }
        this.getTableData()
      }
    },
    async getTableData() {
      this.tableData = []
      const data = await dataQuery_selectByGid(this.$store.state.pickoption)
      if (data.code != 200) {
        return
      }
      var valste = data.result
      for (var j in this.optionx) {
        if (
          this.optionx[j].domainNa != null &&
          this.optionx[j].domainNa != undefined
        ) {
          valste[this.optionx[j].field] = this.optionx[j].domainNa
        }
      }
      var arr = {}
      for (var i = (this.attributeData.length - 1); i >= 0; i--) {
        var vla = this.attributeData[i]
        arr[vla.alias] = valste[vla.field]
      }
      arr['eventid'] = valste.eventid
      this.$store.state.propertiesInfo = arr;
      this.$store.state.propertiesFlag = '1'
    },
    showModelAttach() {
      if (this.$store.state.attachModel) {