管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-03-20 1669c6b39c36f0a7bd6c62f60cb9198513a84c28
src/components/mapsdk.vue
@@ -56,6 +56,7 @@
          </div>
        </el-card>
      </div>
      <!--坐标点位-->
      <div
        class="coordLocalBox"
        v-if="showCoordLocalBoxDialog"
@@ -95,6 +96,7 @@
          </div>
        </el-card>
      </div>
      <!--地形平整-->
      <div
        class="terrainLevelBox"
        v-if="showTerrainLevelDialog"
@@ -230,6 +232,7 @@
          </div>
        </el-card>
      </div>
      <!-- 路径分析弹窗-->
      <div
        class="pathAnalysisBox"
        v-if="showPathAnalysisBoxDialog"
@@ -315,6 +318,7 @@
          ></div>
        </div>
      </div>
      <!-- 坡度分析弹窗-->
      <div
        class="lengend"
        v-show="showLengendDialog"
@@ -349,17 +353,18 @@
      <div
        class="propertiesPop"
        v-if="$store.state.propertiesFlag == '1'"
        v-drag
      >
        <el-card class="box-card">
          <div slot="header">
            <span>属性信息</span>
            <div style="float: right; cursor: pointer">
              <el-link
                  v-if="$store.state.propertiesName.tabDesc == '勘察工点'"
                  type="primary"
                  :underline="false"
                  @click="getPointInfo"
                  style="margin-right: 10px"
                v-if="$store.state.propertiesName.tabDesc == '勘察工点'"
                type="primary"
                :underline="false"
                @click="getPointInfo"
                style="margin-right: 10px"
              >勘察信息表</el-link>
              <el-link
                type="primary"
@@ -393,31 +398,29 @@
      </div>
      <!--勘察信息弹窗-->
      <div
          class="attributionPop"
          v-if="showAttribute"
        class="attributionPop"
        v-if="showAttribute"
      >
        <el-card class="box-card">
          <div slot="header">
            <span>勘察信息</span>
            <div style="float: right; cursor: pointer">
              <i
                  class="el-icon-close"
                  @click="showAttribute=false"
                class="el-icon-close"
                @click="showAttribute=false"
              ></i>
            </div>
          </div>
          <div
              class="pointInfoBoxContext"
              style="height:250px;overflow-y: auto"
            class="pointInfoBoxContext"
            style="height:250px;overflow-y: auto"
          >
            <div
                style="line-height: 20px"
                v-for="(item, index) in attributeList"
                :key="index"
              style="line-height: 20px"
              v-for="(item, index) in attributeList"
              :key="index"
            >
              <span
                  style="font-size: 14px;font-weight: bold;margin-right: 5px"
              >{{item.alias}}:</span>
              <span style="font-size: 14px;font-weight: bold;margin-right: 5px">{{item.alias}}:</span>
              <span>{{item.value ? item.value :'暂无数据'}}</span>
            </div>
          </div>
@@ -443,6 +446,42 @@
          </div>
        </el-card>
      </div>
      <!--三维截面分析弹窗-->
      <div
        class="modelClipPop"
        v-if="$store.state.propertiesFlag == '3'"
      >
        <div class="slide-bg">
          <el-slider
            class="slide"
            @change="valveChange()"
            :min="-300"
            :max="300"
            v-model="valueX"
          ></el-slider>
          <span>左右截面</span>
        </div>
        <div class="slide-bg">
          <el-slider
            class="slide"
            @change="valveChange()"
            :min="-300"
            :max="300"
            v-model="valueY"
          ></el-slider>
          <span>前后截面</span>
        </div>
        <div class="slide-bg">
          <el-slider
            class="slide"
            @change="valveChange()"
            :min="-300"
            :max="300"
            v-model="valueZ"
          ></el-slider>
          <span>上下截面</span>
        </div>
      </div>
      <!--附件列表弹窗-->
@@ -536,6 +575,7 @@
      <!--          v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
      <!--        ></div>-->
      <!--      </div>-->
    </div>
  </div>
