浏览代码

中图代码集成

lkk 10 月之前
父节点
当前提交
380bc7dca8
共有 29 个文件被更改,包括 1842 次插入1293 次删除
  1. 28 12
      src/api/zt/ztApi.js
  2. 173 136
      src/components/Combinations/NightscapeAnalysis/index.js
  3. 3 3
      src/views/ConstructionApplication3D/ArchitecturaAnalysis/ArchitecturaAnalysis.vue
  4. 381 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  5. 23 9
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue
  6. 203 712
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue
  7. 1 1
      src/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue
  8. 3 3
      src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue
  9. 5 5
      src/views/ConstructionApplication3D/Demolition/CQShowInfo.vue
  10. 11 66
      src/views/ConstructionApplication3D/Demolition/DemoList.vue
  11. 87 37
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  12. 1 5
      src/views/ConstructionApplication3D/Demolition/Property.vue
  13. 6 6
      src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue
  14. 7 6
      src/views/ConstructionApplication3D/Demolition/QMShowInfo.vue
  15. 6 6
      src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue
  16. 8 4
      src/views/ConstructionApplication3D/Demolition/ZDShowInfo.vue
  17. 1 1
      src/views/ConstructionApplication3D/Layers/LayerTree.vue
  18. 164 63
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  19. 238 12
      src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue
  20. 52 21
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  21. 179 0
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/detailedInfo.vue
  22. 1 0
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  23. 109 74
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  24. 8 0
      src/views/ConstructionApplication3D/zt.scss
  25. 144 111
      static/Config/config.js
  26. 0 0
      static/data/bpNormalLight.json
  27. 0 0
      static/data/体育馆.json
  28. 0 0
      static/data/地标.json
  29. 0 0
      static/data/道路.json

+ 28 - 12
src/api/zt/ztApi.js

@@ -5,12 +5,11 @@ import { tansParams, blobValidate } from "@/utils/ruoyi";
 import cache from "@/plugins/cache";
 import cache from "@/plugins/cache";
 import { Notification, MessageBox, Message, Loading } from "element-ui";
 import { Notification, MessageBox, Message, Loading } from "element-ui";
 import { saveAs } from "file-saver";
 import { saveAs } from "file-saver";
