Browse Source

中图20141014版本更新

lkk 10 months ago
parent
commit
6356118f5a
26 changed files with 1981 additions and 681 deletions
  1. 0 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  2. 58 59
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue
  3. 99 14
      src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue
  4. 309 166
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  5. 72 9
      src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue
  6. 89 11
      src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue
  7. 0 5
      src/views/ConstructionApplication3D/Demolition/zdAnalyse.js
  8. 10 9
      src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue
  9. 2 1
      src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue
  10. 202 0
      src/views/ConstructionApplication3D/Popup.js
  11. 137 130
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  12. 22 31
      src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue
  13. 24 2
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  14. 1 0
      src/views/ConstructionApplication3D/billboard/addBiillboardModel.vue
  15. 7 5
      src/views/ConstructionApplication3D/billboard/billboardCheckList.vue
  16. 43 18
      src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue
  17. 6 2
      src/views/ConstructionApplication3D/billboard/billboardChekResults.vue
  18. 37 23
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  19. 24 0
      src/views/ConstructionApplication3D/billboard/billboarddetail.vue
  20. 2 1
      src/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue
  21. 32 14
      src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue
  22. 343 154
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  23. 3 2
      src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue
  24. 53 22
      src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue
  25. 0 0
      src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js
  26. 406 3
      static/Config/config.js

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js


+ 58 - 59
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue

@@ -206,9 +206,7 @@ export default {
       activeName: "first",
       activeName: "first",
       GYmyChart: null,
       GYmyChart: null,
       JTmyChart: null,
       JTmyChart: null,
-      Interval: null,
       entitieid: "",
       entitieid: "",
-      Interval: null,
     };
     };
   },
   },
   props: {
   props: {
@@ -296,6 +294,27 @@ export default {
      * 渲染绘制范围
      * 渲染绘制范围
      */
      */
     DrawScope() {
     DrawScope() {
+      let ProjectScope = JSON.parse(this.info.BenchmarkLandPrice.ProjectScope);
+      if (ProjectScope.length > 0) {
+        if (ProjectScope[0] != ProjectScope[ProjectScope.length - 1]) {
+          ProjectScope.push(ProjectScope[0]);
+        }
+        let points = ProjectScope.map((obj) => [obj.x, obj.y]).flat();
+        var orangePolygon1 = viewer.entities.add({
+          id: "HZFW",
+          polygon: {
+            hierarchy: Cesium.Cartesian3.fromDegreesArray(points),
+            material: Cesium.Color.WHITE.withAlpha(0.3), //Cesium.Color.RED.withAlpha(0.4),
+            outline: true,
+            outlineColor: Cesium.Color.RED,
+            outlineWidth: 2.0,
+          },
+        });
+      } else {
+        // this.$message.error("请在传入分析范围");
+        console.log("未传入分析范围");
+      }
+
       this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList[0].ghdkDetailedDjList.forEach(
       this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList[0].ghdkDetailedDjList.forEach(
         (ghdkDetailedDj) => {
         (ghdkDetailedDj) => {
           let point3ds = [];
           let point3ds = [];
@@ -337,7 +356,7 @@ export default {
               holes.push({ positions: hole });
               holes.push({ positions: hole });
             });
             });
 
 
-            var orangePolygon1 = viewer.entities.add({
+            var orangePolygon12 = viewer.entities.add({
               id: ghdkDetailedDj.id,
               id: ghdkDetailedDj.id,
               polygon: {
               polygon: {
                 hierarchy: {
                 hierarchy: {
@@ -352,7 +371,7 @@ export default {
               },
               },
             });
             });
           } else if (point3ds.length > 0) {
           } else if (point3ds.length > 0) {
-            var orangePolygon1 = viewer.entities.add({
+            var orangePolygon122 = viewer.entities.add({
               id: ghdkDetailedDj.id,
               id: ghdkDetailedDj.id,
               polygon: {
               polygon: {
                 hierarchy: point3ds[0],
                 hierarchy: point3ds[0],
@@ -365,27 +384,6 @@ export default {
           }
           }
         }
         }
       );
       );
-
-      let ProjectScope = JSON.parse(this.info.BenchmarkLandPrice.ProjectScope);
-      if (ProjectScope.length > 0) {
-        if (ProjectScope[0] != ProjectScope[ProjectScope.length - 1]) {
-          ProjectScope.push(ProjectScope[0]);
-        }
-        let points = ProjectScope.map((obj) => [obj.x, obj.y]).flat();
-        var orangePolygon1 = viewer.entities.add({
-          id: "HZFW",
-          polygon: {
-            hierarchy: Cesium.Cartesian3.fromDegreesArray(points),
-            material: Cesium.Color.WHITE.withAlpha(0.3), //Cesium.Color.RED.withAlpha(0.4),
-            outline: true,
-            outlineColor: Cesium.Color.RED,
-            outlineWidth: 2.0,
-          },
-        });
-      } else {
-        // this.$message.error("请在传入分析范围");
-        console.log("未传入分析范围");
-      }
     },
     },
 
 
     initTable() {
     initTable() {
@@ -455,47 +453,48 @@ export default {
     },
     },
     rowClick(row) {
     rowClick(row) {
       let that = this;
       let that = this;
-      if (that.Interval) {
-        clearInterval(that.Interval);
-        that.Interval = null;
-      }
-
+      debugger;
       if (that.entitieid != "") {
       if (that.entitieid != "") {
         var entitie = viewer.entities.getById(that.entitieid);
         var entitie = viewer.entities.getById(that.entitieid);
-        let ghdkDetailedDj =
-          this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList[0].ghdkDetailedDjList.find(
-            (c) => c.id == that.entitieid
-          );
-        let col = Cesium.Color.fromCssColorString(
-          ghdkDetailedDj.ColorString
-        ).withAlpha(0.4);
-        entitie.polygon.material = col;
+        var data = {
+          id: entitie.id,
+          polygon: {
+            hierarchy: entitie.polygon.hierarchy,
+            material: entitie.polygon.material,
+            outline: true,
+            outlineColor: Cesium.Color.BLACK,
+            outlineWidth: 2.0,
+          },
+        };
+        if (viewer.entities.remove(entitie)) {
+          viewer.entities.add(data);
+        }
+
         that.entitieid = "";
         that.entitieid = "";
       }
       }
       if (row) {
       if (row) {
         that.entitieid = row.ghdkDetailedDjid;
         that.entitieid = row.ghdkDetailedDjid;
-        that.Interval = setInterval(function () {
-          var entitie = viewer.entities.getById(that.entitieid);
-          if (entitie.polygon.material.color.getValue().alpha == 0.4) {
-            entitie.polygon.material = new Cesium.Color(
-              3 / 255,
-              240 / 255,
-              248 / 255,
-              1
-            );
-          } else {
-            entitie.polygon.material = new Cesium.Color(
-              3 / 255,
-              240 / 255,
-              248 / 255,
-              0.4
-            );
-          }
-        }, 1000);
-
         var entitie = viewer.entities.getById(that.entitieid);
         var entitie = viewer.entities.getById(that.entitieid);
-        if (entitie) {
-          viewer.flyTo(entitie, { maximumHeight: 30 });
+        var data = {
+          id: entitie.id,
+          polygon: {
+            hierarchy: entitie.polygon.hierarchy,
+            material: entitie.polygon.material,
+            outline: true,
+            outlineColor: Cesium.Color.RED,
+            outlineWidth: 5.0,
+          },
+        };
+        if (viewer.entities.remove(entitie)) {
+          var dd = viewer.entities.add(data);
+
+          viewer.flyTo(dd, {
+            offset: {
+              heading: Cesium.Math.toRadians(0),
+              pitch: Cesium.Math.toRadians(-90),
+              range: 20,
+            },
+          });
         }
         }
       }
       }
     },
     },

+ 99 - 14
src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue

@@ -52,6 +52,7 @@
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
+      <el-button type="primary" @click="delBZ()">删除</el-button>
     </el-row>
     </el-row>
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
@@ -95,10 +96,18 @@
 <script>
 <script>
 import {
 import {
   getCqBcbzList, getCqBcbzItemList, getCqBcbzById,
   getCqBcbzList, getCqBcbzItemList, getCqBcbzById,
-  addCqBcbz, updateCqBcbz, updateCqBcbzItem, delCqBcbzItem
+  addCqBcbz, updateCqBcbz, updateCqBcbzItem, delCqBcbzItem, delCqBcbz
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
 export default {
 export default {
-  props: ["cqValue"],
+  props: {
+    cqValue: { type: Object },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
   name: "ZDShowInfo",
   name: "ZDShowInfo",
   data() {
   data() {
     var bzValidate = (rule, value, callback) => {
     var bzValidate = (rule, value, callback) => {
@@ -293,10 +302,20 @@ export default {
         }
         }
         getCqBcbzList().then((res) => {
         getCqBcbzList().then((res) => {
           that.bcbzList = res.rows;
           that.bcbzList = res.rows;
-          var item = that.bcbzList.find(t => t.id == that.bcbz)
-          if (item) {
-            that.curBCBZ.id = item.id;
-            that.curBCBZ.name = item.name;
+          if (that.bcbz == null || that.bcbz == "") {
+            if (that.bcbzList.length > 0) {
+              that.cqValue = that.bcbzList[0].id
+              that.bcbz = that.cqValue
+              that.curBCBZ.id = that.bcbz
+              that.curBCBZ.name = that.bcbzList[0].name;
+            }
+          }
+          else {
+            var item = that.bcbzList.find(t => t.id == that.bcbz)
+            if (item) {
+              that.curBCBZ.id = item.id;
+              that.curBCBZ.name = item.name;
+            }
           }
           }
           var queryParams =
           var queryParams =
           {
           {
@@ -319,9 +338,16 @@ export default {
         })
         })
       }
       }
       else {
       else {
-        this.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.CQBCList));
-        if (this.cqValue != undefined && this.cqValue != "") {
-          this.curBCBZ = this.bcbzList.find((t) => t.id == this.bcbz);
+        that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.CQBCList));
+        if (that.cqValue != null && that.cqValue != "") {
+          that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        }
+        else {
+          if (that.bcbzList.length > 0) {
+            that.cqValue = that.bcbzList[0].id;
+            that.bcbz = that.cqValue;
+            that.curBCBZ = that.bcbzList[0];
+          }
         }
         }
       }
       }
     },
     },
@@ -372,7 +398,7 @@ export default {
     reset() {
     reset() {
       // var val = this.bcbz
       // var val = this.bcbz
       this.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.CQBCList));
       this.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.CQBCList));
-      var item = this.bcbzList.find((t) => t.value == this.bcbz);
+      var item = this.bcbzList.find((t) => t.id == this.bcbz);
       debugger;
       debugger;
       this.curBCBZ = item;
       this.curBCBZ = item;
     },
     },
@@ -425,7 +451,8 @@ export default {
           // alert('submit!');
           // alert('submit!');
           this.dialogFormVisible = false;
           this.dialogFormVisible = false;
           this.saveData();
           this.saveData();
-          // this.$layer.alert("保存完成");
+
+
         } else {
         } else {
           console.log("error submit!!");
           console.log("error submit!!");
           return false;
           return false;
@@ -449,7 +476,9 @@ export default {
         addCqBcbz(newBCBZ).then((res) => {
         addCqBcbz(newBCBZ).then((res) => {
           if (res)
           if (res)
             that.getInitData();
             that.getInitData();
+          that.lyoption.content.parent.initSetting();
           that.$layer.alert("保存完成");
           that.$layer.alert("保存完成");
+
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
         })
         })
@@ -460,6 +489,33 @@ export default {
         that.bcbz = val;
         that.bcbz = val;
       }
       }
     },
     },
+    updateZDWindow() {
+      var that = this;
+      that.$layer.close(window.zdWindowId)
+      window.zdWindowId = this.$layer.iframe({
+        layerStyle: {
+          padding: "0.3vw 1vw 0.3vw 2.5vw",
+          backgroundImage: "url(/static/images/popup/modal-title.png)",
+          backgroundRepeat: "no-repeat",
+        },
+        content: {
+          content: DemolitionList, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: {}, //props
+        },
+        offset: [340, 460], //left top  左上角(left=430px/2;top=(800px+header高)/2)
+        area: ["430px", "800px"],
+        title: "征收补偿预估",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          viewer.entities.removeAll();
+          //关闭事件
+          // alert("关闭iframe");
+        },
+      });
+    },
     /**
     /**
      * 编辑按钮
      * 编辑按钮
      */
      */
@@ -552,15 +608,44 @@ export default {
     },
     },
     chageBCBZ() {
     chageBCBZ() {
       if (this.oldRow.grade < 1) {
       if (this.oldRow.grade < 1) {
-        this.$message.warning('不能小于1')
+        this.$message.warning('不能小于1');
         return false
         return false
       }
       }
       if (this.oldRow.bz < 0) {
       if (this.oldRow.bz < 0) {
-        this.$message.warning('不能小于0')
+        this.$message.warning('不能小于0');
         return false
         return false
       }
       }
-
       return true;
       return true;
+    },
+    delBZ() {
+      var that = this;
+
+      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+        if (window.isUseDB) {
+          delCqBcbz(that.bcbz).then((res) => {
+            if (res) {
+              that.$layer.alert("数据已删除");
+              that.cqValue = "";
+              that.bcbz = that.cqValue;
+              that.getInitData();
+              that.lyoption.content.parent.initSetting()
+            }
+          }).catch((err) => {
+            console.log(err)
+          })
+        }
+        else {
+          var index = window.ZSBC.CQBCList.findIndex(t => t.id == that.bcbz);
+          if (index > -1) {
+            window.ZSBC.CQBCList.splice(index, 1);
+          }
+          that.cqValue = "";
+          that.bcbz = that.cqValue;
+          that.getInitData()
+          that.lyoption.content.parent.initSetting()
+        }
+        that.$layer.close(formId)
+      })
     }
     }
   },
   },
 };
 };

+ 309 - 166
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue

@@ -112,8 +112,8 @@
               </el-col>
               </el-col>
             </el-row>
             </el-row>
           </el-card>
           </el-card>
-          <el-pagination background layout="prev, pager, next" :page-size="pageSize"   :total="rowsCount" :current-page="currentPage"
-           @current-change="onCurrentChange">
+          <el-pagination background layout="prev, pager, next" :page-size="pageSize" :total="rowsCount"
+            :current-page="currentPage" @current-change="onCurrentChange">
           </el-pagination>
           </el-pagination>
         </div>
         </div>
       </el-tab-pane>
       </el-tab-pane>
@@ -501,10 +501,6 @@ import {
   area,
   area,
   booleanContains,
   booleanContains,
   intersect,
   intersect,
-  difference,
-  point,
-  isobands,
-  featureCollection
 } from "@turf/turf";
 } from "@turf/turf";
 import proj4 from "proj4";
 import proj4 from "proj4";
 // import shpjs from "shpjs";
 // import shpjs from "shpjs";
@@ -522,7 +518,6 @@ import {
   addQmResult, addCqResult, addZdResult, expotZDBCWord
   addQmResult, addCqResult, addZdResult, expotZDBCWord
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
 import zdAnalyse from './zdAnalyse.js'
 import zdAnalyse from './zdAnalyse.js'
-import { Loading } from 'element-ui';
 var handlerPolygon;
 var handlerPolygon;
 var handleInput;
 var handleInput;
 var polygonEntity = null;
 var polygonEntity = null;
@@ -1094,7 +1089,6 @@ export default {
       }
       }
     }
     }
     this.initSetting();
     this.initSetting();