</template>
@@ -544,6 +584,7 @@
import $ from "jquery";
import mapMenuTop from "./MapView/mapMenuTop.vue";
import mapSpaceTop from "./MapView/mapSpaceTop.vue";
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
@@ -557,6 +598,7 @@
  components: {
    mapMenuTop,
    mapSpaceTop,
  },
  data() {
    var validatePosition = (rule, value, callback) => {
@@ -655,6 +697,9 @@
      },
      showAttribute: false,
      attributeList: [],
      valueZ: 0,
      valueX: 0,
      valueY: 0
    };
  },
  mounted() {
@@ -665,8 +710,26 @@
    this.$bus.$on('changemapType', (e) => {
      this.show2DMap = e;
    });
    this.$bus.$on('closeMenuPop', (e) => {
      //非路径分析
      if (e != 'd3') {
        this.showPathAnalysisBoxDialog = false;
      }
      //非坡度分析
      if (e != 'd2') {
        this.showLengendDialog = false;
      }
      //非地形平整
      if (e != 'd10') {
        this.showTerrainLevelDialog = false;
      }
    });
    //模型捕捉
    this.catchmodel()
    window.localStorage.setItem('slider_x', this.valueX);
    window.localStorage.setItem('slider_y', this.valueY);
    window.localStorage.setItem('slider_z', this.valueZ);
  },
  methods: {
@@ -720,15 +783,13 @@
    },
    init3DMap() {
      var webKey = "94a34772eb88317fcbf8428e10448561";
      //地图初始化
      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
        url: SmartEarthRootUrl + "Workers/image/earth.jpg",
        licenseServer: window.sceneConfig.licenseServer,
      });
      window.Viewer = window.sgworld._Viewer;
      Viewer.imageryLayers._layers[0].show = false;
      //定位
      // sgworld.Navigate.jumpTo({
      //   //跳转视角
@@ -741,35 +802,12 @@
      Viewer.camera.flyTo({
        destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
      });
      this.layer1 = Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[0].url,
        })
      );
      this.layer2 = Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[1].url,
        })
      );
      // this.layer3 = Viewer.imageryLayers.addImageryProvider(
      // window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
      //   new Cesium.UrlTemplateImageryProvider({
      //     url: gaoDeBaseUrl[2].url,
      //     url: gaoDeBaseUrl[1].url,
      //   })
      // );
      // window.ImageLayer3 = this.layer3;
      // for (var i in gaoDeBaseUrl) {
      //   sgworld.Creator.createUrlTemplateImageryProvider(
      //     gaoDeBaseUrl[i].label,
      //     gaoDeBaseUrl[i].url,
      //     '0',
      //     undefined,
      //     true,
      //     ''
      //   );
      // }
      Viewer._enableInfoOrSelection = false;
      //显示fps
