管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-05-27 0af4ecb9b2047b8ba6d00e891050cf2d68b829a6
src/components/MapView/mapMenuTop.vue
@@ -9,7 +9,7 @@
        <el-select
          v-model="menuTopFrom.queryLayer"
          :title="treeChange"
          placeholder="请选择..."
          placeholder="请选择数据..."
          :popper-append-to-body="false"
        >
          <el-option
@@ -22,7 +22,6 @@
                show-checkbox
                node-key="id"
                ref="tree"
                accordion
                highlight-current
                :props="defaultProps"
              >
@@ -49,7 +48,7 @@
        <el-select
          @change="changeValue($event)"
          v-model="menuTopFrom.queryType"
          placeholder="请选择..."
          placeholder="选择范围"
          :popper-append-to-body="false"
        >
          <el-option
@@ -171,6 +170,7 @@
        >确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
@@ -180,6 +180,7 @@
import {
  inquiry_SelectTabs,
  inquiry_uploadShp,
  decr,
  encr,
  dataLib_selectTabs,
  pipelines_selectSegNames,
@@ -189,10 +190,12 @@
import { getToken } from "@/utils/auth"
import * as turf from "@turf/turf"
import { wktToGeoJSON } from "@terraformer/wkt"
import { getTreeData } from "@/utils/treeData.js"
export default {
  components: { queryinfo },
  data() {
    return {
      selectTree: "",
      menuTopFrom: {
        queryType: "",
        pipeline: "",
@@ -260,13 +263,20 @@
      analyGid: null,
      dialogFormVisible: false,
      bufferLinePosition: [],
      dialogExtentVisible: false,
      setExtent: 10,
      wktExtent: null,
      layerTabe: [],
    }
  },
  mounted() {
    this.menuTopFrom.queryType = "rectangle"
    // this.menuTopFrom.queryType = "rectangle"
    this.getAllTable()
    this.getPipelineData()
    this.$bus.$on("setExtentBUff", res => {
      this.setExtentBuffer(res);
    })
  },
  watch: {
    analyGid(newVal, oldVal) {
@@ -276,6 +286,55 @@
    },
  },
  methods: {
    setExtentBuffer(res) {
      // var wkt = this.$wkt.parse(this.wktExtent)
      // var wkt = encr(this.wktExtent)
      var wkt1 = decr(this.wktExtent)
      var wkt = this.$wkt.parse(wkt1)
      var restVal = turf.buffer(wkt, res, { units: "meters", steps: 64 })
      var options = { precision: 6, coordinates: 2 };
      var truncated = turf.truncate(restVal, options);
      var options1 = { tolerance: 0.01, highQuality: false };
      var simplified = turf.simplify(truncated, options1);
      var wkt2 = this.$wkt.convert(simplified.geometry)
      var wkt3 = encr(wkt2)
      this.$store.state.mapMenuShpFile = wkt3
      var points = simplified.geometry.coordinates[0]
      var degreesArray = this.pointsToDegreesArray(points)
      let array = Cesium.Cartesian3.fromDegreesArray(degreesArray)
      const hierarchy = new Cesium.PolygonHierarchy(array)
      const bufferPolygon = sgworld.Viewer.entities.add({
        polygon: {
          hierarchy: hierarchy,
          material: Cesium.Color.RED.withAlpha(0.5),
          classificationType: Cesium.ClassificationType.BOTH,
        },
      })
      this.bufferEntities.push(bufferPolygon)
      sgworld.Navigate.flyToObj(bufferPolygon)
      this.showMapMenuPop()
    },
    getDownLoadExtent(res) {
      this.wktExtent = res.result.wkt
      this.$bus.$emit('showExtentLayer', true);
      // this.dialogExtentVisible = true
      //           this.$store.state.mapMenuShpFile = rs.result.wkt
      //
    },
    changeValue(value) {
      var obj = {}
      obj = this.queryOption.find(function (item) {
@@ -298,50 +357,69 @@
      var val = data.result
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.layerData.push(
            {
              val: item.bak,
              label: item.bak,
              children: [],
            }
          )
        }
      });
      for (var i in this.layerData) {
        var item = this.layerData[i];
        for (var j in val) {
          var res = val[j];
      this.layerData = getTreeData(val)
      // var std = [];
      // val.filter((item) => {
      //   if (std.indexOf(item.bak) == -1) {
      //     std.push(item.bak);
      //     this.layerData.push(
      //       {
      //         val: item.bak,
      //         label: item.bak,
      //         children: [],
      //       }
      //     )
      //   }
      // });
      // for (var i in this.layerData) {
      //   var item = this.layerData[i];
      //   for (var j in val) {
      //     var res = val[j];
          if (item.val === res.bak) {
      //     if (item.val === res.bak) {
            res.label = res.tabDesc
            this.layerData[i].children.push(res)
          }
        }
      }
      //       res.label = res.tabDesc
      //       this.layerData[i].children.push(res)
      //     }
      //   }
      // }
    },
    //获取选择树的节点
    getCheckedNodes() {
      this.layerTabe = [];
      var valTree = this.$refs.tree.getCheckedNodes()
      var parentIds = this.$refs.tree.getHalfCheckedKeys(true)
      if (valTree.length == 0) return
      this.menuTopFrom.queryLayer = valTree[0].tabDesc;
      this.treeChange = [];
      this.menuTopFrom.queryLayer = null;
      if (parentIds.length > 0) {
        this.menuTopFrom.queryLayer = this.$refs.tree.getNode(parentIds[0]).data.label
      } else {
        this.menuTopFrom.queryLayer = valTree[0].label
      }
      this.$store.state.propertiesName = valTree[0];
      for (var i = 0; i < valTree.length; i++) {
        if (valTree[i].entity) {
          this.treeChange.push(valTree[i])
          // if (!this.menuTopFrom.queryLayer) {
          //   this.menuTopFrom.queryLayer = valTree[i].tabDesc;
          // }
          this.layerTabe.push(valTree[i])
          // this.treeChange.push(valTree[i])
        }
      }
    },
    //清空树选中的节点
    resetCheckedNodes() {
      this.layerData = []
      this.getAllTable()
      this.$refs.tree.setCheckedKeys([]);
      this.treeChange = []
      this.layerTabe = []
      this.menuTopFrom.queryLayer = null
      this.$refs.tree.setCheckedKeys([])
    },
    //导入shp文件
    async setMenuTopFile() {
@@ -366,6 +444,7 @@
        })
        return
      }
      var that = this;
      $.ajax(BASE_URL + "/inquiry/uploadShp?token=" + getToken(), {
        type: "post",
        data: formData,
@@ -375,11 +454,11 @@
        contentType: false,
        success: rs => {
          if (rs.code !== 200) {
            return this.$message.error("用户角色请求错误")
            return this.$message.error("数据解析失败")
          }
          this.$store.state.mapMenuShpFile = rs.result.wkt
          this.showMapMenuPop()
          that.getDownLoadExtent(rs);
        },
        error: e => {
          console.log(e)
@@ -405,7 +484,11 @@
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer)
        this.$store.state.primitLayer = null
      }
      if (this.treeChange.length == 0) {
      if (this.layerTabe.length == 0) {
        this.$message.error("请选择要查询的数据")
        return
      }
@@ -513,7 +596,7 @@
      this.showMapMenuPop()
    },
    showMapMenuPop() {
      this.$store.state.mapSpaceQueryLayer = this.treeChange
      this.$store.state.mapSpaceQueryLayer = this.layerTabe
      this.$store.state.mapPopBoxFlag = "1"
      this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close()
      this.$refs &&
@@ -539,9 +622,12 @@
    },
    clearQuery() {
      // 清楚buffer
      this.layerData = [];
      this.getAllTable();
      this.clearBufferEntities()
      this.$refs.pathClear.value = ""
      this.treeChange = []
      this.layerTabe = []
      this.menuTopFrom.queryLayer = null
      this.menuTopFrom.queryType = "rectangle"
      this.$refs.tree.setCheckedKeys([])