管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-03-26 833cc05e4a0d5a66fecda772be3ac07b621c4cd9
src/components/mapsdk.vue
@@ -297,41 +297,47 @@
          </div>
        </el-card>
      </div>
      <div style="display: flex">
      <!--      <div style="display: flex;">-->
      <div
        class="changeTerrain"
        @click="changeTerrainLayer"
      >
        <div
          @click="changeMenulayer"
          class="center CenDiv"
          :class="{ center1: centerFlag }"
        >
          <div
            id="cenBg"
            v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
          ></div>
        </div>
        <div
          @click="changeMapType"
          class="changeMapType"
        >
          <div
            id="cenBg"
            :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
          ></div>
        </div>
          title="地形切换"
          id="cenBg"
          class="mapTerrain"
        ></div>
      </div>
      <!--      class="center CenDiv"-->
      <div
        @click="changeMenulayer"
        class="changeLayer"
      >
        <div
          title="底图切换"
          id="cenBg"
          class="mapBaseMap"
        ></div>
      </div>
      <div
        @click="changeMapType"
        class="changeMapType"
      >
        <div
          title="2/3维切换"
          id="cenBg"
          :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
        ></div>
      </div>
      <!--      </div>-->
      <!-- 坡度分析弹窗-->
      <div
        class="lengend"
        v-show="showLengendDialog"
      >
        <el-card class="box-card">
          <!-- <div
            class="lengend_color"
            style="height:205px"
          >
          </div> -->
          <div class="lengendBox">
            <div>
              <img
                class="lengendImg"