-import { getToken } from "@/utils/auth";
 axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 创建axios实例
 // 创建axios实例
 const ZTservice = axios.create({
 const ZTservice = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   // axios中请求配置有baseURL选项,表示请求URL公共部分
-  baseURL: window.axiosURI,
+  baseURL: window.ZTaxiosURI,
   //baseURL: "http://192.168.100.252:8080",
   //baseURL: "http://192.168.100.252:8080",
   // 超时
   // 超时
   timeout: 100000,
   timeout: 100000,
@@ -19,12 +18,6 @@ const ZTservice = axios.create({
 // request拦截器
 // request拦截器
 ZTservice.interceptors.request.use(
 ZTservice.interceptors.request.use(
   (config) => {
   (config) => {
-    // 是否需要设置 token
-    const isToken = (config.headers || {}).isToken === false
-    // 是否需要防止数据重复提交
-    if (getToken() && !isToken) {
-      config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
-    }
     // 是否需要防止数据重复提交
     // 是否需要防止数据重复提交
     const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
     const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
     // get请求映射params参数
     // get请求映射params参数
@@ -91,7 +84,7 @@ ZTservice.interceptors.response.use(
       res.request.responseType === "blob" ||
       res.request.responseType === "blob" ||
       res.request.responseType === "arraybuffer"
       res.request.responseType === "arraybuffer"
     ) {
     ) {
-      return res.data;
+      return res;
     }
     }
     if (code === 401) {
     if (code === 401) {
       if (!isReloginShow) {
       if (!isReloginShow) {
@@ -157,15 +150,38 @@ ZTservice.interceptors.response.use(
 );
 );
 
 
 export async function getJZDJWord(data) {
 export async function getJZDJWord(data) {
-  return await ZTservice({
-    url: "/model/sanya/exportWord4",
+  let response = await ZTservice({
+    url: "/sanya/exportWord4",
     method: "post",
     method: "post",
+    responseType: "blob",
     data: data,
     data: data,
   });
   });
+  debugger;
+  var fileName = "分析报告";
+  debugger;
+  const contentDisposition = response.headers["content-disposition"];
+  if (contentDisposition) {
+    fileName = window.decodeURI(
+      response.headers["content-disposition"].split("=")[1],
+      "UTF-8"
+    );
+  }
+  const isBlob = blobValidate(response.data);
+  debugger;
+  if (isBlob) {
+    const blob = new Blob([response.data]);
+    saveAs(blob, fileName);
+  } else {
+    const resText = await response.text();
+    const rspObj = JSON.parse(resText);
+    const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
+    Message.error(errMsg);
+  }
+  return;
 }
 }
 export async function getWord(data) {
 export async function getWord(data) {
   let dataFile = await ZTservice({
   let dataFile = await ZTservice({
-    url: "/model/sanya/getWord",
+    url: "/sanya/getWord",
     method: "post",
     method: "post",
     responseType: "blob",
     responseType: "blob",
     params: data,
     params: data,

+ 173 - 136
src/components/Combinations/NightscapeAnalysis/index.js

@@ -25,7 +25,7 @@ const Nightscape = {
   startNight(isNight) {
   startNight(isNight) {
     let that = this;
     let that = this;
     scene.globe.show = true;
     scene.globe.show = true;
-    viewer.scene.hdrEnabled = isNight;
+    viewer.scene.hdrEnabled = true;
     viewer.scene.bloomEffect.show = false;
     viewer.scene.bloomEffect.show = false;
 
 
     // 是否开启夜景
     // 是否开启夜景
@@ -33,6 +33,7 @@ const Nightscape = {
       if (this.dgdsq) {
       if (this.dgdsq) {
         clearTimeout(this.dgdsq);
         clearTimeout(this.dgdsq);
       }
       }
+
       if (scene.layers.find("白天")) scene.layers.find("白天").visible = true;
       if (scene.layers.find("白天")) scene.layers.find("白天").visible = true;
       if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = false;
       if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = false;
       scene.sun.show = true;
       scene.sun.show = true;
@@ -43,48 +44,35 @@ const Nightscape = {
       this.switchLight(true); //白天
       this.switchLight(true); //白天
       this.setHypsometric(false); //夜景材质
       this.setHypsometric(false); //夜景材质
       viewer.imageryLayers.remove(this.imageLayer);
       viewer.imageryLayers.remove(this.imageLayer);
+      //泛光
+      scene.bloomEffect.show = false;
     } else {
     } else {
       scene.sun.show = false;
       scene.sun.show = false;
+
       if (scene.layers.find("白天")) scene.layers.find("白天").visible = false;
       if (scene.layers.find("白天")) scene.layers.find("白天").visible = false;
       if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = true;
       if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = true;
+
+      debugger;
+      // var layer = scene.layers.find("BaoPo@BaoPo0621N");
+      //泛光
+      // scene.bloomEffect.show = true;
+      // scene.bloomEffect.bloomIntensity = 0.5;
+      // scene.bloomEffect.threshold = 0.8;
+      // scene.hdrEnabled = true;
+
+      // var p1 = Cesium.Cartesian3.fromDegrees(109.483493671187, 18.2992501184806, 300);
+      // var p2 = Cesium.Cartesian3.fromDegrees(109.517609654785, 18.3174247770029, 300);
+
+      // var lineLight = new Cesium.DirectionalLight(p1, {
+      //   targetPosition: p2,
+      //   color: Cesium.Color.WHITE,
+      //   intensity: 1
+      // })
+      // scene.addLightSource(lineLight);
       // 泛光线底纹
       // 泛光线底纹
       let roadLine1 = Cesium.GeoJsonDataSource.load(
       let roadLine1 = Cesium.GeoJsonDataSource.load(
         window.NightLightUrl.csfgx.url
         window.NightLightUrl.csfgx.url
       );
       );
-      debugger
-      var layer = scene.layers.find("BaoPo@BaoPo0621N");
-
-      // //修改线框
-      // layer.style3D.lineWidth = 1.5;
-      // layer.style3D.lineColor = new Cesium.Color(0 / 255, 0 / 255, 0 / 255, 1);
-      // layer.style3D.fillStyle = Cesium.FillStyle.Fill_And_WireFrame ;
-      // layer.wireFrameMode = Cesium.WireFrameType.EffectOutline;
-
-      // var customJGD = new Cesium.SpotLight(new Cesium.Cartesian3.fromDegrees(109.51265531383535, 18.311520512333716, 100),
-      //   new Cesium.Cartesian3.fromDegrees(109.53073971317, 18.3524456120148, 300), {
-      //   color: new Cesium.Color(0.2, 0.3, 0.3, 1),
-      //   cutoffDistance: 2000,
-      //   decay: 0,
-      //   intensity: 100
-      // })
-      // customJGD.angle = Math.PI / 100
-      // var x = 109.53073971317
-      // var y = 18.3524456120148
-      // var z = 300
-      // var ount = 1
-      // setInterval(function () {
-      //   scene.po
-      //   var xx = x + ount * 0.003
-      //   var yy = y + 0.002 * ount
-      //   if (xx > 109.35600) {
-      //     xx = x
-      //     yy = y
-      //     ount = 1
-      //   }
-      //   ount++
-      //   customJGD.targetPosition = new Cesium.Cartesian3.fromDegrees(xx, yy, 300)
-      // }, 1000)
-      // scene.addLightSource(customJGD);
       roadLine1
       roadLine1
         .then(function (dataSource) {
         .then(function (dataSource) {
           viewer.dataSources.add(dataSource);
           viewer.dataSources.add(dataSource);
@@ -121,7 +109,7 @@ const Nightscape = {
             let line = lines_1[i];
             let line = lines_1[i];
             line.polyline.material = new Cesium.PolylineGlowMaterialProperty({
             line.polyline.material = new Cesium.PolylineGlowMaterialProperty({
               //设置Glow材质
               //设置Glow材质
-              glowPower:  window.NightLightUrl.csfgx.glowPower,
+              glowPower: window.NightLightUrl.csfgx.glowPower,
               color: new Cesium.Color(
               color: new Cesium.Color(
                 window.NightLightUrl.csfgx.fgdxColor.r,
                 window.NightLightUrl.csfgx.fgdxColor.r,
                 window.NightLightUrl.csfgx.fgdxColor.g,
                 window.NightLightUrl.csfgx.fgdxColor.g,
@@ -144,7 +132,7 @@ const Nightscape = {
           var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
           var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
             p[0],
             p[0],
             p[1],
             p[1],
-            p[2] + 20
+            p[2]
           );
           );
           // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(
           // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(
           //   p[0],
           //   p[0],
@@ -171,41 +159,41 @@ const Nightscape = {
           scene.addLightSource(SpotLight33);
           scene.addLightSource(SpotLight33);
         });
         });
       });
       });
-    //小区灯光
-    Cesium.loadJson(window.NightLightUrl.residential.url).then((response) => {
-      let features = response.features;
-      features.forEach((element) => {
-        let p = element.geometry.coordinates;
-        var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
-          p[0],
-          p[1],
-          p[2]+3
-        );
-        // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(
-        //   p[0],
-        //   p[1],
-        //   p[2]
-        // );
-        var SpotLightOptions3 = {
-          cutoffDistance: window.NightLightUrl.yshdg.cutoffDistance,
-          color: new Cesium.Color(
-            window.NightLightUrl.residential.LightColor.r,
-            window.NightLightUrl.residential.LightColor.g,
-            window.NightLightUrl.residential.LightColor.b,
-            window.NightLightUrl.residential.LightColor.a
-          ),
-          decay: window.NightLightUrl.residential.decay,
-          intensity: window.NightLightUrl.residential.intensity,
-        };
+      //小区灯光
+      Cesium.loadJson(window.NightLightUrl.residential.url).then((response) => {
+        let features = response.features;
+        features.forEach((element) => {
+          let p = element.geometry.coordinates;
+          var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
+            p[0],
+            p[1],
+            p[2] + 3
+          );
+          // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(
+          //   p[0],
+          //   p[1],
+          //   p[2]
+          // );
+          var SpotLightOptions3 = {
+            cutoffDistance: window.NightLightUrl.yshdg.cutoffDistance,
+            color: new Cesium.Color(
+              window.NightLightUrl.residential.LightColor.r,
+              window.NightLightUrl.residential.LightColor.g,
+              window.NightLightUrl.residential.LightColor.b,
+              window.NightLightUrl.residential.LightColor.a
+            ),
+            decay: window.NightLightUrl.residential.decay,
+            intensity: window.NightLightUrl.residential.intensity,
+          };
 
 
-        let SpotLightresidential = new Cesium.PointLight(
-          SpotLightPos3,
-          // SpotLightPos32,
-          SpotLightOptions3
-        );
-        scene.addLightSource(SpotLightresidential);
+          let SpotLightresidential = new Cesium.PointLight(
+            SpotLightPos3,
+            // SpotLightPos32,
+            SpotLightOptions3
+          );
+          scene.addLightSource(SpotLightresidential);
+        });
       });
       });
-    });
       // 体育场灯光
       // 体育场灯光
       Cesium.loadJson(window.NightLightUrl.tycdg.url).then((response) => {
       Cesium.loadJson(window.NightLightUrl.tycdg.url).then((response) => {
         let features = response.features;
         let features = response.features;
@@ -253,12 +241,16 @@ const Nightscape = {
       // // 道路灯光
       // // 道路灯光
       Cesium.loadJson(window.NightLightUrl.dldg.url).then((response) => {
       Cesium.loadJson(window.NightLightUrl.dldg.url).then((response) => {
         let features = response.features;
         let features = response.features;
-        features.forEach((element) => {
+        for (var i = 0; i < features.length; i++) {
+          var element = features[i];
+
+          // if (i % 2 == 0)
+          //   continue;
           let p = element.geometry.coordinates;
           let p = element.geometry.coordinates;
           var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
           var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
             p[0],
             p[0],
             p[1],
             p[1],
-            p[2] + 40
+            p[2] + window.NightLightUrl.dldg.baseHeight
           );
           );
           var SpotLightOptions3 = {
           var SpotLightOptions3 = {
             cutoffDistance: window.NightLightUrl.dldg.cutoffDistance,
             cutoffDistance: window.NightLightUrl.dldg.cutoffDistance,
@@ -278,7 +270,22 @@ const Nightscape = {
             SpotLightOptions3
             SpotLightOptions3
           );
           );
           scene.addLightSource(SpotLight33);
           scene.addLightSource(SpotLight33);
-        });
+          debugger;
+          // var SpotLightPos31 = new Cesium.Cartesian3.fromDegrees(p[0],
+          //   p[1],
+          //   p[2] + 100)
+          // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(p[0]-0.0005,
+          //   p[1]-0.0005,
+          //   p[2])
+          // let SpotLight33 = new Cesium.SpotLight(
+          //   SpotLightPos31, SpotLightPos32, {
+          //   color: new Cesium.Color(1, 1, 1, 1), //光源颜色
+          //   distance: 200, // 光照距离
+          //   decay: 0.5, // 衰减大小
+          //   intensity: 1 // 光照强度
+          // })
+          // scene.addLightSource(SpotLight33);
+        }
       });
       });
       // 草坪灯光
       // 草坪灯光
       Cesium.loadJson(window.NightLightUrl.cpdg.url).then((response) => {
       Cesium.loadJson(window.NightLightUrl.cpdg.url).then((response) => {
@@ -311,7 +318,7 @@ const Nightscape = {
           scene.addLightSource(SpotLight33);
           scene.addLightSource(SpotLight33);
         });
         });
       });
       });
-
+      //流动线
       this.loadldx();
       this.loadldx();
       this.switchLight(false);
       this.switchLight(false);
       scene.skyAtmosphere.show = false;
       scene.skyAtmosphere.show = false;
@@ -330,50 +337,63 @@ const Nightscape = {
       this.dgdsq = setInterval(function () {
       this.dgdsq = setInterval(function () {
         //创建分层设色对象   设置最大/最小可见高度   颜色表  显示模式   透明度及线宽
         //创建分层设色对象   设置最大/最小可见高度   颜色表  显示模式   透明度及线宽
         var colorTable = new Cesium.ColorTable();
         var colorTable = new Cesium.ColorTable();
+        //粉色
         if (that.tycindex == 0) {
         if (that.tycindex == 0) {
           colorTable.insert(
           colorTable.insert(
-            61,
-            new Cesium.Color(255 / 255, 255 / 255, 255 / 255)
-          );
-          colorTable.insert(
-            43,
-            new Cesium.Color(255 / 255, 0 / 255, 234 / 255)
-          );
-          colorTable.insert(30, new Cesium.Color(13 / 255, 255 / 255, 0 / 255));
-        } else if (that.tycindex == 1) {
-          colorTable.insert(
-            61,
-            new Cesium.Color(255 / 255, 255 / 255, 255 / 255)
-          );
-          colorTable.insert(
-            43,
-            new Cesium.Color(255 / 255, 255 / 255, 0 / 255)
+            58,
+            new Cesium.Color(211 / 255, 28 / 255, 186 / 255)
           );
           );
           colorTable.insert(
           colorTable.insert(
             30,
             30,
-            new Cesium.Color(0 / 255, 232 / 255, 255 / 255)
-          );
-        } else {
-          colorTable.insert(
-            61,
-            new Cesium.Color(255 / 255, 255 / 255, 255 / 255)
-          );
-          colorTable.insert(
-            43,
-            new Cesium.Color(95 / 255, 234 / 255, 106 / 255)
-          );
-          colorTable.insert(
-            30,
-            new Cesium.Color(95 / 255, 234 / 255, 106 / 255)
+            new Cesium.Color(211 / 255, 28 / 255, 186 / 255)
           );
           );
+          //   colorTable.insert(30, new Cesium.Color(13 / 255, 255 / 255, 0 / 255));
+        }
+        //绿色
+        else if (that.tycindex == 1) {
+          //绿色
+          colorTable.insert(58, new Cesium.Color(0 / 255, 104 / 255, 0 / 255));
+          colorTable.insert(30, new Cesium.Color(0 / 255, 104 / 255, 0 / 255));
+          // colorTable.insert(
+          //   30,
+          //   new Cesium.Color(0 / 255, 232 / 255, 255 / 255)
+          // );
+        }
+        //蓝色
+        else if (that.tycindex == 2) {
+          colorTable.insert(58, new Cesium.Color(3 / 255, 3 / 255, 188 / 255));
+          colorTable.insert(30, new Cesium.Color(3 / 255, 3 / 255, 188 / 255));
+          // colorTable.insert(
+          //   30,
+          //   new Cesium.Color(95 / 255, 234 / 255, 106 / 255)
+          // );
         }
         }
+        // 紫色
+        else if (that.tycindex == 3) {
+          colorTable.insert(58, new Cesium.Color(184 / 255, 5 / 255, 18 / 255));
+          colorTable.insert(30, new Cesium.Color(184 / 255, 5 / 255, 18 / 255));
+          // colorTable.insert(
+          //   30,
+          //   new Cesium.Color(95 / 255, 234 / 255, 106 / 255)
+          // );
+        }
+        //金色
+        else {
+          colorTable.insert(58, new Cesium.Color(86 / 255, 66 / 255, 0 / 255));
+          colorTable.insert(30, new Cesium.Color(115 / 255, 94 / 255, 0 / 255));
+          // colorTable.insert(
+          //   30,
+          //   new Cesium.Color(95 / 255, 234 / 255, 106 / 255)
+          // );
+        }
+
         var layer = scene.layers.find("TYCB@BaoPo0621N");
         var layer = scene.layers.find("TYCB@BaoPo0621N");
         var hyp = new Cesium.HypsometricSetting();
         var hyp = new Cesium.HypsometricSetting();
-        hyp.MaxVisibleValue = 61;
-        hyp.MinVisibleValue = 30;
+        hyp.MaxVisibleValue = 58;
+        hyp.MinVisibleValue = 26.8;
         hyp.ColorTable = colorTable;
         hyp.ColorTable = colorTable;
-        hyp.DisplayMode = Cesium.HypsometricSettingEnum.DisplayMode.FACE;
-        hyp.Opacity = 0.5;
+        hyp.DisplayMode = Cesium.HypsometricSettingEnum.DisplayMode.NEAREST;
+        hyp.Opacity = 0.75;
         hyp.LineInterval = 1.0;
         hyp.LineInterval = 1.0;
         //设置图层分层设色属性
         //设置图层分层设色属性
         layer.hypsometricSetting = {
         layer.hypsometricSetting = {
@@ -381,12 +401,36 @@ const Nightscape = {
           // CoverageArea: ps,
           // CoverageArea: ps,
           analysisMode:
           analysisMode:
             Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
             Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
+          // DisplayMode:Cesium.HypsometricSettingEnum.DisplayMode.FACE_AND_LINE
         };
         };
         that.tycindex += 1;
         that.tycindex += 1;
-        if (that.tycindex >= 3) {
+        if (that.tycindex > 4) {
           that.tycindex = 0;
           that.tycindex = 0;
         }
         }
-      }, 1000 * 2);
+      }, 1000 * 5);
+
+      // //模型图层泛光
+      var layerP = scene.layers.find("BaoPo@BaoPo0621N");
+      // layerP.bloomEffect.enable =true
+      // layerP.bloomEffect.speed =3
+      // layerP.bloomEffect.period =5
+      // layerP.bloomEffect.maxBloomHeight =8
+      // layerP.partlyTransparent =true
+      layerP.hasLight = true;
+      layerP.bloomEffect.enable = true;
+      layerP.bloomEffect.maxBloomHeight = 1.2;
+      layerP.bloomEffect.period = 2;
+      layerP.bloomEffect.speed = 50;
+      // // layerP.hasWireframe =true;
+      // layerP.style3D.lineWidth = 1.5;
+      // layerP.style3D.lineColor = new Cesium.Color(0 / 255, 255 / 255, 0 / 255, 1);
+      // layerP.style3D.fillStyle = Cesium.FillStyle.Fill_And_WireFrame ;
+      // layerP.wireFrameMode = Cesium.WireFrameType.EffectOutline;
+      // // layerP. wireFrameMode =Cesium.WireFrameType.Quad
+      // // var s3mpolylineEffect = layerP.effect;
+      // // var EffectSetting = s3mpolylineEffect.getEffectSetting();
+      // // s3mpolylineEffect.setValue('PolylineType', 0);
+      // // s3mpolylineEffect.setValue('Width', 5);
     }
     }
   },
   },
 
 
@@ -394,15 +438,10 @@ const Nightscape = {
   switchLight(isDayLight) {
   switchLight(isDayLight) {
     if (isDayLight) {
     if (isDayLight) {
       //设置环境光(白天)
       //设置环境光(白天)
-      scene.lightSource.ambientLightColor = new Cesium.Color(
-        0.65,
-        0.65,
-        0.65,
-        1
-      );
+      scene.lightSource.ambientLightColor = new Cesium.Color(0.1, 0.1, 0.1, 1);
     } else {
     } else {
       //设置环境光(夜晚)
       //设置环境光(夜晚)
-      // scene.lightSource.ambientLightColor = new Cesium.Color(0.3, 0.3, 0.3, 1);
+      // scene.lightSource.ambientLightColor = new Cesium.Color(34/255, 34/255, 34/255,0.5);
       // 添加光源
       // 添加光源
 
 
       // this.addLightSource({
       // this.addLightSource({
@@ -478,18 +517,18 @@ const Nightscape = {
       //   gyIntensity: 2,
       //   gyIntensity: 2,
       // });
       // });
       //操场光源
       //操场光源
-      this.addLightSource({
-        gyType: "点光源",
-        cartesian: new Cesium.Cartesian3.fromDegrees(
-          109.51144104226398,
-          18.311654492261003,
-          24.172257598338254
-        ),
-        gyDecay: 2,
-        gyDistance: 200,
-        gyColor: "rgba(255,255,255,1)",
-        gyIntensity: 2,
-      });
+      // this.addLightSource({
+      //   gyType: "点光源",
+      //   cartesian: new Cesium.Cartesian3.fromDegrees(
+      //     109.51144104226398,
+      //     18.311654492261003,
+      //     24.172257598338254
+      //   ),
+      //   gyDecay: 2,
+      //   gyDistance: 200,
+      //   gyColor: "rgba(255,255,255,1)",
+      //   gyIntensity: 2,
+      // });
 
 
       // 新增直射光1--西南侧光
       // 新增直射光1--西南侧光
       var position = new Cesium.Cartesian3.fromDegrees(
       var position = new Cesium.Cartesian3.fromDegrees(
@@ -655,12 +694,12 @@ const Nightscape = {
    */
    */
   loadldx() {
   loadldx() {
     let that = this;
     let that = this;
-  //道路中线流动
+    //道路中线流动
     Cesium.loadJson(window.NightLightUrl.dlzxx.url).then((jsonData) => {
     Cesium.loadJson(window.NightLightUrl.dlzxx.url).then((jsonData) => {
       debugger;
       debugger;
       jsonData.features.forEach((route) => {
       jsonData.features.forEach((route) => {
         let list = route.geometry.coordinates.flat(Infinity);
         let list = route.geometry.coordinates.flat(Infinity);
-        
+
         let dl = viewer.entities.add({
         let dl = viewer.entities.add({
           // 用于打底的线
           // 用于打底的线
           polyline: {
           polyline: {
@@ -703,11 +742,11 @@ const Nightscape = {
       });
       });
     });
     });
     //楼顶流动线
     //楼顶流动线
-    var liness=[]
-    
+    var liness = [];
+
     Cesium.loadJson(window.NightLightUrl.buildTopLine.url).then((jsonData) => {
     Cesium.loadJson(window.NightLightUrl.buildTopLine.url).then((jsonData) => {
       debugger;
       debugger;
-      liness=jsonData
+      liness = jsonData;
       jsonData.features.forEach((route) => {
       jsonData.features.forEach((route) => {
         let list = route.geometry.coordinates.flat(Infinity);
         let list = route.geometry.coordinates.flat(Infinity);
         let topLine = viewer.entities.add({
         let topLine = viewer.entities.add({
@@ -737,8 +776,6 @@ const Nightscape = {
         this.buildTopLines.push(topLine);
         this.buildTopLines.push(topLine);
       });
       });
     });
     });
-    
-
   },
   },
   // changlineColor(){},
   // changlineColor(){},
 
 

+ 3 - 3
src/views/ConstructionApplication3D/ArchitecturaAnalysis/ArchitecturaAnalysis.vue

@@ -33,7 +33,7 @@
         <span class="grid-content">{{ dgData.jg }}</span>
         <span class="grid-content">{{ dgData.jg }}</span>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
-    <el-row
+    <!-- <el-row
       :gutter="10"
       :gutter="10"
       type="flex"
       type="flex"
       class="row-bg"
       class="row-bg"
@@ -60,7 +60,7 @@
       <el-col :span="8">
       <el-col :span="8">
         <span class="grid-content">{{ qcbData.jg }}</span>
         <span class="grid-content">{{ qcbData.jg }}</span>
       </el-col>
       </el-col>
-    </el-row>
+    </el-row> -->
   </div>
   </div>
 </template>
 </template>
 
 
@@ -69,7 +69,7 @@ export default {
   data() {
   data() {
     return {
     return {
       dgData: { ms: "", jisuan: "", jg: "" },
       dgData: { ms: "", jisuan: "", jg: "" },
-      qcbData: { ms: "窗墙比", jisuan: "", jg: "" },
+      // qcbData: { ms: "窗墙比", jisuan: "", jg: "" },
     };
     };
   },
   },
   props: {
   props: {

+ 381 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js

@@ -0,0 +1,381 @@
+import { v4 as uuidv4 } from "uuid";
+import moment from "moment";
+import {
+  cartesian3ToWGS84,
+  mapQuery,
+  flatten,
+  mercator2lonLat,
+  undergroundMode,
+} from "@/utils/MapHelper/MapHelper.js";
+import {
+  area,
+  intersect,
+  polygon,
+  point,
+  midpoint,
+  difference,
+} from "@turf/turf";
+const BenchmarkLandPrice = {
+  async calculateLandPrice(BenchmarkLandPrice, Callback) {
+    debugger;
+    let GHDKList = await this.getGHDKs(BenchmarkLandPrice);
+    debugger;
+    await this.GetJZDJ(BenchmarkLandPrice, GHDKList);
+    let data = await this.CalculateJZDJ(BenchmarkLandPrice, GHDKList);
+    if (data && data.picBase64List) {
+      var promise = scene.outputSceneToFile();
+      Cesium.when(promise, function (base64data) {
+        data.picBase64List.push(base64data);
+        if (Callback) Callback(data);
+      });
+    } else {
+      if (Callback) Callback(false);
+    }
+  },
+
+  /**
+   * 查询区域内规划地块
+   * @param {*} BenchmarkLandPrice 基准地价信息
+   * @returns {*} 图层返回信息
+   * {
+          id: uuidv4(),
+          layerInfo: layer,
+          data: [],
+          geometry: feature.geometry,
+        }
+   */
+  async getGHDKs(BenchmarkLandPrice) {
+    debugger;
+    let featureDataList = [];
+    //查询规划地块
+    let layer = flatten(window.layerTree).find((item) => item.core == "003006");
+    let points = BenchmarkLandPrice.ProjectScope;
+    let geo = {
+      id: 0,
+      style: null,
+      parts: [points.length],
+      points: points,
+      type: "REGION",
+      prjCoordSys: {
+        epsgCode: null,
+      },
+    };
+    let queryByGeometryParameters = {
+      getFeatureMode: "SPATIAL",
+      datasetNames: [
+        layer.date_server.dataSourceName + ":" + layer.date_server.datasetName,
+      ],
+      geometry: geo,
+      spatialQueryMode: "INTERSECT",
+      hasGeometry: "true",
+    };
+    let e = await mapQuery(
+      layer.date_server.url + "/featureResults.json?returnContent=true",
+      queryByGeometryParameters
+    );
+    if (e && e.totalCount > 0) {
+      e.features.forEach((feature) => {
+        let featureData = {
+          id: uuidv4(),
+          layerInfo: layer,
+          data: [],
+          geometry: feature.geometry,
+        };
+
+        feature.fieldNames.forEach((fieldName, i) => {
+          let Field = e.datasetInfos
+            ? e.datasetInfos[0].fieldInfos.find(
+                (c) =>
+                  c.name &&
+                  c.name.toUpperCase() == fieldName.toUpperCase() &&
+                  c.name.toUpperCase().indexOf("SM") == -1
+              )
+            : null;
+          if (Field) {
+            featureData.data.push({
+              label: fieldName,
+              labelCN: Field ? Field.caption : fieldName,
+              value: feature.fieldValues[i],
+            });
+          }
+        });
+        featureDataList.push(featureData);
+      });
+    }
+    return featureDataList;
+  },
+
+  /**
+   * 获取基准地价
+   * @param {*} BenchmarkLandPrice
+   * @param {*} GHDKList
+   * @returns
+   */
+  async GetJZDJ(BenchmarkLandPrice, GHDKList) {
+    debugger;
+    for (let GHDKindex = 0; GHDKindex < GHDKList.length; GHDKindex++) {
+      let GHDK = GHDKList[GHDKindex];
+      GHDK.JZDJList = [];
+      let KZXXGYDDM = GHDK.data.find((c) => c.label == "KZXXGYDDM");
+      let landUseNatureRelation = flatten(window.landUseNatureRelation).find(
+        (c) => {
+          let GHDKType = c.GHDKType.find((a) =>
+            KZXXGYDDM.value.startsWith(a.ydxzdl)
+          );
+
+          return GHDKType != null;
+        }
+      );
+      if (landUseNatureRelation) {
+        let layerinfos = landUseNatureRelation.layerinfo;
+        for (let index = 0; index < layerinfos.length; index++) {
+          let layerinfo = layerinfos[index];
+          let layer = flatten(window.layerTree).find(
+            (item) => item.core == layerinfo.layerCore
+          );
+          if (layer && layer.date_server && layer.date_server.url) {
+            let points = BenchmarkLandPrice.ProjectScope;
+            let geo = {
+              id: 0,
+              style: null,
+              parts: [points.length],
+              points: points,
+              type: "REGION",
+              prjCoordSys: {
+                epsgCode: null,
+              },
+            };
+            let queryByGeometryParameters = {
+              getFeatureMode: "SPATIAL",
+              datasetNames: [
+                layer.date_server.dataSourceName +
+                  ":" +
+                  layer.date_server.datasetName,
+              ],
+              geometry: geo,
+              spatialQueryMode: "INTERSECT",
+              hasGeometry: "true",
+            };
+            let e = await mapQuery(
+              layer.date_server.url + "/featureResults.json?returnContent=true",
+              queryByGeometryParameters
+            );
+            if (e && e.totalCount > 0) {
+              e.features.forEach((feature) => {
+                let layerData = {
+                  id: uuidv4(),
+                  layerInfo: layerinfo,
+                  data: [],
+                  geometry: feature.geometry,
+                };
+                feature.fieldNames.forEach((fieldName, i) => {
+                  let Field = e.datasetInfos
+                    ? e.datasetInfos[0].fieldInfos.find(
+                        (c) =>
+                          c.name &&
+                          c.name.toUpperCase() == fieldName.toUpperCase() &&
+                          c.name.toUpperCase().indexOf("SM") == -1
+                      )
+                    : null;
+                  if (Field) {
+                    layerData.data.push({
+                      label: fieldName,
+                      labelCN: Field ? Field.caption : fieldName,
+                      value: feature.fieldValues[i],
+                    });
+                  }
+                });
+                GHDK.JZDJList.push(layerData);
+              });
+            }
+          } else {
+            console.log(
+              "服务编码【" + layerinfo.layerCore + "】配置不正确,请检查后重试"
+            );
+          }
+        }
+      } else {
+        console.log(KZXXGYDDM + "未配置当前土地用途,请联系管理员添加");
+      }
+    }
+  },
+
+  /**
+   * 计算基准地价
+   */
+  async CalculateJZDJ(BenchmarkLandPrice, GHDKList) {
+    //转换成超图格式面
+    let HZgeometry = {
+      partTopo: [1],
+      parts: [BenchmarkLandPrice.ProjectScope.length],
+      points: BenchmarkLandPrice.ProjectScope,
+    };
+    // 循环规划地块区域信息
+    GHDKList.forEach((GHDK) => {
+      GHDK.fromData = [];
+      GHDK.JZDJList.forEach((JZDJ) => {
+        let area = this.calculateIntersectArea(
+          GHDK.geometry,
+          JZDJ.geometry,
+          HZgeometry
+        );
+        if (Number(area) > 0) {
+          let fromData = { data: JZDJ.data, area: Number(area) / 666.67 };
+          //土地级别
+          let tdjb = JZDJ.data.find(
+            (c) => c.label == JZDJ.layerInfo.tdjbField
+          ).value;
+          fromData.tdjb = tdjb;
+          //单价
+          let dj = JZDJ.data.find(
+            (c) => c.label == JZDJ.layerInfo.ydlxPriceField
+          ).value;
+          fromData.dj = (Number(dj) * 666.67) / 10000;
+          //占用面积地价
+          fromData.zdj = Number(area * dj) / 10000;
+          fromData.geometry = JZDJ.geometry;
+          GHDK.fromData.push(fromData);
+        }
+      });
+    });
+
+    //计算分析面积
+    let fxzmj = this.CalculateAnalysisArea(BenchmarkLandPrice);
+    //总地价
+    let zdj = 0;
+    //参与地价计算的面积(规划地块+绘制范围+地价地块范围三者交集)
+    let jszmj = 0;
+    //规划地块详细地价
+    let ghdkDetailedDjList = [];
+    debugger;
+    GHDKList.forEach((GHDK) => {
+      let ghdkDetailed = {};
+      ghdkDetailed.id = GHDK.id;
+      ghdkDetailed.geometry = GHDK.geometry;
+      ghdkDetailed.data = GHDK.data;
+      ghdkDetailed.ghyt = GHDK.data.find((c) => c.label == "KZXXGYDMC").value;
+      ghdkDetailed.dkbm = GHDK.data.find((c) => c.label == "DKBM").value;
+      //占用土地
+      ghdkDetailed.zytdList = GHDK.fromData;
+      ghdkDetailedDjList.push(ghdkDetailed);
+      GHDK.fromData.forEach((fromData) => {
+        zdj += fromData.zdj;
+        jszmj += fromData.area;
+      });
+    });
+    ghdkDetailedDjList = ghdkDetailedDjList.filter(
+      (c) => c.zytdList && c.zytdList.length > 0
+    );
+
+    return {
+      projectName: BenchmarkLandPrice.ProjectName, //项目名称
+      analysisDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"), //分析时间
+      projectType: BenchmarkLandPrice.ProjectType, //项目类型
+      buildUnit: BenchmarkLandPrice.ConstructionUnit, //建设单位
+      analysisArea: fxzmj, //分析面积(亩)
+      ParticipationArea: jszmj, //参与地价计算的面积(亩)
+      totalLandPrice: zdj, //总地价(万元)  总地价预估合计
+      ghdkDetailedDjList: ghdkDetailedDjList, //规划地块详细地价
+      picBase64List: [], //图片集 分析范围
+    };
+  },
+
+  /**
+   * 计算分析面积
+   * @param {*} BenchmarkLandPrice 基准地价信息
+   * @returns {number} 分析总面积
+   */
+  CalculateAnalysisArea(BenchmarkLandPrice) {
+    let fxzmj = 0;
+    let points = BenchmarkLandPrice.ProjectScope;
+    let DataPs = points.map((item) => [item.x, item.y]);
+    if (DataPs.length > 0) {
+      if (
+        JSON.stringify(DataPs[0]) != JSON.stringify(DataPs[DataPs.length - 1])
+      ) {
+        DataPs.push(DataPs[0]);
+      }
+      let polygonPs = polygon([DataPs]);
+      let areaPs = area(polygonPs);
+      fxzmj = Number(areaPs / 666.67).toFixed(2);
+    }
+    return fxzmj;
+  },
+
+  /**
+   * 计算两个面的交集面积
+   * @param Points1
+   * @param Points2
+   * @param Points3
+   */
+  calculateIntersectArea(Points1, Points2, Points3) {
+    var geometry1;
+    var geometry2;
+    var geometry3;
+    if (Points1) {
+      geometry1 = this.AssemblySurface(Points1);
+    }
+    if (Points2) {
+      geometry2 = this.AssemblySurface(Points2);
+    }
+    if (Points3) {
+      geometry3 = this.AssemblySurface(Points3);
+    }
+    let areaPs;
+    if (geometry1 && geometry2) {
+      areaPs = intersect(geometry1, geometry2);
+    }
+    if (areaPs && geometry3) {
+      areaPs = intersect(areaPs, geometry3);
+    }
+    if (areaPs) {
+      let areadifference = area(areaPs);
+      return Number(areadifference.toFixed(2));
+    } else {
+      return 0;
+    }
+  },
+  /**
+   * 组装带洞和不带洞的面
+   * @param geometry 超图返回的图形数组
+   */
+  AssemblySurface(geometry) {
+    let point3ds = [];
+    let pointholes = [];
+    let startindex = 0;
+    for (let index = 0; index < geometry.parts.length; index++) {
+      let thisps = [];
+      let endindex = startindex + geometry.parts[index];
+      let geometryPoints = geometry.points.slice(startindex, endindex);
+      for (
+        let pointindex = 0;
+        pointindex < geometryPoints.length;
+        pointindex++
+      ) {
+        let point = geometryPoints[pointindex];
+        thisps.push([point.x, point.y]);
+      }
+      if (geometry.partTopo[index] === 1) {
+        point3ds.push(thisps);
+      } else {
+        pointholes.push(thisps);
+      }
+
+      startindex = endindex;
+    }
+
+    // 主多边形
+    var mainPolygon = polygon(point3ds);
+
+    // 岛洞多边形
+    var holePolygon = polygon(pointholes);
+
+    // 计算差集 得到有导洞的图形
+    var getdifference = difference(mainPolygon, holePolygon);
+    return getdifference;
+  },
+};
+/**
+ * 基准地价分析
+ */
+export default BenchmarkLandPrice;

+ 23 - 9
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue

@@ -188,6 +188,7 @@ import { v4 as uuidv4 } from "uuid";
 import moment from "moment";
 import moment from "moment";
 import jzdjfxsmInfo from "./jzdjfxsmInfo.vue";
 import jzdjfxsmInfo from "./jzdjfxsmInfo.vue";
 import jzdjfxsmjg from "./jzdjfxsmjg.vue";
 import jzdjfxsmjg from "./jzdjfxsmjg.vue";
+import BenchmarkLandPrice from "./BenchmarkLandPrice.js";
 import {
 import {
   cartesian3ToWGS84,
   cartesian3ToWGS84,
   mapQuery,
   mapQuery,
@@ -354,18 +355,29 @@ export default {
           that.form.analysisDate = moment(new Date()).format(
           that.form.analysisDate = moment(new Date()).format(
             "YYYY-MM-DD HH:mm:ss"
             "YYYY-MM-DD HH:mm:ss"
           );
           );
-          that.form.AnalysisStatus = "完成";
+          that.form.AnalysisStatus = "正在分析";
           window.BenchmarkLandPriceList.push(
           window.BenchmarkLandPriceList.push(
             JSON.parse(JSON.stringify(that.form))
             JSON.parse(JSON.stringify(that.form))
           );
           );
-          let data=window.BenchmarkLandPriceList.find(c=>c.id==that.form.id);
-          debugger;
-          that.openAnalyzeResults(data);
-          that.resetForm(formName);
+          this.init();
+          let data=this.BenchmarkLandPriceList.find(c=>c.id==that.form.id);
+          BenchmarkLandPrice.calculateLandPrice(data,function(response){
+            if(response){
+                data.AnalysisStatus = "完成";
+                data.AnalysisResults=response;
+                 that.openAnalyzeResults(data);
+            }else{
+              data.AnalysisStatus = "异常";
+                data.AnalysisResults=response;
+            }
+          });
           that.$message({
           that.$message({
             message: "开始分析",
             message: "开始分析",
             type: "success",
             type: "success",
           });
           });
+          
+          that.resetForm(formName);
+          
         } else {
         } else {
           return false;
           return false;
         }
         }
@@ -469,11 +481,13 @@ export default {
       viewer.flyTo(polygonEntity)
       viewer.flyTo(polygonEntity)
     },
     },
 
 
+
     /**
     /**
-     * 打开分析结果弹窗
+     *  打开分析结果弹窗
      * @param BenchmarkLandPrice 基准地价信息
      * @param BenchmarkLandPrice 基准地价信息
      */
      */
     openAnalyzeResults(BenchmarkLandPrice) {
     openAnalyzeResults(BenchmarkLandPrice) {
+      debugger
       if (this.FXJGInfolayerid) {
       if (this.FXJGInfolayerid) {
         this.$layer.close(this.FXJGInfolayerid);
         this.$layer.close(this.FXJGInfolayerid);
       }
       }
@@ -497,7 +511,7 @@ export default {
         shade: false, //是否显示遮罩
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         shadeClose: false, //点击遮罩是否关闭
         cancel: () => {
         cancel: () => {
-          this.init();
+          // this.init();
         },
         },
       });
       });
     },
     },
@@ -648,8 +662,8 @@ export default {
     },
     },
     async handleGetBG(item) {
     async handleGetBG(item) {
       debugger;
       debugger;
-      if (item.jgData) {
-        await getJZDJWord(item.jgData);
+      if (item) {
+        await getJZDJWord(item);
       }
       }
     },
     },
     /**
     /**

文件差异内容过多而无法显示
+ 203 - 712
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue


+ 1 - 1
src/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue

@@ -150,7 +150,7 @@ export default {
             feature.fieldNames.forEach((fieldName, i) => {
             feature.fieldNames.forEach((fieldName, i) => {
               if (
               if (
                 fieldName == "BASEH" &&
                 fieldName == "BASEH" &&
-                Number(feature.fieldValues[i]) > jcgd
+                Number(feature.fieldValues[i]) >= jcgd
               ) {
               ) {
                 jcgd = Number(feature.fieldValues[i]);
                 jcgd = Number(feature.fieldValues[i]);
               }
               }

+ 3 - 3
src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue

@@ -396,8 +396,8 @@ export default {
     text-align: center;
     text-align: center;
 
 
 } */
 } */
-/* .el-input
+.el-input__inner
 {
 {
-   text-align: center;
-} */
+   text-align: end;
+}
 </style>
 </style>

+ 5 - 5
src/views/ConstructionApplication3D/Demolition/CQShowInfo.vue

@@ -43,12 +43,12 @@
                     <div v-show="!scope.row.seen">{{ scope.row.DES }}</div>
                     <div v-show="!scope.row.seen">{{ scope.row.DES }}</div>
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column fixed="right" label="操作" width="100">
+            <!-- <el-table-column fixed="right" label="操作" width="100">
                 <template slot-scope="scope">
                 <template slot-scope="scope">
                     <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
                     <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
                     <el-button type="text" size="small">删除</el-button>
                     <el-button type="text" size="small">删除</el-button>
                 </template>
                 </template>
-            </el-table-column>
+            </el-table-column> -->
         </el-table>
         </el-table>
         <!-- <el-row justify="center" type="flex">
         <!-- <el-row justify="center" type="flex">
             <el-button type="primary" @click="save()">保存</el-button>
             <el-button type="primary" @click="save()">保存</el-button>
@@ -396,8 +396,8 @@ export default {
     text-align: center;
     text-align: center;
 
 
 } */
 } */
-/* .el-input
+.el-input
 {
 {
-   text-align: center;
-} */
+   text-align: end;
+} 
 </style>
 </style>

+ 11 - 66
src/views/ConstructionApplication3D/Demolition/DemoList.vue

@@ -19,97 +19,40 @@
           <el-col :span="7">征地补偿标准:</el-col>
           <el-col :span="7">征地补偿标准:</el-col>
           <el-col :span="10">
           <el-col :span="10">
             <el-select v-model="zdValue" placeholder="请选择">
             <el-select v-model="zdValue" placeholder="请选择">
-              <el-option
-                v-for="item in zdList"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
+              <el-option v-for="item in zdList" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </el-col>
           </el-col>
           <el-col :span="7" class="buttongroup">
           <el-col :span="7" class="buttongroup">
-            <el-button
-              size="mini"
-              type="primary"
-              id="zdShow"
-              @click="zdShow()"
-              plain
-              >查看</el-button
-            >
-            <el-button
-              size="mini"
-              type="primary"
-              id="zdSet"
-              @click="zdSet()"
-              plain
-              >配置</el-button
-            >
+            <el-button size="mini" type="primary" id="zdShow" @click="zdShow()" plain>查看</el-button>
+            <el-button size="mini" type="primary" id="zdSet" @click="zdSet()" plain>配置</el-button>
           </el-col>
           </el-col>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
           <el-col :span="7">青苗补偿标准:</el-col>
           <el-col :span="7">青苗补偿标准:</el-col>
           <el-col :span="10">
           <el-col :span="10">
             <el-select v-model="qmValue" placeholder="请选择">
             <el-select v-model="qmValue" placeholder="请选择">
-              <el-option
-                v-for="item in qmList"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
+              <el-option v-for="item in qmList" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </el-col>
           </el-col>
           <el-col :span="7" class="buttongroup">
           <el-col :span="7" class="buttongroup">
-            <el-button
-              size="mini"
-              type="primary"
-              id="qmShow"
-              @click="qmShow()"
-              plain
-              >查看</el-button
-            >
-            <el-button
-              size="mini"
-              type="primary"
-              id="qmSet"
-              @click="qmSet()"
-              plain
-              >配置</el-button
-            >
+            <el-button size="mini" type="primary" id="qmShow" @click="qmShow()" plain>查看</el-button>
+            <el-button size="mini" type="primary" id="qmSet" @click="qmSet()" plain>配置</el-button>
           </el-col>
           </el-col>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
           <el-col :span="7">拆迁补偿标准:</el-col>
           <el-col :span="7">拆迁补偿标准:</el-col>
           <el-col :span="10">
           <el-col :span="10">
             <el-select v-model="cqValue" placeholder="请选择">
             <el-select v-model="cqValue" placeholder="请选择">
-              <el-option
-                v-for="item in cqList"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
+              <el-option v-for="item in cqList" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </el-col>
           </el-col>
 
 
           <el-col :span="7" class="buttongroup">
           <el-col :span="7" class="buttongroup">
-            <el-button
-              size="mini"
-              type="primary"
-              id="cqShow"
-              @click="cqShow()"
-              plain
-              >查看</el-button
-            >
-            <el-button
-              size="mini"
-              type="primary"
-              id="cqSet"
-              @click="cqSet()"
-              plain
-              >配置</el-button
-            >
+            <el-button size="mini" type="primary" id="cqShow" @click="cqShow()" plain>查看</el-button>
+            <el-button size="mini" type="primary" id="cqSet" @click="cqSet()" plain>配置</el-button>
           </el-col>
           </el-col>
         </el-row>
         </el-row>
 
 
@@ -673,5 +616,7 @@ export default {
 
 
 .el-input {
 .el-input {
   background: transparent;
   background: transparent;
+  text-align: end;
+
 }
 }
 </style>
 </style>

文件差异内容过多而无法显示
+ 87 - 37
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue


+ 1 - 5
src/views/ConstructionApplication3D/Demolition/Property.vue

@@ -13,10 +13,6 @@
 export default {
 export default {
     name: "Property",
     name: "Property",
     props: ["tableData"],
     props: ["tableData"],
-    data() {
-        return {
-
-        }
-    }
+ 
 }
 }
 </script>
 </script>

+ 6 - 6
src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue

@@ -12,7 +12,7 @@
 
 
     <el-row>
     <el-row>
       <el-col :span="6">农作物补偿:</el-col>
       <el-col :span="6">农作物补偿:</el-col>
-      <el-col :span="16"><el-input style="width: 100%" type="number" placeholder="请输入" readonly
+      <el-col :span="16"><el-input style="width: 100%" type="number" placeholder="请输入" 
           v-model="curBCBZ.BCBZ.NZW"></el-input>
           v-model="curBCBZ.BCBZ.NZW"></el-input>
       </el-col>
       </el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
@@ -20,13 +20,13 @@
     <el-row>
     <el-row>
       <el-col :span="6">经济作物:</el-col>
       <el-col :span="6">经济作物:</el-col>
       <el-col :span="16">
       <el-col :span="16">
-        <el-input style="width: 100%" placeholder="请输入" v-model="curBCBZ.BCBZ.JJZW"></el-input></el-col>
+        <el-input style="width: 100%" placeholder="请输入"  type="number" v-model="curBCBZ.BCBZ.JJZW"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     </el-row>
     <el-row>
     <el-row>
       <el-col :span="6">树木补偿:</el-col>
       <el-col :span="6">树木补偿:</el-col>
       <el-col :span="16">
       <el-col :span="16">
-        <el-input style="width: 100%" placeholder="请输入" v-model="curBCBZ.BCBZ.SM"></el-input></el-col>
+        <el-input style="width: 100%" placeholder="请输入"  type="number" v-model="curBCBZ.BCBZ.SM"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     </el-row>
     <el-row justify="center" type="flex">
     <el-row justify="center" type="flex">
@@ -228,8 +228,8 @@ export default {
     text-align: center;
     text-align: center;
 
 
 } */
 } */
-/* .el-input
+.el-input__inner
 {
 {
-   text-align: center;
-} */
+   text-align: end;
+}
 </style>
 </style>

+ 7 - 6
src/views/ConstructionApplication3D/Demolition/QMShowInfo.vue

@@ -12,7 +12,7 @@
 
 
     <el-row>
     <el-row>
       <el-col :span="6">农作物补偿:</el-col>
       <el-col :span="6">农作物补偿:</el-col>
-      <el-col :span="16"><el-input style="width: 100%" type="number" placeholder="请输入" readonly
+      <el-col :span="16"><el-input style="width: 100%"  placeholder="请输入" readonly
           v-model="curBCBZ.BCBZ.NZW"></el-input>
           v-model="curBCBZ.BCBZ.NZW"></el-input>
       </el-col>
       </el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
@@ -20,13 +20,13 @@
     <el-row>
     <el-row>
       <el-col :span="6">经济作物:</el-col>
       <el-col :span="6">经济作物:</el-col>
       <el-col :span="16">
       <el-col :span="16">
-        <el-input style="width: 100%" placeholder="请输入" v-model="curBCBZ.BCBZ.JJZW"></el-input></el-col>
+        <el-input style="width: 100%;" placeholder="请输入" v-model="curBCBZ.BCBZ.JJZW" ></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     </el-row>
     <el-row>
     <el-row>
       <el-col :span="6">树木补偿:</el-col>
       <el-col :span="6">树木补偿:</el-col>
       <el-col :span="16">
       <el-col :span="16">
-        <el-input style="width: 100%" placeholder="请输入" v-model="curBCBZ.BCBZ.SM"></el-input></el-col>
+        <el-input style="width: 100%;text-align:right;" placeholder="请输入" v-model="curBCBZ.BCBZ.SM"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     </el-row>
     <!-- <el-row justify="center" type="flex">
     <!-- <el-row justify="center" type="flex">
@@ -228,8 +228,9 @@ export default {
     text-align: center;
     text-align: center;
 
 
 } */
 } */
-/* .el-input
+.el-input__inner
 {
 {
-   text-align: center;
-} */
+   text-align: end;
+}
+
 </style>
 </style>

+ 6 - 6
src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue

@@ -58,7 +58,7 @@
       <el-col :span="16">
       <el-col :span="16">
         <el-input
         <el-input
           placeholder="自动计算"
           placeholder="自动计算"
-          readonly
+          readonly    type="number"
           v-model="curBCBZ.BCBZ.TDBCF"
           v-model="curBCBZ.BCBZ.TDBCF"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -87,7 +87,7 @@
       <el-col :span="16"
       <el-col :span="16"
         ><el-input
         ><el-input
           v-model="curBCBZ.BCBZ.AZBCF"
           v-model="curBCBZ.BCBZ.AZBCF"
-          readonly
+          readonly    type="number"
           placeholder="自动计算"
           placeholder="自动计算"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -104,7 +104,7 @@
       <el-col :span="16"
       <el-col :span="16"
         ><el-input
         ><el-input
           v-model="curBCBZ.BCBZ.BCHJ"
           v-model="curBCBZ.BCBZ.BCHJ"
-          readonly
+          readonly    type="number"
           placeholder="自动计算"
           placeholder="自动计算"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -374,8 +374,8 @@ export default {
     text-align: center;
     text-align: center;
 
 
 } */
 } */
-/* .el-input
+.el-input__inner
 {
 {
-   text-align: center;
-} */
+   text-align: end;
+}
 </style>
 </style>

+ 8 - 4
src/views/ConstructionApplication3D/Demolition/ZDShowInfo.vue

@@ -57,7 +57,7 @@
       <el-col :span="16">
       <el-col :span="16">
         <el-input
         <el-input
           placeholder="自动计算"
           placeholder="自动计算"
-          readonly
+          readonly    type="number"
           v-model="curBCBZ.BCBZ.TDBCF"
           v-model="curBCBZ.BCBZ.TDBCF"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -73,7 +73,7 @@
       <el-col :span="6">综合补偿倍数</el-col>
       <el-col :span="6">综合补偿倍数</el-col>
       <el-col :span="16"
       <el-col :span="16"
         ><el-input
         ><el-input
-          type="number"
+          type="number"    
           style="width: 100%"
           style="width: 100%"
           placeholder="请输入"
           placeholder="请输入"
           v-model="curBCBZ.BCBZ.AZBCBS"
           v-model="curBCBZ.BCBZ.AZBCBS"
@@ -86,7 +86,7 @@
       <el-col :span="16"
       <el-col :span="16"
         ><el-input
         ><el-input
           v-model="curBCBZ.BCBZ.AZBCF"
           v-model="curBCBZ.BCBZ.AZBCF"
-          readonly
+          readonly    type="number"
           placeholder="自动计算"
           placeholder="自动计算"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -103,7 +103,7 @@
       <el-col :span="16"
       <el-col :span="16"
         ><el-input
         ><el-input
           v-model="curBCBZ.BCBZ.BCHJ"
           v-model="curBCBZ.BCBZ.BCHJ"
-          readonly
+          readonly    type="number"
           placeholder="自动计算"
           placeholder="自动计算"
         ></el-input
         ></el-input
       ></el-col>
       ></el-col>
@@ -204,4 +204,8 @@ export default {
   color: #02a7f0;
   color: #02a7f0;
   font-weight: 400;
   font-weight: 400;
 }
 }
+.el-input__inner
+{
+   text-align: end;
+}
 </style>
 </style>

+ 1 - 1
src/views/ConstructionApplication3D/Layers/LayerTree.vue

@@ -86,7 +86,7 @@ export default {
       this.treeNodes.forEach((node) => {
       this.treeNodes.forEach((node) => {
         if (node.children && node.children.length > 0) {
         if (node.children && node.children.length > 0) {
           node.children.forEach((child) => {
           node.children.forEach((child) => {
-            debugger;
+            
             layer = viewer.scene.layers.find(child.layerName);
             layer = viewer.scene.layers.find(child.layerName);
             if (layer) {
             if (layer) {
               if (layer.visible === true) {
               if (layer.visible === true) {

+ 164 - 63
src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue

@@ -1,21 +1,13 @@
 <template>
 <template>
-  <div
-    class="ZTGlobal"
-    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
-  >
+  <div class="ZTGlobal" style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white">
     <el-row :gutter="10">
     <el-row :gutter="10">
-      <el-col :span="6"
-        ><el-button size="mini" type="default" @click="getGCZ"
-          >添加观察点</el-button
-        >
+      <el-col :span="6"><el-button size="mini" type="default" @click="getGCZ">添加观察点</el-button>
       </el-col>
       </el-col>
       <el-col :span="5.5">
       <el-col :span="5.5">
         <el-button size="mini" type="default">切换视角</el-button>
         <el-button size="mini" type="default">切换视角</el-button>
       </el-col>
       </el-col>
       <el-col :span="4">
       <el-col :span="4">
-        <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>
@@ -62,7 +54,7 @@ export default {
     },
     },
   },
   },
   computed: {},
   computed: {},
-  mounted() {},
+  mounted() { },
   methods: {
   methods: {
     getGCZ() {
     getGCZ() {
       let that = this;
       let that = this;
@@ -91,82 +83,191 @@ export default {
       });
       });
       handlerLine.drawEvt.addEventListener((result) => {
       handlerLine.drawEvt.addEventListener((result) => {
         that.tooltip.setVisible(false);
         that.tooltip.setVisible(false);
-        var polygon = result.object;
-        if (!polygon) {
+        var line = result.object;
+        if (!line) {
           return;
           return;
         }
         }
         // that.points = polygon.positions;
         // that.points = polygon.positions;
         //遍历多边形,取出所有点
         //遍历多边形,取出所有点
-        for (var i = 0, len = polygon.positions.length; i < len; i++) {
-          let xyz = cartesian3ToWGS84(polygon.positions[i]);
+        for (var i = 0, len = line.positions.length; i < len; i++) {
+          let xyz = cartesian3ToWGS84(line.positions[i]);
           that.points.push([xyz.lng, xyz.lat, xyz.alt]);
           that.points.push([xyz.lng, xyz.lat, xyz.alt]);
         }
         }
         that.ComputationalPerspective(that.points);
         that.ComputationalPerspective(that.points);
       });
       });
     },
     },
+    /**
+     * 计算方位角
+     * @param {} points 
+     */
     ComputationalPerspective(points) {
     ComputationalPerspective(points) {
-      var position = Cesium.Cartesian3.fromDegrees(
+      debugger
+      // A点坐标
+      var positionA = Cesium.Cartesian3.fromDegrees(
         points[0][0],
         points[0][0],
         points[0][1],
         points[0][1],
         points[0][2]
         points[0][2]
-      ); // A点坐标
-
-      var position2 = Cesium.Cartesian3.fromDegrees(
+      );
+      // B点坐标
+      var positionB = Cesium.Cartesian3.fromDegrees(
         points[1][0],
         points[1][0],
         points[1][1],
         points[1][1],
         points[1][2]
         points[1][2]
       );
       );
-      // 计算从A到B的向量
-      var subtract = Cesium.Cartesian3.subtract(
-        position2,
-        position,
-        new Cesium.Cartesian3()
-      );
-      var direction = Cesium.Cartesian3.normalize(
-        subtract,
-        new Cesium.Cartesian3()
-      ); // 转换为单位向量
+      console.log("相机Pitch"+ viewer.camera.pitch*180/Math.PI )
+      console.log("相机heading"+ viewer.camera.heading  *180/Math.PI  )
+      // var center = Cesium.Cartesian3.fromDegrees(points[1][0], points[1][1], points[1][2]);
+      // var target = Cesium.Cartesian3.fromDegrees(points[1][0], points[1][1], points[1][2]);
+      var datx = positionA.x - positionB.x;
+      var daty = positionA.y - positionB.y;
+      var datz = positionA.z - positionB.z;
 
 
-      // 计算朝向(假设Cesium.Cartesian3.UNIT_Z为上方,可能需要根据实际情况调整)
-      var heading = Cesium.Math.toDegrees(
-        Cesium.Cartesian3.angleBetween(direction, Cesium.Cartesian3.UNIT_X)
-      );
-      if (
-        Cesium.Cartesian3.dot(
-          direction,
-          Cesium.Cartesian3.cross(
-            Cesium.Cartesian3.UNIT_X,
-            Cesium.Cartesian3.UNIT_Z,
-            new Cesium.Cartesian3()
-          )
-        ) < 0
-      ) {
-        heading = (360 - heading) % 360; // 如果需要,调整heading到0-360度范围
-      }
-
-      // 计算倾斜
 
 
-      let heightDifference = points[0][2] - points[1][2];
-      var from = point([points[0][0], points[0][1]]);
-      var to = point([points[1][0], points[1][1]]);
-      var options = { units: "kilometers" };
+      //获取相机方位角
+      var heading = Math.atan2((points[1][1] - points[0][1]), (points[1][0] - points[0][0]))
+      // if(heading < 0)
+      // heading =Math.PI/2- heading
 
 
-      var horizontalDistance = distance(from, to, options) * 1000;
-      var pitch = Cesium.Math.toDegrees(
-        Math.atan2(heightDifference, horizontalDistance)
-      );
-
-      // 设置相机视角
+   
+      heading=this.computeHeading(points[0][0], points[0][1], points[1][0], points[1][1])+Math.PI/2;
+      var angle = heading * 180 / Math.PI
+  
+      console.log("计算角度" + angle)
+      // heading=(position)
+      //获取相机的俯仰角
+      var len=Math.sqrt(Math.pow((points[1][1] - points[0][1]),2)+Math.pow((points[1][0] - points[0][0]),2))
+      var pitch =Math.atan2(points[1][2]-points[0][2],len)
+      //获取相机旋转角度
+      var roll = 0.0;
+      debugger
       viewer.camera.setView({
       viewer.camera.setView({
-        destination: position,
+        destination: positionA,
         orientation: {
         orientation: {
-          heading: heading,
-          pitch: pitch,
-          roll: 0.0,
-        },
+          heading: heading, // east, default value is 0.0 (north)
+          pitch:0,    // default value (looking down)
+          roll: 0.0                         // default value
+        }
       });
       });
+
+      // // 计算从A到B的向量
+      // var subtract = Cesium.Cartesian3.subtract(
+      //   position2,
+      //   position,
+      //   new Cesium.Cartesian3()
+      // );
+      // var direction = Cesium.Cartesian3.normalize(
+      //   subtract,
+      //   new Cesium.Cartesian3()
+      // ); // 转换为单位向量
+
+      // // 计算朝向(假设Cesium.Cartesian3.UNIT_Z为上方,可能需要根据实际情况调整)
+      // var heading = Cesium.Math.toDegrees(
+      //   Cesium.Cartesian3.angleBetween(direction, Cesium.Cartesian3.UNIT_X)
+      // );
+      // if (
+      //   Cesium.Cartesian3.dot(
+      //     direction,
+      //     Cesium.Cartesian3.cross(
+      //       Cesium.Cartesian3.UNIT_X,
+      //       Cesium.Cartesian3.UNIT_Z,
+      //       new Cesium.Cartesian3()
+      //     )
+      //   ) < 0
+      // ) {
+      //   heading = (360 - heading) % 360; // 如果需要,调整heading到0-360度范围
+      // }
+
+      // // 计算倾斜
+
+      // let heightDifference = points[0][2] - points[1][2];
+      // var from = point([points[0][0], points[0][1]]);
+      // var to = point([points[1][0], points[1][1]]);
+      // var options = { units: "kilometers" };
+
+      // var horizontalDistance = distance(from, to, options) * 1000;
+      // var pitch = Cesium.Math.toDegrees(
+      //   Math.atan2(heightDifference, horizontalDistance)
+      // );
+
+      // 设置相机视角
+      // viewer.camera.setView({
+      //   destination: positionB,
+      //   orientation: {
+      //     heading: heading,
+      //     pitch: pitch,
+      //     roll: 0.0,
+      //   },
+      // });
     },
     },
+    caculHeading(p0, p1) {
+      //计算p0位置的enu位置矩阵的旋转部分
+      var defrotmat = Cesium.Matrix4.getRotation(Cesium.Transforms.eastNorthUpToFixedFrame(p0), new Cesium.Matrix3());
+
+      //获取矩阵的三个坐标轴
+      var xaxis = Cesium.Matrix3.getColumn(defrotmat, 0, new Cesium.Cartesian3());
+      var yaxis = Cesium.Matrix3.getColumn(defrotmat, 1, new Cesium.Cartesian3());
+      var zaxis = Cesium.Matrix3.getColumn(defrotmat, 2, new Cesium.Cartesian3());
+
+      //两个位置点的射线方向
+      var dir = Cesium.Cartesian3.subtract(p1, p0, new Cesium.Cartesian3());
+
+      //计算在 enu 旋转矩阵上的 x y 平面上的投影向量
+      dir = Cesium.Cartesian3.cross(dir, zaxis, dir);
+      dir = Cesium.Cartesian3.cross(zaxis, dir, dir);
+
+      //归一化
+      dir = Cesium.Cartesian3.normalize(dir, dir);
+
+      //计算和x轴夹角  0 ~  pi
+      var heading = Cesium.Cartesian3.angleBetween(xaxis, dir);
 
 
+      //和y轴夹角 判定在y轴的正方向还是负方向
+      var ay = Cesium.Cartesian3.angleBetween(yaxis, dir);
+
+      // 保证处于0~2PI
+      // if (ay > Math.PI * 0.5) {
+      //   heading = Math.PI - heading;
+      // }
+
+      console.log("heading:" + Cesium.Math.toDegrees(heading).toFixed(5));
+      return heading;
+    },
+    computeHeading(lng_a, lat_a, lng_b, lat_b) {
+      //以a点为原点建立局部坐标系(东方向为x轴,北方向为y轴,垂直于地面为z轴),得到一个局部坐标到世界坐标转换的变换矩阵
+      var localToWorld_Matrix = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(lng_a, lat_a));
+      //求世界坐标到局部坐标的变换矩阵
+      var worldToLocal_Matrix = Cesium.Matrix4.inverse(localToWorld_Matrix, new Cesium.Matrix4());
+      //a点在局部坐标的位置,其实就是局部坐标原点
+      var localPosition_A = Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix, new Cesium.Cartesian3.fromDegrees(lng_a, lat_a), new Cesium.Cartesian3());
+      //B点在以A点为原点的局部的坐标位置
+      var localPosition_B = Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix, new Cesium.Cartesian3.fromDegrees(lng_b, lat_b), new Cesium.Cartesian3());
+      //弧度
+      var angle = Math.atan2((localPosition_B.y - localPosition_A.y), (localPosition_B.x - localPosition_A.x))
+      // //角度
+      // var theta = angle * (180 / Math.PI);
+      // if (theta < 0) {
+      //   theta = theta + 360;
+      // }
+      return angle;
+    },
+    computePitch(lng_a, lat_a, alt_a, lng_b, lat_b, alt_b) {
+      //以a点为原点建立局部坐标系(东方向为x轴,北方向为y轴,垂直于地面为z轴),得到一个局部坐标到世界坐标转换的变换矩阵
+      var localToWorld_Matrix = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(lng_a, lat_a, alt_a));
+      //求世界坐标到局部坐标的变换矩阵
+      var worldToLocal_Matrix = Cesium.Matrix4.inverse(localToWorld_Matrix, new Cesium.Matrix4());
+      //a点在局部坐标的位置,其实就是局部坐标原点
+      var localPosition_A = Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix, new Cesium.Cartesian3.fromDegrees(lng_a, lat_a, alt_a), new Cesium.Cartesian3());
+      //B点在以A点为原点的局部的坐标位置
+      var localPosition_B = Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix, new Cesium.Cartesian3.fromDegrees(lng_b, lat_b, alt_b), new Cesium.Cartesian3());
+      //弧度
+      var angle = Math.atan2((localPosition_B.z - localPosition_A.z), (localPosition_B.x - localPosition_A.x))
+      //角度
+      // var theta = angle * (180 / Math.PI);
+      // if (theta < 0) {
+      //   theta = theta + 360;
+      // }
+      return angle;
+    },
     updateOrientation(targetEntity) {
     updateOrientation(targetEntity) {
       debugger;
       debugger;
       var pathPosition = targetEntity;
       var pathPosition = targetEntity;

+ 238 - 12
src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue

@@ -119,7 +119,17 @@
         </el-row>
         </el-row>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
-
+    <el-row :gutter="10" v-if="multiViewportMode > 1">
+      <el-col :span="24">
+        选择分析视口:<el-radio-group
+          v-model="radio"
+          v-for="item in multiViewportMode"
+          :key="item"
+        >
+          <el-radio :label="item - 1">窗口{{ item }}</el-radio>
+        </el-radio-group>
+      </el-col>
+    </el-row>
     <div class="SaveCenter">
     <div class="SaveCenter">
       <el-button size="mini" type="primary" @click="onSubmit"
       <el-button size="mini" type="primary" @click="onSubmit"
         >日照时长分析</el-button
         >日照时长分析</el-button
@@ -127,6 +137,18 @@
       <el-button size="mini" @click="resetForm">清除</el-button>
       <el-button size="mini" @click="resetForm">清除</el-button>
     </div>
     </div>
     <el-row :gutter="10">
     <el-row :gutter="10">
+      <el-col :span="24">
+        <el-descriptions v-for="item in sdh" :key="item">
+          <el-descriptions-item :label="item.scS + '-' + item.scE + '小时'"
+            ><span
+              style="width: 100%; height: 100%"
+              :style="{ 'background-color': item.fill }"
+            ></span
+          ></el-descriptions-item>
+        </el-descriptions>
+      </el-col>
+    </el-row>
+    <!-- <el-row :gutter="10">
       <el-col :span="24">
       <el-col :span="24">
         <el-table
         <el-table
           size="mini"
           size="mini"
@@ -140,13 +162,10 @@
           <el-table-column
           <el-table-column
             prop="shadowRadioText"
             prop="shadowRadioText"
             label="日照率"
             label="日照率"
-          ></el-table-column>
-          <!-- <el-table-column prop="longitudeText" label="经度"> </el-table-column>
-          <el-table-column prop="latitudeText" label="纬度"> </el-table-column>
-          <el-table-column prop="dateScope" label="日照范围"> </el-table-column> -->
+          ></el-table-column> 
         </el-table>
         </el-table>
       </el-col>
       </el-col>
-    </el-row>
+    </el-row> -->
   </div>
   </div>
 </template>
 </template>
 
 
@@ -163,6 +182,11 @@ import {
   square,
   square,
   destination,
   destination,
   polygon,
   polygon,
+  featureCollection,
+  interpolate,
+  isobands,
+  isolines,
+  pointGrid,
 } from "@turf/turf";
 } from "@turf/turf";
 export default {
 export default {
   data() {
   data() {
@@ -179,6 +203,7 @@ export default {
         x: 0,
         x: 0,
         y: 0,
         y: 0,
       },
       },
+      sdh: [],
       loading: false,
       loading: false,
       datavalue: [10, 14],
       datavalue: [10, 14],
       positions: [],
       positions: [],
@@ -196,6 +221,8 @@ export default {
         20: "20点",
         20: "20点",
       },
       },
       tableData: [],
       tableData: [],
+      multiViewportMode: 0,
+      radio: 0,
     };
     };
   },
   },
   props: {
   props: {
@@ -224,6 +251,9 @@ export default {
   },
   },
   computed: {},
   computed: {},
   mounted() {
   mounted() {
+    debugger;
+    this.multiViewportMode = scene.multiViewportMode + 1;
+
     this.init();
     this.init();
   },
   },
   methods: {
   methods: {
@@ -236,10 +266,10 @@ export default {
       layers = scene.layers.layerQueue;
       layers = scene.layers.layerQueue;
       //图层模型设置阴影
       //图层模型设置阴影
       for (let i = 0; i < layers.length; i++) {
       for (let i = 0; i < layers.length; i++) {
-        if (layers[i].shadowType !== 2) {
-          layers[i].shadowType = 2;
-          // layers[i].refresh();
-        }
+        // if (layers[i].shadowType !== 2) {
+        layers[i].shadowType = 2;
+        // layers[i].refresh();
+        // }
       }
       }
 
 
       this.dqSunlight();
       this.dqSunlight();
@@ -257,14 +287,14 @@ export default {
     /**
     /**
      * 开始分析
      * 开始分析
      */
      */
-    analysis() {
+    analysis1() {
       let that = this;
       let that = this;
       that.tableData = [];
       that.tableData = [];
       if (!handlerPolygon) {
       if (!handlerPolygon) {
         handlerPolygon = new Cesium.DrawHandler(
         handlerPolygon = new Cesium.DrawHandler(
           viewer,
           viewer,
           Cesium.DrawMode.Point,
           Cesium.DrawMode.Point,
-          0
+          Cesium.ClampMode.Space
         );
         );
       }
       }
 
 
@@ -294,6 +324,7 @@ export default {
         //创建阴影查询对象
         //创建阴影查询对象
         if (!shadowQuery) {
         if (!shadowQuery) {
           shadowQuery = new Cesium.ShadowQueryPoints(scene);
           shadowQuery = new Cesium.ShadowQueryPoints(scene);
+          shadowQuery.setVisibleInViewport(that.radio);
           shadowQuery.queryPointsEvent.addEventListener(function (e) {
           shadowQuery.queryPointsEvent.addEventListener(function (e) {
             that.tableData = [];
             that.tableData = [];
             that.loading = false;
             that.loading = false;
@@ -366,7 +397,157 @@ export default {
         shadowQuery.build();
         shadowQuery.build();
       });
       });
     },
     },
+    analysis() {
+      let that = this;
+      that.tableData = [];
+      if (!handlerPolygon) {
+        handlerPolygon = new Cesium.DrawHandler(
+          viewer,
+          Cesium.DrawMode.Polygon,
+          0
+        );
+      }
+
+      handlerPolygon.activate();
+      handlerPolygon.activeEvt.addEventListener(function (isActive) {
+        if (isActive == true) {
+          // viewer.enableCursorStyle = false;
+          // viewer._element.style.cursor = "";
+          document.body.classList.add("drawCur");
+        } else {
+          // viewer.enableCursorStyle = true;
+          document.body.classList.remove("drawCur");
+        }
+      });
+      handlerPolygon.movingEvt.addEventListener((windowPosition) => {
+        that.tooltip.showAt(
+          windowPosition,
+          "<p>点击鼠标左键开始绘制分析区域</p>"
+        );
+      });
+      handlerPolygon.drawEvt.addEventListener((result) => {
+        that.tooltip.setVisible(false);
+        that.resetForm();
+        that.loading = true;
+        let scene = viewer.scene;
+        let gd = 0;
+        //创建阴影查询对象
+        if (!shadowQuery) {
+          shadowQuery = new Cesium.ShadowQueryPoints(scene);
+          shadowQuery.setVisibleInViewport(that.radio);
+          shadowQuery.queryPointsEvent.addEventListener(function (e) {
+            that.tableData = [];
+            that.loading = false;
+            let sdsd = [];
+            e.forEach(function (a) {
+              var e_cartographic = Cesium.Cartographic.fromCartesian(
+                a.position
+              );
+              var e_shadowRadio = shadowQuery.getShadowRadio(e_cartographic);
+              var e_longitude = Cesium.Math.toDegrees(e_cartographic.longitude);
+              var e_latitude = Cesium.Math.toDegrees(e_cartographic.latitude);
+              var e_height = e_cartographic.height;
+
+              let sd = point([e_longitude, e_latitude]);
+              sd.properties.value = e_shadowRadio;
+              sdsd.push(sd);
+            });
+            let gsd = that.setIsoline(sdsd);
+            that.sdh = [];
+            gsd.features.forEach((element) => {
+              debugger;
+              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) => {
+                let ps = polygon[0].flat();
+                viewer.entities.add({
+                  polygon: {
+                    hierarchy: Cesium.Cartesian3.fromDegreesArray(ps),
+                    material: new Cesium.Color.fromCssColorString(
+                      element.properties.fill
+                    ).withAlpha(0.5),
+                    height: gd + 1,
+                    outline: true,
+                    outlineColor: Cesium.Color.BLACK,
+                    outlineWidth: 2.0,
+                  },
+                });
+              });
+            });
+
+            if (shadowQuery) {
+              shadowQuery.destroy();
+              shadowQuery = null;
+            }
+          });
+        }
+
+        let positions = that.positions;
+        let points = that.points;
+        var polygons = result.object;
+        if (!polygons) {
+          return;
+        }
+
+        polygons.show = false;
+        // handlerPolygon.polyline.show = false;
+        positions = [].concat(polygons.positions);
+        positions = Cesium.arrayRemoveDuplicates(
+          positions,
+          Cesium.Cartesian3.equalsEpsilon
+        );
+        //遍历多边形,取出所有点
+        for (var i = 0, len = positions.length; i < len; i++) {
+          //转化为经纬度,并加入至临时数组
+          var cartographic = Cesium.Cartographic.fromCartesian(
+            polygons.positions[i]
+          );
+          var longitude = Cesium.Math.toDegrees(cartographic.longitude);
+          var latitude = Cesium.Math.toDegrees(cartographic.latitude);
+          gd = cartographic.height;
+          points.push(longitude);
+          points.push(latitude);
+        }
+        //设置分析对象的开始结束时间
+        var dateValue = that.form.selDate;
+        var st = new Date(dateValue);
+        st.setHours(Number(that.form.startTime));
+        shadowQuery.startTime = Cesium.JulianDate.fromDate(st);
+
+        var et = new Date(dateValue);
+        et.setHours(Number(that.form.endTime));
+        shadowQuery.endTime = Cesium.JulianDate.fromDate(et);
+
+        //设置当前时间
+        that.setCurrentTime();
+
+        shadowQuery.spacing = that.form.spacing;
+        shadowQuery.timeInterval = that.form.timeInterval;
+
+        //设置分析区域、底部高程和拉伸高度
+        var bh = Number(gd + 1);
+        var eh = Number(2);
+        shadowQuery.qureyRegion({
+          position: that.points,
+          bottom: bh,
+          extend: eh,
+        });
+        shadowQuery.build();
+        // that.resetForm();
+      });
+    },
+
     clear() {
     clear() {
+      viewer.entities.removeAll();
       this.form.x = 0;
       this.form.x = 0;
       this.form.y = 0;
       this.form.y = 0;
       this.tableData = [];
       this.tableData = [];
@@ -382,6 +563,8 @@ export default {
 
 
       this.positions = [];
       this.positions = [];
       this.points = [];
       this.points = [];
+
+      this.sdh = [];
     },
     },
     //结束时日照阴影
     //结束时日照阴影
     setCurrentTime() {
     setCurrentTime() {
@@ -487,6 +670,49 @@ export default {
       this.form.startTime = val[0];
       this.form.startTime = val[0];
       this.form.endTime = val[1];
       this.form.endTime = val[1];
     },
     },
+    /**
+     * @property {Array} features  关键点集合
+     */
+    setIsoline(features) {
+      // 准备工作,创建 options
+      const breaks = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];
+      const interpolateOptions = {
+        gridType: "points",
+        property: "value",
+        units: "degrees",
+        weight: 20,
+      };
+      const isobandsOptions = {
+        zProperty: "value",
+        // commonProperties: {
+        //   "fill-opacity": 0.5,
+        // },
+        breaksProperties: [
+          { fill: "#1F196D" },
+          { fill: "#313695" },
+          { fill: "#005EFF" },
+          { fill: "#1E90A8" },
+          { fill: "#00B457" },
+          { fill: "#28E156" },
+          { fill: "#B7FF01" },
+          { fill: "#FFC800" },
+          { fill: "#FF610C" },
+          { fill: "#D13438" },
+          { fill: "#A01798" },
+        ],
+      };
+      // 准备工作结束
+
+      // 将散点合并成要素集
+      const points = featureCollection(features);
+      // 使用反向距离加权(IDW)方法进行运算
+      const grid = interpolate(points, 0.00003, interpolateOptions);
+      // 根据参与分级的属性和分级的数组计算出等值面
+      const isobandsData = isobands(grid, breaks, isobandsOptions);
+      const intersection = featureCollection(isobandsData.features);
+
+      return intersection;
+    },
   },
   },
   watch: {
   watch: {
     "form.selDate": function (newValue) {
     "form.selDate": function (newValue) {

+ 52 - 21
src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue

@@ -17,7 +17,15 @@
               :key="DKZBData"
               :key="DKZBData"
             >
             >
               <el-col :span="24">
               <el-col :span="24">
-                规划地块:{{ DKZBData.DKBM }}-{{ DKZBData.MName }}
+                规划地块:{{ DKZBData.DKBM }}-{{ DKZBData.MName }}&nbsp;&nbsp;
+                <el-button
+                  size="mini"
+                  type="default"
+                  @click="openZBinfo(DKZBData.infoData)"
+                  icon="el-icon-view "
+                  >详情</el-button
+                >
+
                 <el-table
                 <el-table
                   :data="DKZBData.TableData"
                   :data="DKZBData.TableData"
                   :highlight-current-row="true"
                   :highlight-current-row="true"
@@ -28,7 +36,12 @@
                       {{ row.zbmc }}
                       {{ row.zbmc }}
                     </template>
                     </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column label="方案指标预估" align="center">
+                  <el-table-column label="计算书指标" align="center">
+                    <template #default="{ row }">
+                      {{ row.tjfazb }}
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="核算指标" align="center">
                     <template #default="{ row }">
                     <template #default="{ row }">
                       {{ row.fazbyg }}
                       {{ row.fazbyg }}
                     </template>
                     </template>
@@ -46,31 +59,17 @@
                     </template>
                     </template>
                   </el-table-column>
                   </el-table-column>
                 </el-table>
                 </el-table>
-              </el-col></el-row
-            >
-          </el-col></el-row
-        >
+              </el-col>
+            </el-row>
+          </el-col>
+        </el-row>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import {
-  cartesian3ToWGS84,
-  mapQuery,
-  flatten,
-  mercator2lonLat,
-  undergroundMode,
-} from "@/utils/MapHelper/MapHelper.js";
-import {
-  area,
-  intersect,
-  polygon,
-  point,
-  midpoint,
-  difference,
-} from "@turf/turf";
+import detailedInfo from "./detailedInfo.vue";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -115,6 +114,7 @@ export default {
         for (let Datai = 0; Datai < element.length; Datai++) {
         for (let Datai = 0; Datai < element.length; Datai++) {
           const Data = element[Datai];
           const Data = element[Datai];
           let DKZBData = {
           let DKZBData = {
+            infoData: Data.infoData,
             MName: Data.Minfo.modelname,
             MName: Data.Minfo.modelname,
             DKBM: Data.KG_Data.DKBM,
             DKBM: Data.KG_Data.DKBM,
           };
           };
@@ -138,6 +138,7 @@ export default {
 
 
           let JZMJrow = {};
           let JZMJrow = {};
           JZMJrow.zbmc = "建筑面积";
           JZMJrow.zbmc = "建筑面积";
+          JZMJrow.tjfazb = Number(Data.TJFA_Data.JZMJ).toFixed(2);
           JZMJrow.fazbyg = Number(Data.FA_Data.JZMJ).toFixed(2);
           JZMJrow.fazbyg = Number(Data.FA_Data.JZMJ).toFixed(2);
           JZMJrow.kgyq = Number(Data.KG_Data.JZMJ).toFixed(2);
           JZMJrow.kgyq = Number(Data.KG_Data.JZMJ).toFixed(2);
           if (JZMJrow.fazbyg && JZMJrow.kgyq) {
           if (JZMJrow.fazbyg && JZMJrow.kgyq) {
@@ -170,6 +171,7 @@ export default {
 
 
           let JRJZMJrow = {};
           let JRJZMJrow = {};
           JRJZMJrow.zbmc = "计容建筑面积";
           JRJZMJrow.zbmc = "计容建筑面积";
+          JRJZMJrow.tjfazb = Number(Data.TJFA_Data.JRJZMJ).toFixed(2);
           JRJZMJrow.fazbyg = Number(Data.FA_Data.JRJZMJ).toFixed(2);
           JRJZMJrow.fazbyg = Number(Data.FA_Data.JRJZMJ).toFixed(2);
           if (Data.KG_Data.JRJZMJX && Data.KG_Data.JRJZMJD) {
           if (Data.KG_Data.JRJZMJX && Data.KG_Data.JRJZMJD) {
             JRJZMJrow.kgyq = Data.KG_Data.JRJZMJX + "/" + Data.KG_Data.JRJZMJD;
             JRJZMJrow.kgyq = Data.KG_Data.JRJZMJX + "/" + Data.KG_Data.JRJZMJD;
@@ -252,6 +254,35 @@ export default {
         that.MXDKZBDataList.push(DKZBDataList);
         that.MXDKZBDataList.push(DKZBDataList);
       });
       });
     },
     },
+    /**
+     * 弹窗显示详情
+     * @param infoData
+     */
+    openZBinfo(infoData) {
+      let w = document.body.offsetWidth;
+      let h = document.body.offsetHeight;
+      //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
+      //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
+      let left = w - 430 + 430 / 2;
+      let top = 430 / 2 + 60;
+      this.$layer.iframe({
+        id: "ZBdetailedInfo",
+        content: {
+          content: detailedInfo, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: { info: { infoData } }, //props
+        },
+        // offset: [left, top], //left top
+        area: ["64rem", "40rem"], //宽 高
+        title: "详细信息",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+        },
+      });
+    },
   },
   },
 
 
   beforeDestroy() {},
   beforeDestroy() {},

+ 179 - 0
src/views/ConstructionApplication3D/ZBFXAnalysisinfo/detailedInfo.vue

@@ -0,0 +1,179 @@
+<template>
+  <div
+    class="ZTGlobal"
+    style="
+      width: 100%;
+      height: 100%;
+      padding: 1rem 1rem 0rem 1rem;
+      color: white;
+    "
+  >
+    <el-container style="height: 100%">
+      <el-header style="height: 4rem">
+        <el-descriptions border size="mini" :column="4">
+          <el-descriptions-item label="地块编码">{{
+            tableData.landNo
+          }}</el-descriptions-item>
+          <el-descriptions-item label="建筑面积">{{
+            Number(tableData.mj).toFixed(2)
+          }}</el-descriptions-item>
+          <el-descriptions-item label="计容面积">{{
+            Number(tableData.jrmj).toFixed(2)
+          }}</el-descriptions-item>
+          <el-descriptions-item label="机动车位">
+            {{ tableData.jdcCount }}
+          </el-descriptions-item>
+          <el-descriptions-item label="非机动车位">{{
+            tableData.fjdcCount
+          }}</el-descriptions-item>
+          <el-descriptions-item label="计算书面积">{{
+            Number(tableData.famj).toFixed(2)
+          }}</el-descriptions-item>
+          <el-descriptions-item label="计算书计容面积">{{
+            Number(tableData.fajrmj).toFixed(2)
+          }}</el-descriptions-item>
+          <el-descriptions-item label="楼栋数量">{{
+            tableData.buildNum
+          }}</el-descriptions-item>
+        </el-descriptions>
+      </el-header>
+      <el-main>
+        <el-row :gutter="10" style="height: 100%">
+          <el-col :span="24" style="height: 100%">
+            <el-table
+              :data="tableData.builds"
+              style="width: 100%; border: 1px solid rgba(15, 122, 200, 0.4)"
+              height="100%"
+              size="mini"
+            >
+              <el-table-column type="expand">
+                <template slot-scope="props">
+                  <el-row
+                    :gutter="10"
+                    style="
+                      height: 100%;
+                      margin: 0.5rem;
+                      background-color: rgba(4, 28, 50, 0.6);
+                    "
+                  >
+                    <el-col :span="24" style="height: 100%">
+                      <el-table
+                        :data="props.row.floors"
+                        style="width: 100%"
+                        size="mini"
+                      >
+                        <el-table-column label="楼层" prop="layer">
+                        </el-table-column>
+                        <el-table-column label="计算书计容面积" prop="fajrmj">
+                          <template slot-scope="scope">
+                            {{ Number(scope.row.fajrmj).toFixed(2) }}
+                          </template>
+                        </el-table-column>
+                        <el-table-column label="计算书面积" prop="famj">
+                          <template slot-scope="scope">
+                            {{ Number(scope.row.famj).toFixed(2) }}
+                          </template>
+                        </el-table-column>
+                        <el-table-column label="核算计容面积" prop="jrmj">
+                          <template slot-scope="scope">
+                            {{ Number(scope.row.jrmj).toFixed(2) }}
+                          </template>
+                        </el-table-column>
+                        <el-table-column label="核算建筑面积" prop="mj">
+                          <template slot-scope="scope">
+                            {{ Number(scope.row.mj).toFixed(2) }}
+                          </template>
+                        </el-table-column>
+                      </el-table>
+                    </el-col>
+                  </el-row>
+                </template>
+              </el-table-column>
+              <el-table-column label="楼号" prop="buildNo"> </el-table-column>
+              <el-table-column label="计算书计容面积" prop="fajrmj">
+                <template slot-scope="scope">
+                  {{ Number(scope.row.fajrmj).toFixed(2) }}
+                </template>
+              </el-table-column>
+              <el-table-column label="计算书面积" prop="famj">
+                <template slot-scope="scope">
+                  {{ Number(scope.row.famj).toFixed(2) }}
+                </template>
+              </el-table-column>
+              <el-table-column label="楼层数" prop="floorCount">
+              </el-table-column>
+              <el-table-column label="核算计容面积" prop="jrmj">
+                <template slot-scope="scope">
+                  {{ Number(scope.row.jrmj).toFixed(2) }}
+                </template>
+              </el-table-column>
+              <el-table-column label="核算建筑面积" prop="mj">
+                <template slot-scope="scope">
+                  {{ Number(scope.row.mj).toFixed(2) }}
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-col>
+        </el-row>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      tableData: [],
+    };
+  },
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    layerid: {
+      type: String,
+      default: "",
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  computed: {},
+  mounted() {
+    debugger;
+    this.init();
+  },
+  methods: {
+    init() {
+      debugger;
+      this.tableData = this.info.infoData;
+    },
+  },
+
+  beforeDestroy() {},
+};
+</script>
+<style lang="scss">
+@import "@/../../zt.scss";
+</style>
+<style lang="scss" scoped>
+.el-card {
+  border: 0px solid #02a7f0;
+}
+.el-form-item {
+  margin-bottom: 0;
+}
+</style>

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

@@ -413,6 +413,7 @@ export default {
             0.0,
             0.0,
             300.0
             300.0
           ),
           ),
+          heightReference: Cesium.HeightReference.NONE,
         },
         },
       });
       });
     },
     },

+ 109 - 74
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -718,9 +718,8 @@ export default {
 
 
     //分析列表显隐
     //分析列表显隐
     async openAnalyzeList(itemModel) {
     async openAnalyzeList(itemModel) {
-      if (this.layerList.length == 0) {
-        this.SelectConstructionModelHendle(itemModel);
-      }
+      this.SelectConstructionModelHendle(itemModel);
+
       const classList =
       const classList =
         this.$refs[itemModel.id + "AnalyzeList"][0].$el.classList;
         this.$refs[itemModel.id + "AnalyzeList"][0].$el.classList;
       classList.toggle("none");
       classList.toggle("none");
@@ -758,33 +757,35 @@ export default {
 
 
     //选中报建模型
     //选中报建模型
     SelectConstructionModelHendle(Minfo) {
     SelectConstructionModelHendle(Minfo) {
-      this.removeModel();
-      this.WaitingSelectionModel = null;
-      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";
-            }
-          });
-        }
-      }
-      // 添加当前选定样式及待选模型
-      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;
+      if (this.WaitingSelectionModel != Minfo) {
+        this.removeModel();
+        this.WaitingSelectionModel = null;
+        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";
+              }
+            });
+          }
         }
         }
-      });
+        // 添加当前选定样式及待选模型
+        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.addModel(Minfo);
+        //添加模型
+        this.addModel(Minfo);
+      }
     },
     },
     //添加项目模型
     //添加项目模型
     openAddConstructionModelInfo(info) {
     openAddConstructionModelInfo(info) {
@@ -989,13 +990,9 @@ export default {
       let that = this;
       let that = this;
       that.layerDataList = [];
       that.layerDataList = [];
       Cesium.when(modelLayer, async function (layers) {
       Cesium.when(modelLayer, async function (layers) {
-        debugger;
         layers.forEach((layer) => {
         layers.forEach((layer) => {
           layer.shadowType = 2;
           layer.shadowType = 2;
           that.layerList.push(layer.name);
           that.layerList.push(layer.name);
-          // let style = new Cesium.Style3D();
-          // style.bottomAltitude = window.modelBottomAltitude; //底部高度
-          // layer.style3D = style;
         });
         });
 
 
         //获取模型信息
         //获取模型信息
@@ -1033,14 +1030,13 @@ export default {
           });
           });
         }
         }
 
 
-        debugger;
         that.layerDataList.forEach((layerData) => {
         that.layerDataList.forEach((layerData) => {
           // 添加模型楼号
           // 添加模型楼号
           let SMID = layerData.data.find((c) => c.label == "SMID").value;
           let SMID = layerData.data.find((c) => c.label == "SMID").value;
           let HEIGHT = layerData.data.find((c) => c.label == "HEIGHT").value;
           let HEIGHT = layerData.data.find((c) => c.label == "HEIGHT").value;
           let x = layerData.geometry.center.x;
           let x = layerData.geometry.center.x;
           let y = layerData.geometry.center.y;
           let y = layerData.geometry.center.y;
-          let z = Number(HEIGHT);
+          let z = Number(HEIGHT) + 29.7;
 
 
           let BUILDNO = "";
           let BUILDNO = "";
           if (layerData.data.find((c) => c.label == "BUILDNO")) {
           if (layerData.data.find((c) => c.label == "BUILDNO")) {
@@ -1074,7 +1070,7 @@ export default {
               ),
               ),
               //打开背景  打开背景 (不会被线段覆盖)
               //打开背景  打开背景 (不会被线段覆盖)
               showBackground: true,
               showBackground: true,
-              heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
+              heightReference: Cesium.HeightReference.NONE,
             },
             },
           });
           });
         });
         });
@@ -1102,8 +1098,6 @@ export default {
 
 
       Cesium.when
       Cesium.when
         .all(modifiedPromises, async function (modelLayers) {
         .all(modifiedPromises, async function (modelLayers) {
-          debugger;
-
           for (let index = 0; index < modelLayers.length; index++) {
           for (let index = 0; index < modelLayers.length; index++) {
             let modelData = {
             let modelData = {
               id: uuidv4(),
               id: uuidv4(),
@@ -1163,7 +1157,6 @@ export default {
                 modelData.layerDataList.push(layerData);
                 modelData.layerDataList.push(layerData);
               });
               });
 
 
-              debugger;
               // modelData.layerDataList.forEach((layerData) => {
               // modelData.layerDataList.forEach((layerData) => {
               //   // 添加模型楼号
               //   // 添加模型楼号
               //   let SMID = layerData.data.find((c) => c.label == "SMID").value;
               //   let SMID = layerData.data.find((c) => c.label == "SMID").value;
@@ -1210,7 +1203,7 @@ export default {
               //       ),
               //       ),
               //       //打开背景  打开背景 (不会被线段覆盖)
               //       //打开背景  打开背景 (不会被线段覆盖)
               //       showBackground: true,
               //       showBackground: true,
-              //       heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
+              //       heightReference: Cesium.HeightReference.NONE ,
               //     },
               //     },
               //   });
               //   });
 
 
@@ -1485,7 +1478,6 @@ export default {
     },
     },
     // 生成限高
     // 生成限高
     async HighLimit(Minfo) {
     async HighLimit(Minfo) {
-      debugger;
       let that = this;
       let that = this;
       let JZXGD = 0;
       let JZXGD = 0;
       let DKBM = [];
       let DKBM = [];
@@ -1519,7 +1511,6 @@ export default {
             queryBySQLParameters
             queryBySQLParameters
           );
           );
 
 
-          debugger;
           if (e && e.totalCount > 0) {
           if (e && e.totalCount > 0) {
             e.features.forEach((feature) => {
             e.features.forEach((feature) => {
               feature.fieldNames.forEach((fieldName, i) => {
               feature.fieldNames.forEach((fieldName, i) => {
@@ -1545,7 +1536,6 @@ export default {
           JZXGD = Number(
           JZXGD = Number(
             GHYDlayerData.data.find((c) => c.label == "JZXGD").value
             GHYDlayerData.data.find((c) => c.label == "JZXGD").value
           );
           );
-          debugger;
           let entity = viewer.entities.add({
           let entity = viewer.entities.add({
             id: "polygonA",
             id: "polygonA",
             polygon: {
             polygon: {
@@ -1575,7 +1565,7 @@ export default {
               backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0.0),
               backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0.0),
               //打开背景  打开背景 (不会被线段覆盖)
               //打开背景  打开背景 (不会被线段覆盖)
               showBackground: true,
               showBackground: true,
-              heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
+              heightReference: Cesium.HeightReference.NONE,
             },
             },
           });
           });
           // that.layerList.forEach((layer) => {
           // that.layerList.forEach((layer) => {
@@ -1608,7 +1598,6 @@ export default {
             let LANDNO = layerData.data.find((c) => c.label == "LANDNO").value;
             let LANDNO = layerData.data.find((c) => c.label == "LANDNO").value;
 
 
             if (bm.value == LANDNO) {
             if (bm.value == LANDNO) {
-              debugger;
               let SMID = layerData.data.find((c) => c.label == "SMID").value;
               let SMID = layerData.data.find((c) => c.label == "SMID").value;
               let Height = layerData.data.find(
               let Height = layerData.data.find(
                 (c) => c.label == "HEIGHT"
                 (c) => c.label == "HEIGHT"
@@ -1655,7 +1644,7 @@ export default {
                     ),
                     ),
                     //打开背景  打开背景 (不会被线段覆盖)
                     //打开背景  打开背景 (不会被线段覆盖)
                     showBackground: true,
                     showBackground: true,
-                    heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
+                    heightReference: Cesium.HeightReference.NONE,
                   },
                   },
                 });
                 });
               }
               }
@@ -1687,7 +1676,6 @@ export default {
      * 查询200米范围内的道路
      * 查询200米范围内的道路
      */
      */
     async getBufferTraffic() {
     async getBufferTraffic() {
-      debugger;
       let that = this;
       let that = this;
       let geo = this.LandPlanningList[0].geometry;
       let geo = this.LandPlanningList[0].geometry;
 
 
@@ -1722,7 +1710,6 @@ export default {
           layer.date_server.url + "/featureResults.json?returnContent=true",
           layer.date_server.url + "/featureResults.json?returnContent=true",
           queryByGeometryParameters
           queryByGeometryParameters
         );
         );
-        debugger;
 
 
         if (e && e.totalCount > 0) {
         if (e && e.totalCount > 0) {
           e.features.forEach((feature) => {
           e.features.forEach((feature) => {
@@ -1796,7 +1783,6 @@ export default {
           layer.date_server.url + "/featureResults.json?returnContent=true",
           layer.date_server.url + "/featureResults.json?returnContent=true",
           queryByGeometryParameters
           queryByGeometryParameters
         );
         );
-        debugger;
 
 
         if (e && e.totalCount > 0) {
         if (e && e.totalCount > 0) {
           e.features.forEach((feature) => {
           e.features.forEach((feature) => {
@@ -1886,7 +1872,6 @@ export default {
           layer.date_server.url + "/featureResults.json?returnContent=true",
           layer.date_server.url + "/featureResults.json?returnContent=true",
           queryByGeometryParameters
           queryByGeometryParameters
         );
         );
-        debugger;
 
 
         if (e && e.totalCount > 0) {
         if (e && e.totalCount > 0) {
           e.features.forEach((feature) => {
           e.features.forEach((feature) => {
@@ -1993,7 +1978,6 @@ export default {
               layer.date_server.url + "/featureResults.json?returnContent=true",
               layer.date_server.url + "/featureResults.json?returnContent=true",
               queryByGeometryParameters
               queryByGeometryParameters
             );
             );
-            debugger;
 
 
             if (e && e.totalCount > 0) {
             if (e && e.totalCount > 0) {
               e.features.forEach((feature) => {
               e.features.forEach((feature) => {
@@ -2159,7 +2143,6 @@ export default {
                     outlineWidth: 2.0,
                     outlineWidth: 2.0,
                   },
                   },
                 });
                 });
-                debugger;
                 const point = viewer.entities.add({
                 const point = viewer.entities.add({
                   id: "DLTBlable-" + DLTBlayerData.id,
                   id: "DLTBlable-" + DLTBlayerData.id,
                   //点
                   //点
@@ -2212,10 +2195,11 @@ export default {
     async getnorm(Minfo) {
     async getnorm(Minfo) {
       //组装指标对象
       //组装指标对象
       let tableDataList = [];
       let tableDataList = [];
-      debugger;
       for (let index = 0; index < this.LandPlanningList.length; index++) {
       for (let index = 0; index < this.LandPlanningList.length; index++) {
         const LandPlanning = this.LandPlanningList[index];
         const LandPlanning = this.LandPlanningList[index];
-        let KG_Data = {};
+        let KG_Data = {},
+          TJFA_Data = {},
+          FA_Data = {};
         KG_Data.DKBM = LandPlanning.data.find((c) => c.label == "DKBM")
         KG_Data.DKBM = LandPlanning.data.find((c) => c.label == "DKBM")
           ? LandPlanning.data.find((c) => c.label == "DKBM").value
           ? LandPlanning.data.find((c) => c.label == "DKBM").value
           : "";
           : "";
@@ -2252,7 +2236,7 @@ export default {
           : "";
           : "";
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJX = "";
         KG_Data.JRJZMJX = "";
-        let FA_Data = {};
+
         if (Minfo.dataurl && Minfo.dataSourceName) {
         if (Minfo.dataurl && Minfo.dataSourceName) {
           //获取项目范围数据数据
           //获取项目范围数据数据
           let queryByGeometryParameters = {
           let queryByGeometryParameters = {
@@ -2270,7 +2254,6 @@ export default {
 
 
           //项目用地总面积
           //项目用地总面积
           let xmzmj = 0;
           let xmzmj = 0;
-          debugger;
           if (e && e.totalCount > 0) {
           if (e && e.totalCount > 0) {
             e.features.forEach((feature) => {
             e.features.forEach((feature) => {
               let DataPs = feature.geometry.points.map((item) => [
               let DataPs = feature.geometry.points.map((item) => [
@@ -2315,10 +2298,8 @@ export default {
           let dxjzzmj = 0;
           let dxjzzmj = 0;
           //最大建筑高度
           //最大建筑高度
           let maxJZGD = 0;
           let maxJZGD = 0;
-          debugger;
           if (e2 && e2.totalCount > 0) {
           if (e2 && e2.totalCount > 0) {
             e2.features.forEach((feature) => {
             e2.features.forEach((feature) => {
-              debugger;
               let BUILDAREAIndex = feature.fieldNames.findIndex(
               let BUILDAREAIndex = feature.fieldNames.findIndex(
                 (c) => c == "BUILDAREA"
                 (c) => c == "BUILDAREA"
               );
               );
@@ -2381,11 +2362,10 @@ export default {
           //建筑密度
           //建筑密度
           FA_Data.JZMD = (Number(FA_Data.JDMJ / FA_Data.YDMJ) * 100).toFixed(2);
           FA_Data.JZMD = (Number(FA_Data.JDMJ / FA_Data.YDMJ) * 100).toFixed(2);
         }
         }
-        tableDataList.push({ Minfo, KG_Data, FA_Data });
+        tableDataList.push({ Minfo, KG_Data, FA_Data, TJFA_Data });
       }
       }
       var result = await this.buidAreaAndParksComputer(Minfo, false);
       var result = await this.buidAreaAndParksComputer(Minfo, false);
       if (result != null) {
       if (result != null) {
-        debugger;
         for (var i = 0; i < tableDataList.length; i++) {
         for (var i = 0; i < tableDataList.length; i++) {
           var item = tableDataList[i];
           var item = tableDataList[i];
 
 
@@ -2394,11 +2374,17 @@ export default {
           );
           );
           debugger;
           debugger;
           if (land == null) continue;
           if (land == null) continue;
-          tableDataList[i].FA_Data.JZMJ = land.jrmj;
+          tableDataList[i].FA_Data.JZMJ = land.mj;
           tableDataList[i].FA_Data.JRJZMJ = land.jrmj;
           tableDataList[i].FA_Data.JRJZMJ = land.jrmj;
           tableDataList[i].FA_Data.RJL = (
           tableDataList[i].FA_Data.RJL = (
             land.jrmj / item.FA_Data.YDMJ
             land.jrmj / item.FA_Data.YDMJ
           ).toFixed(2);
           ).toFixed(2);
+
+          //开发商提交的方案文档指标
+
+          tableDataList[i].TJFA_Data.JZMJ = land.famj;
+          tableDataList[i].TJFA_Data.JRJZMJ = land.fajrmj;
+          tableDataList[i].infoData = land;
         }
         }
       }
       }
       this.openZBFXInfo([tableDataList]);
       this.openZBFXInfo([tableDataList]);
@@ -2498,7 +2484,7 @@ export default {
         getFeatureMode: "SQL",
         getFeatureMode: "SQL",
         datasetNames: dataSources,
         datasetNames: dataSources,
         queryParameter: {
         queryParameter: {
-          attributeFilter: "SMID>-1",
+          attributeFilter: "SMID!=''",
         },
         },
         // hasGeometry: "true",
         // hasGeometry: "true",
         maxFeatures: 10000,
         maxFeatures: 10000,
@@ -2737,6 +2723,13 @@ export default {
       var VisitorFldIndex = that.getfldIndex(fieldInfos, VisitorFld);
       var VisitorFldIndex = that.getfldIndex(fieldInfos, VisitorFld);
       var VisitorFldVal = 0.0;
       var VisitorFldVal = 0.0;
 
 
+      var FAAreaFld = window.CarPark.FAAreaFld; //方案建筑面积
+      var FAAreaFldIndex = that.getfldIndex(fieldInfos, FAAreaFld);
+      var FAAreaFldVal = 0.0;
+      var FAJRAreaFld = window.CarPark.FAJRAreaFld; //方案计容建筑面积
+      var FAJRAreaFldIndex = that.getfldIndex(fieldInfos, FAJRAreaFld);
+      var FAJRAreaFldVal = 0.0;
+
       var landList = [
       var landList = [
         // //地块
         // //地块
         // {
         // {
@@ -2801,6 +2794,14 @@ export default {
         //面积
         //面积
         if (smareaFldIndex > -1)
         if (smareaFldIndex > -1)
           smareaFldVal = parseFloat(curFeature.fieldValues[smareaFldIndex]);
           smareaFldVal = parseFloat(curFeature.fieldValues[smareaFldIndex]);
+
+        //方案面积 新增 20240717
+        if (FAAreaFldIndex > -1)
+          FAAreaFldVal = parseFloat(curFeature.fieldValues[FAAreaFldIndex]);
+        //方案计容面积
+        if (FAJRAreaFldIndex > -1)
+          FAJRAreaFldVal = parseFloat(curFeature.fieldValues[FAJRAreaFldIndex]);
+
         //计容率
         //计容率
         if (JRRationFldIndex > -1)
         if (JRRationFldIndex > -1)
           JRRationFldVal = parseFloat(curFeature.fieldValues[JRRationFldIndex]);
           JRRationFldVal = parseFloat(curFeature.fieldValues[JRRationFldIndex]);
@@ -2840,6 +2841,9 @@ export default {
           VisitorFldVal = parseInt(curFeature.fieldValues[VisitorFldIndex]);
           VisitorFldVal = parseInt(curFeature.fieldValues[VisitorFldIndex]);
         else VisitorFldVal = 0;
         else VisitorFldVal = 0;
 
 
+        if (BuidNoFldVal == "无" || BuidNoFldVal == "") {
+          BuidNoFldVal = "地下";
+        }
         allItems.push({
         allItems.push({
           landNo: LandNoFldVal,
           landNo: LandNoFldVal,
           buildNo: BuidNoFldVal,
           buildNo: BuidNoFldVal,
@@ -2848,6 +2852,8 @@ export default {
           area: smareaFldVal,
           area: smareaFldVal,
           jrRation: JRRationFldVal,
           jrRation: JRRationFldVal,
           jrArea: JRAreaFldVal,
           jrArea: JRAreaFldVal,
+          faArea: FAAreaFldVal,
+          faJRArea: FAJRAreaFldVal,
           house: houseFldVal,
           house: houseFldVal,
           b144: B144FldVal,
           b144: B144FldVal,
           rooms: RoomFldVal,
           rooms: RoomFldVal,
@@ -2879,6 +2885,9 @@ export default {
         //地块的建筑面积和计容面积
         //地块的建筑面积和计容面积
         var landMJ = 0.0;
         var landMJ = 0.0;
         var landJRMJ = 0.0;
         var landJRMJ = 0.0;
+        ///方案面积 新增 20240717
+        var landFAMJ = 0.0;
+        var landFAJRMJ = 0.0;
         //当前地块所有建筑
         //当前地块所有建筑
         var curLandBuilds = [];
         var curLandBuilds = [];
         // {
         // {
@@ -2886,24 +2895,28 @@ export default {
         //   buildNo: '',
         //   buildNo: '',
         //   mj: 0,
         //   mj: 0,
         //   jrmj: 0,
         //   jrmj: 0,
+        // famj:0, 20240717 新增
         //   floorCount: 0,
         //   floorCount: 0,
         //   floors: [
         //   floors: [
         //     //单层
         //     //单层
         //     {
         //     {
-        //       // layer: '',
-        //       // house: 0,
-        //       // B144: 0,
-        //       // rooms: '',
-        //       // mj: 0.00,
-        //       // jrmj: 0.00
+        //        layer: '',
+        //        house: 0,
+        //        B144: 0,
+        //        rooms: '',
+        //        mj: 0.00,
+        //        jrmj: 0.00,
+        //       famj: 0.00, 20240717 新增
         //     }
         //     }
         //   ]
         //   ]
         // }
         // }
         for (var k = 0; k < buidNoList.length; k++) {
         for (var k = 0; k < buidNoList.length; k++) {
           //当前建筑
           //当前建筑
           var curBuildNo = buidNoList[k];
           var curBuildNo = buidNoList[k];
-          var buildMj = 0.0;
-          var buildJRMj = 0.0;
+          var buildMJ = 0.0;
+          var buildJRMJ = 0.0;
+          var buildFAMJ = 0.0; //20240717 新增
+          var buildFAJRMJ = 0.0;
           var floorList = [];
           var floorList = [];
           var ytList = [];
           var ytList = [];
           var buildItemList = landGroup.filter((t) => t.buildNo == curBuildNo);
           var buildItemList = landGroup.filter((t) => t.buildNo == curBuildNo);
@@ -2914,6 +2927,8 @@ export default {
             if (ytList.indexOf(yt) == -1) ytList.push(yt);
             if (ytList.indexOf(yt) == -1) ytList.push(yt);
             landMJ += buildItemList[m].area;
             landMJ += buildItemList[m].area;
             landJRMJ += buildItemList[m].jrArea;
             landJRMJ += buildItemList[m].jrArea;
+            landFAMJ += buildItemList[m].faArea;
+            landFAJRMJ += buildItemList[m].faJRArea;
           }
           }
           var curfloors = [];
           var curfloors = [];
           var singleBuild = {};
           var singleBuild = {};
@@ -2927,18 +2942,23 @@ export default {
             //当前楼层的面积、计容面积、房间数等
             //当前楼层的面积、计容面积、房间数等
             var mj = 0.0;
             var mj = 0.0;
             var jrmj = 0.0;
             var jrmj = 0.0;
+            var famj = 0.0; //20240717 新增
+            var fajrmj = 0.0;
             var rooms = 0;
             var rooms = 0;
-            var layer = floorText;
+            // var layer = floorText;
             var house = 0;
             var house = 0;
             var B144 = 0;
             var B144 = 0;
             curFloors.forEach((item, index) => {
             curFloors.forEach((item, index) => {
               mj += item.area;
               mj += item.area;
               jrmj += item.jrArea;
               jrmj += item.jrArea;
+              famj += item.faArea; //20240717 新增
+              fajrmj += item.faJRArea;
               house += item.house;
               house += item.house;
               B144 += item.b144;
               B144 += item.b144;
             });
             });
             var floorClass = [];
             var floorClass = [];
             // classes: [{yt: '',  house: 0,B144: 0,rooms: '',mj: 0.00,jrmj: 0.00,}]
             // classes: [{yt: '',  house: 0,B144: 0,rooms: '',mj: 0.00,jrmj: 0.00,}]
+            // 用途-----start
             for (var t = 0; t < ytList.length; t++) {
             for (var t = 0; t < ytList.length; t++) {
               var curyt = ytList[t];
               var curyt = ytList[t];
               var ytHouse = 0;
               var ytHouse = 0;
@@ -2946,6 +2966,8 @@ export default {
               var ytrooms = 0;
               var ytrooms = 0;
               var ytytmj = 0.0;
               var ytytmj = 0.0;
               var ytjrmj = 0.0;
               var ytjrmj = 0.0;
+              var ytfamj = 0.0; //20240717
+              var ytfajrmj = 0.0;
               var teachers = 0.0;
               var teachers = 0.0;
               var seats = 0.0;
               var seats = 0.0;
               var visitor = 0.0;
               var visitor = 0.0;
@@ -2956,6 +2978,8 @@ export default {
                 ytrooms += tt.rooms;
                 ytrooms += tt.rooms;
                 ytytmj += tt.area;
                 ytytmj += tt.area;
                 ytjrmj += tt.jrArea;
                 ytjrmj += tt.jrArea;
+                ytfamj += tt.faArea;
+                ytfajrmj += tt.faJRArea;
                 ytHouse += tt.house;
                 ytHouse += tt.house;
                 teachers += tt.teachers;
                 teachers += tt.teachers;
                 seats += tt.seats;
                 seats += tt.seats;
@@ -2968,11 +2992,14 @@ export default {
                 rooms: ytrooms,
                 rooms: ytrooms,
                 mj: ytytmj,
                 mj: ytytmj,
                 jrmj: ytjrmj,
                 jrmj: ytjrmj,
+                famj: ytfamj,
+                fajrmj: ytfajrmj,
                 teachers: teachers,
                 teachers: teachers,
                 seats: seats,
                 seats: seats,
                 visitor: visitor,
                 visitor: visitor,
               });
               });
             }
             }
+            // 用途-----end
             floors.push({
             floors.push({
               layer: floorText,
               layer: floorText,
               // class: yt,
               // class: yt,
@@ -2981,15 +3008,21 @@ export default {
               rooms: rooms,
               rooms: rooms,
               mj: mj,
               mj: mj,
               jrmj: jrmj,
               jrmj: jrmj,
+              famj: famj,
+              fajrmj: fajrmj,
               classes: floorClass,
               classes: floorClass,
             });
             });
-            buildMj += mj;
-            buildJRMj += jrmj;
+            buildMJ += mj;
+            buildJRMJ += jrmj;
+            buildFAMJ += famj;
+            buildFAJRMJ += fajrmj;
           }
           }
           singleBuild = {
           singleBuild = {
             buildNo: curBuildNo,
             buildNo: curBuildNo,
-            mj: buildMj,
-            jrmj: buildJRMj,
+            mj: buildMJ,
+            jrmj: buildJRMJ,
+            famj: buildFAMJ,
+            fajrmj: buildFAJRMJ,
             floorCount: floorList.length,
             floorCount: floorList.length,
             floors: floors,
             floors: floors,
           };
           };
@@ -3000,6 +3033,8 @@ export default {
           buildNum: buidNoList.length,
           buildNum: buidNoList.length,
           mj: landMJ,
           mj: landMJ,
           jrmj: landJRMJ,
           jrmj: landJRMJ,
+          famj: landFAMJ,
+          fajrmj: landFAJRMJ,
           jdcCount: landjdcCount,
           jdcCount: landjdcCount,
           fjdcCount: landfjdcCount,
           fjdcCount: landfjdcCount,
           builds: curLandBuilds,
           builds: curLandBuilds,

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

@@ -324,4 +324,12 @@
   background-color: rgba(4, 28, 50, 0.5) !important;
   background-color: rgba(4, 28, 50, 0.5) !important;
   border: 1px solid rgba(15, 122, 200, 0.4) !important;
   border: 1px solid rgba(15, 122, 200, 0.4) !important;
 }
 }
+.el-descriptions .is-bordered .el-descriptions-item__cell{
+  border: 1px solid rgba(15, 122, 200, 0.4);
+}
+.el-descriptions-item__label.is-bordered-label {
+  font-weight: 700;
+  color: #ffffff;
+  background: rgba(4, 28, 50, 0.6);
+}
 }
 }

+ 144 - 111
static/Config/config.js

@@ -36,6 +36,8 @@ window.CarPark = {
   JRAreaFld: "JRArea", //计容面积
   JRAreaFld: "JRArea", //计容面积
   JRRationFld: "JRRation", //	计容率
   JRRationFld: "JRRation", //	计容率
   AreaFld: "Area", //面积
   AreaFld: "Area", //面积
+  FAAreaFld: "FAArea", //方案建筑面积
+  FAJRAreaFld: "FAJRArea", //方案计容面积
   HouseFld: "Housees", //当前楼层住户数量字段
   HouseFld: "Housees", //当前楼层住户数量字段
   B144Fld: "B144", //当前楼层住户144平米以上住户数量字段
   B144Fld: "B144", //当前楼层住户144平米以上住户数量字段
   RoomFld: "Rooms", //酒店类型 当前层 客房数
   RoomFld: "Rooms", //酒店类型 当前层 客房数
@@ -733,7 +735,7 @@ window.layersDataUrl = [
 /**
 /**
  * 报建模型附属信息配置
  * 报建模型附属信息配置
  */
  */
-(window.bjConfig = {
+window.bjConfig = {
   /**
   /**
    * 项目边界
    * 项目边界
    */
    */
@@ -766,7 +768,7 @@ window.layersDataUrl = [
     layerName: "TCW",
     layerName: "TCW",
     tcwType: "",
     tcwType: "",
   },
   },
-}),
+};
 /**
 /**
  * //项目信息
  * //项目信息
  * meetingProgress (未上会:0,已上会:1)
  * meetingProgress (未上会:0,已上会:1)
@@ -890,7 +892,7 @@ window.constructionmodel = [
     groundarea: "",
     groundarea: "",
     groundcapacity: "",
     groundcapacity: "",
     buildingarea: "",
     buildingarea: "",
-    plandescription:"",
+    plandescription: "",
   },
   },
   // {
   // {
   //   id: "B",
   //   id: "B",
@@ -912,6 +914,7 @@ window.constructionmodel = [
   //     "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
   //     "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
   // },
   // },
 ];
 ];
+
 //图层服务查询分组树
 //图层服务查询分组树
 window.layerTree = [
 window.layerTree = [
   {
   {
@@ -2143,13 +2146,13 @@ window.ZSBC = {
   /**征地补偿标准 */
   /**征地补偿标准 */
   ZDBCList: [
   ZDBCList: [
     {
     {
-      label: "征地标准01",
+      label: "征地标准2023",
       value: "1",
       value: "1",
       BCBZ: {
       BCBZ: {
         /**
         /**
          * 土地统一年产值
          * 土地统一年产值
          */
          */
-        TDCZ: 1000,
+        TDCZ: 5600,
         /**
         /**
          * 土地补偿倍数
          * 土地补偿倍数
          */
          */
@@ -2157,27 +2160,27 @@ window.ZSBC = {
         /**
         /**
          * 土地补偿费
          * 土地补偿费
          */
          */
-        TDBCF: 10000,
+        TDBCF: 56000,
         /**
         /**
          * 安置补偿倍数
          * 安置补偿倍数
          */
          */
 
 
-        AZBCBS: 10,
+        AZBCBS: 16,
         /**
         /**
          * 安置补偿费
          * 安置补偿费
          */
          */
-        AZBCF: 10000,
+        AZBCF: 89600,
         /**
         /**
          * 补偿合计
          * 补偿合计
          */
          */
-        BCHJ: 20000,
+        BCHJ: 145600,
       },
       },
     },
     },
   ],
   ],
   /**拆迁补偿标准 */
   /**拆迁补偿标准 */
   CQBCList: [
   CQBCList: [
     {
     {
-      label: "拆迁补偿标准01",
+      label: "拆迁补偿标准2023",
       value: "1",
       value: "1",
       BCBZ: [
       BCBZ: [
         {
         {
@@ -2291,15 +2294,15 @@ window.ZSBC = {
   /**青苗补偿标准 */
   /**青苗补偿标准 */
   QMBCList: [
   QMBCList: [
     {
     {
-      label: "青苗补偿标准01",
+      label: "青苗补偿标准2023",
       value: "1",
       value: "1",
       BCBZ: {
       BCBZ: {
         //农作物
         //农作物
-        NZW: 100,
+        NZW: 49400,
         //经济作物
         //经济作物
-        JJZW: 200,
+        JJZW: 49400,
         //树木
         //树木
-        SM: 200,
+        SM: 49400,
       },
       },
     },
     },
   ],
   ],
@@ -2307,6 +2310,28 @@ window.ZSBC = {
    * 征地补偿计算
    * 征地补偿计算
    */
    */
   ZDBCJS: {
   ZDBCJS: {
+    /**
+     * 国有所有权
+     */
+    // StateUsed: {
+    //   layerName: '国有使用权',
+    //   layerDataSource: "sanya:国有使用权", //[数据集:图层名]
+    // },
+    // /**
+    //  * 集体使用权
+    //  */
+    // CollectiveUsed : {
+    //   layerName: '集体使用权',
+    //   layerDataSource: "sanya:集体使用权", //[数据集:图层名]
+    // },
+    // /**
+    //  * 集体所有权
+    //  */
+    // CollectiveOwner: {
+    //   layerName: "集体所有权",
+    //   layerDataSource: "sanya:集体所有权", //[数据集:图层名]
+
+    // },
     /**
     /**
      * 地类图斑
      * 地类图斑
      */
      */
@@ -2331,6 +2356,14 @@ window.ZSBC = {
        * 面积字段
        * 面积字段
        */
        */
       tbmj: { field: "TBMJ", cnName: "面积" },
       tbmj: { field: "TBMJ", cnName: "面积" },
+      /**
+       * 权属单位判断   村集体外全为国有
+       */
+      qsdwmc: {
+        field: "QSDWMC",
+        cnName: "权属单位名称",
+        jtlike: "村,村民",
+      },
       /**
       /**
        * 树木分类
        * 树木分类
        */
        */
@@ -2349,7 +2382,6 @@ window.ZSBC = {
         dlmc: "水田,水浇地,旱地",
         dlmc: "水田,水浇地,旱地",
         color: "rgb(245,248,220)",
         color: "rgb(245,248,220)",
       },
       },
-
       /**
       /**
        * 经济作物分类
        * 经济作物分类
        */
        */
@@ -2434,7 +2466,7 @@ window.NightLightUrl = {
 
 
   //草坪灯光
   //草坪灯光
   cpdg: {
   cpdg: {
-    url: "static/data/BPGYLight.json",
+    url: "static/data/BPGYLight1.json",
     cutoffDistance: 90, //扩散距离
     cutoffDistance: 90, //扩散距离
     LightColor: { r: 209 / 255, g: 209 / 255, b: 147 / 255, a: 1 }, //灯光颜色
     LightColor: { r: 209 / 255, g: 209 / 255, b: 147 / 255, a: 1 }, //灯光颜色
     decay: 1, //衰减
     decay: 1, //衰减
@@ -2443,36 +2475,37 @@ window.NightLightUrl = {
   //道路灯光
   //道路灯光
   dldg: {
   dldg: {
     url: "static/data/道路.json",
     url: "static/data/道路.json",
-    cutoffDistance: 100, //扩散距离
-    LightColor: { r: 209 / 255, g: 209 / 255, b: 147 / 255, a: 0.5 }, //灯光颜色
-    decay: 2, //衰减
+    cutoffDistance: 130, //扩散距离
+    LightColor: { r: 217 / 255, g: 194 / 255, b: 17 / 255, a: 1 }, //灯光颜色
+    decay: 1, //衰减
     intensity: 1, //强度
     intensity: 1, //强度
+    baseHeight: 30, //提升高度
   },
   },
   //体育场灯光
   //体育场灯光
   tycdg: {
   tycdg: {
     url: "static/data/体育馆.json",
     url: "static/data/体育馆.json",
-    cutoffDistance: 130, //扩散距离
+    cutoffDistance: 50, //扩散距离
     // LightColor: { r: 245 / 255, g: 250 / 255, b: 216 / 255, a: 0.51 }, //灯光颜色
     // LightColor: { r: 245 / 255, g: 250 / 255, b: 216 / 255, a: 0.51 }, //灯光颜色
     LightColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.51 }, //灯光颜色
     LightColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.51 }, //灯光颜色
-    decay: 2, //衰减
+    decay: 1, //衰减
     intensity: 1, //强度
     intensity: 1, //强度
   },
   },
   //地标灯光
   //地标灯光
   yshdg: {
   yshdg: {
     url: "static/data/地标.json",
     url: "static/data/地标.json",
-    cutoffDistance: 200, //扩散距离
-    // LightColor: { r: 18 / 255, g: 80 / 255, b: 193 / 255, a: 1 }, //灯光颜色
+    cutoffDistance: 5000, //扩散距离
+    // LightColor: { r: 18 / 255, g: 80 / 255, b: 235 / 255, a: 1 }, //灯光颜色
     LightColor: { r: 140 / 255, g: 244 / 255, b: 193 / 255, a: 1 }, //灯光颜色
     LightColor: { r: 140 / 255, g: 244 / 255, b: 193 / 255, a: 1 }, //灯光颜色
-    decay: 2, //衰减
+    decay: 80, //衰减
     intensity: 1, //强度
     intensity: 1, //强度
   },
   },
   //城市泛光线
   //城市泛光线
   csfgx: {
   csfgx: {
     url: "static/data/fg.json",
     url: "static/data/fg.json",
-    glowPower: 0.1, //获取或设置指定辉光强度的数值属性,以总线宽(小于1.0)的百分比表示。
+    glowPower: 1, //获取或设置指定辉光强度的数值属性,以总线宽(小于1.0)的百分比表示。
     // fgxColor: { r: 255 / 255, g: 128 / 255, b: 0 / 255, a: 0.9 }, //泛光线颜色
     // fgxColor: { r: 255 / 255, g: 128 / 255, b: 0 / 255, a: 0.9 }, //泛光线颜色
     fgxColor: { r: 255 / 255, g: 152 / 255, b: 0 / 255, a: 0.9 }, //泛光线颜色
     fgxColor: { r: 255 / 255, g: 152 / 255, b: 0 / 255, a: 0.9 }, //泛光线颜色
-    fgxWidth: 10, //泛光线宽度
+    fgxWidth: 5, //泛光线宽度
     // fgdxColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 1 }, //泛光底线颜色
     // fgdxColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 1 }, //泛光底线颜色
     fgdxColor: { r: 209 / 255, g: 163 / 255, b: 60 / 255, a: 1 }, //泛光底线颜色
     fgdxColor: { r: 209 / 255, g: 163 / 255, b: 60 / 255, a: 1 }, //泛光底线颜色
     fgdxWidth: 1, //泛光底线宽度
     fgdxWidth: 1, //泛光底线宽度
@@ -2501,7 +2534,7 @@ window.NightLightUrl = {
   },
   },
   //小区灯光
   //小区灯光
   residential: {
   residential: {
-    url: "static/data/小区.json",
+    url: "static/data/小区1.json",
     cutoffDistance: 80, //扩散距离
     cutoffDistance: 80, //扩散距离
     LightColor: { r: 222 / 255, g: 154 / 255, b: 24 / 255, a: 1 }, //灯光颜色
     LightColor: { r: 222 / 255, g: 154 / 255, b: 24 / 255, a: 1 }, //灯光颜色
     decay: 3, //衰减
     decay: 3, //衰减
@@ -2537,13 +2570,13 @@ window.landUseNatureRelation = [
         ydlxPriceField: "集体楼面单价_终",
         ydlxPriceField: "集体楼面单价_终",
         qsTYPE: "JT",
         qsTYPE: "JT",
       },
       },
-      {
-        layerCore: "006001",
-        tdjbField: "土地级别",
-        ydlxTypeField: "",
-        ydlxPriceField: "楼面单价",
-        qsTYPE: "GY",
-      },
+      // {
+      //   layerCore: "006001",
+      //   tdjbField: "土地级别",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "楼面单价",
+      //   qsTYPE: "GY",
+      // },
     ],
     ],
   },
   },
   {
   {
@@ -2557,13 +2590,13 @@ window.landUseNatureRelation = [
         ydlxPriceField: "集体楼面单价_终",
         ydlxPriceField: "集体楼面单价_终",
         qsTYPE: "JT",
         qsTYPE: "JT",
       },
       },
-      {
-        layerCore: "006008",
-        tdjbField: "土地级别",
-        ydlxTypeField: "",
-        ydlxPriceField: "楼面单价",
-        qsTYPE: "GY",
-      },
+      // {
+      //   layerCore: "006008",
+      //   tdjbField: "土地级别",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "楼面单价",
+      //   qsTYPE: "GY",
+      // },
     ],
     ],
   },
   },
   {
   {
@@ -2580,13 +2613,13 @@ window.landUseNatureRelation = [
         ydlxPriceField: "集体楼面单价_终",
         ydlxPriceField: "集体楼面单价_终",
         qsTYPE: "JT",
         qsTYPE: "JT",
       },
       },
-      {
-        layerCore: "006003",
-        tdjbField: "土地级别",
-        ydlxTypeField: "",
-        ydlxPriceField: "楼面单价",
-        qsTYPE: "GY",
-      },
+      // {
+      //   layerCore: "006003",
+      //   tdjbField: "土地级别",
+      //   ydlxTypeField: "",
+      //   ydlxPriceField: "楼面单价",
+      //   qsTYPE: "GY",
+      // },
     ],
     ],
   },
   },
   {
   {
@@ -2605,13 +2638,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "机关_地价",
             ydlxPriceField: "机关_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "机关团体用地",
-            ydlxPriceField: "机关_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "机关团体用地",
+          //   ydlxPriceField: "机关_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2625,13 +2658,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "教育_地价",
             ydlxPriceField: "教育_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "教育、科研用地",
-            ydlxPriceField: "教育_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "教育、科研用地",
+          //   ydlxPriceField: "教育_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2645,13 +2678,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "文化_地价",
             ydlxPriceField: "文化_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "文化设施、体育用地",
-            ydlxPriceField: "文化_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "文化设施、体育用地",
+          //   ydlxPriceField: "文化_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2665,13 +2698,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "教育_地价",
             ydlxPriceField: "教育_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "教育、科研用地",
-            ydlxPriceField: "教育_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "教育、科研用地",
+          //   ydlxPriceField: "教育_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2685,13 +2718,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "文化_地价",
             ydlxPriceField: "文化_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "文化设施、体育用地",
-            ydlxPriceField: "文化_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "文化设施、体育用地",
+          //   ydlxPriceField: "文化_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2705,13 +2738,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "医疗_地价",
             ydlxPriceField: "医疗_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "医疗卫生、社会福利用地",
-            ydlxPriceField: "医疗_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "医疗卫生、社会福利用地",
+          //   ydlxPriceField: "医疗_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2725,13 +2758,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "医疗_地价",
             ydlxPriceField: "医疗_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "医疗卫生、社会福利用地",
-            ydlxPriceField: "医疗_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "医疗卫生、社会福利用地",
+          //   ydlxPriceField: "医疗_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
     ],
     ],
@@ -2752,13 +2785,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "公园_地价",
             ydlxPriceField: "公园_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "公园与绿地、公用设施用地",
-            ydlxPriceField: "公园_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "公园与绿地、公用设施用地",
+          //   ydlxPriceField: "公园_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
       {
       {
@@ -2772,13 +2805,13 @@ window.landUseNatureRelation = [
             ydlxPriceField: "公园_地价",
             ydlxPriceField: "公园_地价",
             qsTYPE: "JT",
             qsTYPE: "JT",
           },
           },
-          {
-            layerCore: "006004",
-            tdjbField: "土地级别",
-            ydlxTypeField: "公园与绿地、公用设施用地",
-            ydlxPriceField: "公园_地价",
-            qsTYPE: "GY",
-          },
+          // {
+          //   layerCore: "006004",
+          //   tdjbField: "土地级别",
+          //   ydlxTypeField: "公园与绿地、公用设施用地",
+          //   ydlxPriceField: "公园_地价",
+          //   qsTYPE: "GY",
+          // },
         ],
         ],
       },
       },
     ],
     ],

文件差异内容过多而无法显示
+ 0 - 0
static/data/bpNormalLight.json


文件差异内容过多而无法显示
+ 0 - 0
static/data/体育馆.json


文件差异内容过多而无法显示
+ 0 - 0
static/data/地标.json


文件差异内容过多而无法显示
+ 0 - 0
static/data/道路.json


部分文件因为文件数量过多而无法显示