瀏覽代碼

Merge branch 'master' of http://114.244.114.158:8802/siwei/real3d-portalsite

服务器 8 月之前
父節點
當前提交
2e72fcff75
共有 35 個文件被更改,包括 1437 次插入359 次删除
  1. 8 1
      src/api/analse.js
  2. 10 0
      src/api/zt/ztApi.js
  3. 155 0
      src/components/3DAnalysis/TiltedModel‌/index.vue
  4. 1 1
      src/components/Bookmark/Bookmark.vue
  5. 1 1
      src/components/Combinations/terrainCombination/TerrainCombination.vue
  6. 147 54
      src/components/Combinations/toolBar/toolBar.vue
  7. 1 1
      src/components/Query/PlacenameLocation/PlacenameLocation.vue
  8. 340 0
      src/components/TerrainAnalysis/TerrainCutFillAnalysis/TerrainCutFillAnalysisNew.vue
  9. 1 1
      src/components/TerrainAnalysis/TerrainCutFillAnalysis/index.js
  10. 11 2
      src/components/VueLayer/src/components/drag/drag.vue
  11. 25 25
      src/components/VueLayer/src/helper/helper.js
  12. 15 10
      src/components/VueLayer/src/layer.js
  13. 5 1
      src/components/mapView/range.vue
  14. 104 10
      src/utils/MapHelper/help.js
  15. 0 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  16. 30 3
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue
  17. 17 4
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue
  18. 11 13
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  19. 0 0
      src/views/ConstructionApplication3D/Demolition/zdAnalyse.js
  20. 223 130
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  21. 6 2
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  22. 2 2
      src/views/ConstructionApplication3D/ZYAnalysisinfo/ZYAnalysisinfo.vue
  23. 1 0
      src/views/ConstructionApplication3D/billboard/billboardCheckList.vue
  24. 12 4
      src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue
  25. 41 24
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  26. 56 0
      src/views/ConstructionApplication3D/billboard/billboarddetail.vue
  27. 30 5
      src/views/ConstructionApplication3D/billboard/billboarddetailInfo.vue
  28. 0 0
      src/views/ConstructionApplication3D/projectManagement/CheckParkAnalyse.js
  29. 47 11
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  30. 8 2
      src/views/ConstructionApplication3D/zt.scss
  31. 74 14
      src/views/farmlandProtection/components/fxjg.vue
  32. 1 1
      src/views/farmlandProtection/components/fzjcyp.vue
  33. 38 30
      src/views/farmlandProtection/components/interDetails.vue
  34. 2 4
      src/views/viewer.vue
  35. 14 3
      static/Config/config.js

+ 8 - 1
src/api/analse.js

@@ -5,4 +5,11 @@ export function getDsm(params) {
         method: 'get',
         params
     })
-}
+}
+export function cutFill(data) {
+    return request({
+        url: '/analyse/raster/cutFill',
+        method: 'post',
+        data
+    })
+}

+ 10 - 0
src/api/zt/ztApi.js

@@ -342,6 +342,16 @@ export async function updateZtProjectModelZb(data) {
 /*************************报建项目******************** end */
 
 /*************************基准地价******************** start */
+
+// 基准地价分析
+export async function getAnalyseResult(data) {
+  return request({
+    url: "/model/jzdjanalyse/getAnalyseResult",
+    method: "post",
+    data: data,
+  });
+}
+
 // 查询基准地价信息列表
 export async function listBenchmarkLandPrices(query) {
   return request({

+ 155 - 0
src/components/3DAnalysis/TiltedModel‌/index.vue

@@ -0,0 +1,155 @@
+<template>
+  <div
+    class="sm-panel sm-function-module-content tiltedModel"
+    v-if="tiltedModelShow"
+    v-drag
+  >
+    <div class="sm-panel-header">
+      <span>倾斜模型</span>
+      <span class="closeBtn" @click="toggleVisibility">&times;</span>
+    </div>
+    <div id="tiltedmodelBar" class="modelBarCon">
+      <div class="block">
+        <span class="demonstration">亮度:</span>
+        <el-slider
+          :min="0"
+          :max="2"
+          :step="0.02"
+          v-model="viewModel.brightness"
+        ></el-slider>
+      </div>
+      <div class="block">
+        <span class="demonstration">对比度:</span>
+        <el-slider
+          :min="0"
+          :max="2"
+          :step="0.02"
+          v-model="viewModel.contrast"
+        ></el-slider>
+      </div>
+      <div class="block">
+        <span class="demonstration">色调:</span>
+        <el-slider
+          :min="-1"
+          :max="1"
+          :step="0.02"
+          v-model="viewModel.hue"
+        ></el-slider>
+      </div>
+      <div class="block">
+        <span class="demonstration">饱和度:</span>
+        <el-slider
+          :min="0"
+          :max="2"
+          :step="0.02"
+          v-model="viewModel.saturation"
+        ></el-slider>
+      </div>
+      <div class="block">
+        <span class="demonstration">伽马</span>
+        <el-slider
+          :min="0"
+          :max="2"
+          :step="0.02"
+          v-model="viewModel.gamma"
+        ></el-slider>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "tiltedmodel",
+  data() {
+    return {
+      viewModel: {
+        brightness: 1.2,
+        contrast: 1.2,
+        hue: 0,
+        saturation: 1.2,
+        gamma: 1.1,
+      },
+    };
+  },
+  computed: {
+    tiltedModelShow() {
+      return store.state.toolBar[14];
+    },
+  },
+  methods: {
+    toggleVisibility() {
+      store.setToolBarAction(14);
+    },
+
+    getParameter(newVal) {
+      function subscribeLayerParameter(name) {
+        var layer = store.state.tempLatData;
+        layer[0].forEach((item) => {
+          item[name] = newVal[name];
+        });
+      }
+      subscribeLayerParameter("brightness");
+      subscribeLayerParameter("contrast");
+      subscribeLayerParameter("hue");
+      subscribeLayerParameter("saturation");
+      subscribeLayerParameter("gamma");
+    },
+  },
+  mounted() {},
+  watch: {
+    viewModel: {
+      handler(newVal, oldVal) {
+        console.log("newVal", newVal, "oldVal");
+        if (this.tiltedModelShow) {
+          console.log(document.getElementById("tiltedmodelBar"));
+          this.getParameter(newVal);
+        }
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.sm-panel {
+  max-width: 500px;
+}
+
+.tiltedModel {
+  width: 300px;
+  height: 280px;
+
+  .modelBarCon {
+    display: inline-block;
+
+    .block {
+      width: 270px;
+      display: flex;
+      justify-content: space-between;
+      .demonstration{
+        line-height: 38px;
+        font-weight: bold;
+      }
+    }
+
+    /deep/ .el-slider__runway {
+      width: 200px;
+      height: 12px;
+      border-radius: 10px;
+    //   background-color: #E4E7ED;
+      background-color: #3768ca59;
+    }
+    /deep/ .el-slider__bar{
+        background: linear-gradient(to right, rgb(5, 156, 250), white 76%, white);
+        height: 12px;
+        border-radius: 10px;
+    }
+    /deep/ .el-slider__button-wrapper{
+        top: -13px;
+    }
+  }
+}
+</style>

+ 1 - 1
src/components/Bookmark/Bookmark.vue

@@ -141,7 +141,7 @@ export default {
           this.total = res.data.count;
           this.tableData = res.data.data;
         } else {
-          this.$message.error(e);
+          this.$message.error(res.message);
         }
       });
     },

+ 1 - 1
src/components/Combinations/terrainCombination/TerrainCombination.vue

@@ -7,7 +7,7 @@
         <span :class="{ titleColor: floodShow }" class="title-txt" @click="choose(1)">{{ Resource.FloodAnalysis }}</span>
         <span :class="{ titleColor: slopeShow }" class="title-txt" @click="choose(2)">{{ Resource.terrainSlope }}</span>
         <span :class="{ titleColor: isolineShow }" class="title-txt" @click="choose(3)">{{ Resource.isoline }}</span>
-        <span :class="{ titleColor: isCutFillShow }" class="title-txt" @click="choose(4)">地形修改分析</span>
+        <span :class="{ titleColor: isCutFillShow }" class="title-txt" @click="choose(4)">地形平整分析</span>
 
         <span class="closeBtn" @click="toggleVisibility">&times;</span>
       </div>

+ 147 - 54
src/components/Combinations/toolBar/toolBar.vue

@@ -2,48 +2,95 @@
   <!-- 暂时隐藏工具栏 -->
   <!-- <div v-show="ToolBarShow"> -->
   <div v-if="true">
-
     <!-- <div class="resourceTree" @click="choose(0)"></div> -->
     <div class="toolBar">
-      <el-cascader size="mini" :show-all-levels="false" :options="xzqTreeData" placeholder="行政区"
-        :props="{ checkStrictly: true, expandTrigger: 'hover' }" clearable v-model="xzqTreeValue"></el-cascader>
+      <el-cascader
+        size="mini"
+        :show-all-levels="false"
+        :options="xzqTreeData"
+        placeholder="行政区"
+        :props="{ checkStrictly: true, expandTrigger: 'hover' }"
+        clearable
+        v-model="xzqTreeValue"
+      ></el-cascader>
       <el-select size="mini" v-model="Skybox" placeholder="天空盒">
-        <el-option v-for="item in SkyboxList" :key="item.value" :label="item.label" :value="item.value">
+        <el-option
+          v-for="item in SkyboxList"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        >
         </el-option>
       </el-select>
-      <li class="sm-btn sm-tool-btn" :title="Resource.Resource" @click="choose(0)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.Resource"
+        @click="choose(0)"
+      >
         <span class="iconfont icontuceng"></span>
       </li>
 
       <!-- <ul v-if="show"> -->
-      <li class="sm-btn sm-tool-btn" :title="Resource.PoinyQuery" @click="choose(9)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.PoinyQuery"
+        @click="choose(9)"
+      >
         <i class="el-icon-thumb"></i>
       </li>
-      <li class="sm-btn sm-tool-btn" :title="Resource.PlacenameLocation" @click="choose(10)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.PlacenameLocation"
+        @click="choose(10)"
+      >
         <i class="el-icon-place"></i>
       </li>
-      <li class="sm-btn sm-tool-btn" :title="Resource.BookMark" @click="choose(11)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.BookMark"
+        @click="choose(11)"
+      >
         <i class="el-icon-notebook-2"></i>
       </li>
-      <li class="sm-btn sm-tool-btn" :title="Resource.measure" @click="choose(7)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.measure"
+        @click="choose(7)"
+      >
         <span class="iconfont iconliangsuan"></span>
       </li>
       <!-- <li class="sm-btn sm-tool-btn" :title="Resource.clip" @click="choose(4)">
         <span class="iconfont iconiEarth-R8-xiugai_caijian"></span>
       </li> -->
-      <li class="sm-btn sm-tool-btn" :title="Resource.terrain" @click="choose(5)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.terrain"
+        @click="choose(5)"
+      >
         <span class="iconfont icondixing"></span>
       </li>
-      <li class="sm-btn sm-tool-btn" :title="Resource.onlineEditing" @click="choose(8)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.onlineEditing"
+        @click="choose(8)"
+      >
         <span class="iconfont iconzaixianbianji"></span>
       </li>
-      <li class="sm-btn sm-tool-btn" :title="Resource.analysis" @click="choose(6)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.analysis"
+        @click="choose(6)"
+      >
         <span class="iconfont iconsanweifenxi"></span>
       </li>
       <!-- <li class="sm-btn sm-tool-btn" :title="Resource.fly" @click="choose(12)">
         <i class="el-icon-guide"></i>
       </li> -->
-      <li class="sm-btn sm-tool-btn" :title="Resource.sceneOptions" @click="choose(3)">
+      <li
+        class="sm-btn sm-tool-btn"
+        :title="Resource.sceneOptions"
+        @click="choose(3)"
+      >
         <i class="el-icon-setting"></i>
       </li>
       <!-- <li class="sm-btn sm-tool-btn" title="行政区划开关" @click="choose(12)">
@@ -53,11 +100,23 @@
       <li class="sm-btn sm-tool-btn" title="模型拉伸" @click="choose(13)">
         <i class="el-icon-receiving"></i>
       </li>
-      <div style="display: none" class="sm-tool-btn" @click="toggleVisibility" :class="{ 'sm-tool-btn-only': !show }">
-        <span class="iconfont" :class="!show
-          ? 'iconiEarth-R8-xiugai_shouqi'
-          : 'iconiEarth-R8-xiugai_zhankai'
-          "></span>
+      <li class="sm-btn sm-tool-btn" title="倾斜模型" @click="choose(14)">
+        <i class="el-icon-office-building"></i>
+      </li>
+      <div
+        style="display: none"
+        class="sm-tool-btn"
+        @click="toggleVisibility"
+        :class="{ 'sm-tool-btn-only': !show }"
+      >
+        <span
+          class="iconfont"
+          :class="
+            !show
+              ? 'iconiEarth-R8-xiugai_shouqi'
+              : 'iconiEarth-R8-xiugai_zhankai'
+          "
+        ></span>
       </div>
     </div>
     <!-- 调用子组件-->
@@ -79,9 +138,14 @@
     <air-lines-trail-lines></air-lines-trail-lines>
     <scan-effect></scan-effect>
     <wind-particle></wind-particle>
-    <placename-location style="width: 400px; height: 400px; z-index: 999999"></placename-location>
-    <click-query style="width: 400px; height: 700px; z-index: 999999"></click-query>
+    <placename-location
+      style="width: 400px; height: 400px; z-index: 999999"
+    ></placename-location>
+    <click-query
+      style="width: 400px; height: 700px; z-index: 999999"
+    ></click-query>
     <modelStretch></modelStretch>
+    <tiltedModel></tiltedModel>
   </div>
 </template>
 
@@ -91,8 +155,9 @@ import { GetXzqhTree, GetXzqhGeom } from "@/api/map";
 import Bookmark from "../../Bookmark/Bookmark.vue";
 import * as cockpit from "@/common/js/cockpit.js";
 import modelStretch from "@/views/modelStretch/index.vue";
+import tiltedModel from "../../3DAnalysis/TiltedModel‌/index.vue";
 export default {
-  components: { clickQuery, Bookmark, modelStretch },
+  components: { clickQuery, Bookmark, modelStretch, tiltedModel },
   name: "ToolBar",
   props: {},
   data() {
@@ -109,25 +174,32 @@ export default {
       skyListener: null,
       defaultSkyBox: null,
       ViewerSkyBox: {},
-      SkyboxList: [{
-        value: 'lantian',
-        label: '蓝天'
-      }, {
-        value: 'qingtian',
-        label: '晴天'
-      }, {
-        value: 'wanxia',
-        label: '晚霞'
-      }, {
-        value: 'cloudy',
-        label: '多云'
-      }, {
-        value: 'partly_cloudy_puresky',
-        label: '晴间多云'
-      }, {
-        value: 'yewan',
-        label: '夜晚'
-      }]
+      SkyboxList: [
+        {
+          value: "lantian",
+          label: "蓝天",
+        },
+        {
+          value: "qingtian",
+          label: "晴天",
+        },
+        {
+          value: "wanxia",
+          label: "晚霞",
+        },
+        {
+          value: "cloudy",
+          label: "多云",
+        },
+        {
+          value: "partly_cloudy_puresky",
+          label: "晴间多云",
+        },
+        {
+          value: "yewan",
+          label: "夜晚",
+        },
+      ],
     };
   },
   created() {
@@ -144,14 +216,32 @@ export default {
       for (let i = 0; i < this.SkyboxList.length; i++) {
         let c = new Cesium.SkyBox({
           sources: {
-            positiveX: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Right.jpg",
-            negativeX: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Left.jpg",
-            positiveY: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Front.jpg",
-            negativeY: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Back.jpg",
-            positiveZ: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Up.jpg",
-            negativeZ: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Down.jpg",
+            positiveX:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Right.jpg",
+            negativeX:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Left.jpg",
+            positiveY:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Front.jpg",
+            negativeY:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Back.jpg",
+            positiveZ:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Up.jpg",
+            negativeZ:
+              "/static/Cesium/Assets/Textures/SkyBox/" +
+              this.SkyboxList[i].value +
+              "/Down.jpg",
           },
-        })
+        });
         c.WSpeed = 0.5;
         this.ViewerSkyBox[this.SkyboxList[i].value] = c;
       }
@@ -173,8 +263,12 @@ export default {
           let skyBoxH1 = 15e4; // 天空开始渐变的最大高度
           let skyBoxH2 = 12e4; // 天空开始渐变的最小高度
           let bufferHeight = 1e4;
-          if (cameraHeight < skyAtmosphereH1 && Cesium.defined(that.currentSkyBox)) {
-            let skyAtmosphereT = (cameraHeight - skyBoxH2) / (skyAtmosphereH1 - skyBoxH2);
+          if (
+            cameraHeight < skyAtmosphereH1 &&
+            Cesium.defined(that.currentSkyBox)
+          ) {
+            let skyAtmosphereT =
+              (cameraHeight - skyBoxH2) / (skyAtmosphereH1 - skyBoxH2);
             if (skyAtmosphereT > 1.0) {
               skyAtmosphereT = 1.0;
             } else if (skyAtmosphereT < 0.0) {
@@ -251,11 +345,10 @@ export default {
             return item.label == "三亚市";
           });
           if (list.length > 0) {
-            list[0].value = '4602'
+            list[0].value = "4602";
             this.xzqTreeData = list[0];
-          }
-          else this.xzqTreeData = res.data;
-          store.setRegionTree(this.xzqTreeData)
+          } else this.xzqTreeData = res.data;
+          store.setRegionTree(this.xzqTreeData);
         }
       });
     },
@@ -291,7 +384,7 @@ export default {
     },
     Skybox() {
       this.setSkyBox();
-    }
+    },
   },
 };
 </script>