-    this.startPolygon();
   },
   },
   methods: {
   methods: {
     formatterArea(area) {
     formatterArea(area) {
@@ -1194,7 +1188,7 @@ export default {
             "endDateTime": endDate,
             "endDateTime": endDate,
           }
           }
         }
         }
-       
+
         debugger
         debugger
         getZdProjectList(queryParams).then((res) => {
         getZdProjectList(queryParams).then((res) => {
           that.projectList = res.rows;
           that.projectList = res.rows;
@@ -1326,7 +1320,7 @@ export default {
           data: { cqValue: that.ruleForm.cqValue }, //props
           data: { cqValue: that.ruleForm.cqValue }, //props
         },
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["50rem", "40rem"],
+        area: ["50rem", "48rem"],
         title: "拆迁补偿标准配置",
         title: "拆迁补偿标准配置",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
@@ -1382,7 +1376,7 @@ export default {
           data: { qmValue: that.ruleForm.qmValue }, //props
           data: { qmValue: that.ruleForm.qmValue }, //props
         },
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["35rem", "16rem"],
+        area: ["35rem", "22rem"],
         title: "青苗补偿标准配置",
         title: "青苗补偿标准配置",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
@@ -1438,7 +1432,7 @@ export default {
           data: { zdValue: that.ruleForm.zdValue }, //props
           data: { zdValue: that.ruleForm.zdValue }, //props
         },
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["35rem", "37rem"],
+        area: ["35rem", "39rem"],
         title: "征地补偿标准配置",
         title: "征地补偿标准配置",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
@@ -1798,7 +1792,7 @@ export default {
             var fieldNames = [];
             var fieldNames = [];
             var fieldValues = []
             var fieldValues = []
             id = pick.id._id
             id = pick.id._id
-            if (id.indexOf(prefix) > -1) {
+            if (id.indexOf && id.indexOf(prefix) > -1) {
               fieldNames = pick.id.attributes.fieldNames;
               fieldNames = pick.id.attributes.fieldNames;
               fieldValues = pick.id.attributes.fieldValues;
               fieldValues = pick.id.attributes.fieldValues;
               for (var i = 0; i < fieldNames.length; i++) {
               for (var i = 0; i < fieldNames.length; i++) {
@@ -1943,7 +1937,7 @@ export default {
       myChart.clear()
       myChart.clear()
       myChart.setOption(option);
       myChart.setOption(option);
       var showOrHide = false;
       var showOrHide = false;
-      // that.JTDLLoad(null, showOrHide);
+      that.JTDLLoad(null, showOrHide);
       myChart.on("legendselectchanged", function (parmas) {
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTYD');
         that.pickEntity('ZDJTYD');
         var name = parmas.name
         var name = parmas.name
@@ -2000,7 +1994,7 @@ export default {
             positions.push(geometry.points[j].x);
             positions.push(geometry.points[j].x);
             positions.push(geometry.points[j].y);
             positions.push(geometry.points[j].y);
           }
           }
-          var entiy = new Cesium.Entity({
+          var entity = new Cesium.Entity({
             id: "ZDJTYD_" + smid,
             id: "ZDJTYD_" + smid,
             position: Cesium.Cartesian3.fromDegreesArray([
             position: Cesium.Cartesian3.fromDegreesArray([
               geometry.center.x,
               geometry.center.x,
@@ -2022,9 +2016,10 @@ export default {
               outlineWidth: 1.5,
               outlineWidth: 1.5,
             },
             },
           });
           });
-          entiy.attributes = attributes;
+          entity.show = showOrHide;
+          entity.attributes = attributes;
           that.entities.push({ type: "ZDJTYD", id: "ZDJTYD_" + smid });
           that.entities.push({ type: "ZDJTYD", id: "ZDJTYD_" + smid });
-          viewer.entities.add(entiy);
+          viewer.entities.add(entity);
         }
         }
       }
       }
     },
     },
@@ -2128,7 +2123,7 @@ export default {
       myChart.setOption(option);
       myChart.setOption(option);
 
 
       var shaowOrHide = false;
       var shaowOrHide = false;
-      // that.GYDLLoad(null, shaowOrHide);
+      that.GYDLLoad(null, shaowOrHide);
       myChart.on("legendselectchanged", function (parmas) {
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYDL');
         that.pickEntity('ZDGYDL');
         var name = parmas.name
         var name = parmas.name
@@ -2216,6 +2211,7 @@ export default {
               outlineWidth: 1.5,
               outlineWidth: 1.5,
             },
             },
           });
           });
+          entity.show = shaowOrHide;
           entity.attributes = attributes;
           entity.attributes = attributes;
           that.entities.push({ type: name, id: "ZDGYDL_" + smid });
           that.entities.push({ type: name, id: "ZDGYDL_" + smid });
           viewer.entities.add(entity);
           viewer.entities.add(entity);
@@ -2227,7 +2223,7 @@ export default {
      * 青苗补偿chart
      * 青苗补偿chart
      */
      */
     QMBCChart() {
     QMBCChart() {
-      debugger;
+
       var that = this;
       var that = this;
       var chartDom1 = document.getElementById("QMMJChart");
       var chartDom1 = document.getElementById("QMMJChart");
       var myChart1 = window.echarts.init(chartDom1);
       var myChart1 = window.echarts.init(chartDom1);
@@ -2239,6 +2235,7 @@ export default {
       var color1 = window.ZSBC.ZDBCJS.DLTB.nzwfl.color;
       var color1 = window.ZSBC.ZDBCJS.DLTB.nzwfl.color;
       var colors = [color1, color2, color3];
       var colors = [color1, color2, color3];
       var datas1 = [];
       var datas1 = [];
+      debugger
       if (that.qmResult) {
       if (that.qmResult) {
         datas1 = [
         datas1 = [
           { value: this.qmResult.nzwMJ, name: nzwfl },
           { value: this.qmResult.nzwMJ, name: nzwfl },
@@ -2252,7 +2249,6 @@ export default {
           { value: 0.0, name: smfl },
           { value: 0.0, name: smfl },
         ];
         ];
       }
       }
-
       var option1 = {
       var option1 = {
         title: {
         title: {
           text: "农作物补偿面积",
           text: "农作物补偿面积",
@@ -2287,7 +2283,7 @@ export default {
             );
             );
           },
           },
         },
         },
-        color: ["rgb(245,248,220)", "rgb(191,233,170)", "rgb(104,177,103)"],
+        color: colors,
         series: [
         series: [
           {
           {
             name: "征地补偿分析",
             name: "征地补偿分析",
@@ -2319,9 +2315,19 @@ export default {
         ],
         ],
       };
       };
       myChart1.setOption(option1);
       myChart1.setOption(option1);
+      var showOrHide = false;
+      that.QMBCLoad(null, showOrHide)
+      myChart1.on("legendselectchanged", function (parmas) {
+        that.pickEntity('ZDQMBC');
+        var name = parmas.name
+        showOrHide = parmas.selected[name]
+        that.QMBCLoad(name, showOrHide)
+
+      });
       var chartDom2 = document.getElementById("QMFYChart");
       var chartDom2 = document.getElementById("QMFYChart");
       var myChart2 = window.echarts.init(chartDom2);
       var myChart2 = window.echarts.init(chartDom2);
       var datas2 = [];
       var datas2 = [];
+      debugger
       if (that.qmResult) {
       if (that.qmResult) {
         datas2 = [
         datas2 = [
           { value: that.qmResult.nzwPay, name: nzwfl },
           { value: that.qmResult.nzwPay, name: nzwfl },
@@ -2402,102 +2408,105 @@ export default {
         ],
         ],
       };
       };
       myChart2.setOption(option2);
       myChart2.setOption(option2);
-
+    },
+    QMBCLoad(name, showOrHide) {
+      var that = this;
       var dlmcIndex = -1;
       var dlmcIndex = -1;
+      debugger;
       var dlmcFld = window.ZSBC.ZDBCJS.DLTB.dlmc.field;
       var dlmcFld = window.ZSBC.ZDBCJS.DLTB.dlmc.field;
       dlmcIndex = that.getfldIndex(that.qmResult.fieldInfos, dlmcFld);
       dlmcIndex = that.getfldIndex(that.qmResult.fieldInfos, dlmcFld);
-      var curDLMC = "";
-      var smfl = window.ZSBC.ZDBCJS.DLTB.smfl.dlmc;
-      var nzwfl = window.ZSBC.ZDBCJS.DLTB.nzwfl.dlmc;
-      var jjzwfl = window.ZSBC.ZDBCJS.DLTB.jjzwfl.dlmc;
+      // var smfl = window.ZSBC.ZDBCJS.DLTB.smfl.dlmc;
+      // var nzwfl = window.ZSBC.ZDBCJS.DLTB.nzwfl.dlmc;
+      // var jjzwfl = window.ZSBC.ZDBCJS.DLTB.jjzwfl.dlmc;
       var dlmc = "";
       var dlmc = "";
       var geometry;
       var geometry;
+      var color3 = window.ZSBC.ZDBCJS.DLTB.smfl.color;
+      var color2 = window.ZSBC.ZDBCJS.DLTB.jjzwfl.color;
+      var color1 = window.ZSBC.ZDBCJS.DLTB.nzwfl.color;
+      var curDLMC;
 
 
-      myChart1.on("legendselectchanged", function (parmas) {
-        that.pickEntity('ZDQMBC');
-        var name = parmas.name
-        var state = parmas.selected[name]
-        var index = Object.keys(parmas.selected).findIndex(t => t == name)
-        // var index = parmas.selected.findIndex(t => t.key == name)
-        var mod = index % colors.length
-        var color = colors[mod].replace("rgb", "")
-          .replace("(", "")
-          .replace(")", "");
-        var colorArr = color.split(",");
-        console.log(state)
-
-        var curFL = parmas.name;
-        if (curFL == window.ZSBC.ZDBCJS.DLTB.smfl.fl) {
-          curDLMC = smfl;
-        } else if (curFL == window.ZSBC.ZDBCJS.DLTB.nzwfl.fl) {
-          curDLMC = nzwfl;
-        } else if (curFL == window.ZSBC.ZDBCJS.DLTB.jjzwfl.fl) {
-          curDLMC = jjzwfl;
+      var attributes;
+      var fieldValues;
+      var color;
+      var features = that.qmResult.features;
+      for (var i = 0; i < features.length; i++) {
+        geometry = features[i].geometry;
+        fieldValues = features[i].fieldValues;
+        if (dlmcIndex > -1) {
+          dlmc = fieldValues[dlmcIndex];
         }
         }
-
-        var attributes;
-        debugger
-        var fieldValues;
-        var features = that.qmResult.features;
-        for (var i = 0; i < features.length; i++) {
-          geometry = features[i].geometry;
-          fieldValues = features[i].fieldValues;
-          if (dlmcIndex > -1) {
-            dlmc = fieldValues[dlmcIndex];
+        if (name != null) {
+          if (name == window.ZSBC.ZDBCJS.DLTB.smfl.fl) {
+            curDLMC = window.ZSBC.ZDBCJS.DLTB.smfl.dlmc
+          }
+          else if (name == window.ZSBC.ZDBCJS.DLTB.nzwfl.fl) {
+            curDLMC = window.ZSBC.ZDBCJS.DLTB.nzwfl.dlmc
+          }
+          else if (name == window.ZSBC.ZDBCJS.DLTB.jjzwfl.fl) {
+            curDLMC = window.ZSBC.ZDBCJS.DLTB.jjzwfl.dlmc
           }
           }
           if (curDLMC.indexOf(dlmc) == -1)
           if (curDLMC.indexOf(dlmc) == -1)
             continue;
             continue;
+        }
+        if (window.ZSBC.ZDBCJS.DLTB.nzwfl.dlmc.indexOf(dlmc) > -1)
+          color = color1
+        else if (window.ZSBC.ZDBCJS.DLTB.jjzwfl.dlmc.indexOf(dlmc) > -1)
+          color = color2
+        else if (window.ZSBC.ZDBCJS.DLTB.smfl.dlmc.indexOf(dlmc) > -1)
+          color = color3
+        color = color.replace("rgb", "")
+          .replace("(", "")
+          .replace(")", "");
+        var colorArr = color.split(",");
+        var simIndex = features[i].fieldNames.findIndex(t => t.toUpperCase() == "SMID")
+        var smid = features[i].fieldValues[simIndex]
+        var ff = that.entities.find(t => t.id == "ZDQMBC_" + smid)
 
 
-          var simIndex = features[i].fieldNames.findIndex(t => t.toUpperCase() == "SMID")
-          var smid = features[i].fieldValues[simIndex]
-          var ff = that.entities.find(t => t.id == "ZDQMBC_" + smid)
-
-          if (ff != null) {
-            var entity = viewer.entities.getById("ZDQMBC_" + smid)
-            if (entity != undefined)
-              entity.show = state;
-          }
-          else {
-
-            var positions = [];
-            for (var j = 0; j < geometry.points.length; j++) {
-              positions.push(geometry.points[j].x);
-              positions.push(geometry.points[j].y);
-            }
-            var entiy = new Cesium.Entity({
-              id: "ZDQMBC_" + smid,
-              position: Cesium.Cartesian3.fromDegreesArray([
-                geometry.center.x,
-                geometry.center.y,
-              ]),
-              // classificationType: ClassificationType.TERRAIN,
-              polygon: {
-                hierarchy: new Cesium.PolygonHierarchy(
-                  new Cesium.Cartesian3.fromDegreesArray(positions)
-                ),
-                // positions: new Cesium.Cartesian3.fromDegreesArray(positions),
-                material: new Cesium.Color(
-                  parseInt(colorArr[0]) / 255,
-                  parseInt(colorArr[1]) / 255,
-                  parseInt(colorArr[2]) / 255,
-                  1
-                ),
-                outline: true,
-                outlineColor: Cesium.Color.BLACK,
-                outlineWidth: 1.5,
-              },
-            });
-            attributes = {
-              fieldNames: that.qmResult.fieldInfos,
-              fieldValues: features[i].fieldValues,
-            };
-            entiy.attributes = attributes;
-            that.entities.push({ type: "QM", id: "ZDQMBC_" + smid });
-            viewer.entities.add(entiy);
+        if (ff != null) {
+          var entity = viewer.entities.getById("ZDQMBC_" + smid)
+          if (entity != undefined)
+            entity.show = showOrHide;
+        }
+        else {
+          var positions = [];
+          for (var j = 0; j < geometry.points.length; j++) {
+            positions.push(geometry.points[j].x);
+            positions.push(geometry.points[j].y);
           }
           }
-
+          var entity = new Cesium.Entity({
+            id: "ZDQMBC_" + smid,
+            position: Cesium.Cartesian3.fromDegreesArray([
+              geometry.center.x,
+              geometry.center.y,
+            ]),
+            // classificationType: ClassificationType.TERRAIN,
+            polygon: {
+              hierarchy: new Cesium.PolygonHierarchy(
+                new Cesium.Cartesian3.fromDegreesArray(positions)
+              ),
+              // positions: new Cesium.Cartesian3.fromDegreesArray(positions),
+              material: new Cesium.Color(
+                parseInt(colorArr[0]) / 255,
+                parseInt(colorArr[1]) / 255,
+                parseInt(colorArr[2]) / 255,
+                1
+              ),
+              outline: true,
+              outlineColor: Cesium.Color.BLACK,
+              outlineWidth: 1.5,
+            },
+          });
+          attributes = {
+            fieldNames: that.qmResult.fieldInfos,
+            fieldValues: features[i].fieldValues,
+          };
+          entity.show = showOrHide;
+          entity.attributes = attributes;
+          that.entities.push({ type: "QM", id: "ZDQMBC_" + smid });
+          viewer.entities.add(entity);
         }
         }
-      });
+
+      }
     },
     },
     /**
     /**
      * 拆迁补偿chart
      * 拆迁补偿chart
@@ -2635,7 +2644,7 @@ export default {
 
 
       myChart.clear();
       myChart.clear();
       myChart.setOption(option);
       myChart.setOption(option);
-      // that.GYQSLoad(datas);
+      that.GYQSLoad(that.gyqsChartdatas, null, false);
 
 
       myChart.on("legendselectchanged", function (parmas) {
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYQS');
         that.pickEntity('ZDGYQS');
@@ -2728,6 +2737,7 @@ export default {
 
 
             entity = new Cesium.Entity({
             entity = new Cesium.Entity({
               id: "ZDGYQS_" + smid,
               id: "ZDGYQS_" + smid,
+
               polygon: {
               polygon: {
                 hierarchy: {
                 hierarchy: {
                   // Cesium.PolygonHierarchy
                   // Cesium.PolygonHierarchy
@@ -2748,6 +2758,7 @@ export default {
           } else if (point3ds.length > 0) {
           } else if (point3ds.length > 0) {
             entity = new Cesium.Entity({
             entity = new Cesium.Entity({
               id: "ZDGYQS_" + smid,
               id: "ZDGYQS_" + smid,
+
               polygon: {
               polygon: {
                 hierarchy: point3ds[0],
                 hierarchy: point3ds[0],
                 material: new Cesium.Color(
                 material: new Cesium.Color(
@@ -2762,6 +2773,7 @@ export default {
               },
               },
             });
             });
           }
           }
+          entity.show = showOrHide;
           entity.attributes = attributes;
           entity.attributes = attributes;
           that.qsEntities.push({ type: name, id: "ZDGYQS_" + smid });
           that.qsEntities.push({ type: name, id: "ZDGYQS_" + smid });
           viewer.entities.add(entity);
           viewer.entities.add(entity);
@@ -2870,7 +2882,7 @@ export default {
       myChart.clear();
       myChart.clear();
       myChart.setOption(option);
       myChart.setOption(option);
       var shaowOrHide = false;
       var shaowOrHide = false;
-      // that.JTUseLoad(datas, null, shaowOrHide)
+      that.JTUseLoad(datas, null, shaowOrHide)
       myChart.on("legendselectchanged", function (parmas) {
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTUSE');
         that.pickEntity('ZDJTUSE');
         var name = parmas.name
         var name = parmas.name
@@ -2986,6 +2998,7 @@ export default {
           } else if (point3ds.length > 0) {
           } else if (point3ds.length > 0) {
             entity = new Cesium.Entity({
             entity = new Cesium.Entity({
               id: "ZDJTUSE_" + smid,
               id: "ZDJTUSE_" + smid,
+
               polygon: {
               polygon: {
                 hierarchy: point3ds[0],
                 hierarchy: point3ds[0],
                 material: new Cesium.Color(
                 material: new Cesium.Color(
@@ -3000,7 +3013,7 @@ export default {
               },
               },
             });
             });
           }
           }
-          entity.show = true;
+          entity.show = shaowOrHide;
           entity.attributes = attributes;
           entity.attributes = attributes;
           that.qsEntities.push({ type: name, id: "ZDJTUSE_" + smid });
           that.qsEntities.push({ type: name, id: "ZDJTUSE_" + smid });
           viewer.entities.add(entity);
           viewer.entities.add(entity);
@@ -3108,7 +3121,7 @@ export default {
         ],
         ],
       };
       };
       var showOrHide = false;
       var showOrHide = false;
-      // that.JTOwnerLoad(datas, null, showOrHide);
+      that.JTOwnerLoad(datas, null, showOrHide);
       myChart.clear();
       myChart.clear();
       myChart.setOption(option);
       myChart.setOption(option);
       myChart.on("legendselectchanged", function (parmas) {
       myChart.on("legendselectchanged", function (parmas) {
@@ -3235,6 +3248,7 @@ export default {
               },
               },
             });
             });
           }
           }
+          entity.show = showOrHide
           entity.attributes = attributes;
           entity.attributes = attributes;
           that.qsEntities.push({ type: name, id: "ZDJTOWNER_" + smid });
           that.qsEntities.push({ type: name, id: "ZDJTOWNER_" + smid });
           viewer.entities.add(entity);
           viewer.entities.add(entity);
@@ -3373,70 +3387,199 @@ export default {
       if (features == null) return;
       if (features == null) return;
       var attributes;
       var attributes;
       //产权人
       //产权人
-
       var entity;
       var entity;
+      //  var index = that.entities.findIndex(t => t.id == "ZDBDC_" + smid)
 
 
-      var index = that.entities.findIndex(t => t.id == "ZDBDC_" + smid)
-      if (index > -1) {
-        entity = viewer.entities.getById("ZDBDC_" + smid);
-        entity.show = true
-        viewer.flyTo(entity)
-      }
-      else {
-        var curID;
-        for (var i = 0; i < features.length; i++) {
-          fieldNames = features[i].fieldNames;
-          fieldValues = features[i].fieldValues;
-          smidIndex = fieldNames.findIndex(t => t.toUpperCase() == "SMID")
-          attributes = {
-            fieldNames: fieldNames,
-            fieldValues: fieldValues,
-          };
+      // if (index > -1) {
+      //   entity = viewer.entities.getById("ZDBDC_" + smid);
+      //   entity.show = true;
+      //   viewer.entities.removeById('aad')
+      //   var point = new Cesium.Entity({
+      //     id: "aad",
+      //     position: entity.position,
+      //     point: {
+      //       // 点的大小(像素)
+      //       pixelSize: 10,
+      //       // 点位颜色,fromCssColorString 可以直接使用CSS颜色
+      //       color: Cesium.Color.RED.withAlpha(0),
+      //       // 边框颜色
+      //       outlineColor: Cesium.Color.fromCssColorString("#fff").withAlpha(0),
+      //       // 边框宽度(像素)
+      //       outlineWidth: 2,
+      //       // 显示在距相机的距离处的属性,多少区间内是可以显示的
+      //       // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+      //       //   0,
+      //       //   1500
+      //       // ),
+      //       // 是否显示
+      //       show: true,
+      //     }
+      //   })
+      //   viewer.entities.add(point);
+      //   viewer.flyTo(point)
+      //   setTimeout(function () {
+      //     viewer.entities.removeById('aad')
+      //   }, 3000)
+      // }
+      // else {
+      //   var curID;
+      //   for (var i = 0; i < features.length; i++) {
+      //     fieldNames = features[i].fieldNames;
+      //     fieldValues = features[i].fieldValues;
+      //     smidIndex = fieldNames.findIndex(t => t.toUpperCase() == "SMID")
+      //     attributes = {
+      //       fieldNames: fieldNames,
+      //       fieldValues: fieldValues,
+      //     };
+      //     curID = fieldValues[smidIndex];
+      //     if (curID != smid)
+      //       continue;
+      //     geometry = features[i].geometry;
+      //     var positions = [];
+      //     for (var i = 0; i < geometry.points.length; i++) {
+      //       positions.push(geometry.points[i].x);
+      //       positions.push(geometry.points[i].y);
+      //     }
+      //     entity = new Cesium.Entity({
+      //       id: "ZDBDC_" + smid,
+      //       // label: {
+      //       //   text: cqr,
+      //       //   heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+      //       //   font: "14px sans-serif",
+      //       //   fillColor: new Cesium.Color(1, 0, 0, 1),
+      //       //   showBackground: true,
+      //       //   backgroundColor: new Cesium.Color(0, 0.8, 0, 0.8)
+      //       // },
+      //       position: Cesium.Cartesian3.fromDegrees(
+      //         geometry.center.x,
+      //         geometry.center.y,
+      //         50
+      //       ),
+      //       show: true,
+      //       polygon: {
+      //         hierarchy: new Cesium.PolygonHierarchy(
+      //           new Cesium.Cartesian3.fromDegreesArray(positions)
+      //         ),
+      //         // positions: new Cesium.Cartesian3.fromDegreesArray(positions),
+      //         material: new Cesium.Color(255 / 255, 211 / 255, 128 / 255, 1),
+      //         outline: true,
+      //         outlineColor: Cesium.Color.BLACK,
+      //         outlineWidth: 1.5,
+      //       },
+      //     });
+      //     entity.attributes = attributes;
+      //     viewer.entities.add(entity);
+      //     that.entities.push({ type: "ZDBDC", id: "ZDBDC_" + smid })
+      //     viewer.entities.removeById('aad')
+      //     var point = new Cesium.Entity({
+      //       id: 'aad',
+      //       position: entity.position,
+      //       point: {
+      //         // 点的大小(像素)
+      //         pixelSize: 10,
+      //         // 点位颜色,fromCssColorString 可以直接使用CSS颜色
+      //         color: Cesium.Color.RED.withAlpha(0),
+      //         // 边框颜色
+      //         outlineColor: Cesium.Color.fromCssColorString("#fff").withAlpha(0),
+      //         // 边框宽度(像素)
+      //         outlineWidth: 2,
+      //         // 显示在距相机的距离处的属性,多少区间内是可以显示的
+      //         // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+      //         //   0,
+      //         //   1500
+      //         // ),
+      //         // 是否显示
+      //         show: true,
+      //       }
+      //     })
+      //     viewer.entities.add(point);
+      //     viewer.flyTo(point)
+      //     setTimeout(function () {
+      //       viewer.entities.removeById('aad')
+      //     }, 3000)
 
 
-          curID = fieldValues[smidIndex];
-          if (curID != smid)
-            continue;
-          geometry = features[i].geometry;
-          var positions = [];
-          for (var i = 0; i < geometry.points.length; i++) {
-            positions.push(geometry.points[i].x);
-            positions.push(geometry.points[i].y);
-          }
+      //   }
+      // }
 
 
-          entity = new Cesium.Entity({
-            id: "ZDBDC_" + smid,
-            label: {
-              text: cqr,
-              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-              font: "14px sans-serif",
-              fillColor: new Cesium.Color(1, 0, 0, 1),
-              showBackground: true,
-              backgroundColor: new Cesium.Color(0, 0.8, 0, 0.8)
-            },
-            position: Cesium.Cartesian3.fromDegrees(
-              geometry.center.x,
-              geometry.center.y,
-              50
-            ),
-            show: true,
-            polygon: {
-              hierarchy: new Cesium.PolygonHierarchy(
-                new Cesium.Cartesian3.fromDegreesArray(positions)
-              ),
-              // positions: new Cesium.Cartesian3.fromDegreesArray(positions),
-              material: new Cesium.Color(255 / 255, 211 / 255, 128 / 255, 1),
-              outline: true,
-              outlineColor: Cesium.Color.BLACK,
-              outlineWidth: 1.5,
-            },
-          });
-          entity.attributes = attributes;
-          viewer.entities.add(entity);
-          that.entities.push({ type: "ZDBDC", id: "ZDBDC_" + smid })
-          viewer.flyTo(entity)
+      var index = that.entities.findIndex(t => t.id == "ZDBDC_FC")
+      if (index == -1) {
+        that.entities.push({ type: "ZDBDC", id: "ZDBDC_FC" });
+      }
+      viewer.entities.removeById('ZDBDC_FC');
+      viewer.entities.removeById('aad')
+      var curID;
+      for (var i = 0; i < features.length; i++) {
+        fieldNames = features[i].fieldNames;
+        fieldValues = features[i].fieldValues;
+        smidIndex = fieldNames.findIndex(t => t.toUpperCase() == "SMID")
+        attributes = {
+          fieldNames: fieldNames,
+          fieldValues: fieldValues,
+        };
+        curID = fieldValues[smidIndex];
+        if (curID != smid)
+          continue;
+        geometry = features[i].geometry;
+        var positions = [];
+        for (var i = 0; i < geometry.points.length; i++) {
+          positions.push(geometry.points[i].x);
+          positions.push(geometry.points[i].y);
         }
         }
+        entity = new Cesium.Entity({
+          id: "ZDBDC_FC",
+          label: {
+            text: cqr,
+            heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+            font: "14px sans-serif",
+            fillColor: new Cesium.Color(1, 0, 0, 1),
+            showBackground: true,
+            backgroundColor: new Cesium.Color(0, 0.8, 0, 0.8)
+          },
+          position: Cesium.Cartesian3.fromDegrees(
+            geometry.center.x,
+            geometry.center.y,
+            50
+          ),
+          show: true,
+          polygon: {
+            hierarchy: new Cesium.PolygonHierarchy(
+              new Cesium.Cartesian3.fromDegreesArray(positions)
+            ),
+            material: new Cesium.Color(255 / 255, 211 / 255, 128 / 255, 1),
+            outline: true,
+            outlineColor: Cesium.Color.BLACK,
+            outlineWidth: 1.5,
+          },
+        });
+        entity.attributes = attributes;
+        viewer.entities.add(entity);
       }
       }
-
+      var point = new Cesium.Entity({
+        id: "aad",
+        position: entity.position,
+        point: {
+          // 点的大小(像素)
+          pixelSize: 10,
+          // 点位颜色,fromCssColorString 可以直接使用CSS颜色
+          color: Cesium.Color.RED.withAlpha(0),
+          // 边框颜色
+          outlineColor: Cesium.Color.fromCssColorString("#fff").withAlpha(0),
+          // 边框宽度(像素)
+          outlineWidth: 2,
+          // 显示在距相机的距离处的属性,多少区间内是可以显示的
+          // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+          //   0,
+          //   1500
+          // ),
+          // 是否显示
+          show: true,
+        }
+      })
+      viewer.entities.add(point);
+      viewer.flyTo(point);
+      setTimeout(function () {
+        viewer.entities.removeById('aad');
+      }, 3000)
     },
     },
     /**
     /**
      * 点击确定开始计算
      * 点击确定开始计算

+ 72 - 9
src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue

@@ -35,6 +35,8 @@
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
+      <el-button type="primary" @click="delBZ()">删除</el-button>
+
     </el-row>
     </el-row>
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
@@ -49,10 +51,19 @@
 </template>
 </template>
 <script>
 <script>
 import {
 import {
-  getQmbcbzList, updateQmbcbz, addQmbcbz, getQmbcbzById
+  getQmbcbzList, updateQmbcbz, addQmbcbz, getQmbcbzById, delQmbcbz
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
 export default {
 export default {
-  props: ["qmValue"],
+  props: {
+    qmValue: { type: Object },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+
   name: "QMSetInfo",
   name: "QMSetInfo",
   data() {
   data() {
     return {
     return {
@@ -102,9 +113,16 @@ export default {
         getQmbcbzList().then((response) => {
         getQmbcbzList().then((response) => {
           if (response) {
           if (response) {
             that.bcbzList = response.rows
             that.bcbzList = response.rows
-            if (that.bcbz != undefined || that.bcbz != "") {
+            if (that.bcbz != null && that.bcbz != "") {
               that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
               that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
             }
             }
+            else {
+              if (that.bcbzList.length > 0) {
+                that.curBCBZ = that.bcbzList[0]
+                that.bcbz = that.curBCBZ.id
+                that.qmValue = that.bcbz
+              }
+            }
           }
           }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
@@ -112,19 +130,30 @@ export default {
       }
       }
       else {
       else {
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.QMBCList));
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.QMBCList));
-        that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        if (that.bcbz != null && that.bcbz != "") {
+          that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
+        }
+        else {
+          if (that.bcbzList.length > 0) {
+            that.curBCBZ = that.bcbzList[0];
+            that.bcbz = that.curBCBZ.id
+            that.zdValue = that.bcbz
+          }
+        }
       }
       }
     },
     },
     selectZDBZ() {
     selectZDBZ() {
       var that = this;
       var that = this;
-      if (that.bcbz == null && that.bcbz == "") {
+      if (that.bcbz == null || that.bcbz == "") {
         that.$message.warning("请选择标准")
         that.$message.warning("请选择标准")
         return;
         return;
       }
       }
+      that.qmValue = that.bcbz;
       if (window.isUseDB) {
       if (window.isUseDB) {
         getQmbcbzById(that.bcbz).then((response) => {
         getQmbcbzById(that.bcbz).then((response) => {
           if (response) {
           if (response) {
             that.curBCBZ = response.data
             that.curBCBZ = response.data
+
           }
           }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
@@ -132,7 +161,9 @@ export default {
       }
       }
       else {
       else {
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.QMBCList));
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.QMBCList));
-        that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        if (that.bcbzList.length > 0) {
+          that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        }
       }
       }
 
 
 
 
@@ -207,7 +238,7 @@ export default {
           // alert('submit!');
           // alert('submit!');
           that.dialogFormVisible = false;
           that.dialogFormVisible = false;
           that.saveData();
           that.saveData();
-         
+
           // this.$layer.alert("保存完成");
           // this.$layer.alert("保存完成");
         } else {
         } else {
           console.log("error submit!!");
           console.log("error submit!!");
@@ -221,8 +252,8 @@ export default {
      */
      */
     saveData() {
     saveData() {
       debugger;
       debugger;
-      var  that=this;
-      var date=new Date();
+      var that = this;
+      var date = new Date();
       var val = date.getTime().toString();
       var val = date.getTime().toString();
       var newBCBZ = {
       var newBCBZ = {
         "id": val,
         "id": val,
@@ -235,8 +266,10 @@ export default {
         newBCBZ.id = null
         newBCBZ.id = null
         addQmbcbz(newBCBZ).then((response) => {
         addQmbcbz(newBCBZ).then((response) => {
           if (response && response.code == 200) {
           if (response && response.code == 200) {
+            that
             that.getInitData();
             that.getInitData();
             that.$layer.alert("保存完成");
             that.$layer.alert("保存完成");
+            that.lyoption.content.parent.initSetting();
           }
           }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
@@ -266,6 +299,36 @@ export default {
     },
     },
     inputChange() {
     inputChange() {
       this.changeBCBZ()
       this.changeBCBZ()
+    },
+    delBZ() {
+      var that = this;
+      if (that.qmValue == null || that.qmValue == "") {
+        that.$layer.alert("请选择标准后再删除");
+        return
+      }
+      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+        if (window.isUseDB) {
+          delQmbcbz([that.qmValue]).then((res) => {
+            if (res) {
+              that.$layer.alert("数据已删除");
+              that.qmValue = null;
+              that.bcbz = that.qmValue;
+              that.getInitData();
+              that.lyoption.content.parent.initSetting();
+            }
+          }).catch((err) => {
+            console.log(err)
+          })
+        }
+        else {
+          var index = window.ZSBC.QMBCList.findIndex(t => t.id == that.qmValue);
+          if (index > -1) {
+            window.ZSBC.QMBCList.splice(index, 1);
+            that.getInitData();
+          }
+        }
+        that.$layer.close(formId)
+      });
     }
     }
 
 
   }
   }

+ 89 - 11
src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <!-- @blur="selectBlur($event, index)"  -->
   <!-- @blur="selectBlur($event, index)"  -->
-  <div class="ZTGlobal" style="width: 100%; padding: 1rem">
+  <div class="ZTGlobal" style="padding: 1rem; width: 100%">
     <el-row>
     <el-row>
       <el-col :span="6">征地补偿标准:</el-col>
       <el-col :span="6">征地补偿标准:</el-col>
       <el-col :span="18">
       <el-col :span="18">
@@ -63,6 +63,7 @@
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="save()">保存</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
+      <el-button type="primary" @click="delBZ()">删除</el-button>
     </el-row>
     </el-row>
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
     <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
@@ -80,10 +81,18 @@
 </template>
 </template>
 <script>
 <script>
 import {
 import {
-  getZdBcbzList, updateZdBcbz, addZdBcbz, getZdBcbzById
+  getZdBcbzList, updateZdBcbz, addZdBcbz, getZdBcbzById, delZdBcbz
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
 export default {
 export default {
-  props: ["zdValue"],
+  props: {
+    zdValue: { type: Object },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
   name: "ZDShowInfo",
   name: "ZDShowInfo",
   data() {
   data() {
 
 
@@ -153,23 +162,46 @@ export default {
       this.getInitData();
       this.getInitData();
     },
     },
     selectZDBZ() {
     selectZDBZ() {
+      // var that = this;
+      // if (that.bcbz == null || that.bcbz == "") {
+      //   that.$message.warning("请选择标准");
+      //   return;
+      // }
+      // that.zdValue = that.bcbz;
+      // if (window.isUseDB) {//数据库
+      //   getZdBcbzById(that.bcbz).then((response) => {
+      //     that.curBCBZ = response.data;
+      //   }).catch((err) => {
+      //     console.log(err)
+      //   })
+      // }
+      // else {
+      //   that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList));
+      //   if (that.bcbzList.length > 0)
+      //     that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+      // }
+
       var that = this;
       var that = this;
-      if (that.bcbz == null && that.bcbz == "") {
-        that.$message.warning("请选择标准");
+      if (that.bcbz == null || that.bcbz == "") {
+        that.$message.warning("请选择标准")
         return;
         return;
       }
       }
-      if (window.isUseDB) {//数据库
+      that.zdValue = that.bcbz;
+      if (window.isUseDB) {
         getZdBcbzById(that.bcbz).then((response) => {
         getZdBcbzById(that.bcbz).then((response) => {
-          that.curBCBZ = response.data;
+          if (response) {
+            that.curBCBZ = response.data
+          }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
         })
         })
       }
       }
       else {
       else {
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList));
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList));
-        that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        if (that.bcbzList.length > 0) {
+          that.curBCBZ = that.bcbzList.find((t) => t.id == that.bcbz);
+        }
       }
       }
-
     },
     },
     getInitData() {
     getInitData() {
       var that = this;
       var that = this;
@@ -177,18 +209,32 @@ export default {
       if (window.isUseDB) {//数据库
       if (window.isUseDB) {//数据库
         getZdBcbzList().then((response) => {
         getZdBcbzList().then((response) => {
           that.bcbzList = response.rows;
           that.bcbzList = response.rows;
-          if (that.bcbz != undefined && that.bcbz != "") {
+          if (that.bcbz != null && that.bcbz != "") {
             that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
             that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
           }
           }
+          else {
+            if (that.bcbzList.length> 0) {
+              that.curBCBZ = that.bcbzList[0]
+              that.bcbz = that.curBCBZ.id
+              that.zdValue = that.bcbz
+            }
+          }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
         })
         })
       }
       }
       else {
       else {
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList))
         that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList))
-        if (that.bcbz != undefined && that.bcbz != "") {
+        if (that.bcbz != null && that.bcbz != "") {
           that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
           that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
         }
         }
+        else {
+          if (that.bcbzList.length > 0) {
+            that.curBCBZ = that.bcbzList[0];
+            that.bcbz = that.curBCBZ.id
+            that.zdValue = that.bcbz
+          }
+        }
       }
       }
 
 
     },
     },
@@ -315,6 +361,7 @@ export default {
           if (response && response.code == 200) {
           if (response && response.code == 200) {
             that.$layer.alert("保存完成");
             that.$layer.alert("保存完成");
             that.getInitData();
             that.getInitData();
+            that.lyoption.content.parent.initSetting();
           }
           }
         }).catch((err) => {
         }).catch((err) => {
           console.log(err)
           console.log(err)
@@ -331,6 +378,37 @@ export default {
     },
     },
     inputChange() {
     inputChange() {
       this.changeZDBZ();
       this.changeZDBZ();
+    },
+    delBZ() {
+    
+      var that = this;
+      if (that.zdValue == null || that.zdValue == "") {
+        that.$layer.alert("请选择标准后再删除");
+        return
+      }
+      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+        if (window.isUseDB) {
+          delZdBcbz([that.zdValue]).then((res) => {
+            if (res) {
+              that.$layer.alert("数据已删除");
+              that.zdValue = null;
+              that.bcbz = that.zdValue;
+              that.getInitData();
+              that.lyoption.content.parent.initSetting();
+            }
+          }).catch((err) => {
+            console.log(err)
+          })
+        }
+        else {
+          var index = window.ZSBC.ZDBCList.findIndex(t => t.id == that.zdValue);
+          if (index > -1) {
+            window.ZSBC.ZDBCList.splice(index, 1);
+            that.getInitData();
+          }
+        }
+        that.$layer.close(formId)
+      });
     }
     }
   },
   },
 };
 };

File diff suppressed because it is too large
+ 0 - 5
src/views/ConstructionApplication3D/Demolition/zdAnalyse.js


+ 10 - 9
src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue

@@ -5,16 +5,10 @@
   >
   >
     <el-row :gutter="10">
     <el-row :gutter="10">
       <el-col :span="24">
       <el-col :span="24">
-        <el-button
-          type="primary"
-          size="mini"
-          @click="lyoption.content.parent.openskylineAnalysis()"
+        <el-button type="primary" size="mini" @click="openskylineAnalysis()"
           >天际线分析</el-button
           >天际线分析</el-button
         >
         >
-        <el-button
-          type="primary"
-          size="mini"
-          @click="lyoption.content.parent.openSunlightAnalysis()"
+        <el-button type="primary" size="mini" @click="openSunlightAnalysis()"
           >日照分析</el-button
           >日照分析</el-button
         >
         >
         <el-button type="primary" size="mini" @click="normAnalysis(itemModel)"
         <el-button type="primary" size="mini" @click="normAnalysis(itemModel)"
@@ -92,8 +86,15 @@ export default {
     init() {
     init() {
       debugger;
       debugger;
     },
     },
+    openskylineAnalysis() {
+      this.lyoption.content.parent.openskylineAnalysis();
+    },
+    openSunlightAnalysis() {
+      this.lyoption.content.parent.openSunlightAnalysis();
+    },
     //指标分析
     //指标分析
     normAnalysis() {
     normAnalysis() {
+      this.$layer.close("BJTC");
       let that = this;
       let that = this;
       let tableDataList = [];
       let tableDataList = [];
       this.getGuiHuaDiKuai(async function () {
       this.getGuiHuaDiKuai(async function () {
@@ -328,7 +329,7 @@ export default {
       let left = w - wpx + wpx / 2;
       let left = w - wpx + wpx / 2;
       let top = hpx / 2 + 60;
       let top = hpx / 2 + 60;
       let layerid = this.$layer.iframe({
       let layerid = this.$layer.iframe({
-        id: "ZBFXJGiframe",
+        id: "BJTC",
         content: {
         content: {
           content: ZBFXAnalysisinfo, //传递的组件对象
           content: ZBFXAnalysisinfo, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象

+ 2 - 1
src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue

@@ -35,7 +35,7 @@
               :show-header="false"
               :show-header="false"
               :data="gyTableData"
               :data="gyTableData"
               :highlight-current-row="true"
               :highlight-current-row="true"
-              @current-change="handleCurrentChange"
+              @row-click="handleCurrentChange"
               style="width: 100%"
               style="width: 100%"
             >
             >
               <el-table-column
               <el-table-column
@@ -367,6 +367,7 @@ export default {
     },
     },
     //点光源表选中
     //点光源表选中
     handleCurrentChange(row) {
     handleCurrentChange(row) {
+      debugger;
       this.currentRow = row;
       this.currentRow = row;
 
 
       this.clearLightSource();
       this.clearLightSource();

+ 202 - 0
src/views/ConstructionApplication3D/Popup.js

@@ -0,0 +1,202 @@
+/**
+ * 3D场景气泡框
+ * @constructor
+ */
+
+class Popup {
+  constructor(opt) {
+    this._viewer = opt.viewer;
+    this.element = opt.element; //dom or id
+    this.html = opt.html;
+    this.position = opt.position; //Cartesian3
+    this.pixelOffset = opt.pixelOffset || new Cesium.Cartesian2(0, 0); //像素偏移
+    this._show = opt.show || false;
+    this.hideOnBehindGlobe = opt.hideOnBehindGlobe || false; // 是否在地球背面隐藏
+    this.scaleByDistance = opt.scaleByDistance; //距离控制大小
+    this.translucencyByDistance = opt.translucencyByDistance; //距离控制透明度
+    this.distanceDisplayCondition = opt.distanceDisplayCondition; //距离控制显隐
+    this.scratch = new Cesium.Cartesian2();
+    this.RemoveCallback = function () {};
+    this.init(opt);
+  }
+
+  init(opt) {
+    // 在Cesium容器中添加元素
+    var dom = undefined;
+    // 传入html时转为dom元素
+    if (this.html) {
+      var parent = document.createElement("div");
+      parent.innerHTML = opt.html;
+      dom = parent.firstChild;
+    }
+    if (typeof opt.element === "string") {
+      this.element = document.getElementById(opt.element);
+    }
+    if (!this.element) this.element = dom; // 获取元素优先级高于获取html
+    this.close();
+    if (!this._viewer) {
+      console.log("Popup :viewer is required!");
+      return;
+    }
+    this.element.style.pointerEvents = "none";
+    this.element.style.transformOrigin = "left bottom 0px"; //缩放中心点
+    this._viewer.container.appendChild(this.element);
+    this.setViewer();
+    if (this.position) {
+      setTimeout(() => {
+        this.setPosition(opt.position);
+      }, 500);
+    }
+  }
+
+  /**
+   * 设置关联的cesium viewer
+   * @param viewer
+   */
+  setViewer() {
+    let _self = this;
+
+    // 每一帧触发
+    // _self.RemoveCallback = _self._viewer.scene.preRender.addEventListener(function () {
+    //     if (_self._show) {
+    //         _self.update()
+    //     }
+    // });
+
+    // 相机改变触发
+    _self.RemoveCallback = _self._viewer.camera.changed.addEventListener(
+      function () {
+        if (_self._show) {
+          _self.update();
+        }
+      }
+    );
+  }
+
+  /**
+   * 获取关联的cesium viewer
+   * @return {Cesium.Viewer}
+   */
+  getViewer() {
+    return this._viewer;
+  }
+
+  /**
+   * 设置位置
+   * @param position{Array}
+   */
+  setPosition(position) {
+    let _self = this;
+    if (!position) {
+      _self.close();
+      return;
+    }
+    if (!_self.getViewer()) {
+      return;
+    }
+    let canvasPosition = _self
+      .getViewer()
+      .scene.cartesianToCanvasCoordinates(position, _self.scratch); // 笛卡尔坐标到画布坐标
+    if (Cesium.defined(canvasPosition)) {
+      _self.element.style.top = canvasPosition.y + _self.pixelOffset.y + "px";
+      _self.element.style.left = canvasPosition.x + _self.pixelOffset.x + "px";
+      // _self.element.style.transform = `matrix(1, 0, 0, 1, ${canvasPosition.x + _self.pixelOffset.x}, ${canvasPosition.y + _self.pixelOffset.y})`;
+      _self.show();
+      if (
+        _self.hideOnBehindGlobe ||
+        _self.distanceDisplayCondition ||
+        _self.translucencyByDistance ||
+        _self.scaleByDistance
+      ) {
+        let cameraPosition = _self.getViewer().camera.position;
+        let distance = Cesium.Cartesian3.distance(cameraPosition, position);
+        if (_self.hideOnBehindGlobe) {
+          let height = _self
+            .getViewer()
+            .scene.globe.ellipsoid.cartesianToCartographic(
+              cameraPosition
+            ).height;
+          height += _self.getViewer().scene.globe.ellipsoid.maximumRadius;
+          if (!(distance > height)) {
+            _self.element.style.display = "flex";
+          } else {
+            _self.element.style.display = "none";
+          }
+        }
+        if (_self.distanceDisplayCondition) {
+          if (
+            distance < _self.distanceDisplayCondition.near ||
+            distance > _self.distanceDisplayCondition.far
+          ) {
+            _self.element.style.opacity = 0;
+            return;
+          } else {
+            _self.element.style.opacity = 1;
+          }
+        }
+        if (_self.translucencyByDistance) {
+          if (distance < _self.translucencyByDistance.near) {
+            _self.element.style.opacity =
+              _self.translucencyByDistance.nearValue;
+          } else if (distance > _self.translucencyByDistance.far) {
+            _self.element.style.opacity = _self.translucencyByDistance.farValue;
+          } else {
+            let val1 =
+              _self.translucencyByDistance.farValue -
+              _self.translucencyByDistance.nearValue;
+            let val2 =
+              _self.translucencyByDistance.far -
+              _self.translucencyByDistance.near;
+            let val3 =
+              ((distance - _self.translucencyByDistance.near) / val2) * val1 +
+              _self.translucencyByDistance.nearValue;
+            _self.element.style.opacity = val3;
+          }
+        }
+        if (_self.scaleByDistance) {
+          if (distance < _self.scaleByDistance.near) {
+            let val = _self.scaleByDistance.nearValue;
+            _self.element.style.transform = `scale(${val}, ${val})`;
+          } else if (distance > _self.scaleByDistance.far) {
+            let val = _self.scaleByDistance.farValue;
+            _self.element.style.transform = `scale(${val}, ${val})`;
+          } else {
+            let val1 =
+              _self.scaleByDistance.farValue - _self.scaleByDistance.nearValue;
+            let val2 = _self.scaleByDistance.far - _self.scaleByDistance.near;
+            let val3 =
+              ((distance - _self.scaleByDistance.near) / val2) * val1 +
+              _self.scaleByDistance.nearValue;
+            _self.element.style.transform = `scale(${val3}, ${val3})`;
+          }
+        }
+      }
+    }
+    _self.position = position;
+  }
+
+  update() {
+    this.setPosition(this.position);
+  }
+  getPosition() {
+    return this.position;
+  }
+
+  close() {
+    this.element.style.opacity = 0;
+    this._show = false;
+  }
+
+  show() {
+    this.element.style.opacity = 1;
+    this._show = true;
+  }
+
+  destroy() {
+    this.RemoveCallback();
+    this.close();
+    this._viewer.container.removeChild(this.element);
+  }
+}
+
+export default Popup;

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

@@ -1,139 +1,70 @@
 <template>
 <template>
-  <div
-    class="ZTGlobal"
-    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
-  >
-    <el-row
-      :gutter="5"
-      style="border: 1px dashed #02a7f0; 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 dashed #02a7f0; padding: 0.5rem; color: #ffffff">
       定点分析:
       定点分析:
       <el-row :gutter="5">
       <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>
-        <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>
         <el-col :span="7">
         <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-col>
       </el-row>
       </el-row>
       绿线为可见区域,红线为不可见区域
       绿线为可见区域,红线为不可见区域
     </el-row>
     </el-row>
-    <el-row
-      :gutter="5"
-      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
-    >
+    <el-row :gutter="5" style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff">
       环视分析:
       环视分析:
       <el-row :gutter="5">
       <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-col>
       </el-row>
       </el-row>
       <el-row :gutter="5">
       <el-row :gutter="5">
         <el-col :span="10"> 环视角度(度): </el-col>
         <el-col :span="10"> 环视角度(度): </el-col>
         <el-col :span="10">
         <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>
       <el-row :gutter="5">
       <el-row :gutter="5">
         <el-col :span="10"> 环视高度(米):</el-col>
         <el-col :span="10"> 环视高度(米):</el-col>
         <el-col :span="10">
         <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="circlePitchChange"></el-input-number>
         </el-col>
         </el-col>
       </el-row>
       </el-row>
       <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-col>
       </el-row>
       </el-row>
     </el-row>
     </el-row>
-    <el-row
-      :gutter="5"
-      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
-    >
+    <el-row :gutter="5" style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff">
       沿线飞行:
       沿线飞行:
       <el-row :gutter="2">
       <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>
-        <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>
-        <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-col>
       </el-row>
       </el-row>
       <el-row :gutter="2">
       <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"
+          @change="flyChange"></el-input-number>
       </el-row>
       </el-row>
       <el-row :gutter="2">
       <el-row :gutter="2">
         飞行速度(km/h):
         飞行速度(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"
+          @change="flyChange"></el-input-number>
       </el-row>
       </el-row>
     </el-row>
     </el-row>
     <el-row> </el-row>
     <el-row> </el-row>
     <el-row :gutter="5">
     <el-row :gutter="5">
       <el-col :span="8">
       <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-col>
     </el-row>
     </el-row>
   </div>
   </div>
@@ -146,10 +77,11 @@ import {
   mercator2lonLat,
   mercator2lonLat,
   undergroundMode,
   undergroundMode,
 } from "@/utils/MapHelper/MapHelper.js";
 } from "@/utils/MapHelper/MapHelper.js";
-// import { point, distance } from "@turf/turf";
 let handlerPoint = null; //绘制线
 let handlerPoint = null; //绘制线
 var sightline;
 var sightline;
 var flyManager;
 var flyManager;
+
+
 var points = [];
 var points = [];
 export default {
 export default {
   data() {
   data() {
@@ -169,9 +101,12 @@ export default {
       flyCircleText: "环视漫游",
       flyCircleText: "环视漫游",
       circlePitch: 75,
       circlePitch: 75,
       circleH: 500,
       circleH: 500,
+      flyHOld: 20,
       flyH: 20,
       flyH: 20,
       flySpeed: 50,
       flySpeed: 50,
       lineFylPoints: [],
       lineFylPoints: [],
+      changCount: 0,
+      lineLength: 0,
     };
     };
   },
   },
   props: {
   props: {
@@ -204,6 +139,7 @@ export default {
     sightline.build();
     sightline.build();
     handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);
     handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);
     scene.undergroundMode = false;
     scene.undergroundMode = false;
+
   },
   },
   methods: {
   methods: {
     /**
     /**
@@ -211,6 +147,7 @@ export default {
      */
      */
     addGCD() {
     addGCD() {
       let that = this;
       let that = this;
+      that.clearScope();
       sightline.removeAllTargetPoint();
       sightline.removeAllTargetPoint();
       that.addViewFlag = true;
       that.addViewFlag = true;
       that.addTargetFlag = false;
       that.addTargetFlag = false;
@@ -237,6 +174,7 @@ export default {
      */
      */
     addTagget() {
     addTagget() {
       let that = this;
       let that = this;
+
       that.addViewFlag = false;
       that.addViewFlag = false;
       that.addTargetFlag = true;
       that.addTargetFlag = true;
       that.addCircleFlag = false;
       that.addCircleFlag = false;
@@ -247,6 +185,7 @@ export default {
      */
      */
     addCirclePoint() {
     addCirclePoint() {
       let that = this;
       let that = this;
+      that.clearScope();
       that.addViewFlag = false;
       that.addViewFlag = false;
       that.addTargetFlag = false;
       that.addTargetFlag = false;
       that.addCircleFlag = true;
       that.addCircleFlag = true;
@@ -256,7 +195,9 @@ export default {
      * 输入点
      * 输入点
      */
      */
     setInput() {
     setInput() {
+
       var that = this;
       var that = this;
+      that.changCount = 0;
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);
       handlerPoint.activate();
       handlerPoint.activate();
       handlerPoint.drawEvt.addEventListener(function (result) {
       handlerPoint.drawEvt.addEventListener(function (result) {
@@ -266,11 +207,12 @@ export default {
         debugger;
         debugger;
         //将获取的点的位置转化成经纬度
         //将获取的点的位置转化成经纬度
         var cartographic = that.Cartesian2toDegrees(position);
         var cartographic = that.Cartesian2toDegrees(position);
-        if (cartographic[2] < 0) cartographic[2] = 0;
+        // if (cartographic[2] < 0) cartographic[2] = 0;
+        cartographic[2] += that.personH;
         //添加观察点
         //添加观察点
         if (that.addViewFlag) {
         if (that.addViewFlag) {
           //设置观察点
           //设置观察点
-          cartographic[2] += that.personH;
+
           sightline.viewPosition = cartographic;
           sightline.viewPosition = cartographic;
           that.addViewFlag = false;
           that.addViewFlag = false;
           viewer.entities.removeById("gcPoint");
           viewer.entities.removeById("gcPoint");
@@ -326,7 +268,11 @@ export default {
           viewer.entities.removeById("targetPoint");
           viewer.entities.removeById("targetPoint");
           var labelentity = new Cesium.Entity({
           var labelentity = new Cesium.Entity({
             id: "targetPoint",
             id: "targetPoint",
-            position: position,
+            position: Cesium.Cartesian3.fromDegrees(
+              cartographic[0],
+              cartographic[1],
+              cartographic[2]
+            ),
             point: {
             point: {
               // 点的大小(像素)
               // 点的大小(像素)
               pixelSize: 10,
               pixelSize: 10,
@@ -412,6 +358,7 @@ export default {
      * @param {} points
      * @param {} points
      */
      */
     ComputationalPerspective() {
     ComputationalPerspective() {
+      this.changCount++;
       var point1;
       var point1;
       var point2;
       var point2;
       debugger;
       debugger;
@@ -435,6 +382,8 @@ export default {
           sightline._currentTargetPoint[1],
           sightline._currentTargetPoint[1],
           sightline._currentTargetPoint[2],
           sightline._currentTargetPoint[2],
         ];
         ];
+
+
       } else {
       } else {
         point1 = [
         point1 = [
           sightline._currentTargetPoint[0],
           sightline._currentTargetPoint[0],
@@ -446,8 +395,7 @@ export default {
           sightline.viewPosition[1],
           sightline.viewPosition[1],
           sightline.viewPosition[2],
           sightline.viewPosition[2],
         ];
         ];
-        point1[2] += this.personH;
-        point2[2] -= this.personH;
+
       }
       }
       var positionA = Cesium.Cartesian3.fromDegrees(
       var positionA = Cesium.Cartesian3.fromDegrees(
         point1[0],
         point1[0],
@@ -501,6 +449,8 @@ export default {
       this.lineFylPoints = [];
       this.lineFylPoints = [];
       scene.camera.stopFlyCircle();
       scene.camera.stopFlyCircle();
       this.flyCircleText = "环视漫游";
       this.flyCircleText = "环视漫游";
+      this.changCount = 0;
+      scene.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
     },
     },
     /**
     /**
      * 目标点环视
      * 目标点环视
@@ -512,18 +462,27 @@ export default {
         var position = Cesium.Cartesian3.fromDegrees(
         var position = Cesium.Cartesian3.fromDegrees(
           that.circlPoint[0],
           that.circlPoint[0],
           that.circlPoint[1],
           that.circlPoint[1],
-          that.circlPoint[2] + 1000
+          that.circlPoint[2]
         );
         );
-        // 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.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.lookAt(position, new Cesium.HeadingPitchRange(0, that.circlePitch * -1, that.circleH));
         scene.camera.flyCircle(position);
         scene.camera.flyCircle(position);
+
+        // scene.camera.setView({
+        //   destination: position,
+        //   orientation: {
+        //     heading: viewer.camera.heading,//Cesium.Math.toRadians(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.speedRatio = 0.2;
         scene.camera.speedRatio = 0.2;
       } else {
       } else {
         that.$message.warning("请添加环视点!");
         that.$message.warning("请添加环视点!");
@@ -535,27 +494,12 @@ export default {
       } else {
       } else {
         that.flyCircleText = "环视漫游";
         that.flyCircleText = "环视漫游";
         scene.camera.stopFlyCircle();
         scene.camera.stopFlyCircle();
+        scene.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
       }
       }
     },
     },
+
     /**
     /**
-     * 修改环视高度
-     */
-    circleHChange() {
-      scene.camera.setView({
-        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
-        },
-      });
-    },
-    /**
-     * 修改环视角度
+     * 修改环视角度 修改环视高度
      */
      */
     circlePitchChange() {
     circlePitchChange() {
       scene.camera.setView({
       scene.camera.setView({
@@ -570,20 +514,30 @@ export default {
           roll: 0.0, // default value
           roll: 0.0, // default value
         },
         },
       });
       });
+      // var position = new Cesium.Cartesian3.fromDegrees(this.circlPoint[0],
+      //   this.circlPoint[1],
+      //   this.circlPoint[2])
+      // scene.camera.lookAt(position, new Cesium.HeadingPitchRange(0, this.circlePitch * -1, this.circleH));
     },
     },
     /**
     /**
      * 绘制飞行线
      * 绘制飞行线
      */
      */
     addPolyline() {
     addPolyline() {
+
       var that = this;
       var that = this;
+      that.clearScope();
       that.lineFylPoints = [];
       that.lineFylPoints = [];
       if (handlerPoint) handlerPoint.clear();
       if (handlerPoint) handlerPoint.clear();
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Line);
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Line);
       handlerPoint.activate();
       handlerPoint.activate();
       handlerPoint.drawEvt.addEventListener(function (result) {
       handlerPoint.drawEvt.addEventListener(function (result) {
         debugger;
         debugger;
+
         var positions = result.object.positions;
         var positions = result.object.positions;
         for (var i = 0; i < positions.length; i++) {
         for (var i = 0; i < positions.length; i++) {
+          if (i < positions.length - 1)
+            that.lineLength += that.getLineLentByPoints(positions[i], positions[i + 1])
+
           var cartographic = that.Cartesian2toDegrees(positions[i]);
           var cartographic = that.Cartesian2toDegrees(positions[i]);
           that.lineFylPoints.push(cartographic);
           that.lineFylPoints.push(cartographic);
         }
         }
@@ -602,6 +556,36 @@ export default {
       }
       }
       debugger;
       debugger;
       var speed = Number(that.flySpeed) / 3.6;
       var speed = Number(that.flySpeed) / 3.6;
+
+      // var totalDuration = that.lineLength / speed;
+
+      // var route = new Cesium.Route();
+      // route.isAlongline = true;
+      // route.isFlyLoop = true;
+      // route.isStopVisible = false;
+      // route.isLineVisible = false;
+      // route.routeName = "routeName";
+      // route.speed = speed;
+      // try {
+
+      //   for (var i = 0; i < that.lineFylPoints.length; i++) {
+      //     var stop = new Cesium.RouteStop({
+      //       isExcluded: false,
+      //       point: new Cesium.Cartesian3.fromDegrees(
+      //         that.lineFylPoints[i][0],
+      //         that.lineFylPoints[i][1],
+      //         that.lineFylPoints[i][2] + that.flyH
+      //       ),
+      //       stopName: "stop" + i,
+      //     })
+      //     route.stopCollection.push(stop);
+      //   }
+      // } catch (error) {
+      //   console.log(error)
+      // }
+      // var routes = new Cesium.RouteCollection(viewer.entities);
+      // routes.addRoute(route);
+      var speed = Number(that.flySpeed) / 3.6;
       var xml =
       var xml =
         '<?xml version="1.0" encoding="UTF-8"?>' +
         '<?xml version="1.0" encoding="UTF-8"?>' +
         '<SceneRoute xmlns = "https://www.supermap.com/ugc60" >' +
         '<SceneRoute xmlns = "https://www.supermap.com/ugc60" >' +
@@ -657,11 +641,14 @@ export default {
       xml += "</SceneRoute >";
       xml += "</SceneRoute >";
       var routes = new Cesium.RouteCollection(viewer.entities);
       var routes = new Cesium.RouteCollection(viewer.entities);
       routes.fromXML(xml);
       routes.fromXML(xml);
-      //初始化飞行管理
+      routes.routes[0].isFlyLoop = true;
       flyManager = new Cesium.FlyManager({
       flyManager = new Cesium.FlyManager({
         scene: scene,
         scene: scene,
-        routes: routes,
+        routes: routes
       });
       });
+
+      //初始化飞行管理
+      that.flyHOld = that.flyH;
       //注册站点到达事件
       //注册站点到达事件
       flyManager.stopArrived.addEventListener(function (routeStop) {
       flyManager.stopArrived.addEventListener(function (routeStop) {
         routeStop.waitTime = 1; // 在每个站点处停留1s
         routeStop.waitTime = 1; // 在每个站点处停留1s
@@ -677,13 +664,33 @@ export default {
         flyManager && flyManager.play();
         flyManager && flyManager.play();
       });
       });
     },
     },
+    getLineLentByPoints(point1, point2) {
+      var d2L = Math.sqrt((point2.y - point1.y) * (point2.y - point1.y) + (point2.x - point1.x) * (point2.x - point1.x))
+      var d3L = Math.sqrt((point2.z - point1.z) * (point2.z - point1.z) + d2L * d2L)
+      return d3L;
+    },
+    flyChange() {
+      var that = this;
+      flyManager.currentRoute.speed = that.flySpeed / 3.6;
+      flyManager && flyManager.stop();
+      flyManager.currentRoute.stopCollection.forEach((stop, index) => {
+        stop.point = new Cesium.Cartesian3.fromDegrees(
+          that.lineFylPoints[index][0],
+          that.lineFylPoints[index][1],
+          that.lineFylPoints[index][2] + that.flyH - that.flyHOld
+        )
+      })
+      that.flyHOld = that.flyH
+      flyManager && flyManager.play();
+    },
     /**
     /**
      * 停止沿线飞行
      * 停止沿线飞行
      */
      */
     stopPolylineFly() {
     stopPolylineFly() {
-      var allStops = flyManager.getAllRouteStops();
-      flyManager.viewToStop(allStops[allStops.length - 1]);
+      // var allStops = flyManager.getAllRouteStops();
+      // flyManager.viewToStop(allStops[allStops.length - 1]);
       flyManager && flyManager.stop();
       flyManager && flyManager.stop();
+    
     },
     },
   },
   },
   beforeDestroy() {
   beforeDestroy() {

+ 22 - 31
src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue

@@ -2,7 +2,7 @@
   <div
   <div
     class="ZTGlobal"
     class="ZTGlobal"
     style="width: 100%; padding: 1rem 1.1rem 0rem; color: white"
     style="width: 100%; padding: 1rem 1.1rem 0rem; color: white"
-    v-loading="loading"
+    v-loading.fullscreen.lock="loading"
     element-loading-text="正在分析中...."
     element-loading-text="正在分析中...."
     element-loading-spinner="el-icon-loading"
     element-loading-spinner="el-icon-loading"
     element-loading-background="rgba(0, 0, 0, 0.8)"
     element-loading-background="rgba(0, 0, 0, 0.8)"
@@ -119,7 +119,7 @@
         </el-row>
         </el-row>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
-    <el-row :gutter="10" v-if="multiViewportMode > 1">
+    <!-- <el-row :gutter="10" v-if="multiViewportMode > 1">
       <el-col :span="24">
       <el-col :span="24">
         选择分析视口:<el-radio-group
         选择分析视口:<el-radio-group
           v-model="radio"
           v-model="radio"
@@ -129,7 +129,7 @@
           <el-radio :label="item - 1">窗口{{ item }}</el-radio>
           <el-radio :label="item - 1">窗口{{ item }}</el-radio>
         </el-radio-group>
         </el-radio-group>
       </el-col>
       </el-col>
-    </el-row>
+    </el-row> -->
     <div class="SaveCenter">
     <div class="SaveCenter">
       <el-row :gutter="10">
       <el-row :gutter="10">
         <el-col :span="24">
         <el-col :span="24">
@@ -514,7 +514,9 @@ export default {
             that.tableData = [];
             that.tableData = [];
             that.loading = false;
             that.loading = false;
             let sdsd = [];
             let sdsd = [];
-            e.forEach(function (a) {
+
+            for (let index = 0; index < e.length; index++) {
+              const a = e[index];
               var e_cartographic = Cesium.Cartographic.fromCartesian(
               var e_cartographic = Cesium.Cartographic.fromCartesian(
                 a.position
                 a.position
               );
               );
@@ -526,23 +528,23 @@ export default {
               let sd = point([e_longitude, e_latitude]);
               let sd = point([e_longitude, e_latitude]);
               sd.properties.value = e_shadowRadio;
               sd.properties.value = e_shadowRadio;
               sdsd.push(sd);
               sdsd.push(sd);
-            });
+            }
+
             let gsd = that.setIsoline(sdsd);
             let gsd = that.setIsoline(sdsd);
             // that.sdh = [];
             // that.sdh = [];
-            gsd.features.forEach((element) => {
-              // let qj = element.properties.value.split("-");
-              // let scS = (
-              //   (that.datavalue[1] + 1 - that.datavalue[0]) *
-              //   qj[0]
-              // ).toFixed(2);
-              // let scE = (
-              //   (that.datavalue[1] + 1 - that.datavalue[0]) *
-              //   qj[1]
-              // ).toFixed(2);
-              // that.sdh.push({ scS, scE, fill: element.properties.fill });
 
 
-              element.geometry.coordinates.forEach((polygon) => {
-                debugger;
+            for (
+              let featuresindex = 0;
+              featuresindex < gsd.features.length;
+              featuresindex++
+            ) {
+              const element = gsd.features[featuresindex];
+              for (
+                let index = 0;
+                index < element.geometry.coordinates.length;
+                index++
+              ) {
+                const polygon = element.geometry.coordinates[index];
                 let ps = polygon[0].flat();
                 let ps = polygon[0].flat();
                 let id = uuidv4();
                 let id = uuidv4();
                 that.eids.push(id);
                 that.eids.push(id);
@@ -560,8 +562,8 @@ export default {
                     // classificationType: Cesium.ClassificationType.TERRAIN,
                     // classificationType: Cesium.ClassificationType.TERRAIN,
                   },
                   },
                 });
                 });
-              });
-            });
+              }
+            }
 
 
             if (shadowQuery) {
             if (shadowQuery) {
               shadowQuery.destroy();
               shadowQuery.destroy();
@@ -680,17 +682,6 @@ export default {
         }
         }
       });
       });
 
 
-      //版本缺陷无法使用俯仰角
-      // viewer.flyTo(entitys, {
-      //   options: {
-      //     offset: new Cesium.HeadingPitchRange(
-      //       0,
-      //       Cesium.Math.toRadians(-180),
-      //       1000
-      //     ),
-      //   },
-      // });
-
       let box = that.squarePolygon(entitys);
       let box = that.squarePolygon(entitys);
       viewer.camera.flyTo({
       viewer.camera.flyTo({
         destination: Cesium.Rectangle.fromDegrees(
         destination: Cesium.Rectangle.fromDegrees(

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

@@ -89,6 +89,7 @@ import {
   addZtProjectModelZb,
   addZtProjectModelZb,
   updateZtProjectModelZb,
   updateZtProjectModelZb,
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
+import { isNumber } from "lodash";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -125,6 +126,17 @@ export default {
     this.init();
     this.init();
   },
   },
   methods: {
   methods: {
+    validateNumber(value) {
+      if (!value) {
+        return "不能为空";
+      }
+      if (isNaN(value)) {
+        return "请输入数字";
+      }
+      if (Number(value) < 0) {
+        return "数字需大于等于0";
+      }
+    },
     async init() {
     async init() {
       let that = this;
       let that = this;
       that.MXDKZBDataList = [];
       that.MXDKZBDataList = [];
@@ -378,9 +390,19 @@ export default {
     async handleSave(row, TableData) {
     async handleSave(row, TableData) {
       debugger;
       debugger;
       let rgzb = {};
       let rgzb = {};
-      TableData.forEach((data) => {
+      for (let index = 0; index < TableData.length; index++) {
+        const data = TableData[index];
+        var jy = this.validateNumber(data.rghszb);
+        if (jy) {
+          this.$message({
+            message: jy,
+            type: "warning",
+          });
+          return;
+        }
         rgzb[data.rgzbName] = data.rghszb;
         rgzb[data.rgzbName] = data.rghszb;
-      });
+      }
+
       await updateZtProjectModelZb({
       await updateZtProjectModelZb({
         id: row.rgzbid,
         id: row.rgzbid,
         zbcs: JSON.stringify(rgzb),
         zbcs: JSON.stringify(rgzb),

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

@@ -601,6 +601,7 @@ export default {
      */
      */
     addModel() {
     addModel() {
       var that = this;
       var that = this;
+      this.removeModel();
       if (modelList.length > 0) {
       if (modelList.length > 0) {
         for (let index = 0; index < modelList.length; index++) {
         for (let index = 0; index < modelList.length; index++) {
           const element = modelList[index];
           const element = modelList[index];

+ 7 - 5
src/views/ConstructionApplication3D/billboard/billboardCheckList.vue

@@ -184,14 +184,13 @@ export default {
      */
      */
     check(row) {
     check(row) {
       // this.locationClick(row);
       // this.locationClick(row);
-      if (this.deltailLayerId != null) this.$layer.close(this.deltailLayerId);
       var width = 400;
       var width = 400;
-
       var top = 500;
       var top = 500;
       var left = Math.floor(document.body.clientWidth - width / 2);
       var left = Math.floor(document.body.clientWidth - width / 2);
       var height = 500;
       var height = 500;
 
 
       this.deltailLayerId = this.$layer.iframe({
       this.deltailLayerId = this.$layer.iframe({
+        id: "MXSC",
         content: {
         content: {
           content: billboardChekInfo, //传递的组件对象
           content: billboardChekInfo, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -199,7 +198,7 @@ export default {
         },
         },
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: [width.toString() + "px", height.toString() + "px"],
         area: [width.toString() + "px", height.toString() + "px"],
-        title: "广告牌审查",
+        title: "模型审查",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
@@ -215,7 +214,6 @@ export default {
      * @param {*} row
      * @param {*} row
      */
      */
     checkResult(row) {
     checkResult(row) {
-      if (this.deltailLayerId != null) this.$layer.close(this.deltailLayerId);
       var width = 400;
       var width = 400;
 
 
       var top = 500;
       var top = 500;
@@ -223,6 +221,7 @@ export default {
       var height = 500;
       var height = 500;
 
 
       this.deltailLayerId = this.$layer.iframe({
       this.deltailLayerId = this.$layer.iframe({
+        id: "MXSC",
         content: {
         content: {
           content: billboardChekResults, //传递的组件对象
           content: billboardChekResults, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -230,7 +229,7 @@ export default {
         },
         },
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: [width.toString() + "px", height.toString() + "px"],
         area: [width.toString() + "px", height.toString() + "px"],
-        title: "广告牌审查结果",
+        title: "审查结果",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
@@ -241,6 +240,9 @@ export default {
       });
       });
     },
     },
   },
   },
+  beforeDestroy() {
+    this.$layer.close("MXSC");
+  },
 };
 };
 </script>
 </script>
 <style lang="scss">
 <style lang="scss">

+ 43 - 18
src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue

@@ -8,7 +8,11 @@
     >
     >
     <el-table :data="tableData" border style="width: 100%">
     <el-table :data="tableData" border style="width: 100%">
       <el-table-column type="index"> </el-table-column>
       <el-table-column type="index"> </el-table-column>
-      <el-table-column prop="ReviewContent" label="审查项"> </el-table-column>
+      <el-table-column prop="ReviewContent" label="审查项">
+        <template slot-scope="scope">
+          <div v-html="scope.row.ReviewContent"></div>
+        </template>
+      </el-table-column>
       <el-table-column prop="ReviewMethod" label="审查方式"> </el-table-column>
       <el-table-column prop="ReviewMethod" label="审查方式"> </el-table-column>
 
 
       <el-table-column fixed="right" label="结果" width="100">
       <el-table-column fixed="right" label="结果" width="100">
@@ -146,10 +150,11 @@ export default {
       let that = this;
       let that = this;
       let Cartesian3 = await getGroundPoint(that.info.x, that.info.y);
       let Cartesian3 = await getGroundPoint(that.info.x, that.info.y);
       let Elevation = 19.4; //地形高程
       let Elevation = 19.4; //地形高程
+      debugger;
       if (Cartesian3) {
       if (Cartesian3) {
         Elevation = cartesian3ToWGS84(Cartesian3).alt;
         Elevation = cartesian3ToWGS84(Cartesian3).alt;
       }
       }
-      // let Z = Number(that.info.z) - Elevation;
+      let Z = Number(that.info.z) - Elevation;
 
 
       //过滤规则
       //过滤规则
       let billboardReviewList = flatten(window.window.billboardReviewList);
       let billboardReviewList = flatten(window.window.billboardReviewList);
@@ -363,6 +368,7 @@ export default {
                   case "003020101": //广告牌面下缘距离地面高度大于等于0.5米
                   case "003020101": //广告牌面下缘距离地面高度大于等于0.5米
                   case "003020201": //广告牌面下缘距离地面高度大于等于0.5米
                   case "003020201": //广告牌面下缘距离地面高度大于等于0.5米
                   case "0030101": //广告牌面下缘距离地面高度大于等于0.5米
                   case "0030101": //广告牌面下缘距离地面高度大于等于0.5米
+                    debugger;
                     //广告下沿高度
                     //广告下沿高度
                     var ggxygd =
                     var ggxygd =
                       that.info.templateTop.z -
                       that.info.templateTop.z -
@@ -375,11 +381,18 @@ export default {
                     }
                     }
                     break;
                     break;
                   case "0030102": //广告总体高度(含广告牌面和支撑结构)不得超过4米
                   case "0030102": //广告总体高度(含广告牌面和支撑结构)不得超过4米
-                    //广告上沿高度
-                    var ggxygd =
-                      that.info.templateTop.z -
-                      Elevation -
-                      that.info.templateTop.yL / 2;
+                    debugger;
+                    //广告高度
+                    var topgd = that.info.templateTop.yL
+                      ? that.info.templateTop.yL
+                      : 0;
+                    var Centregd = that.info.templateCentre.yL
+                      ? that.info.templateCentre.yL
+                      : 0;
+                    var Bottomgd = that.info.templateBottom.yL
+                      ? that.info.templateBottom.yL
+                      : 0;
+                    var ggxygd = topgd + Centregd + Bottomgd;
                     if (ggxygd <= 4) {
                     if (ggxygd <= 4) {
                       ruleResult = "true";
                       ruleResult = "true";
                     } else {
                     } else {
@@ -414,11 +427,17 @@ export default {
                     }
                     }
                     break;
                     break;
                   case "003020205": //底座型户外广告设施的总高度不得大于2.4米
                   case "003020205": //底座型户外广告设施的总高度不得大于2.4米
-                    //广告上沿高度
-                    var ggxygd =
-                      that.info.templateTop.z -
-                      Elevation -
-                      that.info.templateTop.yL / 2;
+                    //广告高度
+                    var topgd = that.info.templateTop.yL
+                      ? that.info.templateTop.yL
+                      : 0;
+                    var Centregd = that.info.templateCentre.yL
+                      ? that.info.templateCentre.yL
+                      : 0;
+                    var Bottomgd = that.info.templateBottom.yL
+                      ? that.info.templateBottom.yL
+                      : 0;
+                    var ggxygd = topgd + Centregd + Bottomgd;
                     if (ggxygd <= 2.4) {
                     if (ggxygd <= 2.4) {
                       ruleResult = "true";
                       ruleResult = "true";
                     } else {
                     } else {
@@ -468,11 +487,17 @@ export default {
                     break;
                     break;
 
 
                   case "003030102": //广告总高度不得大于3米,且不得低于1.2米
                   case "003030102": //广告总高度不得大于3米,且不得低于1.2米
-                    //广告上沿高度
-                    var ggxygd =
-                      that.info.templateTop.z -
-                      Elevation +
-                      that.info.templateTop.yL / 2;
+                    //广告高度
+                    var topgd = that.info.templateTop.yL
+                      ? that.info.templateTop.yL
+                      : 0;
+                    var Centregd = that.info.templateCentre.yL
+                      ? that.info.templateCentre.yL
+                      : 0;
+                    var Bottomgd = that.info.templateBottom.yL
+                      ? that.info.templateBottom.yL
+                      : 0;
+                    var ggxygd = topgd + Centregd + Bottomgd;
                     if (ggxygd >= 1.2 && ggxygd <= 3) {
                     if (ggxygd >= 1.2 && ggxygd <= 3) {
                       ruleResult = "true";
                       ruleResult = "true";
                     } else {
                     } else {
@@ -831,7 +856,7 @@ export default {
     },
     },
   },
   },
   beforeDestroy() {
   beforeDestroy() {
-    viewer.entities.removeAll();
+    // viewer.entities.removeAll();
   },
   },
 };
 };
 </script>
 </script>

+ 6 - 2
src/views/ConstructionApplication3D/billboard/billboardChekResults.vue

@@ -8,7 +8,11 @@
     >
     >
     <el-table :data="tableData" border style="width: 100%">
     <el-table :data="tableData" border style="width: 100%">
       <el-table-column type="index"> </el-table-column>
       <el-table-column type="index"> </el-table-column>
-      <el-table-column prop="ReviewContent" label="审查项"> </el-table-column>
+      <el-table-column prop="ReviewContent" label="审查项">
+        <template slot-scope="scope">
+          <div v-html="scope.row.ReviewContent"></div>
+        </template>
+      </el-table-column>
       <el-table-column prop="ReviewMethod" label="审查方式"> </el-table-column>
       <el-table-column prop="ReviewMethod" label="审查方式"> </el-table-column>
 
 
       <el-table-column fixed="right" label="结果" width="100">
       <el-table-column fixed="right" label="结果" width="100">
@@ -136,7 +140,7 @@ export default {
     },
     },
   },
   },
   beforeDestroy() {
   beforeDestroy() {
-    viewer.entities.removeAll();
+    // viewer.entities.removeAll();
   },
   },
 };
 };
 </script>
 </script>

+ 37 - 23
src/views/ConstructionApplication3D/billboard/billboardDesign.vue

@@ -198,12 +198,15 @@ export default {
         },
         },
       });
       });
     },
     },
-    /*
-     *定位
+
+    /**
+     * 渲染,定位
+     * @param item
+     * @param isPosition 默认定位
      */
      */
-    async locationModel(item) {
+    async locationModel(item, isPosition) {
       debugger;
       debugger;
-      this.intoModel(item);
+      this.intoModel(item, isPosition);
       this.removeAllentities();
       this.removeAllentities();
       //渲染范围
       //渲染范围
       // this.DrawProjectScope(item);
       // this.DrawProjectScope(item);
@@ -220,8 +223,9 @@ export default {
       data.rows.forEach((element) => {
       data.rows.forEach((element) => {
         this.DrawBillboard(element);
         this.DrawBillboard(element);
       });
       });
-
-      window.viewer.flyTo(entityList);
+      if (isPosition != false) {
+        window.viewer.flyTo(entityList);
+      }
     },
     },
 
 
     /**
     /**
@@ -230,16 +234,19 @@ export default {
      */
      */
     locationSingleModel(Mitem) {
     locationSingleModel(Mitem) {
       if (Mitem.isAddModel) {
       if (Mitem.isAddModel) {
-        let entitie = viewer.entities.getById("point_Billboard_" + Mitem.id);
-        if (!entitie) {
-          //渲染单个广告牌
-          // if (billboardModel.id == Mitem.id) {
-          this.DrawBillboard(Mitem);
-          // viewer.flyTo(entitie);
-          // }
+        if (Mitem.viewing_angle) {
+          viewer.camera.setView(JSON.parse(Mitem.viewing_angle));
+        } else {
+          let entitie = viewer.entities.getById("point_Billboard_" + Mitem.id);
+          if (!entitie) {
+            //渲染单个广告牌
+            // if (billboardModel.id == Mitem.id) {
+            this.DrawBillboard(Mitem);
+            // viewer.flyTo(entitie);
+            // }
+          }
+          viewer.flyTo(entitie);
         }
         }
-
-        viewer.camera.setView(JSON.parse(Mitem.viewing_angle));
       }
       }
     },
     },
     /**
     /**
@@ -247,7 +254,7 @@ export default {
      */
      */
 
 
     async billboarddetial(item) {
     async billboarddetial(item) {
-      await this.locationModel(item);
+      await this.locationModel(item, false);
       this.$layer.iframe({
       this.$layer.iframe({
         id: "billboarddetail",
         id: "billboarddetail",
         content: {
         content: {
@@ -257,7 +264,7 @@ export default {
         },
         },
         offset: [720, 400], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         offset: [720, 400], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["300px", "400px"],
         area: ["300px", "400px"],
-        title: "广告详情",
+        title: "项目详情",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
@@ -273,7 +280,7 @@ export default {
      */
      */
 
 
     async checkModel(item) {
     async checkModel(item) {
-      await this.locationModel(item);
+      await this.locationModel(item, false);
       if (this.checklLayerId != null) this.$layer.close(this.checklLayerId);
       if (this.checklLayerId != null) this.$layer.close(this.checklLayerId);
       var width = 400;
       var width = 400;
       var top = 250;
       var top = 250;
@@ -288,7 +295,7 @@ export default {
         },
         },
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: [width.toString() + "px", height.toString() + "px"],
         area: [width.toString() + "px", height.toString() + "px"],
-        title: "广告牌列表",
+        title: "模型审查列表",
         maxmin: true,
         maxmin: true,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
@@ -370,7 +377,7 @@ export default {
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
         cancel: () => {
         cancel: () => {
           //关闭事件
           //关闭事件
-          this.locationModel(project);
+          this.locationModel(project, false);
         },
         },
       });
       });
     },
     },
@@ -941,8 +948,9 @@ export default {
     /**
     /**
      * 加载报建模型
      * 加载报建模型
      * @param info
      * @param info
+     * @param isPosition
      */
      */
-    intoModel(info) {
+    intoModel(info, isPosition) {
       let that = this;
       let that = this;
       if (info.url && this.selectBillardId != info.id) {
       if (info.url && this.selectBillardId != info.id) {
         this.selectBillardId = info.id;
         this.selectBillardId = info.id;
@@ -952,12 +960,18 @@ export default {
         this.thislayers = [];
         this.thislayers = [];
         setTimeout(function () {
         setTimeout(function () {
           try {
           try {
-            var promisse11w = scene.open(info.url);
+            var dingwei = isPosition;
+            if (isPosition != false) {
+              dingwei = true;
+            }
+            var promisse11w = scene.open(info.url, undefined, {
+              autoSetView: dingwei,
+            });
             Cesium.when(promisse11w, function (layers) {
             Cesium.when(promisse11w, function (layers) {
               debugger;
               debugger;
               layers.forEach((element) => {
               layers.forEach((element) => {
                 that.thislayers.push(element.name);
                 that.thislayers.push(element.name);
-                window.viewer.flyTo(element);
+                // window.viewer.flyTo(element);
               });
               });
             });
             });
             that.yp(info);
             that.yp(info);

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

@@ -18,6 +18,30 @@
           <el-descriptions-item label="简介">
           <el-descriptions-item label="简介">
             {{ info.projectInfo.description }}
             {{ info.projectInfo.description }}
           </el-descriptions-item>
           </el-descriptions-item>
+          <el-descriptions-item
+            v-if="info.projectInfo.url"
+            label="模型场景地址"
+          >
+            {{ info.projectInfo.url }}
+          </el-descriptions-item>
+          <el-descriptions-item
+            v-if="info.projectInfo.dataurl"
+            label="模型数据地址"
+          >
+            {{ info.projectInfo.dataurl }}
+          </el-descriptions-item>
+          <el-descriptions-item
+            v-if="info.projectInfo.datasourcename"
+            label="模型数据源"
+          >
+            {{ info.projectInfo.datasourcename }}
+          </el-descriptions-item>
+          <el-descriptions-item
+            v-if="info.projectInfo.datasetname"
+            label="模型数据集"
+          >
+            {{ info.projectInfo.datasetname }}
+          </el-descriptions-item>
         </el-descriptions>
         </el-descriptions>
       </el-col>
       </el-col>
     </el-row>
     </el-row>

+ 2 - 1
src/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue

@@ -128,7 +128,8 @@ export default {
 
 
         //box编辑
         //box编辑
         editorBox = new Cesium.BoxEditor(viewer, boxEntity);
         editorBox = new Cesium.BoxEditor(viewer, boxEntity);
-
+        editorBox.boundingBox.show = false;
+        editorBox.color = Cesium.Color.WHITE.withAlpha(0.0); //设置盒子透明
         editorBox.editEvt.addEventListener(function (e) {
         editorBox.editEvt.addEventListener(function (e) {
           boxEntity.box.dimensions = e.dimensions;
           boxEntity.box.dimensions = e.dimensions;
           boxEntity.position = e.position;
           boxEntity.position = e.position;

+ 32 - 14
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -28,7 +28,11 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="用地面积" size="mini" prop="landarea">
           <el-form-item label="用地面积" size="mini" prop="landarea">
             <el-col :span="20">
             <el-col :span="20">
-              <el-input size="mini" v-model.number="form.landarea"></el-input>
+              <el-input
+                size="mini"
+                type="number"
+                v-model.number="form.landarea"
+              ></el-input>
             </el-col>
             </el-col>
             <el-col :span="4">平方米</el-col>
             <el-col :span="4">平方米</el-col>
           </el-form-item>
           </el-form-item>
@@ -63,6 +67,7 @@
           >
           >
             <el-col :span="20">
             <el-col :span="20">
               <el-input
               <el-input
+                type="number"
                 size="mini"
                 size="mini"
                 v-model.number="form.totalprojectinvestment"
                 v-model.number="form.totalprojectinvestment"
               ></el-input>
               ></el-input>
@@ -184,20 +189,29 @@ export default {
   computed: {},
   computed: {},
   mounted() {
   mounted() {
     debugger;
     debugger;
-    // this.init();
-    if (this.info.id) {
-      this.form = this.info;
-      if (this.form.landarea) {
-        this.form.landarea = Number(this.form.landarea);
-      }
-      if (this.form.totalprojectinvestment) {
-        this.form.totalprojectinvestment = Number(
-          this.form.totalprojectinvestment
-        );
-      }
-    }
+    this.init();
   },
   },
   methods: {
   methods: {
+    init() {
+      if (this.info.id) {
+        this.form = JSON.parse(JSON.stringify(this.info));
+        if (this.form.landarea && !isNaN(Number(this.form.landarea))) {
+          this.form.landarea = Number(this.form.landarea);
+        } else {
+          this.form.landarea = 0;
+        }
+        if (
+          this.form.totalprojectinvestment &&
+          !isNaN(Number(this.form.totalprojectinvestment))
+        ) {
+          this.form.totalprojectinvestment = Number(
+            this.form.totalprojectinvestment
+          );
+        } else {
+          this.form.totalprojectinvestment = 0;
+        }
+      }
+    },
     validateNumber(rule, value, callback) {
     validateNumber(rule, value, callback) {
       if (value < 0) {
       if (value < 0) {
         return callback(new Error("数字需大于等于0"));
         return callback(new Error("数字需大于等于0"));
@@ -240,7 +254,11 @@ export default {
       });
       });
     },
     },
     resetForm(formName) {
     resetForm(formName) {
-      this.$refs[formName].resetFields();
+      if (this.info.id) {
+        this.init();
+      } else {
+        this.$refs[formName].resetFields();
+      }
     },
     },
   },
   },
 };
 };

+ 343 - 154
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -20,7 +20,11 @@
         </el-input>
         </el-input>
       </el-col>
       </el-col>
       <el-col :span="5" :offset="6">
       <el-col :span="5" :offset="6">
-        <el-button size="mini" type="primary" plain @click="openaddProjectInfo"
+        <el-button
+          size="mini"
+          type="primary"
+          plain
+          @click="openaddProjectInfo()"
           >新增项目</el-button
           >新增项目</el-button
         >
         >
         <!-- <el-button size="mini" type="primary" plain>导入项目</el-button> -->
         <!-- <el-button size="mini" type="primary" plain>导入项目</el-button> -->
@@ -143,7 +147,11 @@
                         </el-row>
                         </el-row>
                         <el-row>
                         <el-row>
                           <el-col :span="24">
                           <el-col :span="24">
-                            {{ itemModel.creationtime }}
+                            {{
+                              itemModel.creationtime
+                                ? itemModel.creationtime.substring(0, 10)
+                                : ""
+                            }}
                           </el-col>
                           </el-col>
                         </el-row>
                         </el-row>
                         <el-row>
                         <el-row>
@@ -391,7 +399,11 @@
                 <div>
                 <div>
                   <el-row :gutter="10">
                   <el-row :gutter="10">
                     <el-col :span="24">
                     <el-col :span="24">
-                      <el-button size="mini" type="primary" plain
+                      <el-button
+                        size="mini"
+                        type="primary"
+                        plain
+                        @click="ModelComparison(item)"
                         >模型对比</el-button
                         >模型对比</el-button
                       >
                       >
                       <!-- <el-button
                       <!-- <el-button
@@ -438,7 +450,11 @@
                           </el-row>
                           </el-row>
                           <el-row>
                           <el-row>
                             <el-col :span="24">
                             <el-col :span="24">
-                              {{ itemModel.creationtime }}
+                              {{
+                                itemModel.creationtime
+                                  ? itemModel.creationtime.substring(0, 10)
+                                  : ""
+                              }}
                             </el-col>
                             </el-col>
                           </el-row>
                           </el-row>
                           <el-row>
                           <el-row>
@@ -491,7 +507,7 @@
                                 >
                                 >
                               </div>
                               </div>
                             </el-col>
                             </el-col>
-                            <!-- <el-col :span="6">
+                            <el-col :span="6">
                               <div
                               <div
                                 class="con-col hover_style"
                                 class="con-col hover_style"
                                 style="cursor: pointer"
                                 style="cursor: pointer"
@@ -506,7 +522,7 @@
                                 ></i>
                                 ></i>
                                 <a>删除</a>
                                 <a>删除</a>
                               </div>
                               </div>
-                            </el-col> -->
+                            </el-col>
                           </el-row>
                           </el-row>
                           <el-row
                           <el-row
                             :ref="itemModel.id + 'AnalyzeList'"
                             :ref="itemModel.id + 'AnalyzeList'"
@@ -517,7 +533,7 @@
                                 <el-button
                                 <el-button
                                   type="primary"
                                   type="primary"
                                   size="mini"
                                   size="mini"
-                                  @click.stop="normAnalysis(itemModel)"
+                                  @click.stop="normAnalysis(item, itemModel)"
                                   >指标分析
                                   >指标分析
                                 </el-button>
                                 </el-button>
                               </el-col>
                               </el-col>
@@ -720,6 +736,7 @@ import parkResult from "@/views/ConstructionApplication3D/parkCheck/parkResult.v
 import clipboxByEditor from "@/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue";
 import clipboxByEditor from "@/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue";
 import ghqk from "./ghqk.js";
 import ghqk from "./ghqk.js";
 import CheckParkAnalyse from "./CheckParkAnalyse.js";
 import CheckParkAnalyse from "./CheckParkAnalyse.js";
+import Popup from "../Popup.js";
 import {
 import {
   listProjectinformation,
   listProjectinformation,
   delConstructionmodel,
   delConstructionmodel,
@@ -727,6 +744,7 @@ import {
   updateProjectinformation,
   updateProjectinformation,
   delProjectinformation,
   delProjectinformation,
 } from "@/api/zt/ztApi.js";
 } from "@/api/zt/ztApi.js";
+var popupBoxs = [];
 export default {
 export default {
   name: "constructionApplication3D",
   name: "constructionApplication3D",
   data() {
   data() {
@@ -909,10 +927,22 @@ export default {
     //分析列表显隐
     //分析列表显隐
     async openAnalyzeList(itemModel) {
     async openAnalyzeList(itemModel) {
       this.SelectConstructionModelHendle(itemModel);
       this.SelectConstructionModelHendle(itemModel);
+      debugger;
+      for (let key in this.$refs) {
+        if (key.includes("AnalyzeList")) {
+          if (key == itemModel.id + "AnalyzeList") {
+            var classList = this.$refs[key][0].$el.classList;
+            classList.toggle("none");
+          } else {
+            var classList = this.$refs[key][0].$el.classList;
+            classList.add("none");
+          }
+        }
+      }
 
 
-      const classList =
-        this.$refs[itemModel.id + "AnalyzeList"][0].$el.classList;
-      classList.toggle("none");
+      // const classList =
+      //   this.$refs[itemModel.id + "AnalyzeList"][0].$el.classList;
+      // classList.toggle("none");
     },
     },
 
 
     //切换项目
     //切换项目
@@ -960,28 +990,32 @@ export default {
         this.removeModel();
         this.removeModel();
         this.WaitingSelectionModel = null;
         this.WaitingSelectionModel = null;
         this.removeAll();
         this.removeAll();
-        // 清除其他选定样式
-        for (let key in this.$refs) {
-          if (key.indexOf("Model") !== -1) {
-            let item = this.$refs[key][0];
-            item.childNodes.forEach((Citem) => {
-              if (
-                Citem.className &&
-                Citem.className.indexOf("status ce") !== -1
-              ) {
-                Citem.style.display = "none";
-              }
-            });
+        debugger;
+
+        var wshData = this.wsh.find((c) => c.id == Minfo.projectinformationid);
+        if (wshData && wshData.meetingprogress != "1") {
+          // 清除其他选定样式
+          for (let key in this.$refs) {
+            if (key.indexOf("Model") !== -1) {
+              let item = this.$refs[key][0];
+              item.childNodes.forEach((Citem) => {
+                if (
+                  Citem.className &&
+                  Citem.className.indexOf("status ce") !== -1
+                ) {
+                  Citem.style.display = "none";
+                }
+              });
+            }
           }
           }
+          // 添加当前选定样式及待选模型
+          this.$refs["Model" + Minfo.id][0].childNodes.forEach((item) => {
+            if (item.className && item.className.indexOf("status ce") !== -1) {
+              item.style.display = "block";
+            }
+          });
         }
         }
-        // 添加当前选定样式及待选模型
-        this.$refs["Model" + Minfo.id][0].childNodes.forEach((item) => {
-          if (item.className && item.className.indexOf("status ce") !== -1) {
-            item.style.display = "block";
-            this.WaitingSelectionModel = Minfo;
-          }
-        });
-
+        this.WaitingSelectionModel = Minfo;
         //添加模型
         //添加模型
         this.addModel(Minfo);
         this.addModel(Minfo);
       }
       }
@@ -1024,7 +1058,7 @@ export default {
         },
         },
 
 
         area: ["30rem", "38rem"], //宽 高
         area: ["30rem", "38rem"], //宽 高
-        title: "添加项目详情",
+        title: item != null ? "修改项目详情" : "添加项目详情",
         maxmin: false,
         maxmin: false,
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
@@ -1126,15 +1160,13 @@ export default {
     },
     },
     //打开夜景分析弹窗
     //打开夜景分析弹窗
     openNightscapeAnalysis(info) {
     openNightscapeAnalysis(info) {
-      if (this.NightscapeAnalysislayerid) {
-        this.$layer.close(this.NightscapeAnalysislayerid);
-      }
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 550 / 2 + 60;
       let top = 550 / 2 + 60;
-      this.NightscapeAnalysislayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: NightscapeAnalysis, //传递的组件对象
           content: NightscapeAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -1154,15 +1186,13 @@ export default {
     },
     },
     //打开天际线分析弹窗
     //打开天际线分析弹窗
     openskylineAnalysis(info) {
     openskylineAnalysis(info) {
-      if (this.skylineAnalysislayerid) {
-        this.$layer.close(this.skylineAnalysislayerid);
-      }
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 550 / 2 + 60;
       let top = 550 / 2 + 60;
-      this.skylineAnalysislayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: skylineAnalysis, //传递的组件对象
           content: skylineAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -1182,15 +1212,13 @@ export default {
     },
     },
     //打开日照分析弹窗
     //打开日照分析弹窗
     openSunlightAnalysis(info) {
     openSunlightAnalysis(info) {
-      if (this.SunlightAnalysislayerid) {
-        this.$layer.close(this.SunlightAnalysislayerid);
-      }
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 550 / 2 + 60;
       let top = 550 / 2 + 60;
-      this.SunlightAnalysislayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: SunlightAnalysis, //传递的组件对象
           content: SunlightAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -1217,6 +1245,7 @@ export default {
       that.layerDataList = [];
       that.layerDataList = [];
       Cesium.when(modelLayer, async function (layers) {
       Cesium.when(modelLayer, async function (layers) {
         layers.forEach((layer) => {
         layers.forEach((layer) => {
+          viewer.flyTo(layer);
           layer.shadowType = 2;
           layer.shadowType = 2;
           that.layerList.push(layer.name);
           that.layerList.push(layer.name);
         });
         });
@@ -1269,36 +1298,82 @@ export default {
             BUILDNO = layerData.data.find((c) => c.label == "BUILDNO").value;
             BUILDNO = layerData.data.find((c) => c.label == "BUILDNO").value;
           }
           }
 
 
-          if (viewer.entities.getById("MXLH-" + SMID)) {
-            viewer.entities.removeById("MXLH-" + SMID);
+          var BoxIndex = popupBoxs.findIndex(
+            (c) => c.element.id == "MXLH-" + SMID
+          );
+          if (BoxIndex > -1) {
+            popupBoxs[BoxIndex].destroy();
+            popupBoxs.splice(BoxIndex, 1);
           }
           }
-          let label = viewer.entities.add({
-            id: "MXLH-" + SMID,
-            // name: "MXLH-" + SMID,
-            //点
+
+          let dom = document.createElement("div");
+          dom.id = "MXLH-" + SMID;
+          dom.style.position = "absolute";
+          dom.style.width = "0";
+          dom.style.height = "0";
+          // dom.style.color = "rgba(2, 23, 44, 0.8)";
+          // dom.style.backgroundColor = "rgba(2, 23, 44, 0.8)";
+          dom.style.fontSize = "1.4rem";
+          let domContent = document.createElement("div");
+          domContent.style.position = "absolute";
+          domContent.style.borderRadius = "5px";
+          // domContent.style.border = "1px solid rgba(7, 131, 250, 0.3)";
+          // domContent.style.backgroundColor = "rgba(2, 23, 44, 0.7)";
+          domContent.style.bottom = "0px";
+          domContent.style.left = "0px";
+          domContent.style.whiteSpace = "nowrap";
+          domContent.style.color = "rgba(83, 249, 255,1)";
+          // domContent.style.padding = "8px 12px";
+          domContent.style.transform = "translate(-50%, 0%)";
+
+          domContent.innerHTML = BUILDNO;
+          dom.appendChild(domContent);
+
+          var popupBox = new Popup({
+            viewer: viewer,
+            element: dom,
+            pixelOffset: new Cesium.Cartesian2(0, 0),
+            translucencyByDistance: new Cesium.NearFarScalar(0, 1, 50000, 1),
+            distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+              0,
+              51000
+            ),
             position: Cesium.Cartesian3.fromDegrees(x, y, z),
             position: Cesium.Cartesian3.fromDegrees(x, y, z),
-            label: {
-              text: BUILDNO, //描述内容
-              font: "20px Sans-Serif", //字体大小 类型
-              fillColor: new Cesium.Color(83 / 255, 249 / 255, 255 / 255, 1), //颜色
-              outlineColor: Cesium.Color.GOLD,
-              style: Cesium.LabelStyle.CENTER_LABEL,
-              // 垂直位置
-              verticalOrigin: Cesium.VerticalOrigin.BUTTON,
-              // 中心位置
-              pixelOffset: new Cesium.Cartesian2(0, -10),
-              //设置背景颜色透明
-              backgroundColor: new Cesium.Color(
-                35 / 255,
-                55 / 255,
-                75 / 255,
-                0
-              ),
-              //打开背景  打开背景 (不会被线段覆盖)
-              showBackground: true,
-              heightReference: Cesium.HeightReference.NONE,
-            },
           });
           });
+
+          popupBox.show();
+          popupBoxs.push(popupBox);
+
+          // if (viewer.entities.getById("MXLH-" + SMID)) {
+          //   viewer.entities.removeById("MXLH-" + SMID);
+          // }
+          // let label = viewer.entities.add({
+          //   id: "MXLH-" + SMID,
+          //   // name: "MXLH-" + SMID,
+          //   //点
+          //   position: Cesium.Cartesian3.fromDegrees(x, y, z),
+          //   label: {
+          //     text: BUILDNO, //描述内容
+          //     font: "20px Sans-Serif", //字体大小 类型
+          //     fillColor: new Cesium.Color(83 / 255, 249 / 255, 255 / 255, 1), //颜色
+          //     outlineColor: Cesium.Color.GOLD,
+          //     style: Cesium.LabelStyle.CENTER_LABEL,
+          //     // 垂直位置
+          //     verticalOrigin: Cesium.VerticalOrigin.BUTTON,
+          //     // 中心位置
+          //     pixelOffset: new Cesium.Cartesian2(0, -10),
+          //     //设置背景颜色透明
+          //     backgroundColor: new Cesium.Color(
+          //       35 / 255,
+          //       55 / 255,
+          //       75 / 255,
+          //       0
+          //     ),
+          //     //打开背景  打开背景 (不会被线段覆盖)
+          //     showBackground: true,
+          //     heightReference: Cesium.HeightReference.NONE,
+          //   },
+          // });
         });
         });
       });
       });
     },
     },
@@ -1479,10 +1554,18 @@ export default {
         scene.layers.remove(element);
         scene.layers.remove(element);
       });
       });
       this.layerList = [];
       this.layerList = [];
-      this.layerDataList.forEach((element) => {
-        let SMID = element.data.find((c) => c.label == "SMID").value;
-        viewer.entities.removeById("MXLH-" + SMID);
-      });
+
+      for (let index = popupBoxs.length - 1; index >= 0; index--) {
+        const popupBox = popupBoxs[index];
+        if (popupBox.element.id.includes("MXLH-")) {
+          popupBox.destroy();
+          popupBoxs.splice(index, 1);
+        }
+      }
+      // this.layerDataList.forEach((element) => {
+      //   let SMID = element.data.find((c) => c.label == "SMID").value;
+      //   viewer.entities.removeById("MXLH-" + SMID);
+      // });
       this.layerDataList = [];
       this.layerDataList = [];
 
 
       //清除多模型图层,数据
       //清除多模型图层,数据
@@ -1500,9 +1583,11 @@ export default {
     },
     },
     //定位模型
     //定位模型
     async positionModel(Minfo) {
     async positionModel(Minfo) {
-      if (this.layerList.length > 0) {
-        let layer = scene.layers.find(this.layerList[0]);
-        viewer.flyTo(layer);
+      if (this.WaitingSelectionModel == Minfo && this.layerList.length > 0) {
+        this.layerList.forEach((element, i) => {
+          let layer = scene.layers.find(element);
+          viewer.flyTo(layer);
+        });
       } else {
       } else {
         this.SelectConstructionModelHendle(Minfo);
         this.SelectConstructionModelHendle(Minfo);
       }
       }
@@ -1785,27 +1870,68 @@ export default {
               clampToGround: true,
               clampToGround: true,
             },
             },
           });
           });
-          let label = viewer.entities.add({
-            id: "JZXGD-A",
-            //点
+          debugger;
+
+          let dom = document.createElement("div");
+          dom.id = "JZXGD-A";
+          dom.style.position = "absolute";
+          dom.style.width = "0";
+          dom.style.height = "0";
+          // dom.style.color = "rgba(2, 23, 44, 0.8)";
+          // dom.style.backgroundColor = "rgba(2, 23, 44, 0.8)";
+          dom.style.fontSize = "1rem";
+
+          let domContent = document.createElement("div");
+          domContent.style.position = "absolute";
+          domContent.style.borderRadius = "5px";
+          domContent.style.border = "1px solid rgba(7, 131, 250, 0.3)";
+          domContent.style.backgroundColor = "rgba(2, 23, 44, 0.7)";
+          domContent.style.bottom = "0px";
+          domContent.style.left = "0px";
+          domContent.style.whiteSpace = "nowrap";
+          domContent.style.color = "red";
+          // domContent.style.padding = "8px 12px";
+          domContent.style.transform = "translate(-50%, 0%)";
+
+          domContent.innerHTML = "限高上限:" + JZXGD + "米";
+          dom.appendChild(domContent);
+
+          var popupBox = new Popup({
+            viewer: viewer,
+            element: dom,
+            pixelOffset: new Cesium.Cartesian2(0, 0),
+            translucencyByDistance: new Cesium.NearFarScalar(0, 1, 50000, 1),
+            distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+              0,
+              51000
+            ),
             position: Cesium.Cartesian3.fromDegrees(ps[0], ps[1], JZXGD + jcgd),
             position: Cesium.Cartesian3.fromDegrees(ps[0], ps[1], JZXGD + jcgd),
-            label: {
-              text: "限高上限:" + JZXGD + "米", //描述内容
-              font: "20px Sans-Serif", //字体大小 类型
-              fillColor: Cesium.Color.RED, //颜色
-              outlineColor: Cesium.Color.GOLD,
-              style: Cesium.LabelStyle.CENTER_LABEL,
-              // 垂直位置
-              verticalOrigin: Cesium.VerticalOrigin.BUTTON,
-              // 中心位置
-              pixelOffset: new Cesium.Cartesian2(0, -10),
-              //设置背景颜色透明
-              backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0.0),
-              //打开背景  打开背景 (不会被线段覆盖)
-              showBackground: true,
-              heightReference: Cesium.HeightReference.NONE,
-            },
           });
           });
+
+          popupBox.show();
+          popupBoxs.push(popupBox);
+
+          // let label = viewer.entities.add({
+          //   id: "JZXGD-A",
+          //   //点
+          //   position: Cesium.Cartesian3.fromDegrees(ps[0], ps[1], JZXGD + jcgd),
+          //   label: {
+          //     text: "限高上限:" + JZXGD + "米", //描述内容
+          //     // font: "20px Sans-Serif", //字体大小 类型
+          //     fillColor: Cesium.Color.RED, //颜色
+          //     // outlineColor: Cesium.Color.GOLD,
+          //     // style: Cesium.LabelStyle.CENTER_LABEL,
+          //     // // 垂直位置
+          //     // verticalOrigin: Cesium.VerticalOrigin.BUTTON,
+          //     // // 中心位置
+          //     // pixelOffset: new Cesium.Cartesian2(0, -10),
+          //     // //设置背景颜色透明
+          //     // backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0.0),
+          //     // //打开背景  打开背景 (不会被线段覆盖)
+          //     // showBackground: true,
+          //     heightReference: Cesium.HeightReference.NONE,
+          //   },
+          // });
           // that.layerList.forEach((layer) => {
           // that.layerList.forEach((layer) => {
           //   debugger;
           //   debugger;
           //   var hyp = new Cesium.HypsometricSetting();
           //   var hyp = new Cesium.HypsometricSetting();
@@ -1849,42 +1975,98 @@ export default {
               let y = layerData.geometry.center.y;
               let y = layerData.geometry.center.y;
               let z = Number(Height);
               let z = Number(Height);
 
 
-              if (viewer.entities.getById("JZXG-" + SMID)) {
-                viewer.entities.removeById("JZXG-" + SMID);
+              // if (viewer.entities.getById("JZXG-" + SMID)) {
+              //   viewer.entities.removeById("JZXG-" + SMID);
+              // }
+              debugger;
+
+              var BoxIndex = popupBoxs.findIndex(
+                (c) => c.element.id == "JZXG-" + SMID
+              );
+              if (BoxIndex > -1) {
+                popupBoxs[BoxIndex].destroy();
+                popupBoxs.splice(BoxIndex, 1);
               }
               }
+
               let cg = this.calculateHighLimit(Height, JZXGD);
               let cg = this.calculateHighLimit(Height, JZXGD);
               if (cg > 0) {
               if (cg > 0) {
-                let label = viewer.entities.add({
-                  id: "JZXG-" + SMID,
-                  //点
-                  position: Cesium.Cartesian3.fromDegrees(x, y, z + jcgd + 6),
-                  label: {
-                    text: "超高:" + cg + "米", //描述内容
-                    font: "14px", //字体大小 类型
-                    fillColor: new Cesium.Color(
-                      255 / 255,
-                      255 / 255,
-                      255 / 255,
-                      1
-                    ), //颜色
-                    outlineColor: Cesium.Color.GOLD,
-                    // style: Cesium.LabelStyle.CENTER_LABEL,
-                    // 垂直位置
-                    verticalOrigin: Cesium.VerticalOrigin.BUTTON,
-                    // 中心位置
-                    pixelOffset: new Cesium.Cartesian2(0, -10),
-                    //设置背景颜色透明
-                    backgroundColor: new Cesium.Color(
-                      0 / 255,
-                      0 / 255,
-                      0 / 255,
-                      0.6
-                    ),
-                    //打开背景  打开背景 (不会被线段覆盖)
-                    showBackground: true,
-                    heightReference: Cesium.HeightReference.NONE,
-                  },
+                debugger;
+
+                let dom = document.createElement("div");
+                dom.id = "JZXG-" + SMID;
+                dom.style.position = "absolute";
+                dom.style.width = "0";
+                dom.style.height = "0";
+                // dom.style.color = "rgba(2, 23, 44, 0.8)";
+                // dom.style.backgroundColor = "rgba(2, 23, 44, 0.8)";
+                dom.style.fontSize = "1rem";
+
+                let domContent = document.createElement("div");
+                domContent.style.position = "absolute";
+                domContent.style.borderRadius = "5px";
+                domContent.style.border = "1px solid rgba(7, 131, 250, 0.3)";
+                domContent.style.backgroundColor = "rgba(2, 23, 44, 0.7)";
+                domContent.style.bottom = "0px";
+                domContent.style.left = "0px";
+                domContent.style.whiteSpace = "nowrap";
+                domContent.style.color = "white";
+                // domContent.style.padding = "8px 12px";
+                domContent.style.transform = "translate(-50%, 0%)";
+
+                domContent.innerHTML = "超高:" + cg + "米";
+                dom.appendChild(domContent);
+
+                var popupBox = new Popup({
+                  viewer: viewer,
+                  element: dom,
+                  pixelOffset: new Cesium.Cartesian2(0, 0),
+                  translucencyByDistance: new Cesium.NearFarScalar(
+                    0,
+                    1,
+                    50000,
+                    1
+                  ),
+                  distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+                    0,
+                    51000
+                  ),
+                  position: Cesium.Cartesian3.fromDegrees(x, y, z + jcgd + 3),
                 });
                 });
+
+                popupBox.show();
+                popupBoxs.push(popupBox);
+
+                // let label = viewer.entities.add({
+                //   id: "JZXG-" + SMID,
+                //   //点
+                //   position: Cesium.Cartesian3.fromDegrees(x, y, z + jcgd + 6),
+                //   label: {
+                //     text: "超高:" + cg + "米", //描述内容
+                //     font: "14px", //字体大小 类型
+                //     fillColor: new Cesium.Color(
+                //       255 / 255,
+                //       255 / 255,
+                //       255 / 255,
+                //       1
+                //     ), //颜色
+                //     // outlineColor: Cesium.Color.GOLD,
+                //     // // style: Cesium.LabelStyle.CENTER_LABEL,
+                //     // // 垂直位置
+                //     // verticalOrigin: Cesium.VerticalOrigin.BUTTON,
+                //     // // 中心位置
+                //     // pixelOffset: new Cesium.Cartesian2(0, -10),
+                //     //设置背景颜色透明
+                //     backgroundColor: new Cesium.Color(
+                //       0 / 255,
+                //       0 / 255,
+                //       0 / 255,
+                //       0.6
+                //     ),
+                //     //打开背景  打开背景 (不会被线段覆盖)
+                //     // showBackground: true,
+                //     heightReference: Cesium.HeightReference.NONE,
+                //   },
+                // });
               }
               }
             }
             }
           });
           });
@@ -2175,7 +2357,8 @@ export default {
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 340 + 340 / 2;
       let left = w - 340 + 340 / 2;
       let top = 340 / 2 + 60;
       let top = 340 / 2 + 60;
-      this.XGFXInfolayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: clipboxByEditor, //传递的组件对象
           content: clipboxByEditor, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -2754,9 +2937,9 @@ export default {
         Minfo,
         Minfo,
         isJSPark
         isJSPark
       );
       );
-      if (that.skylineAnalysislayerid) {
-        that.$layer.close(that.skylineAnalysislayerid);
-      }
+      // if (that.skylineAnalysislayerid) {
+      //   that.$layer.close(that.skylineAnalysislayerid);
+      // }
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
@@ -2765,7 +2948,9 @@ export default {
       else fontSize = parseInt(fontSize.replace("px", ""));
       else fontSize = parseInt(fontSize.replace("px", ""));
       let left = w - 400;
       let left = w - 400;
       let top = 550 / 2 + 60;
       let top = 550 / 2 + 60;
-      that.skylineAnalysislayerid = that.$layer.iframe({
+      // that.skylineAnalysislayerid =
+      that.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: parkResult, //传递的组件对象
           content: parkResult, //传递的组件对象
           parent: that, //当前的vue对象
           parent: that, //当前的vue对象
@@ -2819,7 +3004,7 @@ export default {
         let left = w - 430 + 430 / 2;
         let left = w - 430 + 430 / 2;
         let top = 430 / 2 + 60;
         let top = 430 / 2 + 60;
         that.$layer.iframe({
         that.$layer.iframe({
-          id: "LTLS",
+          id: "BJTC",
           content: {
           content: {
             content: BuildingStretchingAnalysis, //传递的组件对象
             content: BuildingStretchingAnalysis, //传递的组件对象
             parent: that, //当前的vue对象
             parent: that, //当前的vue对象
@@ -2842,7 +3027,12 @@ export default {
     // 删除限高
     // 删除限高
     removeHighLimit() {
     removeHighLimit() {
       viewer.entities.removeById("polygonA");
       viewer.entities.removeById("polygonA");
-      viewer.entities.removeById("JZXGD-A");
+      // viewer.entities.removeById("JZXGD-A");
+      var BoxIndex = popupBoxs.findIndex((c) => c.element.id == "JZXGD-A");
+      if (BoxIndex > -1) {
+        popupBoxs[BoxIndex].destroy();
+        popupBoxs.splice(BoxIndex, 1);
+      }
 
 
       this.layerList.forEach((layerName) => {
       this.layerList.forEach((layerName) => {
         var hyp = new Cesium.HypsometricSetting();
         var hyp = new Cesium.HypsometricSetting();
@@ -2854,10 +3044,14 @@ export default {
             Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
             Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
         };
         };
       });
       });
-      this.layerDataList.forEach((element) => {
-        let SMID = element.data.find((c) => c.label == "SMID").value;
-        viewer.entities.removeById("JZXG-" + SMID);
-      });
+
+      for (let index = popupBoxs.length - 1; index >= 0; index--) {
+        const popupBox = popupBoxs[index];
+        if (popupBox.element.id.includes("JZXG-")) {
+          popupBox.destroy();
+          popupBoxs.splice(index, 1);
+        }
+      }
     },
     },
     //取消左键事件
     //取消左键事件
     removeEventHandler() {
     removeEventHandler() {
@@ -2987,9 +3181,6 @@ export default {
      * @param DKBM [] 要分析的地块编码
      * @param DKBM [] 要分析的地块编码
      */
      */
     openXGFXInfo(layerDataList, JZXGD, DKBM) {
     openXGFXInfo(layerDataList, JZXGD, DKBM) {
-      if (this.XGFXInfolayerid) {
-        this.$layer.close(this.XGFXInfolayerid);
-      }
       let that = this;
       let that = this;
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;
       let h = document.body.offsetHeight;
@@ -2997,7 +3188,8 @@ export default {
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 430 / 2 + 60;
       let top = 430 / 2 + 60;
-      this.XGFXInfolayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: HighLimitAnalysis, //传递的组件对象
           content: HighLimitAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3023,9 +3215,6 @@ export default {
      * @param DKBM 地块编码
      * @param DKBM 地块编码
      */
      */
     openJZXGInfo(layerDataList, JZTXlayerDataList, Minfo, DKBM) {
     openJZXGInfo(layerDataList, JZTXlayerDataList, Minfo, DKBM) {
-      if (this.JZXGInfolayerid) {
-        this.$layer.close(this.JZXGInfolayerid);
-      }
       let that = this;
       let that = this;
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;
       let h = document.body.offsetHeight;
@@ -3033,7 +3222,8 @@ export default {
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 430 / 2 + 60;
       let top = 430 / 2 + 60;
-      this.JZXGInfolayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: backLineAnalysisinfo, //传递的组件对象
           content: backLineAnalysisinfo, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3062,9 +3252,6 @@ export default {
      * @param DLTBlayerDataList 地类图斑信息
      * @param DLTBlayerDataList 地类图斑信息
      */
      */
     openDLTBInfo(LandPlanningList, DLTBlayerDataList, Minfo) {
     openDLTBInfo(LandPlanningList, DLTBlayerDataList, Minfo) {
-      if (this.DLTBInfolayerid) {
-        this.$layer.close(this.DLTBInfolayerid);
-      }
       let that = this;
       let that = this;
       let w = document.body.offsetWidth;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;
       let h = document.body.offsetHeight;
@@ -3072,7 +3259,8 @@ export default {
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 430 / 2 + 60;
       let top = 430 / 2 + 60;
-      this.DLTBInfolayerid = this.$layer.iframe({
+      this.$layer.iframe({
+        id: "BJTC",
         content: {
         content: {
           content: ZYAnalysisinfo, //传递的组件对象
           content: ZYAnalysisinfo, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3111,7 +3299,7 @@ export default {
       let left = w - wpx + wpx / 2;
       let left = w - wpx + wpx / 2;
       let top = hpx / 2 + 60;
       let top = hpx / 2 + 60;
       this.$layer.iframe({
       this.$layer.iframe({
-        id: "ZBFXJGiframe",
+        id: "BJTC",
         content: {
         content: {
           content: ZBFXAnalysisinfo, //传递的组件对象
           content: ZBFXAnalysisinfo, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3191,7 +3379,7 @@ export default {
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 430 / 2 + 60;
       let top = 430 / 2 + 60;
       this.$layer.iframe({
       this.$layer.iframe({
-        id: "JZFM",
+        id: "BJTC",
         content: {
         content: {
           content: ArchitecturaAnalysis, //传递的组件对象
           content: ArchitecturaAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3218,7 +3406,7 @@ export default {
       let left = w - 430 + 430 / 2;
       let left = w - 430 + 430 / 2;
       let top = 100 / 2 + 300;
       let top = 100 / 2 + 300;
       this.$layer.iframe({
       this.$layer.iframe({
-        id: "RSFX",
+        id: "BJTC",
         content: {
         content: {
           content: RSAnalysis, //传递的组件对象
           content: RSAnalysis, //传递的组件对象
           parent: this, //当前的vue对象
           parent: this, //当前的vue对象
@@ -3286,6 +3474,7 @@ export default {
       this.removeJZTXlayerDatas();
       this.removeJZTXlayerDatas();
       this.removeDLTBlayerDatas();
       this.removeDLTBlayerDatas();
       ghqk.removeAll();
       ghqk.removeAll();
+      this.$layer.close("BJTC");
     },
     },
     DestroyAll() {
     DestroyAll() {
       scene.multiViewportMode = Cesium.MultiViewportMode.NONE;
       scene.multiViewportMode = Cesium.MultiViewportMode.NONE;

+ 3 - 2
src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue

@@ -3,8 +3,8 @@
         <!-- <img :src="imageData.data" style="height: auto; width: auto;" />"> -->
         <!-- <img :src="imageData.data" style="height: auto; width: auto;" />"> -->
         <el-button type="primary" @click="download">下载</el-button>
         <el-button type="primary" @click="download">下载</el-button>
         <br>
         <br>
-        <canvas id="mycan1" ref="mycan1" style="height: inherit;background-color: transparent;"></canvas>
-        <!-- <canvas id="mycan2" ref="mycan2" style="height: inherit;display: none;"></canvas> -->
+        <canvas id="mycan1" ref="mycan1" width="907" height="350" style="background-color: transparent;"></canvas>
+        <canvas id="mycan2" ref="mycan2" width="907" height="350" style="display: none;"></canvas>
 
 
     </div>
     </div>
 </template>
 </template>
@@ -32,6 +32,7 @@ export default {
             var skyRgb = that.imageData.rgb
             var skyRgb = that.imageData.rgb
             var canvas1 = that.$refs["mycan1"]
             var canvas1 = that.$refs["mycan1"]
             var canvas2 = that.$refs["mycan2"]
             var canvas2 = that.$refs["mycan2"]
+            
             skylineExecute.drawCanvas(canvas1, canvas2, that.imageData.data, viewW, viewH, skyRgb)
             skylineExecute.drawCanvas(canvas1, canvas2, that.imageData.data, viewW, viewH, skyRgb)
         },
         },
         download() {
         download() {

+ 53 - 22
src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue

@@ -51,13 +51,16 @@ export default {
         value: 'right',
         value: 'right',
         label: '右侧'
         label: '右侧'
       },
       },
-      ]
+      ],
+      isClear: false,
+      tooltip: createTooltip(document.body),
+      polylineId: null
     }
     }
   },
   },
   mounted() {
   mounted() {
     facade = new Cesium.Facade(scene);
     facade = new Cesium.Facade(scene);
     facade.build();
     facade.build();
-    
+
   },
   },
 
 
   beforeDestroy() {
   beforeDestroy() {
@@ -67,7 +70,7 @@ export default {
     draw() {
     draw() {
 
 
       var that = this;
       var that = this;
-      viewer.entities.removeAll()
+      this.isClear = false;
       // facade.clear();
       // facade.clear();
       drawHandler = new Cesium.DrawHandler(
       drawHandler = new Cesium.DrawHandler(
         viewer,
         viewer,
@@ -75,8 +78,26 @@ export default {
         0
         0
       );
       );
       drawHandler.activate()
       drawHandler.activate()
-      facade.setBoundByPoints(null,null)
+      facade.setBoundByPoints(null, null)
+      drawHandler.movingEvt.addEventListener(function (windowPosition) {
+
+        if (drawHandler.positions.length == 0) {
+          that.tooltip.showAt(windowPosition, '<p>绘制起点</p>');
+        }
+
+        else if (drawHandler.positions.length == 1) {
+          that.tooltip.showAt(windowPosition, '<p>绘制终点</p>');
+        }
+        else {
+          that.tooltip.showAt(windowPosition, '<p>右键结束绘制</p>');
+
+        }
+      })
+
       drawHandler.drawEvt.addEventListener(function (result) {
       drawHandler.drawEvt.addEventListener(function (result) {
+        that.polylineId = drawHandler.polyline.id;
+
+        that.tooltip.setVisible(false);
         debugger
         debugger
         startPoint = result.object.positions[0];
         startPoint = result.object.positions[0];
         endPoint = result.object.positions[1];
         endPoint = result.object.positions[1];
@@ -96,9 +117,9 @@ export default {
 
 
         facade.maxHeight = parseFloat(that.faceH);
         facade.maxHeight = parseFloat(that.faceH);
         facade.farDistance = parseFloat(that.faceW);
         facade.farDistance = parseFloat(that.faceW);
-        
-       
-       
+
+
+
         // viewer.entities.add(
         // viewer.entities.add(
         //   {
         //   {
         //     id: "ZDGYQS_",
         //     id: "ZDGYQS_",
@@ -110,25 +131,30 @@ export default {
         //     }
         //     }
         //   })
         //   })
         drawHandler.deactivate()
         drawHandler.deactivate()
+        if (that.polylineId != null) {
+          viewer.entities.removeById(that.polylineId)
+          that.polylineId = null
+        }
+
       })
       })
     },
     },
     /***
     /***
      * 计算相机视角
      * 计算相机视角
      */
      */
-    ComputationalPerspective(fromPoint,toPoint) {
+    ComputationalPerspective(fromPoint, toPoint) {
       var point1;
       var point1;
       var point2;
       var point2;
 
 
-      if (this.slider=="left") {
+      if (this.slider == "left") {
         point1 = [
         point1 = [
-        fromPoint[0],
-        fromPoint[1],
-        fromPoint[2],
+          fromPoint[0],
+          fromPoint[1],
+          fromPoint[2],
         ];
         ];
         point2 = [
         point2 = [
-        toPoint[0],
-        toPoint[1],
-        toPoint[2],
+          toPoint[0],
+          toPoint[1],
+          toPoint[2],
         ];
         ];
       } else {
       } else {
         point1 = [
         point1 = [
@@ -137,9 +163,9 @@ export default {
           toPoint[2],
           toPoint[2],
         ];
         ];
         point2 = [
         point2 = [
-        fromPoint[0],
-        fromPoint[1],
-        fromPoint[2],
+          fromPoint[0],
+          fromPoint[1],
+          fromPoint[2],
         ];
         ];
       }
       }
       var positionA = Cesium.Cartesian3.fromDegrees(
       var positionA = Cesium.Cartesian3.fromDegrees(
@@ -152,7 +178,7 @@ export default {
         point2[1],
         point2[1],
         point2[2]
         point2[2]
       );
       );
-      var midpoint=[(point1[0]+point1[0])/2,(point1[1]+point1[1])/2,(point1[2]+point1[2])/2+2];
+      var midpoint = [(point1[0] + point1[0]) / 2, (point1[1] + point1[1]) / 2, (point1[2] + point1[2]) / 2 + 2];
       let finalPosition = new Cesium.Cartesian3();
       let finalPosition = new Cesium.Cartesian3();
       let matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(positionA);
       let matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(positionA);
       Cesium.Matrix4.inverse(matrix4, matrix4);
       Cesium.Matrix4.inverse(matrix4, matrix4);
@@ -188,8 +214,9 @@ export default {
       return [longitude, latitude, height];
       return [longitude, latitude, height];
     },
     },
     create() {
     create() {
-    
       var that = this;
       var that = this;
+      if (that.isClear)
+        return;
       facade.build();
       facade.build();
       facade.readyPromise.then(function (base64data) {
       facade.readyPromise.then(function (base64data) {
         debugger
         debugger
@@ -243,11 +270,15 @@ export default {
       facade.maxHeight = parseFloat(this.faceH)
       facade.maxHeight = parseFloat(this.faceH)
     },
     },
     clear() {
     clear() {
-      viewer.entities.removeAll()
+      this.isClear = true;
+      facade.setBoundByPoints(null, null)
       facade.clear();
       facade.clear();
       // drawHandler.clear();
       // drawHandler.clear();
-      viewer.entities.removeAll();
       // rgba(96, 150, 248, 0.8)
       // rgba(96, 150, 248, 0.8)
+      if (this.polylineId != null) {
+        viewer.entities.removeById(this.polylineId)
+        this.polylineId = null
+      }
     }
     }
 
 
   }
   }

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js


+ 406 - 3
static/Config/config.js

@@ -769,6 +769,8 @@ window.bjConfig = {
     tcwType: "",
     tcwType: "",
   },
   },
 };
 };
+// 项目模型指标人工核算值;
+window.project_model_zb = [{ id: "qwertyuiop", dkbm: "" }];
 
 
 //图层服务查询分组树
 //图层服务查询分组树
 window.layerTree = [
 window.layerTree = [
@@ -1668,7 +1670,13 @@ window.dict = {
     { label: "已通过", value: "已通过" },
     { label: "已通过", value: "已通过" },
     { label: "未通过", value: "未通过" },
     { label: "未通过", value: "未通过" },
   ],
   ],
-
+  //基准地价中项目类型
+  // zt_jzdj_ProjectType: [
+  //   { label: "居住建筑", value: "居住建筑" },
+  //   { label: "公共建筑", value: "公共建筑" },
+  //   { label: "工业建筑", value: "工业建筑" },
+  //   { label: "农业建筑", value: "农业建筑" },
+  // ],
   //基准地价中土地用途
   //基准地价中土地用途
   zt_jzdj_LandUse: [
   zt_jzdj_LandUse: [
     { label: "商服用地", value: "商服用地" },
     { label: "商服用地", value: "商服用地" },
@@ -2705,15 +2713,297 @@ window.billboardReviewList = [
     ],
     ],
   },
   },
   {
   {
-    id: "wew232",
+    id: "wew2sdfk32",
     code: "005",
     code: "005",
+    billboardType: "电子显示屏",
+    children: [
+      {
+        id: "wew2sd32",
+        code: "00501",
+        billboardType: "大型LED广告牌",
+        isAddModel: true,
+        ModelType: "rectangleBillboard",
+        ReviewItems: [
+          {
+            id: "4553",
+            code: "0050101",
+            ReviewMethod: "手动审查",
+            ReviewContent:
+              "设于商业、商服用地依附于建筑的电子显示屏面积比例不得高于项目沿街面裙房(单侧)的15%",
+          },
+          {
+            id: "455sdf3",
+            code: "0050102",
+            ReviewMethod: "手动审查",
+            ReviewContent: `商业用地(B1):	单栋大型LED广告设施数量≤2处。</br>
+              商服用地(B2):	单栋建筑大型LED广告设施数量不超过1处。</br>
+              娱乐康体用地(B3):	单栋建筑大型LED广告设施数量不超过1处。</br>
+              绿地与广场用(G):	每个公园或广场仅允许正在公共活动密集区域设置一处。`,
+          },
+          {
+            id: "455sdf3",
+            code: "0050103",
+            ReviewMethod: "手动审查",
+            ReviewContent: `广告用途是否符合当前土地类型要求`,
+          },
+        ],
+      },
+      {
+        id: "wew23we2",
+        code: "00502",
+        billboardType: "小型LED广告牌",
+        children: [
+          {
+            id: "wewsdf232",
+            code: "0050203",
+            billboardType: "立杆型落地式小型LED广告牌",
+            isAddModel: true,
+            ModelType: "postsBillboard",
+            ReviewItems: [
+              {
+                id: "45nh53",
+                code: "0030101",
+                ReviewMethod: "自动审查",
+                ReviewContent: "广告牌面下缘距离地面高度大于等于0.5米",
+              },
+              {
+                id: "4534553",
+                code: "0030102",
+                ReviewMethod: "自动审查",
+                ReviewContent:
+                  "广告总体高度(含广告牌面和支撑结构)不得超过4米",
+              },
+              {
+                id: "453sd4553",
+                code: "0030103",
+                ReviewMethod: "自动审查",
+                ReviewContent: "广告牌单面面积不应大于2平方米",
+              },
+              {
+                id: "453sd45xcv53",
+                code: "0030104",
+                ReviewMethod: "自动审查",
+                ReviewContent: "任意一边长度不应大于2米",
+              },
+              {
+                id: "453sd4we553",
+                code: "0030105",
+                ReviewMethod: "自动审查",
+                ReviewContent: "厚度不应大于0.3米",
+              },
+              {
+                id: "4d4we553",
+                code: "0030106",
+                ReviewMethod: "手动审查",
+                ReviewContent:
+                  "立杆高度小于2米的立杆型广告,其端角应进行圆弧处理,其端角不宜有容易对行人及车辆造车鞥损害的尖锐棱角",
+              },
+              {
+                id: "4d4wesd553",
+                code: "0030107",
+                ReviewMethod: "手动审查",
+                ReviewContent:
+                  "广告设置后可供通行的步行道净宽度不得小于2.5米。",
+              },
+              {
+                id: "4d4wesdsd553",
+                code: "0030108",
+                ReviewMethod: "手动审查",
+                ReviewContent:
+                  "当用地内建筑退让红线距离不得小于15米时,广告仅允许设置于建筑退让红线的距离内,且广告实体或最大水平投影不得超出用地红线;",
+              },
+              {
+                id: "esdsd553",
+                code: "0030109",
+                ReviewMethod: "手动审查",
+                ReviewContent:
+                  "设置立杆型广告的用地,沿城市道路用地面宽不得小于15米;",
+              },
+              {
+                id: "esdsd553",
+                code: "0030110",
+                ReviewMethod: "手动审查",
+                ReviewContent:
+                  "设置地点距用地红线最小距离不得小于广告总高度的2倍,同时广告与地块内部建筑的距离不得小于其高度的2倍;",
+              },
+              {
+                id: "esdsd553",
+                code: "0030111",
+                ReviewMethod: "手动审查",
+                ReviewContent: "各广告之间沿平行红线方向间距不得小于15米;",
+              },
+            ],
+          },
+          {
+            id: "wew2sfbves32",
+            code: "0050204",
+            billboardType: "底座型落地式小型LED广告牌",
+            children: [
+              {
+                id: "wew23nggt2",
+                code: "005020401",
+                billboardType: "普通底座型户外广告",
+                isAddModel: true,
+                ModelType: "ColumnWithaseBillboard",
+                ReviewItems: [
+                  {
+                    id: "4553",
+                    code: "003020101",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "广告牌面下缘距离地面高度大于等于0.5米",
+                  },
+                  {
+                    id: "4534553",
+                    code: "003020102",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "选用高明度色彩,以淡雅为主,不宜设置强闪光、跳动等较为刺激的夜间照明,以免形成声光污染,影响居住区人们的生活",
+                  },
+                ],
+              },
+              {
+                id: "wevsdw232",
+                code: "005020402",
+                billboardType: "设置在城市道路人行道上及商业步行街上",
+                isAddModel: true,
+                ModelType: "ColumnWithaseBillboard",
+                ReviewItems: [
+                  {
+                    id: "4553",
+                    code: "003020201",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "广告牌面下缘距离地面高度大于等于0.5米",
+                  },
+                  {
+                    id: "4534553",
+                    code: "003020202",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "选用高明度色彩,以淡雅为主,不宜设置强闪光、跳动等较为刺激的夜间照明,以免形成声光污染,影响居住区人们的生活",
+                  },
+                  {
+                    id: "453sdf4553",
+                    code: "003020203",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "步行街上的底座型户外广告设施应设置在步行街的休憩带中,形式应与步行街风格相协调",
+                  },
+                  {
+                    id: "453sdfgf4553",
+                    code: "003020204",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "设置底座型广告的城市道路人行道及商业步行街宽度不得小于5米,且在广告设置后可供行人通行的步行通道净宽度不得小于3.5米",
+                  },
+                  {
+                    id: "453lj53",
+                    code: "003020205",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "底座型户外广告设施的总高度不得大于2.4米",
+                  },
+                  {
+                    id: "453ldfj53",
+                    code: "003020206",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "底座占地面积不得大于1平方米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020207",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "长度不得大于1.5米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020208",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "牌面(单面)面积不得大于2.5平方米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020209",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "厚度不得大于0.5米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020210",
+                    ReviewMethod: "手动审查",
+                    ReviewContent: "高度应与宽度相协调",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020211",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "广告(含牌面、底座)最大水平投影面积不得大于0.5平方米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020212",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "牌面与水平面夹角不得小于75°",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020213",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "底座型户外广告设施的底座和牌面外缘距人行道路沿石外缘宜为0.4米~1.0米",
+                  },
+                  {
+                    id: "453ld78fj53",
+                    code: "003020213",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "根据设置的道路类型,判断纵向间距:(1)商业步行街沿线:按纵向间距不得小于20米标准。(2)主要商业街人行道沿线:按纵向间距不得小于50米标准。(3)沿其他城市道路人行道沿线:按纵向间距不得小于200米标准。",
+                  },
+                ],
+              },
+              {
+                id: "wewvfsd232",
+                code: "005020403",
+                billboardType: "设置在广场(空地)",
+                isAddModel: true,
+                ModelType: "ColumnWithaseBillboard",
+                ReviewItems: [
+                  {
+                    id: "4553",
+                    code: "003020301",
+                    ReviewMethod: "自动审查",
+                    ReviewContent: "广告牌面下缘距离地面高度大于等于0.5米",
+                  },
+                  {
+                    id: "4534553",
+                    code: "003020302",
+                    ReviewMethod: "手动审查",
+                    ReviewContent:
+                      "选用高明度色彩,以淡雅为主,不宜设置强闪光、跳动等较为刺激的夜间照明,以免形成声光污染,影响居住区人们的生活",
+                  },
+                  {
+                    id: "4534553",
+                    code: "003020303",
+                    ReviewMethod: "手动审查",
+                    ReviewContent: "广场(空地)的面积不得小于50平方米;",
+                  },
+                ],
+              },
+            ],
+          },
+        ],
+      },
+    ],
+  },
+  {
+    id: "wew232",
+    code: "006",
     billboardType: "其他类型户外广告",
     billboardType: "其他类型户外广告",
     isAddModel: false,
     isAddModel: false,
     ModelType: "",
     ModelType: "",
     ReviewItems: [
     ReviewItems: [
       {
       {
         id: "4553",
         id: "4553",
-        code: "00501",
+        code: "00601",
         ReviewMethod: "手动审查",
         ReviewMethod: "手动审查",
         ReviewContent: "根据实际情况审查",
         ReviewContent: "根据实际情况审查",
       },
       },
@@ -3151,6 +3441,16 @@ window.NightLightUrl = {
   //道路流动线
   //道路流动线
   dlzxx: {
   dlzxx: {
     url: "static/data/道路中线_1.json",
     url: "static/data/道路中线_1.json",
+    // lddxWidth: 5, //流动线底线线宽
+    // lddxColor: { r: 0 / 255, g: 0 / 255, b: 0 / 255, a: 0.3 }, //流动线底线颜色
+    // ldxWidth: 2, //流动线线宽
+    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
+    // ldxOutlineWidth: 3, //流动轮廓线宽
+    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
+    // ldxColor: { r: 127 / 255, g: 255 / 255, b: 0 / 255, a: 1 }, //流动线线型填充颜色
+    // trailLength: 0.3, //流动线在整条线中占比例
+    // period: 1, //尾迹线从起点到终点的运行周期
+
     lddxWidth: 5, //流动线底线线宽
     lddxWidth: 5, //流动线底线线宽
     lddxColor: { r: 0 / 255, g: 0 / 255, b: 212 / 255, a: 0.2 }, //流动线底线颜色
     lddxColor: { r: 0 / 255, g: 0 / 255, b: 212 / 255, a: 0.2 }, //流动线底线颜色
 
 
@@ -3211,6 +3511,16 @@ window.NightLightUrl = {
   //楼顶流动线
   //楼顶流动线
   buildTopLine: {
   buildTopLine: {
     url: "static/data/楼顶流动线.json",
     url: "static/data/楼顶流动线.json",
+    // lddxWidth: 5, //流动线底线线宽
+    // lddxColor: { r: 0 / 255, g: 0 / 255, b: 0 / 255, a: 0.3 }, //流动线底线颜色
+    // ldxWidth: 2, //流动线线宽
+    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
+    // ldxOutlineWidth: 3, //流动轮廓线宽
+    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
+    // ldxColor: { r: 127 / 255, g: 255 / 255, b: 0 / 255, a: 1 }, //流动线线型填充颜色
+    // trailLength: 0.5, //流动线在整条线中占比例
+    // period: 2, //尾迹线从起点到终点的运行周期
+
     lddxWidth: 100, //流动线底线线宽
     lddxWidth: 100, //流动线底线线宽
     lddxColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.2 }, //流动线底线颜色
     lddxColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.2 }, //流动线底线颜色
     ldxWidth: 100, //流动线线宽
     ldxWidth: 100, //流动线线宽
@@ -3229,12 +3539,35 @@ window.NightLightUrl = {
     intensity: 1, //强度
     intensity: 1, //强度
   },
   },
 };
 };
+
+// /**
+//  * 基准地价分析列表
+//  */
+// window.BenchmarkLandPriceList = [
+//   // {
+//   //   id: "wefw",
+//   //   ProjectScope: [],
+//   //   ProjectName: "基准地价分析1",
+//   //   ProjectType: "居住建筑",
+//   //   ConstructionUnit: "建设单位名称",
+//   //   analysisDate: "2024-06-01 10:11:21",
+//   //   AnalysisStatus: "完成",
+//   //   ReportPath:""
+//   // },
+// ];
 //基准地价 规划中的用地性质与地价分析中的土地用途对应关系
 //基准地价 规划中的用地性质与地价分析中的土地用途对应关系
 window.landUseNatureRelation = [
 window.landUseNatureRelation = [
   {
   {
     tdyt: "商服用地",
     tdyt: "商服用地",
     GHDKType: [{ ydxz: "商服用地", ydxzdl: "09" }],
     GHDKType: [{ ydxz: "商服用地", ydxzdl: "09" }],
     layerinfo: [
     layerinfo: [
+      // {
+      //   layerCore: "006006",
+      //   tdjbField: "级别_终",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "集体楼面单价_终",
+      //   qsTYPE: "JT",
+      // },
       {
       {
         tableName: "C12Sfjb",
         tableName: "C12Sfjb",
         layerCore: "006001",
         layerCore: "006001",
@@ -3249,6 +3582,13 @@ window.landUseNatureRelation = [
     tdyt: "住宅用地",
     tdyt: "住宅用地",
     GHDKType: [{ ydxz: "居住用地", ydxzdl: "07" }],
     GHDKType: [{ ydxz: "居住用地", ydxzdl: "07" }],
     layerinfo: [
     layerinfo: [
+      // {
+      //   layerCore: "006002",
+      //   tdjbField: "级别_终",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "集体楼面单价_终",
+      //   qsTYPE: "JT",
+      // },
       {
       {
         tableName: "C22Zzjb",
         tableName: "C22Zzjb",
         layerCore: "006008",
         layerCore: "006008",
@@ -3266,6 +3606,13 @@ window.landUseNatureRelation = [
       { ydxz: "仓储用地", ydxzdl: "11" },
       { ydxz: "仓储用地", ydxzdl: "11" },
     ],
     ],
     layerinfo: [
     layerinfo: [
+      // {
+      //   layerCore: "006005",
+      //   tdjbField: "级别_终",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "集体楼面单价_终",
+      //   qsTYPE: "JT",
+      // },
       {
       {
         tableName: "C32Gyjb",
         tableName: "C32Gyjb",
         layerCore: "006003",
         layerCore: "006003",
@@ -3285,6 +3632,13 @@ window.landUseNatureRelation = [
         tdyt: "机关团体用地",
         tdyt: "机关团体用地",
         GHDKType: [{ ydxz: "机关团体用地", ydxzdl: "0801" }],
         GHDKType: [{ ydxz: "机关团体用地", ydxzdl: "0801" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "机关团体用地",
+          //   ydlxPriceField: "机关_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3320,6 +3674,13 @@ window.landUseNatureRelation = [
         tdyt: "文化用地",
         tdyt: "文化用地",
         GHDKType: [{ ydxz: "文化用地", ydxzdl: "0803" }],
         GHDKType: [{ ydxz: "文化用地", ydxzdl: "0803" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "文化设施、体育用地",
+          //   ydlxPriceField: "文化_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3334,6 +3695,13 @@ window.landUseNatureRelation = [
         tdyt: "教育用地",
         tdyt: "教育用地",
         GHDKType: [{ ydxz: "教育用地", ydxzdl: "0804" }],
         GHDKType: [{ ydxz: "教育用地", ydxzdl: "0804" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "教育、科研用地",
+          //   ydlxPriceField: "教育_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3348,6 +3716,13 @@ window.landUseNatureRelation = [
         tdyt: "体育用地",
         tdyt: "体育用地",
         GHDKType: [{ ydxz: "体育用地", ydxzdl: "0805" }],
         GHDKType: [{ ydxz: "体育用地", ydxzdl: "0805" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "文化设施、体育用地",
+          //   ydlxPriceField: "文化_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3362,6 +3737,13 @@ window.landUseNatureRelation = [
         tdyt: "医疗卫生用地",
         tdyt: "医疗卫生用地",
         GHDKType: [{ ydxz: "医疗卫生用地", ydxzdl: "0806" }],
         GHDKType: [{ ydxz: "医疗卫生用地", ydxzdl: "0806" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "医疗卫生、社会福利用地",
+          //   ydlxPriceField: "医疗_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3376,6 +3758,13 @@ window.landUseNatureRelation = [
         tdyt: "社会福利用地",
         tdyt: "社会福利用地",
         GHDKType: [{ ydxz: "社会福利用地", ydxzdl: "0807" }],
         GHDKType: [{ ydxz: "社会福利用地", ydxzdl: "0807" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "医疗卫生、社会福利用地",
+          //   ydlxPriceField: "医疗_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3397,6 +3786,13 @@ window.landUseNatureRelation = [
         tdyt: "公共设施用地",
         tdyt: "公共设施用地",
         GHDKType: [{ ydxz: "公共设施用地", ydxzdl: "13" }],
         GHDKType: [{ ydxz: "公共设施用地", ydxzdl: "13" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "公园与绿地、公用设施用地",
+          //   ydlxPriceField: "公园_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",
@@ -3411,6 +3807,13 @@ window.landUseNatureRelation = [
         tdyt: "绿地与开敞空间用地",
         tdyt: "绿地与开敞空间用地",
         GHDKType: [{ ydxz: "绿地与开敞空间用地", ydxzdl: "14" }],
         GHDKType: [{ ydxz: "绿地与开敞空间用地", ydxzdl: "14" }],
         layerinfo: [
         layerinfo: [
+          // {
+          //   layerCore: "006009",
+          //   tdjbField: "级别_终",
+          //   ydlxTypeField: "公园与绿地、公用设施用地",
+          //   ydlxPriceField: "公园_地价",
+          //   qsTYPE: "JT",
+          // },
           {
           {
             tableName: "C41Gfjb",
             tableName: "C41Gfjb",
             layerCore: "006004",
             layerCore: "006004",

Some files were not shown because too many files changed in this diff