@@ -345,8 +351,65 @@
              <div>52.5°</div>
              <div>70°</div>
            </div>
          </div>
        </el-card>
      </div>
      <div
        class="HistLeng"
        v-show="$store.state.histLenged"
      >
        <el-card class="box-card">
          <table>
            <tr>
              <td>粉质黏土</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(139,106,77,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>淤泥质粉土</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(141,85,69,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>圆砾</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(102,166,184,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>卵石</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(54,83,173,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>泥岩</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(47,30,13,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>细砂</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(93,88,15,1)">
                </div>
              </td>
            </tr>
            <tr>
              <td>中砂</td>
              <td>
                <div style="width:100px;height:20px;background:rgba(164,140,21,1)">
                </div>
              </td>
            </tr>
          </table>
        </el-card>
      </div>
      <!--属性信息弹窗-->
@@ -360,7 +423,7 @@
            <span>属性信息</span>
            <div style="float: right; cursor: pointer">
              <el-link
                v-if="$store.state.propertiesName.tabDesc == '勘察工点'"
                v-if="$store.state.propertiesName.enName == 's_surveyworksite'"
                type="primary"
                :underline="false"
                @click="getPointInfo"
@@ -398,6 +461,7 @@
      </div>
      <!--勘察信息弹窗-->
      <div
        v-drag
        class="attributionPop"
        v-if="showAttribute"
      >
@@ -558,11 +622,13 @@
          v-if="dialog.isJpg"
          class="pdfClass"
        >
          <img
            style="width:100%; height:100%;"
          <el-image
            style="width:100%; height:100%"
            :src="dialog.src"
            alt=""
          />
            :preview-src-list="[dialog.src]"
          >
          </el-image>
        </div>
      </el-dialog>
      <!--      <div-->
@@ -577,6 +643,7 @@
      <!--      </div>-->
    </div>
    <model-property ref='modelProperty'></model-property>
  </div>
</template>
@@ -584,12 +651,14 @@
import $ from "jquery";
import mapMenuTop from "./MapView/mapMenuTop.vue";
import mapSpaceTop from "./MapView/mapSpaceTop.vue";
import ModelProperty from '../views/Tools/ModelProperty.vue'
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
  comprehensive_selectRoute,
  dataLib_selectFiles, dataQuery_selectFields, dataQuery_selectDomains, dataQuery_selectByPage
  dataLib_selectFiles, dataQuery_selectFields, dataQuery_selectDomains,
  dataQuery_selectByPage,
  comprehensive_selectPubById, comprehensive_selectModelByGuid
} from '../api/api'
import { getToken } from '@/utils/auth'
@@ -598,6 +667,7 @@
  components: {
    mapMenuTop,
    mapSpaceTop,
    ModelProperty
  },
  data() {
@@ -699,7 +769,8 @@
      attributeList: [],
      valueZ: 0,
      valueX: 0,
      valueY: 0
      valueY: 0,
      terrainflag: false,
    };
  },
  mounted() {
@@ -747,18 +818,62 @@
              window.pickedColor = window.pickedFeature.color
              window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3);
              this.$store.state.catModel = true;
              this.$store.state.catModelInfo = {
                id: pickedFeature.getProperty("id"),
                name: pickedFeature.getProperty("name"),
                layerId: pickedFeature.primitive.layerId,
                layerName: pickedFeature.primitive.id
              };
              // this.$store.state.catModel = true;
              that.setModelInfoData(window.pickedFeature);
            }
          }
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
    },
    async setModelInfoData(result) {
      var modelKey = 'id'
      if (result.tileset.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
        if (data.code != 200) {
          return
        } else {
          modelKey = JSON.parse(data.result.json).modelid
        }
        if (!modelKey) {
          return this.$message('没有模型主键ID,无法查询数据');
        }
      }
      var that = this
      var obj = {
        layerid: pickedFeature.primitive.layerId,
        modelid: pickedFeature.getProperty(modelKey)
      }
      const data1 = await comprehensive_selectModelByGuid(obj);
      if (data1.code != 200) {
        return;
      }
      var name = null;
      var bak = null;
      var type = null;
      if (data1.result) {
        name = data1.result.name;
        bak = data1.result.bak;
        type = data1.result.type;
      }
      that.$store.state.catModelInfo = {
        id: pickedFeature.getProperty(modelKey),
        name: name,
        type: type,
        bak: bak,
        layerId: pickedFeature.primitive.layerId,
        layerName: pickedFeature.primitive.id
      };
      that.$refs && that.$refs.modelProperty && that.$refs.modelProperty.open();
    },
    drawTerrainLevel() {
      this.clearTerrainLevel()
      var deep = parseFloat(this.terrainFrom.height)
@@ -813,9 +928,9 @@
      //显示fps
      Viewer.scene.debugShowFramesPerSecond = false;
      //导航控件
      window.sgworld.navControl("nav", false);
      // window.sgworld.navControl("nav", false);
      //比例尺
      window.sgworld.navControl("scale", false);
      // window.sgworld.navControl("scale", false);
      //开启深度检测
      // sgworld.Analysis.depthTestAgainstTerrain(true)
      Viewer.scene.globe.depthTestAgainstTerrain = true;
@@ -825,14 +940,47 @@
        layerName: window.sceneConfig.mptName,
        requestVertexNormals: true,
      };
      sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld);
      elevationTool.setContourColor("#F1D487");
    },
    //dem切换
    changeTerrainLayer() {
      if (this.terrainflag) {
        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
        var option = {
          url: window.sceneConfig.SGUrl,
          layerName: window.sceneConfig.mptName,
          requestVertexNormals: true,
        };
        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
        });
      } else {
        window.terrainLayer.deleteObject();
        window.terrainLayer = null;
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
          url: LFData + '/3d/terrain/dem20230321'
        });
        Viewer.terrainProvider = window.terrainLayer
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000),
          orientation: {
            heading: 6.08434611923462,
            pitch: Cesium.Math.toRadians(-45.0),
            roll: 0.0
          }
        });
      }
      this.terrainflag = !this.terrainflag
    },
    changeMenulayer() {
      this.$bus.$emit("setChangeBaseMapLayer", true)
      // this.$refs && this.$refs.addOnlineMap && this.$refs.addOnlineMap.open("地下模式", null,);
@@ -1340,6 +1488,7 @@
        tabName: tabName,
      };
      const res = await dataLib_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error('附件查询失败');
        return