+ 1 - 1
src/components/Query/PlacenameLocation/PlacenameLocation.vue

@@ -109,7 +109,7 @@ export default {
           this.total = res.data.count;
           this.tableData = res.data.data;
         } else {
-          this.$message.error(e);
+          this.$message.error(res.message);
         }
       });
     },

+ 340 - 0
src/components/TerrainAnalysis/TerrainCutFillAnalysis/TerrainCutFillAnalysisNew.vue

@@ -0,0 +1,340 @@
+<template>
+  <div
+    v-show="isCutFill"
+    class="cut_fill_box"
+    v-loading="loading"
+    element-loading-text="正在分析中...."
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+  >
+    <el-radio v-model="radio" label="cut">地形填挖方分析</el-radio>
+    <el-radio v-model="radio" label="smooth">地形平整分析</el-radio>
+    <el-form
+      :model="cutData"
+      ref="ruleForm"
+      label-width="100px"
+      :rules="rules"
+      class="ruleForm"
+    >
+      <el-form-item label="分析范围:" prop="xzmj">
+        <range type="cutfill" :keys="['hx', 'sc']" class="range" ref="range" />
+      </el-form-item>
+      <el-form-item label="开挖高程:" v-if="radio == 'cut'">
+        <!-- readonly="readonly" -->
+        <el-input
+          v-model="smooth_height"
+          placeholder="深度为空时为平整土地"
+          size="mini"
+        ></el-input>
+      </el-form-item>
+      <div v-if="cutData.fillVolume" class="sdatadiv">
+        分析结果:
+        <p v-for="(sitem, index) in sdata" :key="index">
+          <!-- <img src="/static/images/ghzc/iconSun.png" .toFixed(2) /> -->
+          <span class="ptitle">{{ sitem.name }}</span>
+          <span class="pvalue">
+            {{ cutData[sitem.prop] }}{{ sitem.unit }}
+          </span>
+        </p>
+      </div>
+    </el-form>
+    <div class="bottomBtns">
+      <!-- <el-button size="mini" type="primary" @click="draw">绘制</el-button> -->
+      <!-- <el-button size="mini" type="primary" @click="submitData">确定</el-button>
+      <el-button size="mini" type="primary" @click="reset">清除</el-button> -->
+      <span class="clearBtn" @click="reset">取消</span>
+      <span class="sureBtn" @click="submitData">确定</span>
+      <span
+        class="sureBtn"
+        :disabled="sdh.length == 0 ? true : false"
+        @click="ExportResult"
+        >导出结果</span
+      >
+    </div>
+    <el-descriptions border size="mini" :column="2">
+      <el-descriptions-item v-for="item in sdh" :key="item" :label="item.scS"
+        ><div
+          style="width: 4.5rem; height: 100%"
+          :style="{ 'background-color': item.fill }"
+        >
+          &nbsp;
+        </div>
+      </el-descriptions-item>
+    </el-descriptions>
+  </div>
+</template>
+
+<script>
+import { getDsm, cutFill } from "@/api/analse";
+import * as turf from "@turf/turf";
+import parse from "wellknown";
+import { listToMatrix, loadGeoJSON, download } from "@/utils/MapHelper/help.js";
+import range from "@/components/mapview/range.vue"; ///mapview/range
+export default {
+  name: "TerrainCutFillAnalysis",
+  components: { range },
+  data() {
+    return {
+      radio: "smooth",
+      sharedState: store.state,
+      loading: false,
+      smooth_height: "",
+      cutData: {},
+      // 石方量
+      sdata: [
+        { name: "填土体积:", prop: "fillVolume", unit: "立方米", value: "" },
+        { name: "开挖体积:", prop: "cutVolume", unit: "立方米", value: "" },
+        { name: "填挖差值:", prop: "cz", unit: "立方米", value: "" },
+        { name: "最大高程:", prop: "maxHeight", unit: "米", value: "" },
+        { name: "最小高程:", prop: "minHeight", unit: "米", value: "" },
+        { name: "填挖基准:", prop: "midHeight", unit: "米", value: "" },
+      ],
+      sdh: [
+        { scS: "填土", fill: "#1E90A8" },
+        { scS: "开挖", fill: "#FF0000" },
+      ],
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {
+    isCutFill: function () {
+      return this.sharedState.terrain[4];
+    },
+  },
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {
+    reset() {
+      this.cutData = {};
+      this.$refs.range.reset();
+      viewer.entities.removeAll();
+      viewer.dataSources.removeAll();
+    },
+    submitData() {
+      var _temp = this.$refs.range.getRange();
+      if (!_temp.geom) {
+        this.$message.warning("请绘制或导入分析范围!");
+        return;
+      }
+      this.cutFill(_temp.geom);
+    },
+    clear() {
+      common.clearHandlerDrawing("Polygon");
+    },
+    async cutFill(geom) {
+      this.loading = true;
+      let res = await cutFill({
+        geom,
+        height: this.smooth_height,
+      });
+      if (res.success) {
+        this.$refs.range.reset();
+        this.cutData = res.data;
+
+        Object.keys(this.cutData).forEach((key) => {
+          if (typeof this.cutData[key] == "number")
+            this.cutData[key] = this.cutData[key].toFixed(2);
+        });
+        this.cutData.cz = res.data.cutVolume - res.data.fillVolume;
+
+        this.loading = false;
+        let pitch = Cesium.Math.toRadians(-45.0);
+        loadGeoJSON(res.data.bottomGeom, "#1E90A8", { sw: 0 }, (data) => {
+          viewer.dataSources.add(data);
+          viewer.flyTo(data, {
+            offset: new Cesium.HeadingPitchRange(0, -45, 100),
+          });
+        });
+        loadGeoJSON(res.data.midGeom, "#ff0000", { sw: 0 }, (data) => {
+          viewer.dataSources.add(data);
+          viewer.flyTo(data, {
+            offset: new Cesium.HeadingPitchRange(0, -45, 100),
+          });
+        });
+      }
+
+      // let newArr = positions.map((item, index) => {
+      //   return (index + 1) % 3 === 0 ? data.data : item;
+      // });
+      // viewer.scene.globe.removeAllModifyRegion();
+      // viewer.scene.globe.addModifyRegion({
+      //   name: "ggg",
+      //   position: newArr,
+      // });
+
+      // this.smooth_height = data.data.toFixed(2);
+      // // let cutVolume = cutFillAnalysis.VolumeAnalysis1(threeArray, Number(height));
+      // // console.log('cutVolume: ', cutVolume);
+
+      // let newArray = [];
+      // for (let i = 0; i < positions_noHeight.length; i += 2) {
+      //   // 将每两个连续的元素组合成一个新的数组,并添加到新数组中
+      //   newArray.push([positions_noHeight[i], positions_noHeight[i + 1]]);
+      // }
+      // newArray.push(newArray[0]);
+
+      // var polygon = turf.polygon([newArray]);
+
+      // this.result_area = turf.area(polygon).toFixed(2);
+    },
+    ExportResult() {
+      let _this = this;
+      // let box = that.squarePolygon(entitys);
+      // viewer.camera.flyTo({
+      //   destination: Cesium.Rectangle.fromDegrees(
+      //     box[0][0] + 0.0002,
+      //     box[0][1] - 0.0002,
+      //     box[2][0] - 0.0002,
+      //     box[2][1] + 0.0002
+      //   ),
+      // });
+      setTimeout(function () {
+        var promise = scene.outputSceneToFile();
+        Cesium.when(promise, function (base64data) {
+          download(base64data, _this.drawLegends);
+        });
+      }, 1000);
+    },
+    /**
+     * 根据图片生成画布
+     */
+
+    // 绘制图例
+    drawLegends(canvas, ctx) {
+      let _this = this;
+      console.log("-----");
+      var legends = [...this.sdata, ...this.sdh];
+      var padding = 10; // 图例与边缘的间距
+      var lineHeight = 30; // 每行图例的高度
+      var labW = 200;
+      var x = canvas.width - padding - labW; // 图例的起始X坐标
+      var y = canvas.height - legends.length * lineHeight - padding; // 图例的起始Y坐标
+      // 绘制颜色块
+      ctx.fillStyle = "#ffffff";
+      ctx.fillRect(
+        x - padding,
+        y - padding,
+        canvas.width - x + padding,
+        canvas.height - y + padding
+      );
+      legends.forEach(function (legend, index) {
+        // 绘制文本
+        if (legend.scS) {
+          ctx.fillStyle = "black";
+          ctx.fillText(legend.scS, x, y + index * lineHeight + lineHeight / 2);
+          // 绘制颜色块
+          ctx.fillStyle = legend.fill;
+          ctx.fillRect(
+            x + (labW / 3) * 2,
+            y + index * lineHeight,
+            30,
+            lineHeight
+          );
+        } else {
+          ctx.fillStyle = "black";
+          let text = `${legend.name}:${_this.cutData[legend.prop]}${
+            legend.unit
+          }`;
+          ctx.fillText(text, x, y + index * lineHeight + lineHeight / 2);
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.cut_fill_box {
+  width: 100%;
+  height: 500px;
+  padding: 20px;
+  box-sizing: border-box;
+  position: relative;
+  .ruleForm {
+    width: 100%;
+    height: calc(100% - 120px);
+  }
+  .el-form-item {
+    margin-bottom: 0px !important;
+  }
+  .range {
+    width: 90% !important;
+  }
+  .sdatadiv {
+    text-align: left;
+    line-height: 40px;
+  }
+  .ptitle {
+    width: 100px;
+    color: #cddeeb;
+    text-align: right;
+    padding: 0 12px 0 0;
+    display: inline-block;
+  }
+  .pvalue {
+    color: #02a7f0;
+  }
+}
+.el-radio {
+  color: white;
+}
+
+.bottomBtns {
+  line-height: 30px;
+  width: 100%;
+  // background-color: rgba(255, 192, 203, 0.418);
+  display: flex;
+  justify-content: space-between;
+  text-align: center;
+  // position: absolute;
+  // bottom: 70px;
+
+  .sureBtn {
+    width: 30%;
+    background-color: #0f7ac8;
+    cursor: pointer;
+
+    &:hover {
+      font-weight: bold;
+    }
+  }
+
+  .clearBtn {
+    cursor: pointer;
+    width: 30%;
+    background-color: #3f94f53f;
+    border: 1px solid #3f93f5;
+    color: #b6e0ff;
+
+    &:hover {
+      font-weight: bold;
+    }
+  }
+}
+</style>
+<style lang="scss">
+.cut_fill_box {
+  .el-descriptions {
+    color: #fff;
+    margin-top: 20px;
+    // position: absolute;
+    // bottom: 20px;
+  }
+
+  .el-descriptions__body {
+    color: #fff;
+    background-color: #fff0;
+  }
+  .el-descriptions .is-bordered .el-descriptions-item__cell {
+    border: 1px solid rgba(15, 122, 200, 0.4);
+  }
+  .el-descriptions-item__label.is-bordered-label {
+    font-weight: 700;
+    color: #ffffff;
+    background: rgba(4, 28, 50, 0.6);
+  }
+  .el-date-editor .el-range-input {
+    background-color: rgba(4, 28, 50, 0.5);
+  }
+}
+</style>

+ 1 - 1
src/components/TerrainAnalysis/TerrainCutFillAnalysis/index.js

@@ -1,2 +1,2 @@
-import TerrainCutFillAnalysis from './TerrainCutFillAnalysis';
+import TerrainCutFillAnalysis from './TerrainCutFillAnalysisNew';
 export default TerrainCutFillAnalysis;

+ 11 - 2
src/components/VueLayer/src/components/drag/drag.vue

@@ -62,6 +62,7 @@ export default {
         moveTop: 0,
         tt: {},
       },
+      oldOffset: [],
     };
   },
   props: {
@@ -166,6 +167,7 @@ export default {
       helper.clickMaskCloseAll(event, this.options.layer, this.options.id);
     },
     mini() {
+      debugger;
       //最小化窗口
       let domMinIndex = parseInt(
         document.getElementById(this.options.id).getAttribute("minindex")
@@ -186,6 +188,8 @@ export default {
           domMinIndex = iframeMinList.length - 1;
         }
       }
+      let o = document.getElementById(this.options.id + "");
+      this.oldOffset = [o.offsetLeft, o.offsetTop];
       this.addStyle = {
         overflow: "hidden",
         bottom: 0,
@@ -198,6 +202,9 @@ export default {
       this.maxMiniState = 1;
     },
     max() {
+      debugger;
+      let o = document.getElementById(this.options.id + "");
+      this.oldOffset = [o.offsetLeft, o.offsetTop];
       //最大化窗口
       let height = document.documentElement.clientHeight;
       if (height % 2 === 1) {
@@ -213,11 +220,12 @@ export default {
       this.maxMiniState = 2;
     },
     maxmini() {
+      debugger;
       //还原
       document.getElementById(this.options.id).removeAttribute("style");
       this.addStyle = {
-        left: "tpx",
-        top: "tpx",
+        left: this.oldOffset[0] + "px",
+        top: this.oldOffset[1] + "px",
         margin: "t",
       };
       this.maxMiniState = 0;
@@ -263,6 +271,7 @@ export default {
       this.resize.isResize = false;
     },
     resizeHand(event) {
+      debugger;
       //拉伸操作
       let o = document.getElementById(this.options.id + "");
       this.resize.oWidth = o.offsetWidth;

+ 25 - 25
src/components/VueLayer/src/helper/helper.js

@@ -15,7 +15,10 @@ export default class helper {
    */
   static clickMaskCloseAll(event, layer, id) {
     let mask = event.target.getAttribute("class");
-    if (mask && (mask.indexOf("notify-mask") > -1 || mask.indexOf("icon-remove") > -1)) {
+    if (
+      mask &&
+      (mask.indexOf("notify-mask") > -1 || mask.indexOf("icon-remove") > -1)
+    ) {
       layer.close(id);
     }
   }
@@ -25,7 +28,7 @@ export default class helper {
    * @return {[type]}       [description]
    */
   static btnyes(event, options, formValue) {
-    if (typeof (options.yes) == "function") {
+    if (typeof options.yes == "function") {
       if (options.type === 6) {
         options.yes(formValue, options.id);
       } else {
@@ -41,11 +44,11 @@ export default class helper {
    * @return {[type]}       [description]
    */
   static async btncancel(event, options) {
-    if (typeof (options.cancel) == "function") {
-      await options.cancel(options.id);
-    } else {
-      options.layer.close(options.id);
-    }
+    // if (typeof (options.cancel) == "function") {
+    //   await options.cancel(options.id);
+    // } else {
+    options.layer.close(options.id);
+    // }
   }
   /**
    * 隐藏滚动条
@@ -54,7 +57,7 @@ export default class helper {
     if (!options.scrollbar) {
       const htmlDom = document.getElementsByTagName("html")[0];
       const htmlClass = [...htmlDom.classList];
-      if (htmlClass.indexOf('vl-html-scrollbar-hidden') > -1) {
+      if (htmlClass.indexOf("vl-html-scrollbar-hidden") > -1) {
         return;
       }
 
@@ -73,7 +76,7 @@ export default class helper {
    * @return {[type]}         [description]
    */
   static moveStart(event, options) {
-    options.offset = options.offset == 'auto' ? [] : options.offset;
+    options.offset = options.offset == "auto" ? [] : options.offset;
     if (options.offset.length == 0) {
       options.offset.push(document.getElementById(options.id + "").offsetLeft);
       options.offset.push(document.getElementById(options.id + "").offsetTop);
@@ -82,8 +85,8 @@ export default class helper {
     if (options.offset.length == 2) {
       options.offset.push(0);
     }
-    options.offset[0] = (document.getElementById(options.id + "").offsetLeft);
-    options.offset[1] = (document.getElementById(options.id + "").offsetTop);
+    options.offset[0] = document.getElementById(options.id + "").offsetLeft;
+    options.offset[1] = document.getElementById(options.id + "").offsetTop;
   }
   /**
    * 拖动弹窗
@@ -104,16 +107,16 @@ export default class helper {
    * @return {[type]}    [description]
    */
   static sleep(ms) {
-    return new Promise(resolve => setTimeout(resolve, ms))
+    return new Promise((resolve) => setTimeout(resolve, ms));
   }
   /**
    *  深度拷贝
-   * @param {*} source 
+   * @param {*} source
    */
   static deepClone(target) {
-    let copyed_objs = []; //此数组解决了循环引用和相同引用的问题,它存放已经递归到的目标对象 
+    let copyed_objs = []; //此数组解决了循环引用和相同引用的问题,它存放已经递归到的目标对象
     function _deepCopy(target) {
-      if ((typeof target !== 'object') || !target) {
+      if (typeof target !== "object" || !target) {
         return target;
       }
       for (let i = 0; i < copyed_objs.length; i++) {
@@ -123,13 +126,13 @@ export default class helper {
       }
       let obj = {};
       if (Array.isArray(target)) {
-        obj = []; //处理target是数组的情况 
+        obj = []; //处理target是数组的情况
       }
       copyed_objs.push({
         target: target,
-        copyTarget: obj
-      })
-      Object.keys(target).forEach(key => {
+        copyTarget: obj,
+      });
+      Object.keys(target).forEach((key) => {
         if (obj[key]) {
           return;
         }
@@ -141,9 +144,9 @@ export default class helper {
   }
   /**
    *  取偶数
-   * @param {*} str 
+   * @param {*} str
    */
-  static evenNumber(str = '') {
+  static evenNumber(str = "") {
     const result = str.match(/\d+/g);
     if (result) {
       const n = parseInt(result[0]);
@@ -156,8 +159,5 @@ export default class helper {
     } else {
       return str;
     }
-
   }
-
-
-}
+}

+ 15 - 10
src/components/VueLayer/src/layer.js

@@ -48,16 +48,18 @@ let Notification = function (
    * @return {[type]}         [description]
    */
   self.open = function (options) {
-    debugger;
     options = mergeJson(options, defOptions);
-    // let id = "";
-    // if (options.id) {
-    //   this.$layer.close(options.id);
-    //   id = options.id;
-    // } else {
-    //   id = `notification_${new Date().getTime()}_${seed++}`;
-    // }
-    let id = `notification_${new Date().getTime()}_${seed++}`;
+    let id = "";
+    if (options.id) {
+      if (document.getElementById(options.id)) {
+        self.close(options.id);
+      }
+
+      id = options.id;
+    } else {
+      id = `notification_${new Date().getTime()}_${seed++}`;
+    }
+    // let id = `notification_${new Date().getTime()}_${seed++}`;
     options.id = id;
     options.layer = self;
     let instance = new NotificationConstructor({
@@ -277,9 +279,12 @@ let Notification = function (
    * @param  {[type]} id [description]
    * @return {[type]}    [description]
    */
-  self.close = function (id) {
+  self.close = async function (id) {
     let oElm = document.getElementById(id);
     if (oElm) {
+      if (typeof self.instances[id].inst.cancel == "function") {
+        self.instances[id].inst.cancel(id);
+      }
       document.body.removeChild(oElm);
       delete self.instances[id];
       self.instancesVue[id].main.$destroy();

+ 5 - 1
src/components/mapView/range.vue

@@ -20,7 +20,7 @@
         <el-button size="mini" @click="clearAll">清除</el-button>
       </div>
     </div>
-    <div>
+    <div v-if="type != 'cutfill'">
       <span v-if="model.xzmj != 0">{{ model.xzmj }} 亩</span>
       <el-tooltip
         v-if="fileList.length > 0"
@@ -267,6 +267,10 @@ export default {
           // var parse = require("wellknown"); //引入wellknow
           const wktPolygon = parse.stringify(geojsonPolygon);
           // console.log("WKT Polygon:", wktPolygon);
+          if (this.$props.type == "cutfill") {
+            this.model.geom = wktPolygon;
+            return;
+          }
 
           const formdata = new FormData();
           // formdata.append("file", file.raw);

+ 104 - 10
src/utils/MapHelper/help.js

@@ -1,14 +1,108 @@
 import * as turf from "@turf/turf";
+import parse from "wellknown";
 export function getCentroid(geojson, eindex) {
-    if (turf.getType(geojson) === "Feature") {
-        geojson = geojson.geometry;
-    }
-    if (turf.getType(geojson) === "Polygon") {
-        return turf.centroid(geojson).geometry.coordinates;
-    } else if (turf.getType(geojson) === "MultiPolygon") {
-        let polygon = turf.polygon(geojson.coordinates[eindex]);
-        return turf.centroid(polygon).geometry.coordinates;
-    } else {
-        throw new Error("Unsupported geometry type");
+  if (turf.getType(geojson) === "Feature") {
+    geojson = geojson.geometry;
+  }
+  if (turf.getType(geojson) === "Polygon") {
+    return turf.centroid(geojson).geometry.coordinates;
+  } else if (turf.getType(geojson) === "MultiPolygon") {
+    let polygon = turf.polygon(geojson.coordinates[eindex]);
+    return turf.centroid(polygon).geometry.coordinates;
+  } else {
+    throw new Error("Unsupported geometry type");
+  }
+}
+// 数组变二维数组方法
+export function listToMatrix(list, elementsPerSubArray) {
+  var matrix = [],
+    i,
+    k;
+  for (i = 0, k = -1; i < list.length; i++) {
+    if (i % elementsPerSubArray === 0) {
+      k++;
+      matrix[k] = [];
     }
+    matrix[k].push(list[i]);
+  }
+  return matrix;
+}
+// 加载GeoJSON数据
+export function loadGeoJSON(geom, yanse, adata, fun) {
+  let geojson = typeof geom === 'string' ? parse(geom) : geom;
+  const dataSource = new Cesium.GeoJsonDataSource();
+  dataSource
+    .load(geojson, {
+      clampToGround: true,
+      stroke: Cesium.Color.fromCssColorString(yanse),
+      fill: Cesium.Color.fromCssColorString(yanse).withAlpha(0.8), //Cesium.Color.fromCssColorString("rgba(10, 95, 152, 0.4)"), //注意:颜色必须大写,即不能为blue
+      strokeWidth: adata ? adata.sw : 2,
+    })
+    .then((data) => {
+      fun(data)
+
+    });
+}
+/**
+    * 下载图片
+    */
+export function download(base64data, fu) {
+  var image = new Image();
+  image.src = base64data;
+  image.onload = function () {
+    var canvas = convertImageToCanvas(image, fu);
+    var url = canvas.toDataURL("image/jpeg");
+    var a = document.createElement("a");
+    var event = new MouseEvent("click");
+    a.download = new Date().getTime() + ".jpg"; // 指定下载图片的名称
+    a.href = url;
+    a.dispatchEvent(event); // 触发超链接的点击事件
+  };
+}
+/**
+     * 根据图片生成画布
+     */
+function convertImageToCanvas(image, fu) {
+  var canvas = document.createElement("canvas");
+  canvas.width = image.width;
+  canvas.height = image.height;
+  var ctx = canvas.getContext("2d");
+  ctx.drawImage(image, 0, 0);
+  fu(canvas, ctx)
+  // this.drawLegends(canvas, ctx);
+  return canvas;
+}
+// 绘制图例
+function drawLegends(canvas, ctx) {
+  var legends = this.sdh;
+  var padding = 10; // 图例与边缘的间距
+  var lineHeight = 30; // 每行图例的高度
+  var labW = 120;
+  var x = canvas.width - padding - labW; // 图例的起始X坐标
+  var y = canvas.height - legends.length * lineHeight - padding; // 图例的起始Y坐标
+  // 绘制颜色块
+  ctx.fillStyle = "#ffffff";
+  ctx.fillRect(
+    x - padding,
+    y - padding,
+    canvas.width - x + padding,
+    canvas.height - y + padding
+  );
+  legends.forEach(function (legend, index) {
+    // 绘制文本
+    ctx.fillStyle = "black";
+    ctx.fillText(
+      legend.scS + "小时",
+      x,
+      y + index * lineHeight + lineHeight / 2
+    );
+    // 绘制颜色块
+    ctx.fillStyle = legend.fill;
+    ctx.fillRect(
+      x + (labW / 3) * 2,
+      y + index * lineHeight,
+      30,
+      lineHeight
+    );
+  });
 }

文件差異過大導致無法顯示
+ 0 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js


+ 30 - 3
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue

@@ -8,7 +8,9 @@
     </el-row>
     <el-row :gutter="10">
       <el-col :span="24">
-        <el-tabs v-model="activeName" style="height: 100%" @tab-click="handleClick">
+        <el-tabs v-model="activeName" style="height: 100%" @tab-click="handleClick" v-loading="loading"
+          element-loading-text="正在分析....." element-loading-spinner="el-icon-loading"
+          element-loading-background="rgba(0, 0, 0, 0.8)">
           <el-tab-pane label="基准地价分析" name="first">
             <el-form ref="ruleForm" :model="form" :rules="rules" label-width="90px">
               <el-form-item label="项目名称" size="mini" prop="ProjectName">
@@ -133,7 +135,7 @@ import {
   midpoint,
   difference,
 } from "@turf/turf";
-import { getJZDJWord, listBenchmarkLandPrices, addBenchmarkLandPrices, updateBenchmarkLandPrices, addZtBenchmarkLandPriceResults, getBenchmarkLandPrices, listZtBenchmarkLandPriceResults } from "@/api/zt/ztApi.js";
+import { getJZDJWord, listBenchmarkLandPrices, addBenchmarkLandPrices, updateBenchmarkLandPrices, addZtBenchmarkLandPriceResults, getBenchmarkLandPrices, listZtBenchmarkLandPriceResults, getAnalyseResult } from "@/api/zt/ztApi.js";
 let handlerPolygon; var polygonEntity = null;
 export default {
   data() {
@@ -179,6 +181,7 @@ export default {
         pageNum: 1,
         pageSize: 10,
       },
+      loading: false
     };
   },
   components: {
@@ -343,8 +346,16 @@ export default {
     },
     submitForm(formName) {
       let that = this;
+      that.loading = true;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
+          var area = that.getRegionArea() / 666.66;
+          if (area > 3000) {
+            this.clear();
+            that.loading = false;
+            that.$alert("项目范围不要超过3000亩,请重新输入项目范围", "警告");
+            return false;
+          }
           that.form.id = uuidv4();
           that.form.analysisDate = moment(new Date()).format(
             "YYYY-MM-DD HH:mm:ss"
@@ -360,7 +371,9 @@ export default {
 
             debugger
             let data = JSON.parse(JSON.stringify(that.form));
+            // let response = await getAnalyseResult(data);
             BenchmarkLandPrice.calculateLandPrice(data, true, async function (response) {
+              that.loading = false;
               if (response) {
                 response.id = uuidv4();
                 response.BenchmarkLandPriceid = data.id;
@@ -385,9 +398,11 @@ export default {
               type: "success",
             });
           } else {
+            that.loading = false;
             this.$message.error("项目保存失败");
           }
         } else {
+          that.loading = false;
           return false;
         }
       });
@@ -494,7 +509,19 @@ export default {
       viewer.entities.add(polygonEntity);
       viewer.flyTo(polygonEntity)
     },
-
+    //范围面积
+    getRegionArea() {
+      debugger
+      var points1 = this.form.ProjectScope;
+      var parts1 = [];
+      var poly1;
+      for (var i = 0; i < points1.length; i++) {
+        parts1.push([points1[i].x, points1[i].y]);
+      }
+      poly1 = polygon([parts1]);
+      var textarea = area(poly1) * window.earthRadius;
+      return textarea;
+    },
 
     /**
      *  打开分析结果弹窗

+ 17 - 4
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue

@@ -55,7 +55,7 @@
           <el-col :span="12">
             <el-row :gutter="10" class="container_center">
               <el-col
-                :span="8"
+                :span="6"
                 class="container_center"
                 style="
                   height: 3rem;
@@ -66,13 +66,13 @@
                 <i style="font-size: 2rem" class="el-icon-discount"></i>
               </el-col>
               <el-col
-                :span="16"
+                :span="18"
                 class="container_center"
                 style="justify-content: flex-start"
               >
                 <div class="con-col" style="align-items: flex-start">
-                  <a style="color: white">计算地价面积</a>
-                  <a style="color: white">(亩)</a>
+                  <a style="color: white">计算地价面积(亩)</a>
+                  <!-- <a style="color: white">(亩)</a> -->
                   <a style="font-weight: bold; color: rgba(2, 167, 240, 1)">{{
                     Number(
                       info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList[0]
@@ -552,6 +552,8 @@ export default {
         },
       });
     },
+
+    isEntitieVisibility() {},
     /**
      * 打印分析报告
      */
@@ -707,6 +709,17 @@ export default {
         ],
       };
       this.myChart.setOption(option);
+      this.myChart.on("legendselectchanged", function (parmas) {
+        debugger;
+        var name = parmas.name;
+        var state = parmas.selected[name];
+        that.tableData.forEach((element) => {
+          if (element.ghyt == name) {
+            viewer.entities.getById(element.ghdkDetailedDjid).show = state;
+          }
+        });
+        var sd = that.tableData;
+      });
     },
 
     /**

+ 11 - 13
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue

@@ -526,10 +526,6 @@ import {
 } from "@/api/zt/ztApi.js";
 import zdAnalyse from './zdAnalyse.js'
 import { Loading } from 'element-ui';
-var handlerPolygon;
-var handleInput;
-var polygonEntity = null;
-
 var handlerPolygon;
 var handleInput;
 var polygonEntity = null;
@@ -3331,11 +3327,9 @@ export default {
         // }
       });
       handlerPolygon.drawEvt.addEventListener(function (result) {
-        // window.createTooltip.setVisible(false);
-        debugger;
-        console.log(result);
-        handlerPolygon.polygon.show = false;
-        handlerPolygon.polyline.show = false;
+
+        // handlerPolygon.polygon.show = false;
+        // handlerPolygon.polyline.show = false;
 
 
         var nPositions = [];
@@ -3351,7 +3345,8 @@ export default {
         }
 
         that.regions.push(that.regions[0]);
-        viewer.entities.removeById('polygon');
+
+        viewer.entities.removeAll();
         polygonEntity = new Cesium.Entity({
           id: 'polygon',
           // position: Cesium.Cartesian3.fromDegreesArray([
@@ -3373,12 +3368,13 @@ export default {
         viewer.entities.add(polygonEntity)
         that.curProjectInfo.regions = that.regions;
 
-        handlerPolygon.clear()
-        handlerPolygon.deactivate();
+
         // that.regions = [];
         // that.regions.push(that.positions);
         viewer.flyTo(polygonEntity)
 
+        handlerPolygon.clear()
+        handlerPolygon.deactivate();
       });
     },
     clipImage() {
@@ -3521,6 +3517,7 @@ export default {
       var area = that.getRegionArea() / 666.66;
       if (area > 3000) {
         that.$alert("项目范围不要超过3000亩,请重新输入项目范围", "警告");
+        viewer.entities.removeAll();
         return false;
       }
 
@@ -3681,6 +3678,7 @@ export default {
           var date = new Date()
           debugger
           that.ruleForm.projectName = "拆迁补偿项目_" + that.formatDateTimeToLong(date);
+          that.activeName="second"
         } else {
           console.log("error submit!!");
           return false;
@@ -3929,7 +3927,7 @@ export default {
       if (projectInfo)
         var promise = scene.outputSceneToFile();
       Cesium.when(promise, function (base64data) {
-        projectInfo.isUseDB=window.isUseDB;
+        projectInfo.isUseDB = window.isUseDB;
         expotZDBCWord(projectInfo)
       })
 

文件差異過大導致無法顯示
+ 0 - 0
src/views/ConstructionApplication3D/Demolition/zdAnalyse.js


+ 223 - 130
src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue

@@ -1,72 +1,139 @@
 <template>
-  <div class="ZTGlobal" style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white">
-
-    <el-row :gutter="5" style="border: 1px solid #06c4f3;padding: 0.5rem;color: #ffffff;">
+  <div
+    class="ZTGlobal"
+    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
+  >
+    <el-row
+      :gutter="5"
+      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+    >
       定点分析:
       <el-row :gutter="5">
         观察者高度(米):
-        <el-input-number size="small" label="观察者高度:" min="0" max="50" :step="0.5" precision="1"
-          v-model="personH"></el-input-number>
-        <el-col :span="8"><el-button size="mini" type="default" @click="addGCD">添加观察点</el-button>
+        <el-input-number
+          size="small"
+          label="观察者高度:"
+          min="0"
+          max="50"
+          :step="0.5"
+          precision="1"
+          v-model="personH"
+        ></el-input-number>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="addGCD"
+            >添加观察点</el-button
+          >
         </el-col>
-        <el-col :span="8"><el-button size="mini" type="default" @click="addTagget">添加目标点</el-button>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="addTagget"
+            >添加目标点</el-button
+          >
         </el-col>
         <el-col :span="7">
-          <el-button size="mini" type="default" @click="changeView">切换视角</el-button>
+          <el-button size="mini" type="default" @click="changeView"
+            >切换视角</el-button
+          >
         </el-col>
       </el-row>
       绿线为可见区域,红线为不可见区域
     </el-row>
-    <el-row :gutter="5" style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
+    <el-row
+      :gutter="5"
+      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+    >
       环视分析:
       <el-row :gutter="5">
-        <el-col :span="8"><el-button size="mini" type="default" @click="addCirclePoint">添加环视点</el-button>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="addCirclePoint"
+            >添加环视点</el-button
+          >
         </el-col>
       </el-row>
       <el-row :gutter="5">
+        <el-col :span="10"> 环视角度(度): </el-col>
         <el-col :span="10">
-          环视角度(度): </el-col>
-        <el-col :span="10">
-          <el-input-number size="mini" v-model="circlePitch" min="0" max="90"
-            @change="circlePitchChange"></el-input-number></el-col>
+          <el-input-number
+            size="mini"
+            v-model="circlePitch"
+            min="0"
+            max="90"
+            @change="circlePitchChange"
+          ></el-input-number
+        ></el-col>
       </el-row>
       <el-row :gutter="5">
+        <el-col :span="10"> 环视高度(米):</el-col>
         <el-col :span="10">
-          环视高度(米):</el-col>
-        <el-col :span="10">
-          <el-input-number size="mini" v-model="circleH" min="0" max="5000" @change="circleHChange"></el-input-number>
+          <el-input-number
+            size="mini"
+            v-model="circleH"
+            min="0"
+            max="5000"
+            @change="circleHChange"
+          ></el-input-number>
         </el-col>
       </el-row>
       <el-row>
-        <el-col :span="8"><el-button ref="flyCrile" size="mini" type="default" @click="targetRing()">{{ flyCircleText
-        }}</el-button>
+        <el-col :span="8"
+          ><el-button
+            ref="flyCrile"
+            size="mini"
+            type="default"
+            @click="targetRing()"
+            >{{ flyCircleText }}</el-button
+          >
         </el-col>
       </el-row>
     </el-row>
-    <el-row :gutter="5" style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
+    <el-row
+      :gutter="5"
+      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+    >
       沿线飞行:
       <el-row :gutter="2">
-        <el-col :span="8"><el-button size="mini" type="default" @click="addPolyline">绘制线</el-button>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="addPolyline"
+            >绘制线</el-button
+          >
         </el-col>
-        <el-col :span="8"><el-button size="mini" type="default" @click="startPolylineFly">飞行</el-button>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="startPolylineFly"
+            >飞行</el-button
+          >
         </el-col>
-        <el-col :span="8"><el-button size="mini" type="default" @click="stopPolylineFly">停止飞行</el-button>
+        <el-col :span="8"
+          ><el-button size="mini" type="default" @click="stopPolylineFly"
+            >停止飞行</el-button
+          >
         </el-col>
       </el-row>
       <el-row :gutter="2">
         飞行高度(米):
-        <el-input-number size="small" label="飞行高度:" min="0" max="2000" v-model="flyH"></el-input-number>
+        <el-input-number
+          size="small"
+          label="飞行高度:"
+          min="0"
+          max="2000"
+          v-model="flyH"
+        ></el-input-number>
       </el-row>
       <el-row :gutter="2">
         飞行速度(km/h):
-        <el-input-number size="small" label="飞行速度:" min="0" max="120" v-model="flySpeed"></el-input-number>
+        <el-input-number
+          size="small"
+          label="飞行速度:"
+          min="0"
+          max="120"
+          v-model="flySpeed"
+        ></el-input-number>
       </el-row>
     </el-row>
-    <el-row>
-    </el-row>
+    <el-row> </el-row>
     <el-row :gutter="5">
       <el-col :span="8">
-        <el-button size="mini" type="default" @click="clearScope">清除</el-button>
+        <el-button size="mini" type="default" @click="clearScope"
+          >清除</el-button
+        >
       </el-col>
     </el-row>
   </div>
@@ -83,11 +150,12 @@ import {
 let handlerPoint = null; //绘制线
 var sightline;
 var flyManager;
+var points = [];
 export default {
   data() {
     return {
       tooltip: createTooltip(document.body),
-      points: [],
+      // points: [],
       addViewFlag: false, //当前点击状态是否是 添加观察点
       addTargetFlag: false, //当前点击状态是否是 添加目标点,
 
@@ -103,7 +171,7 @@ export default {
       circleH: 500,
       flyH: 20,
       flySpeed: 50,
-      lineFylPoints: []
+      lineFylPoints: [],
     };
   },
   props: {
@@ -147,7 +215,7 @@ export default {
       that.addViewFlag = true;
       that.addTargetFlag = false;
 
-      that.addCircleFlag = false
+      that.addCircleFlag = false;
 
       that.isFrom2To = true;
       if (handlerPoint) handlerPoint.clear();
@@ -171,7 +239,7 @@ export default {
       let that = this;
       that.addViewFlag = false;
       that.addTargetFlag = true;
-      that.addCircleFlag = false
+      that.addCircleFlag = false;
       that.setInput();
     },
     /**
@@ -181,7 +249,7 @@ export default {
       let that = this;
       that.addViewFlag = false;
       that.addTargetFlag = false;
-      that.addCircleFlag = true
+      that.addCircleFlag = true;
       that.setInput();
     },
     /**
@@ -205,9 +273,9 @@ export default {
           cartographic[2] += that.personH;
           sightline.viewPosition = cartographic;
           that.addViewFlag = false;
-          viewer.entities.removeById('gcPoint');
+          viewer.entities.removeById("gcPoint");
           var labelentity = new Cesium.Entity({
-            id: 'gcPoint',
+            id: "gcPoint",
             position: Cesium.Cartesian3.fromDegrees(
               cartographic[0],
               cartographic[1],
@@ -246,7 +314,7 @@ export default {
           // that.points.push(entity)
           // viewer.entities.add(entity);
           that.gcPoint = cartographic;
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
         } else if (that.addTargetFlag) {
           //添加目标点
@@ -255,9 +323,9 @@ export default {
             position: cartographic,
             name: "目标点",
           });
-          viewer.entities.removeById('targetPoint');
+          viewer.entities.removeById("targetPoint");
           var labelentity = new Cesium.Entity({
-            id: 'targetPoint',
+            id: "targetPoint",
             position: position,
             point: {
               // 点的大小(像素)
@@ -289,17 +357,16 @@ export default {
               ), //达到一定高度隐藏
             },
           });
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
           that.addTargetFlag = false;
           that.targetPoint = cartographic;
           sightline.build();
           that.ComputationalPerspective();
-        }
-        else if (that.addCircleFlag) {
-          viewer.entities.removeById('circlePoint');
+        } else if (that.addCircleFlag) {
+          viewer.entities.removeById("circlePoint");
           var labelentity = new Cesium.Entity({
-            id: 'circlePoint',
+            id: "circlePoint",
             position: position,
             point: {
               // 点的大小(像素)
@@ -331,7 +398,7 @@ export default {
               ), //达到一定高度隐藏
             },
           });
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
           that.addCircleFlag = false;
           that.circlPoint = cartographic;
@@ -347,9 +414,14 @@ export default {
     ComputationalPerspective() {
       var point1;
       var point2;
-      debugger
-      if (sightline.viewPosition[0] == 0 || sightline.viewPosition[1] == 0 || sightline._currentTargetPoint[0] == 0 || sightline._currentTargetPoint[1] == 0) {
-        this.$message.warning("请添加观察点或目标点")
+      debugger;
+      if (
+        sightline.viewPosition[0] == 0 ||
+        sightline.viewPosition[1] == 0 ||
+        sightline._currentTargetPoint[0] == 0 ||
+        sightline._currentTargetPoint[1] == 0
+      ) {
+        this.$message.warning("请添加观察点或目标点");
         return;
       }
       if (this.isFrom2To) {
@@ -417,51 +489,52 @@ export default {
      */
     clearScope() {
       viewer.entities.removeAll();
-      this.points = [];
+      points = [];
       sightline.removeAllTargetPoint();
       if (handlerPoint) {
         handlerPoint.clear();
         handlerPoint.deactivate();
       }
       this.tooltip.setVisible(false);
-      if (flyManager)
-        flyManager.stop();
+      if (flyManager) flyManager.stop();
       flyManager = null;
       this.lineFylPoints = [];
       scene.camera.stopFlyCircle();
-      this.flyCircleText = '环视漫游'
+      this.flyCircleText = "环视漫游";
     },
     /**
      * 目标点环视
      */
     targetRing() {
-      var that = this
+      var that = this;
       that.flyCircleLoop = !that.flyCircleLoop;
       if (that.circlPoint) {
-        var position = Cesium.Cartesian3.fromDegrees(that.circlPoint[0], that.circlPoint[1], that.circlPoint[2] + 1000)
+        var position = Cesium.Cartesian3.fromDegrees(
+          that.circlPoint[0],
+          that.circlPoint[1],
+          that.circlPoint[2] + 1000
+        );
         // scene.camera.zoomIn(500)
         scene.camera.setView({
           destination: position,
           orientation: {
             heading: Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
-            pitch: Cesium.Math.toRadians(that.circlePitch * -1),    // default value (looking down)
-            roll: 0.0                             // default value
-          }
-        })
-        scene.camera.flyCircle(position)
-        scene.camera.speedRatio = 0.2
-      }
-      else {
-        that.$message.warning('请添加环视点!');
+            pitch: Cesium.Math.toRadians(that.circlePitch * -1), // default value (looking down)
+            roll: 0.0, // default value
+          },
+        });
+        scene.camera.flyCircle(position);
+        scene.camera.speedRatio = 0.2;
+      } else {
+        that.$message.warning("请添加环视点!");
         return;
       }
       // scene.camera.flyCircleLoop = that.flyCircleLoop;
       if (that.flyCircleLoop == true) {
-        that.flyCircleText = '停止环视'
-      }
-      else {
-        that.flyCircleText = '环视漫游'
-        scene.camera.stopFlyCircle()
+        that.flyCircleText = "停止环视";
+      } else {
+        that.flyCircleText = "环视漫游";
+        scene.camera.stopFlyCircle();
       }
     },
     /**
@@ -469,39 +542,46 @@ export default {
      */
     circleHChange() {
       scene.camera.setView({
-        destination: Cesium.Cartesian3.fromDegrees(this.circlPoint[0], this.circlPoint[1], this.circlPoint[2] + Number(this.circleH)),
+        destination: Cesium.Cartesian3.fromDegrees(
+          this.circlPoint[0],
+          this.circlPoint[1],
+          this.circlPoint[2] + Number(this.circleH)
+        ),
         orientation: {
           heading: Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
-          pitch: Cesium.Math.toRadians(this.circlePitch * -1),    // default value (looking down)
-          roll: 0.0                             // default value
-        }
-      })
+          pitch: Cesium.Math.toRadians(this.circlePitch * -1), // default value (looking down)
+          roll: 0.0, // default value
+        },
+      });
     },
     /**
      * 修改环视角度
      */
     circlePitchChange() {
       scene.camera.setView({
-        destination: Cesium.Cartesian3.fromDegrees(this.circlPoint[0], this.circlPoint[1], this.circlPoint[2] + Number(this.circleH)),
+        destination: Cesium.Cartesian3.fromDegrees(
+          this.circlPoint[0],
+          this.circlPoint[1],
+          this.circlPoint[2] + Number(this.circleH)
+        ),
         orientation: {
           heading: Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
-          pitch: Cesium.Math.toRadians(this.circlePitch * -1),    // default value (looking down)
-          roll: 0.0                             // default value
-        }
-      })
+          pitch: Cesium.Math.toRadians(this.circlePitch * -1), // default value (looking down)
+          roll: 0.0, // default value
+        },
+      });
     },
     /**
      * 绘制飞行线
      */
     addPolyline() {
       var that = this;
-      that.lineFylPoints = []
-      if (handlerPoint)
-        handlerPoint.clear()
+      that.lineFylPoints = [];
+      if (handlerPoint) handlerPoint.clear();
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Line);
       handlerPoint.activate();
       handlerPoint.drawEvt.addEventListener(function (result) {
-        debugger
+        debugger;
         var positions = result.object.positions;
         for (var i = 0; i < positions.length; i++) {
           var cartographic = that.Cartesian2toDegrees(positions[i]);
@@ -509,7 +589,7 @@ export default {
         }
         //将获取的点的位置转化成经纬度
         handlerPoint.deactivate();
-      })
+      });
     },
     /**
      * 开始沿线飞行
@@ -517,86 +597,99 @@ export default {
     startPolylineFly() {
       var that = this;
       if (that.lineFylPoints == null || that.lineFylPoints.length == 0) {
-        that.$message.warning('请绘制飞行路线!');
+        that.$message.warning("请绘制飞行路线!");
         return;
       }
-      debugger
+      debugger;
       var speed = Number(that.flySpeed) / 3.6;
-      var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
+      var xml =
+        '<?xml version="1.0" encoding="UTF-8"?>' +
         '<SceneRoute xmlns = "https://www.supermap.com/ugc60" >' +
-        '<route name="飞行路线_1" speed="' + speed + '" lineType="0" showroutestop="False" showrouteline="False" altitudefree="False" headingfree="False" tiltfree="False" flycircle="False" alongline="True">' +
-        '<style>' +
-        '<geostyle3d>' +
-        '<linecolor>RGBA(147,112,219,255)</linecolor>' +
-        '<linewidth>2</linewidth>' +
-        '<altitudeMode>Absolute</altitudeMode>' +
-        '<bottomAltitude>0.00</bottomAltitude>' +
-        '</geostyle3d>' +
-        '</style>'
+        '<route name="飞行路线_1" speed="' +
+        speed +
+        '" lineType="0" showroutestop="False" showrouteline="False" altitudefree="False" headingfree="False" tiltfree="False" flycircle="False" alongline="True">' +
+        "<style>" +
+        "<geostyle3d>" +
+        "<linecolor>RGBA(147,112,219,255)</linecolor>" +
+        "<linewidth>2</linewidth>" +
+        "<altitudeMode>Absolute</altitudeMode>" +
+        "<bottomAltitude>0.00</bottomAltitude>" +
+        "</geostyle3d>" +
+        "</style>";
       that.lineFylPoints.forEach((point, index) => {
-        xml += '<routestop name="Stop+' + (index + 1) + '" speed="0" excluded="False" viewType="camera">' +
-          '<camera>' +
-          '<longitude>' + point[0] + '</longitude>' +
-          '<latitude>' + point[1] + '</latitude>' +
-          '<altitude>' + (point[2] + that.flyH) + '</altitude>' +
-          '<heading>0</heading>' +
-          '<tilt>78.531727283418646834</tilt>' +
-          '<altitudeMode>Absolute</altitudeMode>' +
-          '</camera>' +
-          '<style>' +
-          '<geostyle3d>' +
-          '<icon />' +
-          '<markersize>4.8</markersize>' +
-          '<markericonscale>1</markericonscale>' +
-          '<markercolor>RGBA(255,255,255,255)</markercolor>' +
-          '</geostyle3d>' +
-          '</style>' +
-          '<setting>' +
-          '<turnTime>1.5</turnTime>' +
-          '<turnSlowly>False</turnSlowly>' +
-          '<stopPlayMode>StopPause</stopPlayMode>' +
-          '<autoPlay>False</autoPlay>' +
-          '<pauseTime>0</pauseTime>' +
-          '<angularSpeed>1</angularSpeed>' +
-          ' </setting>' +
-          '</routestop>';
-      })
-      xml += '</route>'
-      xml += '</SceneRoute >'
+        xml +=
+          '<routestop name="Stop+' +
+          (index + 1) +
+          '" speed="0" excluded="False" viewType="camera">' +
+          "<camera>" +
+          "<longitude>" +
+          point[0] +
+          "</longitude>" +
+          "<latitude>" +
+          point[1] +
+          "</latitude>" +
+          "<altitude>" +
+          (point[2] + that.flyH) +
+          "</altitude>" +
+          "<heading>0</heading>" +
+          "<tilt>78.531727283418646834</tilt>" +
+          "<altitudeMode>Absolute</altitudeMode>" +
+          "</camera>" +
+          "<style>" +
+          "<geostyle3d>" +
+          "<icon />" +
+          "<markersize>4.8</markersize>" +
+          "<markericonscale>1</markericonscale>" +
+          "<markercolor>RGBA(255,255,255,255)</markercolor>" +
+          "</geostyle3d>" +
+          "</style>" +
+          "<setting>" +
+          "<turnTime>1.5</turnTime>" +
+          "<turnSlowly>False</turnSlowly>" +
+          "<stopPlayMode>StopPause</stopPlayMode>" +
+          "<autoPlay>False</autoPlay>" +
+          "<pauseTime>0</pauseTime>" +
+          "<angularSpeed>1</angularSpeed>" +
+          " </setting>" +
+          "</routestop>";
+      });
+      xml += "</route>";
+      xml += "</SceneRoute >";
       var routes = new Cesium.RouteCollection(viewer.entities);
       routes.fromXML(xml);
       //初始化飞行管理
       flyManager = new Cesium.FlyManager({
         scene: scene,
-        routes: routes
+        routes: routes,
       });
       //注册站点到达事件
       flyManager.stopArrived.addEventListener(function (routeStop) {
         routeStop.waitTime = 1; // 在每个站点处停留1s
       });
-      flyManager.readyPromise.then(function () { // 飞行路线就绪
+      flyManager.readyPromise.then(function () {
+        // 飞行路线就绪
         var currentRoute = flyManager.currentRoute;
-        console.log(currentRoute.totalDuration + "秒")
+        console.log(currentRoute.totalDuration + "秒");
         currentRoute.isLineVisible = false;
         currentRoute.isStopVisible = false;
         //生成飞行文件中的所有站点列表
         // var allStops = flyManager.getAllRouteStops();
         flyManager && flyManager.play();
-      })
+      });
     },
     /**
      * 停止沿线飞行
      */
     stopPolylineFly() {
       var allStops = flyManager.getAllRouteStops();
-      flyManager.viewToStop(allStops[allStops.length - 1])
+      flyManager.viewToStop(allStops[allStops.length - 1]);
       flyManager && flyManager.stop();
-    }
+    },
   },
   beforeDestroy() {
     this.clearScope();
   },
-}
+};
 </script>
 <style lang="scss">
 @import "@/../../zt.scss";

+ 6 - 2
src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue

@@ -142,8 +142,12 @@ export default {
           };
           //人工核算指标
 
-          let rgzbData = (await getZtProjectModelZb(Data.Minfo.id)).data || {};
-          let rgzbid = rgzbData.id ? rgzbData.id : Data.Minfo.id;
+          let rgzbData =
+            (await getZtProjectModelZb(Data.Minfo.id + "" + Data.KG_Data.DKBM))
+              .data || {};
+          let rgzbid = rgzbData.id
+            ? rgzbData.id
+            : Data.Minfo.id + "" + Data.KG_Data.DKBM;
           let rgzb = rgzbData.zbcs ? JSON.parse(rgzbData.zbcs) : {};
           let TableData = [];
           let YDMJrow = {};

+ 2 - 2
src/views/ConstructionApplication3D/ZYAnalysisinfo/ZYAnalysisinfo.vue

@@ -19,7 +19,7 @@
           @current-change="handleCurrentChange"
           style="width: 100%"
         >
-          <el-table-column label="地类图斑类型" align="center">
+          <el-table-column label="规划类型" align="center">
             <template #default="{ row }">
               {{
                 row.data.find((c) => c.label == "DLMC")
@@ -28,7 +28,7 @@
               }}
             </template>
           </el-table-column>
-          <el-table-column label="图斑面积(㎡)" align="center">
+          <el-table-column label="规划面积(㎡)" align="center">
             <template #default="{ row }">
               {{
                 row.data.find((c) => c.label == "TBMJ")

+ 1 - 0
src/views/ConstructionApplication3D/billboard/billboardCheckList.vue

@@ -170,6 +170,7 @@ export default {
      * @param {*} row
      */
     check(row) {
+      this.locationClick(row);
       if (this.deltailLayerId != null) this.$layer.close(this.deltailLayerId);
       var width = 400;
 

+ 12 - 4
src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue

@@ -110,23 +110,31 @@ export default {
   created() {
     let that = this;
     if (that.info.template) {
-      that.info.template = JSON.parse(that.info.template);
+      if (typeof that.info.template === "string") {
+        that.info.template = JSON.parse(that.info.template);
+      }
     } else {
       that.info.template = {};
     }
 
     if (that.info.templateBottom) {
-      that.info.templateBottom = JSON.parse(that.info.templateBottom);
+      if (typeof that.info.templateBottom === "string") {
+        that.info.templateBottom = JSON.parse(that.info.templateBottom);
+      }
     } else {
       that.info.templateBottom = {};
     }
     if (that.info.templateCentre) {
-      that.info.templateCentre = JSON.parse(that.info.templateCentre);
+      if (typeof that.info.templateCentre === "string") {
+        that.info.templateCentre = JSON.parse(that.info.templateCentre);
+      }
     } else {
       that.info.templateCentre = {};
     }
     if (that.info.templateTop) {
-      that.info.templateTop = JSON.parse(that.info.templateTop);
+      if (typeof that.info.templateTop === "string") {
+        that.info.templateTop = JSON.parse(that.info.templateTop);
+      }
     } else {
       that.info.templateTop = {};
     }

+ 41 - 24
src/views/ConstructionApplication3D/billboard/billboardDesign.vue

@@ -43,10 +43,11 @@
                 ></i>
                 <a @click="billboarddetial(item)">详情</a>
               </el-col>
+              <!-- v-if="!item.dataurl" -->
               <el-col class="con-col hover_style" style="cursor: pointer">
                 <i
                   style="font-size: 2rem"
-                  class="el-icon-location-outline"
+                  class="el-icon-folder-add"
                   @click="importModel(item)"
                 ></i>
                 <a @click="importModel(item)">导入模型</a>
@@ -62,7 +63,7 @@
               <el-col class="con-col hover_style" style="cursor: pointer">
                 <i
                   style="font-size: 2rem"
-                  class="el-icon-location-outline"
+                  class="el-icon-tickets"
                   @click="checkModel(item)"
                 ></i>
                 <a @click="checkModel(item)">审查</a>
@@ -70,7 +71,7 @@
               <el-col class="con-col hover_style" style="cursor: pointer">
                 <i
                   style="font-size: 2rem"
-                  class="el-icon-share"
+                  class="el-icon-delete"
                   @click="deleteBillard(item)"
                 ></i>
                 <a @click="deleteBillard(item)">删除</a>
@@ -114,6 +115,7 @@ import {
   listZtBillboardInfoList,
   listBillboardModelList,
   delZtBillboardInfoList,
+  getBillboardModelList,
 } from "@/api/zt/ztApi.js";
 let entityList = [];
 export default {
@@ -396,27 +398,35 @@ export default {
      */
     DrawBillboard(billboardModel) {
       if (billboardModel.template) {
-        billboardModel.template = JSON.parse(billboardModel.template);
+        if (typeof billboardModel.template === "string") {
+          billboardModel.template = JSON.parse(billboardModel.template);
+        }
       } else {
         billboardModel.template = {};
       }
 
       if (billboardModel.templateBottom) {
-        billboardModel.templateBottom = JSON.parse(
-          billboardModel.templateBottom
-        );
+        if (typeof billboardModel.templateBottom === "string") {
+          billboardModel.templateBottom = JSON.parse(
+            billboardModel.templateBottom
+          );
+        }
       } else {
         billboardModel.templateBottom = {};
       }
       if (billboardModel.templateCentre) {
-        billboardModel.templateCentre = JSON.parse(
-          billboardModel.templateCentre
-        );
+        if (typeof billboardModel.templateCentre === "string") {
+          billboardModel.templateCentre = JSON.parse(
+            billboardModel.templateCentre
+          );
+        }
       } else {
         billboardModel.templateCentre = {};
       }
       if (billboardModel.templateTop) {
-        billboardModel.templateTop = JSON.parse(billboardModel.templateTop);
+        if (typeof billboardModel.templateTop === "string") {
+          billboardModel.templateTop = JSON.parse(billboardModel.templateTop);
+        }
       } else {
         billboardModel.templateTop = {};
       }
@@ -844,14 +854,15 @@ export default {
       this.getEntitiesHandler = new Cesium.ScreenSpaceEventHandler(
         scene.canvas
       );
-      this.getEntitiesHandler.setInputAction(function (click) {
+      this.getEntitiesHandler.setInputAction(async function (click) {
         var pick = viewer.scene.pick(click.position);
         debugger;
         //广告牌信息弹窗
         if (pick && pick.id.id && pick.id.id.indexOf("_") !== -1) {
           let id = pick.id.id.split("_")[2];
-          let info = window.billboardModelList.find((c) => c.id == id);
-          that.openOBJInfo("广告牌信息详情", info);
+          // let info = window.billboardModelList.find((c) => c.id == id);
+          let info = await getBillboardModelList(id);
+          that.openOBJInfo("广告牌信息详情", info.data);
         }
       }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
     },
@@ -919,17 +930,23 @@ export default {
     intoModel(info) {
       if (info.url && this.selectBillardId != info.id) {
         this.selectBillardId = info.id;
-        try {
-          var promisse11w = scene.open(info.url);
-          Cesium.when(promisse11w, function (layers) {
-            layers.forEach((element) => {
-              that.thislayers.push(element.name);
+        this.thislayers.forEach((element) => {
+          scene.layers.remove(element);
+        });
+        this.thislayers = [];
+        setTimeout(function () {
+          try {
+            var promisse11w = scene.open(info.url);
+            Cesium.when(promisse11w, function (layers) {
+              layers.forEach((element) => {
+                that.thislayers.push(element.name);
+              });
             });
-          });
-          this.yp(info);
-        } catch (error) {
-          console.log(error);
-        }
+            this.yp(info);
+          } catch (error) {
+            console.log(error);
+          }
+        }, 1000);
       }
     },
 

+ 56 - 0
src/views/ConstructionApplication3D/billboard/billboarddetail.vue

@@ -34,6 +34,13 @@
   </div>
 </template>
 <script>
+import {
+  cartesian3ToWGS84,
+  mapQuery,
+  flatten,
+  mercator2lonLat,
+  undergroundMode,
+} from "@/utils/MapHelper/MapHelper.js";
 import { listBillboardModelList } from "@/api/zt/ztApi.js";
 export default {
   data() {
@@ -71,12 +78,61 @@ export default {
   methods: {
     async init() {
       let that = this;
+      debugger;
+      // if (that.info.projectInfo.dataurl) {
+      //   let queryBySQLParameters = {
+      //     getFeatureMode: "SQL",
+      //     datasetNames: [that.info.projectInfo.datasourcename + ":" + "GGP"],
+      //     queryParameter: {
+      //       attributeFilter: "1=1",
+      //     },
+      //     hasGeometry: "true",
+      //   };
+      //   let e = await mapQuery(
+      //     that.info.projectInfo.dataurl +
+      //       "/featureResults.json?returnContent=true",
+      //     queryBySQLParameters
+      //   );
+      //   if (e && e.totalCount > 0) {
+      //     e.features.forEach((feature) => {
+      //       let featureData = {
+      //         id: uuidv4(),
+      //         data: [],
+      //         geometry: feature.geometry,
+      //       };
 
+      //       feature.fieldNames.forEach((fieldName, i) => {
+      //         let Field = e.datasetInfos
+      //           ? e.datasetInfos[0].fieldInfos.find(
+      //               (c) =>
+      //                 c.name &&
+      //                 c.name.toUpperCase() == fieldName.toUpperCase() &&
+      //                 c.name.toUpperCase().indexOf("SM") == -1
+      //             )
+      //           : null;
+      //         if (Field) {
+      //           featureData.data.push({
+      //             label: fieldName,
+      //             labelCN: Field ? Field.caption : fieldName,
+      //             value: feature.fieldValues[i],
+      //           });
+      //         }
+      //       });
+      //       featureDataList.push(featureData);
+      //     });
+      //     debugger;
+      //     this.billboardModelList = [];
+      //   } else {
+      //     this.billboardModelList = [];
+      //   }
+      // } else {
       let data = await listBillboardModelList({
         billboardInfoId: that.info.projectInfo.id,
       });
       debugger;
       this.billboardModelList = data.rows;
+      // }
+
       // this.billboardModelList = window.billboardModelList.filter(
       //   (c) => c.billboardInfoId == that.info.projectInfo.id
       // );

+ 30 - 5
src/views/ConstructionApplication3D/billboard/billboarddetailInfo.vue

@@ -206,11 +206,36 @@ export default {
     },
   },
   computed: {},
-  mounted() {
-    this.$nextTick(function () {
-      let sd = this.info;
-      debugger;
-    });
+  created() {
+    if (this.info.template) {
+      if (typeof this.info.template === "string") {
+        this.info.template = JSON.parse(this.info.template);
+      }
+    } else {
+      this.info.template = {};
+    }
+
+    if (this.info.templateBottom) {
+      if (typeof this.info.templateBottom === "string") {
+        this.info.templateBottom = JSON.parse(this.info.templateBottom);
+      }
+    } else {
+      this.info.templateBottom = {};
+    }
+    if (this.info.templateCentre) {
+      if (typeof this.info.templateCentre === "string") {
+        this.info.templateCentre = JSON.parse(this.info.templateCentre);
+      }
+    } else {
+      this.info.templateCentre = {};
+    }
+    if (this.info.templateTop) {
+      if (typeof this.info.templateTop === "string") {
+        this.info.templateTop = JSON.parse(this.info.templateTop);
+      }
+    } else {
+      this.info.templateTop = {};
+    }
 
     // this.init();
   },

文件差異過大導致無法顯示
+ 0 - 0
src/views/ConstructionApplication3D/projectManagement/CheckParkAnalyse.js


+ 47 - 11
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -381,13 +381,13 @@
                       <el-button size="mini" type="primary" plain
                         >模型对比</el-button
                       >
-                      <el-button
+                      <!-- <el-button
                         style="margin-left: 10px"
                         size="mini"
                         type="primary"
                         plain
                         >模型注册</el-button
-                      >
+                      > -->
                     </el-col>
                   </el-row>
 
@@ -2190,8 +2190,6 @@ export default {
       let that = this;
       let DKBM = [];
       if (that.LandPlanningList.length > 0) {
-        let ps = [];
-
         let layer = flatten(window.layerTree).find(
           (item) => item.core == "004004"
         );
@@ -2202,12 +2200,40 @@ export default {
             GHYDindex++
           ) {
             const GHYDlayerData = that.LandPlanningList[GHYDindex];
-
             let bm = GHYDlayerData.data.find((c) => c.label == "DKBM");
             if (bm && bm.value) {
               DKBM.push(bm.value);
             }
 
+            //基础高度(地形高度)加入地形后可删除
+            let jcgd = 0;
+            //获取模型信息
+            let queryBySQLParameters = {
+              getFeatureMode: "SQL",
+              datasetNames: [Minfo.datasourcename + ":项目范围"],
+              queryParameter: {
+                attributeFilter: " DKBM = '" + bm.value + "'",
+              },
+              hasGeometry: true,
+            };
+            let exmfw = await mapQuery(
+              Minfo.dataurl + "/featureResults.json?returnContent=true",
+              queryBySQLParameters
+            );
+
+            if (exmfw && exmfw.totalCount > 0) {
+              exmfw.features.forEach((feature) => {
+                feature.fieldNames.forEach((fieldName, i) => {
+                  if (
+                    fieldName == "BASEH" &&
+                    Number(feature.fieldValues[i]) > jcgd
+                  ) {
+                    jcgd = Number(feature.fieldValues[i]);
+                  }
+                });
+              });
+            }
+
             let queryByGeometryParameters = {
               getFeatureMode: "SQL",
               datasetNames: [
@@ -2262,6 +2288,14 @@ export default {
                   ps.push(element.y);
                   ps.push(0);
                 }
+                debugger;
+
+                //限高高度
+                let xg = 87.4;
+                let xgdata = GHYDlayerData.data.find((c) => c.label == "JZXGD");
+                if (xgdata && xgdata.value) {
+                  xg = Number(xgdata.value);
+                }
 
                 //添加建筑退线线
                 var orangePolygon1 = viewer.entities.add({
@@ -2269,7 +2303,7 @@ export default {
 
                   polygon: {
                     hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(ps),
-                    extrudedHeight: 87.4,
+                    extrudedHeight: xg + jcgd,
                     perPositionHeight: true,
                     material: Cesium.Color.CHARTREUSE.withAlpha(0.1),
                     outline: true,
@@ -2625,18 +2659,20 @@ export default {
             (t) => t.landNo == item.KG_Data.DKBM
           );
           if (land == null) continue;
-          tableDataList[i].FA_Data.JZMJ = land.mj;
+          tableDataList[i].FA_Data.JZMJ = land.jrmj;
           tableDataList[i].FA_Data.JRJZMJ = land.jrmj;
           debugger;
           //20240814改为使用建筑面积计算容积率
-          // tableDataList[i].FA_Data.RJL = (land.jrmj / item.FA_Data.YDMJ).toFixed(2);
           tableDataList[i].FA_Data.RJL = (
-            (land.mj - land.dxjzmj) /
-            item.FA_Data.YDMJ
+            land.jrmj / item.FA_Data.YDMJ
           ).toFixed(2);
+          // tableDataList[i].FA_Data.RJL = (
+          //   (land.mj - land.dxjzmj) /
+          //   item.FA_Data.YDMJ
+          // ).toFixed(2);
           //开发商提交的方案文档指标
           debugger;
-          tableDataList[i].TJFA_Data.JZMJ = land.famj;
+          tableDataList[i].TJFA_Data.JZMJ = land.fajrmj;
           tableDataList[i].TJFA_Data.JRJZMJ = land.fajrmj;
           tableDataList[i].infoData = land;
         }

+ 8 - 2
src/views/ConstructionApplication3D/zt.scss

@@ -303,14 +303,20 @@
 .el-icon-s-operation,
 .el-icon-location-outline,
 .el-icon-share,
-.el-icon-delete {
+.el-icon-delete,
+.el-icon-folder-add,
+.el-icon-tickets
+{
   color: #20a0fc;
 }
 
 .el-icon-s-operation+a,
 .el-icon-location-outline+a,
 .el-icon-share+a,
-.el-icon-delete+a {
+.el-icon-delete+a,
+.el-icon-folder-add+a,
+.el-icon-tickets+a
+{
   color: #cddeeb;
 }
 

+ 74 - 14
src/views/farmlandProtection/components/fxjg.vue

@@ -1,5 +1,5 @@
 <template>
-  <div >
+  <div>
     <div class="fxjg">
       <div class="downloadDiv">
         <div>
@@ -19,7 +19,7 @@
             <span style="color: #fff">图斑数(个)</span>
             <!-- <span color="#2d8cf0" v-if="xmxx">{{ xmxx.sumNumber }}</span> -->
             <span color="#2d8cf0" v-if="resultData && resultData.xmxx"
-              >{{ resultData.xmxx.sumNumber }}个</span
+              >{{ resultData.xmxx.sumNumber || 0 }}个</span
             >
           </div>
         </div>
@@ -30,7 +30,7 @@
           <div class="divText">
             <span style="color: #fff">图斑面积(㎡)</span>
             <span color="#2d8cf0" v-if="resultData && resultData.xmxx"
-              >{{ resultData.xmxx.sumMj }}平方米</span
+              >{{ resultData.xmxx.sumMj || 0 }}平方米</span
             >
           </div>
         </div>
@@ -69,7 +69,7 @@
                 <span style="color: #fff">{{ item2.bsmmc }}图斑数</span>
                 <span
                   style="color: #2d8cf0; font-weight: bold; cursor: pointer"
-                  @click="resultDeatils(item2,item.mx_bsm)"
+                  @click="resultDeatils(item2, item.mx_bsm)"
                   >{{ item2.sumcount }}个</span
                 >
               </div>
@@ -90,6 +90,8 @@
 <script>
 import pie from "@/components/echartsTemplate/pieNew.vue";
 import { QueryGdbhJg } from "../../../api/ghss/gdbh.js";
+// 使用wkt转json
+import parse from "wellknown";
 export default {
   components: { pie },
   props: {
@@ -110,20 +112,20 @@ export default {
 
   methods: {
     download() {},
-    resultDeatils(val,mxbsm) {
+    resultDeatils(val, mxbsm) {
       let obj = {
-        bsm:this.fxjgObj.bsm,
-        mxbsm:mxbsm,
-        yzbsm:val.bsm
-      }
+        bsm: this.fxjgObj.bsm,
+        mxbsm: mxbsm,
+        yzbsm: val.bsm,
+      };
       this.$emit("updateParent", "interObj", obj);
       this.$emit("updateParent", "showInter", true);
-
     },
     initData() {
       QueryGdbhJg({ bsm: this.fxjgObj.bsm }).then((res) => {
         let data = [];
         if (res.statuscode == 200) {
+          console.log(res,':resresres')
           if (res.data.sandiao.mx_data.length) {
             res.data.sandiao.mx_data.forEach((el) => {
               data.push({
@@ -135,6 +137,8 @@ export default {
           }
           this.$refs.echartRef.setOptions({ data, type: "horizontal" }, 1);
           this.resultData = res.data;
+          // this.drawWktPloygon(res.data.xmxx.geom, "#ff0000", "all"); //res.data.bsm
+          this.loadGeoJSON(parse(res.data.xmxx.geom), "#ff0000", "all");
         } else {
           this.$message.error(res.message);
         }
@@ -155,6 +159,62 @@ export default {
 
       // })
     },
+    drawWktPloygon(item, itemColor, id) {
+      // console.log(geometry, "geometry");
+      // let geom = {
+      //   type: "FeatureCollection",
+      //   features: [
+      //     {
+      //       type: "Feature",
+      //       geometry: parse(item),
+      //     },
+      //   ],
+      // };
+      this.loadGeoJSON(parse(item), itemColor, id);
+    },
+    // 加载GeoJSON数据
+    loadGeoJSON(geojson, yanse, id, height, name) {
+      let _this = this;
+      let fcolor =
+        id && id != "all"
+          ? Cesium.Color.fromCssColorString(yanse)
+          : Cesium.Color.WHITE;
+      const dataSource = new Cesium.GeoJsonDataSource();
+      dataSource
+        .load(geojson, {
+          clampToGround: true,
+          stroke: Cesium.Color.fromCssColorString(yanse),
+          fill: fcolor.withAlpha(0.4), //注意:颜色必须大写,即不能为blue
+          strokeWidth: 5,
+          // markerSymbol: "", //点图钉的默认符号
+        })
+        .then((data) => {
+          viewer.dataSources.add(data);
+          let entities = data.entities.values;
+          // let addlabel = false;
+          if (!geojson.type.includes("Polygon") || height) {
+            entities.forEach((entity, ei) => {
+              if (entity.billboard) {
+                entity.billboard = undefined;
+                entity.point = {
+                  pixelsize: 20,
+                  color: Cesium.Color.fromCssColorString(yanse),
+                };
+              }
+            });
+          }
+          var pitch = height ? -0.8 : -45; // Cesium.Math.toRadians(-45.0);-0.7853981633974483
+          let range = height ? 3000 : 5000;
+          viewer.flyTo(data, {
+            offset: new Cesium.HeadingPitchRange(0, pitch, range),
+          });
+          // viewer.zoomTo(data);
+          if (id) {
+            dataSources[id] = data;
+          }
+          if (id == "all") _this.isshowAll = true;
+        });
+    },
   },
   mounted() {},
 };
@@ -297,8 +357,8 @@ export default {
 }
 
 .sm-panel {
-    width: 400px;
-    height: 700px;
-    z-index: 999999;
-  }
+  width: 400px;
+  height: 700px;
+  z-index: 999999;
+}
 </style>

+ 1 - 1
src/views/farmlandProtection/components/fzjcyp.vue

@@ -7,7 +7,7 @@
       :rules="rules"
       label-position="left"
     >
-      <el-form-item label="选址范围:" prop="xzmj">
+      <el-form-item label="分析范围:" prop="xzmj">
         <range type="fzjcyp" :keys="['hx', 'sc']" class="range" ref="range" />
       </el-form-item>
       <el-form-item label="项目名称:" prop="xmmc">

+ 38 - 30
src/views/farmlandProtection/components/interDetails.vue

@@ -17,6 +17,7 @@
             }"
             :data="tableData"
             style="width: 100%"
+            height="731"
           >
             <el-table-column
               show-overflow-tooltip="true"
@@ -109,7 +110,7 @@
                   fontWeight: '400',
                 }"
                 :data="jbxxData"
-                height="350"
+                height="455"
                 style="width: 100%"
               >
                 <el-table-column
@@ -220,38 +221,38 @@ export default {
 }
 
 .tableCon {
-  height: 40rem;
+  height: 48rem;
 
-  /deep/ .el-table tr {
-    background: rgba(10, 25, 38, 0.5) !important;
-  }
+  // /deep/ .el-table tr {
+  //   background: rgba(10, 25, 38, 0.5) !important;
+  // }
 
-  /deep/ .el-table td.el-table__cell,
-  .el-table th.el-table__cell.is-leaf {
-    background: rgba(10, 25, 38, 0.5) !important;
+  // /deep/ .el-table td.el-table__cell,
+  // .el-table th.el-table__cell.is-leaf {
+  //   background: rgba(10, 25, 38, 0.5) !important;
 
-    border-bottom: 0px solid #ebeef5;
-  }
+  //   border-bottom: 0px solid #ebeef5;
+  // }
 
-  .el-table {
-    color: #fff;
-    background: rgba(10, 25, 38, 0.5) !important;
-  }
+  // .el-table {
+  //   color: #fff;
+  //   background: rgba(10, 25, 38, 0.5) !important;
+  // }
 
-  /deep/ .el-table__fixed-right::before,
-  .el-table__fixed::before {
-    background: rgba(10, 25, 38, 0.9) !important;
-  }
+  // /deep/ .el-table__fixed-right::before,
+  // .el-table__fixed::before {
+  //   background: rgba(10, 25, 38, 0.9) !important;
+  // }
 
-  /deep/ .el-table__fixed-right-patch {
-    background: rgba(10, 25, 38, 0.9) !important;
-  }
+  // /deep/ .el-table__fixed-right-patch {
+  //   background: rgba(10, 25, 38, 0.9) !important;
+  // }
 
-  /deep/ .el-table--border::after,
-  .el-table--group::after,
-  .el-table::before {
-    background: rgba(10, 25, 38, 0) !important;
-  }
+  // /deep/ .el-table--border::after,
+  // .el-table--group::after,
+  // .el-table::before {
+  //   background: rgba(10, 25, 38, 0) !important;
+  // }
 }
 
 /deep/ .el-icon-close:before {
@@ -265,7 +266,9 @@ export default {
     color: aqua;
   }
 }
-
+/deep/ .el-carousel--horizontal{
+  margin-top: 15px;
+}
 /deep/ .el-carousel__item h3 {
   color: #475669;
   font-size: 18px;
@@ -288,11 +291,13 @@ export default {
 }
 
 .inter_result {
-  height: 580px;
+  // height: 580px;
+  height: 695px;
 }
 
 .Integration {
-  max-height: 580px;
+  // max-height: 580px;
+  height: 695px;
   overflow: hidden;
   overflow-y: auto;
 
@@ -345,5 +350,8 @@ export default {
     }
   }
 }
-</style>
+.sm-function-module-query{
+  max-height: 800px !important;
+  top: 28px !important;
+}
 </style>

+ 2 - 4
src/views/viewer.vue

@@ -464,10 +464,8 @@ export default {
     beforeCreate() { }, //生命周期 - 创建之前
     created() { }, //生命周期 - 创建完成(可以访问当前this实例)
     beforeMount() { }, //生命周期 - 挂载之前
-    async mounted() {
-
-
-        this.$nextTick((res) => {
+    mounted() {
+        this.$nextTick(() => {
             cockpit.init(viewer);
 
             this.pick_xzqh();

+ 14 - 3
static/Config/config.js

@@ -10,8 +10,7 @@ window.hostconfig = "localhost";
 window.mapview = [109.55145569681383, 18.28012526287734, 2000.0];
 //默认影像地址,空则为不加载默认影像
 //window.baseImgLayer = "http://127.0.0.1:8090/iserver/services/map-sanyadsm/rest/maps/%E6%B5%B7%E5%8D%97%E5%B2%9B%E5%BD%B1%E5%83%8F15%E7%BA%A7_Level_15%40DataSource";
-window.baseImgLayer =
-  "http://192.168.60.2:8090/iserver/services/map-WorkSpace/rest/maps/%E6%B5%B7%E5%8D%97%E5%B2%9B%E5%BD%B1%E5%83%8F15%E7%BA%A7_Level_15%40DataSource";
+window.baseImgLayer = "http://192.168.60.2:8090/iserver/services/map-WorkSpace/rest/maps/%E6%B5%B7%E5%8D%97%E5%B2%9B%E5%BD%B1%E5%83%8F15%E7%BA%A7_Level_15%40DataSource";
 //三维模型查询地址
 window.baseModelQueryLayer = "http://192.168.60.2:8090/iserver/services/data-building/rest/data/featureResults.rjson?returnContent=true";
 // ai大模gugeliulanq
@@ -3494,6 +3493,7 @@ window.landUseNatureRelation = [
       //   qsTYPE: "JT",
       // },
       {
+        tableName: "C12Sfjb",
         layerCore: "006001",
         tdjbField: "土地级别",
         ydlxTypeField: "",
@@ -3514,6 +3514,7 @@ window.landUseNatureRelation = [
       //   qsTYPE: "JT",
       // },
       {
+        tableName: "C22Zzjb",
         layerCore: "006008",
         tdjbField: "土地级别",
         ydlxTypeField: "",
@@ -3537,6 +3538,7 @@ window.landUseNatureRelation = [
       //   qsTYPE: "JT",
       // },
       {
+        tableName: "C32Gyjb",
         layerCore: "006003",
         tdjbField: "土地级别",
         ydlxTypeField: "",
@@ -3562,6 +3564,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "机关团体用地",
@@ -3582,6 +3585,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "教育、科研用地",
@@ -3602,6 +3606,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "文化设施、体育用地",
@@ -3622,6 +3627,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "教育、科研用地",
@@ -3642,6 +3648,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "文化设施、体育用地",
@@ -3662,6 +3669,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "医疗卫生、社会福利用地",
@@ -3682,6 +3690,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "医疗卫生、社会福利用地",
@@ -3709,6 +3718,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "公园与绿地、公用设施用地",
@@ -3729,6 +3739,7 @@ window.landUseNatureRelation = [
           //   qsTYPE: "JT",
           // },
           {
+            tableName: "C41Gfjb",
             layerCore: "006004",
             tdjbField: "土地级别",
             ydlxTypeField: "公园与绿地、公用设施用地",
@@ -3753,4 +3764,4 @@ window.QXLayerNames = [
 ];
 window.Layeralpha = 0;
 
-window.isUseDB = false;
+window.isUseDB = true;

部分文件因文件數量過多而無法顯示