@@ -781,24 +819,7 @@
      //开启深度检测
      // sgworld.Analysis.depthTestAgainstTerrain(true)
      Viewer.scene.globe.depthTestAgainstTerrain = true;
      //影像对比设置
      // var base = {
      //   url: 'https://a.tile.openstreetmap.org/',
      // };
      // window.openStreetMap = sgworld.Creator.createImageryProvider(
      //   'OpenStreetMap',
      //   'OpenStreetMap',
      //   base,
      //   '0',
      //   undefined,
      //   true,
      //   ''
      // );
      // openStreetMap.item.show = false;
      // Viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
      //   url: demLayer,
      // })
      var option = {
        url: window.sceneConfig.SGUrl,
        layerName: window.sceneConfig.mptName,
@@ -809,21 +830,15 @@
      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld);
      elevationTool.setContourColor("#F1D487");
      // var helper = new Cesium.EventHelper();
      // helper.add(Viewer.scene.globe.tileLoadProgressEvent, function (e) {
      //   if (e == 0) {
      //     console.log("这个是加载最后一个矢量切片的回调");
      //   }
      //   helper.removeAll();
      //   helper = undefined;
      // });
    },
    changeMenulayer() {
      this.isActive = !this.isActive;
      this.isMenuLayer = !this.isMenuLayer;
      this.setLayerVisible();
      this.$bus.$emit("setChangeBaseMapLayer", true)
      // this.$refs && this.$refs.addOnlineMap && this.$refs.addOnlineMap.open("地下模式", null,);
      // this.isActive = !this.isActive;
      // this.isMenuLayer = !this.isMenuLayer;
      // this.setLayerVisible();
    },
    setLayerVisible() {
      if (this.isActive == true) {
@@ -850,7 +865,8 @@
        } else {
          this.showBufferBoxDialog = true;
        }
      } else if (res.name == "Coord") {
      }
      else if (res.name == "Coord") {
        if (res.id == "1") {
          this.showCoordLocalBoxDialog = true;
          this.showToponymicLocalBoxDialog = false;
@@ -859,7 +875,8 @@
          this.showCoordLocalBoxDialog = false;
          this.getToponymicData();
        }
      } else if (res.name == "Analysis") {
      }
      else if (res.name == "Analysis") {
        if (res.id == "3") {
          if (res.show == true) {
            this.showPathAnalysisBoxDialog = true;
@@ -868,23 +885,21 @@
            this.closeBufferBox(4);
          }
        }
      } else if (res.name == "Trrain") {
      }
      else if (res.name == "Trrain") {
        switch (res.id) {
          case "d10":
            this.showTerrainLevelDialog = !this.showTerrainLevelDialog;
            this.clearTerrainLevel();
            break;
        }
      } else if (res.name == "Lengend") {
      }
      else if (res.name == "Lengend") {
        switch (res.id) {
          case "d2":
            this.showLengendDialog = res.vshow;
            break;
        }
      }
    },
    handleSizeChange(val) {
@@ -958,6 +973,7 @@
          break;
        case 2:
          this.showCoordLocalBoxDialog = false;
          sgworld.Creator.DeleteObject(this.imagePoint);
          break;
        case 3:
          this.showToponymicLocalBoxDialog = false;
@@ -990,6 +1006,10 @@
        Y: lat,
        Altitude: 2000,
      };
      if (this.imagePoint != null) {
        sgworld.Creator.DeleteObject(this.imagePoint);
        this.imagePoint = null;
      }
      this.imagePoint = sgworld.Creator.CreateLabel(
        position,
        "",
@@ -1068,36 +1088,64 @@
    },
    async showMouseLeftClick(res) {
      if (res == 3) {
        this.$refs.form.validate((valid) => {
          if (!valid) {
            return false;
        this.$refs.form.validate(async (valid) => {
          if (valid) {
            this.clearPathAll(5);
            var start = this.pathFrom.lon.split(",");
            var end = this.pathFrom.lat.split(",");
            var startData = {
              x1: parseFloat(start[0]),
              y1: parseFloat(start[1]),
              x2: parseFloat(end[0]),
              y2: parseFloat(end[1]),
            };
            const data = await comprehensive_selectRoute(startData);
            if (data.code != 200) {
              return this.$message.error("数据请求失败");
            }
            if (!data.result) {
              return this.$message.error("暂无数据");
            }
            var wkt = this.$wkt.parse(data.result);
            var bufferSource = Cesium.GeoJsonDataSource.load(wkt, {
              stroke: new Cesium.Color(82 / 255, 152 / 255, 255 / 255, 1),
              strokeWidth: 5,
              clampToGround: true,
            });
            bufferSource.then((bufferSource) => {
              sgworld.Navigate.flyToObj(bufferSource);
              Viewer.dataSources.add(bufferSource);
            });
          }
        });
        this.clearPathAll(3);
        var start = this.pathFrom.lon.split(",");
        var end = this.pathFrom.lat.split(",");
        var startData = {
          x1: parseFloat(start[0]),
          y1: parseFloat(start[1]),
          x2: parseFloat(end[0]),
          y2: parseFloat(end[1]),
        };
        const data = await comprehensive_selectRoute(startData);
        if (data.code != 200) {
          return this.$message.error("数据请求失败");
        }
        var wkt = this.$wkt.parse(data.result);
        var bufferSource = Cesium.GeoJsonDataSource.load(wkt, {
          stroke: new Cesium.Color(82 / 255, 152 / 255, 255 / 255, 1),
          strokeWidth: 5,
          clampToGround: true,
        });
        bufferSource.then((bufferSource) => {
          sgworld.Navigate.flyToObj(bufferSource);
          Viewer.dataSources.add(bufferSource);
        });
        // this.clearPathAll(3);
        // var start = this.pathFrom.lon.split(",");
        // var end = this.pathFrom.lat.split(",");
        // var startData = {
        //   x1: parseFloat(start[0]),
        //   y1: parseFloat(start[1]),
        //   x2: parseFloat(end[0]),
        //   y2: parseFloat(end[1]),
        // };
        //
        // const data = await comprehensive_selectRoute(startData);
        // if (data.code != 200) {
        //   return this.$message.error("数据请求失败");
        // }
        // if (!data.result) {
        //   return this.$message.error("暂无数据");
        // }
        // var wkt = this.$wkt.parse(data.result);
        // var bufferSource = Cesium.GeoJsonDataSource.load(wkt, {
        //   stroke: new Cesium.Color(82 / 255, 152 / 255, 255 / 255, 1),
        //
        //   strokeWidth: 5,
        //   clampToGround: true,
        // });
        // bufferSource.then((bufferSource) => {
        //   sgworld.Navigate.flyToObj(bufferSource);
        //   Viewer.dataSources.add(bufferSource);
        // });
        // var jsonurl =
        //   wnsUrl +
        //   '?start=' +
@@ -1223,6 +1271,13 @@
            sgworld.Creator.DeleteObject(this.linePath);
            this.linePath = null;
          }
        case 5:
          if (this.linePath != null) {
            sgworld.Creator.DeleteObject(this.linePath);
            this.linePath = null;
          }
          Viewer.dataSources.removeAll();
          break;
      }
    },
@@ -1276,7 +1331,8 @@
      if (this.$store.state.propertiesName == null) {
        return
      }
      let tabName = this.$store.state.propertiesName.ns + '.' + this.$store.state.propertiesName.tab;
      let tabName = this.$store.state.propertiesName.ns + '.' + this.$store.state.propertiesName.enName;
      let eventid = this.$store.state.propertiesInfo.eventid;
      var obj = {
@@ -1292,6 +1348,7 @@
        this.$message.error('暂无附件');
        return
      }
      this.attachList = res.result;
      this.showAttach = true;
    },
@@ -1356,9 +1413,9 @@
      return m < 10 ? '0' + m : m;
    },
    //勘察信息表
    getPointInfo(){
    getPointInfo() {
      this.showAttribute = !this.showAttribute;
      if (this.showAttribute){
      if (this.showAttribute) {
        let attrbuteOption = workSite;
        var name = attrbuteOption[0].table.replaceAll("_", "");
        this.getAttributeDomFiled(name);
@@ -1397,18 +1454,18 @@
          std.push(data1[i]);
        }
      }
      this.getAttributeTableData(std, res,this.$store.state.propertiesInfo.工点名称,data1)
      this.getAttributeTableData(std, res, this.$store.state.propertiesInfo.工点名称, data1)
    },
    //获取表格信息
    async getAttributeTableData(res, name,title,list) {
    async getAttributeTableData(res, name, title, list) {
      let attributeFild = res;
      let parmams = {
        name:name,
        pageIndex:1,
        pageSize:10,
        count:0,
        title:title,
        filter : "workname = " + "'" + title + "'",
        name: name,
        pageIndex: 1,
        pageSize: 10,
        count: 0,
        title: title,
        filter: "workname = " + "'" + title + "'",
      }
      const data = await dataQuery_selectByPage(parmams);
      if (data.code != 200) {
@@ -1424,12 +1481,12 @@
          }
        }
      }
      let info = data.result.length >0 ? data.result[0] : '';
      if (info){
      let info = data.result.length > 0 ? data.result[0] : '';
      if (info) {
        let keys = Object.keys(info);
        keys.forEach((obj) => {
          list.forEach((item) => {
            if (item.field == obj){
            if (item.field == obj) {
              item.value = info[obj];
            }
          })
@@ -1437,6 +1494,11 @@
        this.attributeList = list;
      }
    },
    valveChange() {
      window.localStorage.setItem('slider_x', this.valueX);
      window.localStorage.setItem('slider_y', this.valueY);
      window.localStorage.setItem('slider_z', this.valueZ);
    }
  },
  destroyed() {
    this.showAttribute = false
@@ -1448,7 +1510,6 @@
.mapBox {
  width: 100%;
  height: 100%;
  position: relative;
  #mapdiv {
    width: 100%;
@@ -1494,7 +1555,34 @@
        padding: 10px 20px;
      }
    }
    .attributionPop{
    .modelClipPop {
      width: 350px;
      z-index: 40;
      position: absolute;
      left: 2%;
      top: 3%;
      background: rgba(255, 255, 255, 0.85);
      border: 1px solid rgba(32, 160, 255, 0.6);
      .slide-bg {
        padding: 10px;
        display: flex;
        align-items: center;
        .slide {
          width: 250px;
          margin-left: 5px;
          margin-right: 15px;
        }
      }
    }
    .pathAnalysisBox {
      width: 412px;
      height: 370px;
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: 1%;
    }
    .attributionPop {
      width: 350px;
      height: 370px;
      z-index: 40;
@@ -1508,7 +1596,6 @@
        padding: 10px 20px;
      }
    }
    .terrainLevelBox {
      width: 350px;
      height: 370px;