@@ -1414,12 +1563,13 @@
    },
    //勘察信息表
    getPointInfo() {
      this.showAttribute = !this.showAttribute;
      if (this.showAttribute) {
        let attrbuteOption = workSite;
        var name = attrbuteOption[0].table.replaceAll("_", "");
        this.getAttributeDomFiled(name);
      }
      let attrbuteOption = workSite;
      var name = attrbuteOption[0].table.replaceAll("_", "");
      this.getAttributeDomFiled(name);
    },
    //获取每个表字段名称及阈值
    async getAttributeDomFiled(res) {
@@ -1467,11 +1617,18 @@
        title: title,
        filter: "workname = " + "'" + title + "'",
      }
      const data = await dataQuery_selectByPage(parmams);
      if (data.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      if (!data.result.length) {
        this.$message.error("未查询到勘探信息数据");
        return
      }
      this.showAttribute = !this.showAttribute;
      var res_val = attributeFild;
      for (var i in data.result) {
        let val_Data = data.result[i];
@@ -1629,7 +1786,12 @@
      position: absolute;
      z-index: 40;
    }
    .HistLeng {
      z-index: 40;
      position: absolute;
      right: 115px;
      bottom: 10px;
    }
    .lengend {
      width: 300px;
      z-index: 40;
@@ -1707,15 +1869,15 @@
.CenDiv {
  position: absolute;
  bottom: 1%;
  left: 1%;
  left: calc(1% + 75px);
  height: 40px;
  width: 60px;
  z-index: 101;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  box-shadow: 3px 3px 6px #666;
  border: 1px solid rgba(204, 204, 204, 0.76);
  // box-shadow: 3px 3px 6px #666;
  // border: 1px solid rgba(204, 204, 204, 0.76);
  border-radius: 5px;
  cursor: pointer;
}
@@ -1733,9 +1895,9 @@
  flex-direction: column;
  justify-content: space-between;
}
.CenDiv:hover {
  border: 1px solid #409eff;
}
// .CenDiv:hover {
//   border: 1px solid #409eff;
// }
.active {
  width: 100%;
  height: 100%;
@@ -1753,37 +1915,112 @@
  border-radius: 5px;
}
.changeMapType {
.mapBaseMap {
  width: 100%;
  height: 100%;
  //margin-left: 10px;
  background-image: url("../assets/img/basemap.png");
  //background-image: url("../assets/img/synthesis/底图.png");
  background-repeat: no-repeat;
  background-size: contain;
}
//.changeMapType {
//  position: absolute;
//  bottom: 1%;
//  left: calc(1% + 150px);
//  height: 40px;
//  width: 60px;
//  z-index: 101;
//  display: flex;
//  justify-content: center;
//  align-items: center;
//  // box-shadow: 3px 3px 6px #666;
//  //border: 1px solid rgba(204, 204, 204, 0.76);
//  border-radius: 5px;
//
//  cursor: pointer;
//}
.changeTerrain {
  position: absolute;
  bottom: 1%;
  left: calc(1% + 75px);
  height: 40px;
  width: 60px;
  bottom: 84px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  // box-shadow: 3px 3px 6px #666;
  //border: 1px solid rgba(204, 204, 204, 0.76);
  border-radius: 5px;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);
}
.changeLayer {
  position: absolute;
  bottom: 116px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);
}
.changeMapType {
  position: absolute;
  bottom: 52px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);
}
//.changeTerrain {
//  position: absolute;
//  bottom: 1%;
//  left: 1%;
//  height: 40px;
//  width: 60px;
//  z-index: 101;
//  display: flex;
//  justify-content: center;
//  align-items: center;
//
//  border-radius: 5px;
//  cursor: pointer;
//}
.mapTypeTwo {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/synthesis/3D.png");
  background-image: url("../assets/img/3D.png");
  //background-image: url("../assets/img/synthesis/3D.png");
  background-repeat: no-repeat;
  background-size: contain;
  //background-size: contain;
}
.mapTerrain {
  width: 100%;
  height: 100%;
  //margin-left: 10px;
  //background-image: url("../assets/img/synthesis/地形.png");
  //background-image: url("../assets/img/synthesis/地形.png");
  background-image: url("../assets/img/terrain.png");
  background-repeat: no-repeat;
  //background-size: contain;
}
.mapTypeThree {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/synthesis/2D 拷贝 2.png");
  //margin-left: 10px;
  background-image: url("../assets/img/2D.png");
  background-repeat: no-repeat;
  background-size: contain;
  //background-size: contain;
}
.pdfClass {