gushoubang il y a 9 mois
Parent
commit
aa633c79ef
32 fichiers modifiés avec 2586 ajouts et 2749 suppressions
  1. 144 28
      src/api/zt/ztApi.js
  2. 17 0
      src/components/Combinations/LayerManage/LayerManage.scss
  3. 18 59
      src/components/Combinations/NightscapeAnalysis/index.js
  4. 1 1
      src/utils/MapHelper/MapHelper.js
  5. 0 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  6. 39 10
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue
  7. 42 25
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue
  8. 2 2
      src/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue
  9. 2 2
      src/views/ConstructionApplication3D/ConstructionModelInfo/ConstructionModelInfo.vue
  10. 19 9
      src/views/ConstructionApplication3D/ConstructionModelInfo/addConstructionModelInfo.vue
  11. 149 436
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  12. 0 0
      src/views/ConstructionApplication3D/Demolition/zdAnalyse.min.js
  13. 6 6
      src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue
  14. 9 729
      src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue
  15. 75 48
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  16. 123 60
      src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue
  17. 132 21
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  18. 4 1
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/detailedInfo.vue
  19. 136 2
      src/views/ConstructionApplication3D/backLineAnalysis/backLineAnalysisinfo.vue
  20. 13 1
      src/views/ConstructionApplication3D/billboard/addBiillboardModel.vue
  21. 6 6
      src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue
  22. 1 1
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  23. 118 123
      src/views/ConstructionApplication3D/parkCheck/parkResult.vue
  24. 13 5
      src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue
  25. 6 6
      src/views/ConstructionApplication3D/projectManagement/ghqk.js
  26. 354 142
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  27. 147 157
      src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue
  28. 541 501
      src/views/cockpit/common/VectorSpace/BoxCommonVector.vue
  29. 217 161
      src/views/cockpit/tdsc.vue
  30. 22 4
      src/views/cockpit/ydjc.vue
  31. 0 1
      src/views/siteselection/components/fzxz.vue
  32. 230 202
      static/Config/config.js

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

@@ -8,7 +8,7 @@ import { saveAs } from "file-saver";
 import { getToken } from "@/utils/auth";
 axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 创建axios实例
-const ZTservice = axios.create({
+const request = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: window.axiosURI,
   //baseURL: "http://192.168.100.252:8080",
@@ -17,12 +17,10 @@ const ZTservice = axios.create({
 });
 
 // request拦截器
-ZTservice.interceptors.request.use(
+request.interceptors.request.use(
   (config) => {
-    // 是否需要设置 token
-    const isToken = (config.headers || {}).isToken === false
-    // 是否需要防止数据重复提交
-    if (getToken() && !isToken) {
+    //代码防止重复提交会导致浏览器内存溢出,因此没在这添加判断
+    if (getToken()) {
       config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
     }
     // 是否需要防止数据重复提交
@@ -80,7 +78,7 @@ ZTservice.interceptors.request.use(
 );
 
 // 响应拦截器
-ZTservice.interceptors.response.use(
+request.interceptors.response.use(
   (res) => {
     // 未设置状态码则默认成功状态
     const code = res.data.code || 200;
@@ -155,10 +153,14 @@ ZTservice.interceptors.response.use(
     return Promise.reject(error);
   }
 );
-
+/**
+ * 基准地价报告
+ * @param {*} data
+ * @returns
+ */
 export async function getJZDJWord(data) {
-  let response = await ZTservice({
-    url: "/model/sanya/exportWord4",
+  let response = await request({
+    url: "/model/exportWord/exportWord4",
     method: "post",
     responseType: "blob",
     data: data,
@@ -187,9 +189,14 @@ export async function getJZDJWord(data) {
   return;
 }
 
+/**
+ * 征收补偿报告
+ * @param {*} data
+ * @returns
+ */
 export async function getZDBCWord(data) {
-  let response = await ZTservice({
-    url: "/model/sanya/exportWord3",
+  let response = await request({
+    url: "/model/exportWord/exportWord3",
     method: "post",
     responseType: "blob",
     data: data,
@@ -218,22 +225,131 @@ export async function getZDBCWord(data) {
   return;
 }
 
-export async function getWord(data) {
-  let dataFile = await ZTservice({
-    url: "/model/sanya/getWord",
+// 查询项目信息列表
+export async function listProjectinformation(query) {
+  return await request({
+    url: "/model/projectinformation/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 查询项目信息详细
+export async function getProjectinformation(id) {
+  return await request({
+    url: "/model/projectinformation/" + id,
+    method: "get",
+  });
+}
+
+// 新增项目信息
+export async function addProjectinformation(data) {
+  return await request({
+    url: "/model/projectinformation",
     method: "post",
-    responseType: "blob",
-    params: data,
+    data: data,
+  });
+}
+
+// 修改项目信息
+export async function updateProjectinformation(data) {
+  return await request({
+    url: "/model/projectinformation",
+    method: "put",
+    data: data,
+  });
+}
+
+// 删除项目信息
+export async function delProjectinformation(id) {
+  return await request({
+    url: "/model/projectinformation/" + id,
+    method: "delete",
+  });
+}
+
+// 查询报建模型列表
+export async function listConstructionmodel(query) {
+  return await request({
+    url: "/model/constructionmodel/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 查询报建模型详细
+export async function getConstructionmodel(id) {
+  return await request({
+    url: "/model/constructionmodel/" + id,
+    method: "get",
+  });
+}
+
+// 新增报建模型
+export async function addConstructionmodel(data) {
+  return await request({
+    url: "/model/constructionmodel",
+    method: "post",
+    data: data,
+  });
+}
+
+// 修改报建模型
+export async function updateConstructionmodel(data) {
+  return await request({
+    url: "/model/constructionmodel",
+    method: "put",
+    data: data,
+  });
+}
+
+// 删除报建模型
+export async function delConstructionmodel(id) {
+  return await request({
+    url: "/model/constructionmodel/" + id,
+    method: "delete",
+  });
+}
+
+// 查询基准地价信息列表
+export function listBenchmarkLandPrices(query) {
+  return request({
+    url: "/model/BenchmarkLandPrices/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 查询基准地价信息详细
+export function getBenchmarkLandPrices(id) {
+  return request({
+    url: "/model/BenchmarkLandPrices/" + id,
+    method: "get",
+  });
+}
+
+// 新增基准地价信息
+export function addBenchmarkLandPrices(data) {
+  return request({
+    url: "/model/BenchmarkLandPrices",
+    method: "post",
+    data: data,
+  });
+}
+
+// 修改基准地价信息
+export function updateBenchmarkLandPrices(data) {
+  return request({
+    url: "/model/BenchmarkLandPrices",
+    method: "put",
+    data: data,
+  });
+}
+
+// 删除基准地价信息
+export function delBenchmarkLandPrices(id) {
+  return request({
+    url: "/model/BenchmarkLandPrices/" + id,
+    method: "delete",
   });
-  const isBlob = blobValidate(dataFile);
-  if (isBlob) {
-    const blob = new Blob([dataFile]);
-    saveAs(blob, data.fileName);
-  } else {
-    const resText = await dataFile.text();
-    const rspObj = JSON.parse(resText);
-    const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
-    Message.error(errMsg);
-  }
-  return;
 }

+ 17 - 0
src/components/Combinations/LayerManage/LayerManage.scss

@@ -143,4 +143,21 @@
 .el-tree-node__content:hover,
 .el-tree-node:focus>.el-tree-node__content {
     background: transparent !important;
+}
+
+.eicon {
+    width: 24px;
+    height: 24px;
+    margin-top: 5px;
+    background-size: 100% 100%;
+    display: inline-block;
+    cursor: pointer;
+}
+
+.eyes {
+    background-image: url("/static/images/ghzc/eyes.png");
+}
+
+.close_eyes {
+    background-image: url("/static/images/ghzc/close_eyes.png");
 }

+ 18 - 59
src/components/Combinations/NightscapeAnalysis/index.js

@@ -34,8 +34,6 @@ const Nightscape = {
         clearTimeout(this.dgdsq);
       }
 
-
-
       if (scene.layers.find("白天")) scene.layers.find("白天").visible = true;
       if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = false;
       scene.sun.show = true;
@@ -47,8 +45,7 @@ const Nightscape = {
       this.setHypsometric(false); //夜景材质
       viewer.imageryLayers.remove(this.imageLayer);
       //泛光
-      scene.bloomEffect.show = false;
-
+      // scene.bloomEffect.show = false;
     } else {
       scene.sun.show = false;
 
@@ -62,7 +59,6 @@ const Nightscape = {
       // 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);
 
@@ -247,7 +243,6 @@ const Nightscape = {
         for (var i = 0; i < features.length; i++) {
           var element = features[i];
 
-
           let p = element.geometry.coordinates;
           var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
             p[0],
@@ -260,7 +255,6 @@ const Nightscape = {
           //   p[2]+100
           // );
           var SpotLightOptions3 = {
-
             cutoffDistance: window.NightLightUrl.dldg.cutoffDistance,
             // distance:1000,
             // angle:Math.PI,
@@ -364,67 +358,42 @@ const Nightscape = {
         //绿色
         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(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(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(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(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(window.NightLightUrl.tyg);
         var hyp = new Cesium.HypsometricSetting();
         hyp.MaxVisibleValue = 58;
         hyp.MinVisibleValue = 26.8;
@@ -439,7 +408,6 @@ const Nightscape = {
           analysisMode:
             Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
           // DisplayMode:Cesium.HypsometricSettingEnum.DisplayMode.FACE_AND_LINE
-
         };
         that.tycindex += 1;
         if (that.tycindex > 4) {
@@ -463,27 +431,20 @@ const Nightscape = {
       // var layerR = scene.layers.find(window.NightLightUrl.road);
       // layerR.hasLight = true;
 
-      // layerP. wireFrameMode =Cesium.WireFrameType.Quad 
+      // layerP. wireFrameMode =Cesium.WireFrameType.Quad
       // // var s3mpolylineEffect = layerP.effect;
       // // var EffectSetting = s3mpolylineEffect.getEffectSetting();
       // // s3mpolylineEffect.setValue('PolylineType', 0);
       // // s3mpolylineEffect.setValue('Width', 5);
-       console.log(scene.camera)
+      // console.log(scene.camera);
     }
-
   },
 
   //设置环境光
   switchLight(isDayLight) {
     if (isDayLight) {
       //设置环境光(白天)
-      scene.lightSource.ambientLightColor = new Cesium.Color(
-        0.1,
-        0.1,
-        0.1,
-        1
-      );
-
+      // scene.lightSource.ambientLightColor = new Cesium.Color(0.1, 0.1, 0.1, 1);
     } else {
       //设置环境光(夜晚)
       // scene.lightSource.ambientLightColor = new Cesium.Color(34/255, 34/255, 34/255,0.5);
@@ -787,11 +748,11 @@ const Nightscape = {
       });
     });
     //楼顶流动线
-    var liness = []
+    var liness = [];
 
     Cesium.loadJson(window.NightLightUrl.buildTopLine.url).then((jsonData) => {
       debugger;
-      liness = jsonData
+      liness = jsonData;
       jsonData.features.forEach((route) => {
         let list = route.geometry.coordinates.flat(Infinity);
         let topLine = viewer.entities.add({
@@ -827,8 +788,6 @@ const Nightscape = {
         this.buildTopLines.push(topLine);
       });
     });
-
-
   },
   // changlineColor(){},
 

+ 1 - 1
src/utils/MapHelper/MapHelper.js

@@ -110,7 +110,7 @@ export const flatten = (arr, children = "children") => {
  */
 export const undergroundMode = (state) => {
   if (state) {
-    viewer.scene.globe.globeAlpha = 0;
+    viewer.scene.globe.globeAlpha = 0.3;
   } else {
     viewer.scene.globe.globeAlpha = 1;
   }

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js


+ 39 - 10
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue

@@ -81,7 +81,8 @@
               <el-col :span="14">
                 <el-date-picker
                   size="mini"
-                  v-model="value1"
+                  v-model="datevalue"
+                  value-format="yyyy-MM-dd HH:mm:ss"
                   type="daterange"
                   range-separator=""
                   start-placeholder="开始日期"
@@ -129,6 +130,12 @@
                             type="danger"
                             >{{ itemModel.AnalysisStatus }}</el-button
                           >
+                          <el-button
+                            v-if="itemModel.AnalysisStatus == '异常'"
+                            size="mini"
+                            type="danger"
+                            >{{ itemModel.AnalysisStatus }}</el-button
+                          >
                         </el-col>
                         <el-col :span="12">
                           <div style="float: right">
@@ -167,7 +174,7 @@ import { v4 as uuidv4 } from "uuid";
 import moment from "moment";
 import jzdjfxsmInfo from "./jzdjfxsmInfo.vue";
 import jzdjfxsmjg from "./jzdjfxsmjg.vue";
-import BenchmarkLandPrice from "./BenchmarkLandPrice_old.js";
+import BenchmarkLandPrice from "./BenchmarkLandPrice.js";
 import {
   cartesian3ToWGS84,
   mapQuery,
@@ -184,7 +191,7 @@ import {
   midpoint,
   difference,
 } from "@turf/turf";
-import { getJZDJWord, getWord } from "@/api/zt/ztApi.js";
+import { getJZDJWord, listBenchmarkLandPrices } from "@/api/zt/ztApi.js";
 let handlerPolygon;var polygonEntity = null;
 export default {
   data() {
@@ -205,8 +212,11 @@ export default {
         ProjectName: "",
         ProjectType: "",
         ConstructionUnit: "",
-        imageBase64: [],
+        ztBenchmarkLandPriceResultsList:{}
       },
+      input3:"",
+      datevalue:[],
+      // datevalue:[moment().add(-1, 'days').startOf("day").format('YYYY-MM-DD HH:mm:ss'),moment().endOf("day").format('YYYY-MM-DD HH:mm:ss')],
       rules: {
         ProjectName: [
           { required: true, message: "请输入项目名称", trigger: "blur" },
@@ -231,11 +241,28 @@ export default {
     this.init();
   },
   methods: {
-    init() {
+    async init() {
       var date=new Date()
       this.form.ProjectName="基准地价分析_"+this.formatDateTime(date)
       this.form.ConstructionUnit="建设单位"
+      
+      await this.getBenchmarkLandPriceList();
+    },
+/**
+ * 获取基准地价信息
+ */
+    async getBenchmarkLandPriceList() {
+      // debugger
+      // let BenchmarkLandPrices = await listBenchmarkLandPrices({
+      //   params:{
+      //     beginTime: this.datevalue[0],
+      //     endTime:this.datevalue[1]
+      //   },
+      //   ProjectName: this.input3,
+      // });
+      // this.BenchmarkLandPriceList=BenchmarkLandPrices.rows;
       this.BenchmarkLandPriceList = window.BenchmarkLandPriceList;
+    
     },
     formatDateTime(date) {
       var y = date.getFullYear();
@@ -371,19 +398,20 @@ export default {
           BenchmarkLandPrice.calculateLandPrice(data,true,function(response){
             if(response){
                 data.AnalysisStatus = "完成";
-                data.AnalysisResults=response;
+                data.ztBenchmarkLandPriceResultsList=response;
                  that.openAnalyzeResults(data);
             }else{
               data.AnalysisStatus = "异常";
-                data.AnalysisResults=response;
+                data.ztBenchmarkLandPriceResultsList=response;
             }
+            that.resetForm(formName);
           });
           that.$message({
             message: "开始分析",
             type: "success",
           });
           
-          that.resetForm(formName);
+          
           
         } else {
           return false;
@@ -499,6 +527,7 @@ export default {
      * @param BenchmarkLandPrice 基准地价信息
      */
     openAnalyzeResults(BenchmarkLandPrice) {
+      debugger
       this.BenchmarkLandPriceinfo=JSON.parse(JSON.stringify(BenchmarkLandPrice));
       this.iSjzdjfxsmjgShow=true;
       this.activeName = "third";
@@ -567,9 +596,9 @@ export default {
       let queryByGeometryParameters = {
         getFeatureMode: "SQL",
         datasetNames: [
-          layer.date_server.dataSourceName +
+          layer.date_server.datasourcename +
             ":" +
-            layer.date_server.datasetName,
+            layer.date_server.datasetname,
         ],
         queryParameter: {
           attributeFilter: sql,

+ 42 - 25
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue

@@ -6,7 +6,7 @@
       description="暂无数据"
     ></el-empty>
     <el-container v-if="info.BenchmarkLandPrice != null" style="height: 100%">
-      <el-header height="12rem" style="padding: 0px">
+      <el-header height="6rem" style="padding: 0px">
         <el-row :gutter="10" style="display: flex; align-items: center">
           <el-col :span="18">
             {{ info.BenchmarkLandPrice.ProjectName }}
@@ -41,7 +41,8 @@
                   <a style="color: white">分析总范围(亩)</a>
                   <a style="font-weight: bold; color: rgba(2, 167, 240, 1)">{{
                     Number(
-                      info.BenchmarkLandPrice.AnalysisResults.analysisArea
+                      info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+                        .analysisArea
                     ).toFixed(2)
                   }}</a>
                 </div>
@@ -59,7 +60,7 @@
                   border-radius: 6px;
                 "
               >
-                <i style="font-size: 2rem" class="el-icon-bank-card"></i>
+                <i style="font-size: 2rem" class="el-icon-discount"></i>
               </el-col>
               <el-col
                 :span="16"
@@ -67,10 +68,12 @@
                 style="justify-content: flex-start"
               >
                 <div class="con-col" style="align-items: flex-start">
-                  <a style="color: white">总地价(万元)</a>
+                  <a style="color: white">计算地价面积</a>
+                  <a style="color: white">(亩)</a>
                   <a style="font-weight: bold; color: rgba(2, 167, 240, 1)">{{
                     Number(
-                      info.BenchmarkLandPrice.AnalysisResults.totalLandPrice
+                      info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+                        .ParticipationArea
                     ).toFixed(2)
                   }}</a>
                 </div>
@@ -78,7 +81,7 @@
             </el-row>
           </el-col>
         </el-row>
-        <el-row :gutter="10">
+        <!-- <el-row :gutter="10">
           <el-col :span="12">
             <el-row :gutter="10" class="container_center">
               <el-col
@@ -90,7 +93,7 @@
                   border-radius: 6px;
                 "
               >
-                <i style="font-size: 2rem" class="el-icon-discount"></i>
+                <i style="font-size: 2rem" class="el-icon-bank-card"></i>
               </el-col>
               <el-col
                 :span="16"
@@ -98,20 +101,20 @@
                 style="justify-content: flex-start"
               >
                 <div class="con-col" style="align-items: flex-start">
-                  <a style="color: white">计算地价面积</a>
-                  <a style="color: white">(亩)</a>
+                  <a style="color: white">总地价(万元)</a>
                   <a style="font-weight: bold; color: rgba(2, 167, 240, 1)">{{
                     Number(
-                      info.BenchmarkLandPrice.AnalysisResults.ParticipationArea
+                      info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+                        .totalLandPrice
                     ).toFixed(2)
                   }}</a>
                 </div>
               </el-col>
             </el-row>
           </el-col>
-        </el-row>
+        </el-row> -->
       </el-header>
-      <el-main height="12rem">
+      <el-main height="18rem">
         <el-tabs v-model="activeName" class="full-height">
           <el-tab-pane label="总体情况" name="first" style="height: 100%">
             <div id="echartFGY" ref="echartFGY" class="EchartsWH">
@@ -228,6 +231,18 @@ export default {
   created() {},
   mounted() {
     if (this.info.BenchmarkLandPrice != null) {
+      if (
+        this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+          .ghdkDetailedDjList &&
+        typeof this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+          .ghdkDetailedDjList === "string"
+      ) {
+        this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList =
+          JSON.parse(
+            this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+              .ghdkDetailedDjList
+          );
+      }
       this.$nextTick(function () {
         const erd = elementResizeDetectorMaker();
         let that = this;
@@ -247,14 +262,14 @@ export default {
     async init() {
       // 设置用地类型图层颜色
       let ghyts = [];
-      this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.forEach(
+      this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.forEach(
         (ghdkDetailedDj) => {
           if (!ghyts[ghdkDetailedDj.ghyt]) {
             ghyts[ghdkDetailedDj.ghyt] = this.getLandColor(ghdkDetailedDj.ghyt);
           }
         }
       );
-      this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.forEach(
+      this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.forEach(
         (ghdkDetailedDj) => {
           ghdkDetailedDj.ColorString = ghyts[ghdkDetailedDj.ghyt];
         }
@@ -274,7 +289,7 @@ export default {
      * 渲染绘制范围
      */
     DrawScope() {
-      this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.forEach(
+      this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.forEach(
         (ghdkDetailedDj) => {
           let point3ds = [];
           let pointholes = [];
@@ -367,7 +382,7 @@ export default {
     },
 
     initTable() {
-      this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.forEach(
+      this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.forEach(
         (ghdkDetailedDj, i) => {
           if (ghdkDetailedDj.zytdList.length > 0) {
             this.spanArray.push(ghdkDetailedDj.zytdList.length);
@@ -441,7 +456,7 @@ export default {
       if (that.entitieid != "") {
         var entitie = viewer.entities.getById(that.entitieid);
         let ghdkDetailedDj =
-          this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.find(
+          this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.find(
             (c) => c.id == that.entitieid
           );
         let col = Cesium.Color.fromCssColorString(
@@ -494,7 +509,7 @@ export default {
         if (pick && pick.id.id) {
           id = pick.id.id;
           info =
-            that.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.find(
+            that.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList.find(
               (c) => c.id == id
             );
           if (info) {
@@ -536,9 +551,11 @@ export default {
     async handleGetBG() {
       if (
         this.info.BenchmarkLandPrice &&
-        this.info.BenchmarkLandPrice.AnalysisResults
+        this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
       ) {
-        await getJZDJWord(this.info.BenchmarkLandPrice.AnalysisResults);
+        await getJZDJWord(
+          this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+        );
       }
     },
 
@@ -547,16 +564,16 @@ export default {
       for (
         let index = 0;
         index <
-        this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList.length;
+        this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+          .ghdkDetailedDjList.length;
         index++
       ) {
         const element =
-          this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList[
-            index
-          ];
+          this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList
+            .ghdkDetailedDjList[index];
         viewer.entities.removeById(element.id);
       }
-      // this.info.BenchmarkLandPrice.AnalysisResults.ghdkDetailedDjList = [];
+      // this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList.ghdkDetailedDjList = [];
       //删除绘制范围
       viewer.entities.removeById("HZFW");
     },

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

@@ -133,7 +133,7 @@ export default {
         //获取模型信息
         let queryBySQLParameters = {
           getFeatureMode: "SQL",
-          datasetNames: [that.info.Minfo.dataSourceName + ":项目范围"],
+          datasetNames: [that.info.Minfo.datasourcename + ":项目范围"],
           queryParameter: {
             attributeFilter: " DKBM = '" + bm.value + "'",
           },
@@ -284,7 +284,7 @@ export default {
         //获取模型信息
         let queryBySQLParameters = {
           getFeatureMode: "SQL",
-          datasetNames: [that.info.Minfo.dataSourceName + ":项目范围"],
+          datasetNames: [that.info.Minfo.datasourcename + ":项目范围"],
           queryParameter: {
             attributeFilter: " DKBM = '" + bm.value + "'",
           },

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

@@ -19,10 +19,10 @@
             info.dataurl
           }}</el-descriptions-item>
           <el-descriptions-item label="模型数据数据源">{{
-            info.dataSourceName
+            info.datasourcename
           }}</el-descriptions-item>
           <el-descriptions-item label="模型数据数据集">
-            {{ info.datasetName }}
+            {{ info.datasetname }}
           </el-descriptions-item>
         </el-descriptions>
       </el-col>

+ 19 - 9
src/views/ConstructionApplication3D/ConstructionModelInfo/addConstructionModelInfo.vue

@@ -21,10 +21,10 @@
             <el-input v-model="form.dataurl"></el-input>
           </el-form-item>
           <el-form-item label="模型数据数据源:">
-            <el-input v-model="form.dataSourceName"></el-input>
+            <el-input v-model="form.datasourcename"></el-input>
           </el-form-item>
           <el-form-item label="模型数据数据集:">
-            <el-input v-model="form.datasetName"></el-input>
+            <el-input v-model="form.datasetname"></el-input>
           </el-form-item>
           <el-form-item label="设计单位:">
             <el-input v-model="form.designunit"></el-input>
@@ -47,6 +47,7 @@
 <script>
 import { v4 as uuidv4 } from "uuid";
 import moment from "moment";
+import { addConstructionmodel } from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
@@ -57,8 +58,8 @@ export default {
         creationtime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
         url: "",
         dataurl: "",
-        dataSourceName: "",
-        datasetName: "",
+        datasourcename: "",
+        datasetname: "",
         selectionStatus: false,
         designunit: "",
         totalarea: "",
@@ -76,10 +77,10 @@ export default {
         dataurl: [
           { required: true, message: "请输入模型数据地址", trigger: "blur" },
         ],
-        dataSourceName: [
+        datasourcename: [
           { required: true, message: "请输入模型数据数据源", trigger: "blur" },
         ],
-        datasetName: [
+        datasetname: [
           { required: true, message: "请输入模型数据数据集", trigger: "blur" },
         ],
       },
@@ -116,12 +117,21 @@ export default {
   methods: {
     submitForm(formName) {
       let that = this;
-      this.$refs[formName].validate((valid) => {
+      this.$refs[formName].validate(async (valid) => {
         if (valid) {
           that.form.projectinformationid = that.info.id;
           window.constructionmodel.push(that.form);
-          // that.lyoption.cancel();
-          that.$layer.close(that.layerid);
+          // // that.lyoption.cancel();
+          // that.$layer.close(that.layerid);
+
+          let result = await addConstructionmodel(that.form);
+          if (result.code) {
+            that.$message({
+              message: "添加成功",
+              type: "success",
+            });
+            that.$layer.close(that.layerid);
+          }
         } else {
           return false;
         }

Fichier diff supprimé car celui-ci est trop grand
+ 149 - 436
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/views/ConstructionApplication3D/Demolition/zdAnalyse.min.js


+ 6 - 6
src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue

@@ -148,11 +148,11 @@ export default {
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJX = "";
         let FA_Data = {};
-        if (Minfo.dataurl && Minfo.dataSourceName) {
+        if (Minfo.dataurl && Minfo.datasourcename) {
           //获取项目范围数据数据
           let queryByGeometryParameters = {
             getFeatureMode: "SQL",
-            datasetNames: [Minfo.dataSourceName + ":" + "项目范围"],
+            datasetNames: [Minfo.datasourcename + ":" + "项目范围"],
             queryParameter: {
               attributeFilter: "DKBM = '" + KG_Data.DKBM + "'",
             },
@@ -186,7 +186,7 @@ export default {
           // //获取单栋楼体数据 (模型中Model数据)
           // let queryByGeometryParameters1 = {
           //   getFeatureMode: "SQL",
-          //   datasetNames: [Minfo.dataSourceName + ":" + Minfo.datasetName],
+          //   datasetNames: [Minfo.datasourcename + ":" + Minfo.datasetname],
           //   queryParameter: {
           //     attributeFilter: "1=1",
           //   },
@@ -248,7 +248,7 @@ export default {
 
           let queryByGeometryParameters2 = {
             getFeatureMode: "SQL",
-            datasetNames: [Minfo.dataSourceName + ":" + Minfo.datasetName],
+            datasetNames: [Minfo.datasourcename + ":" + Minfo.datasetname],
             queryParameter: {
               attributeFilter: "LANDNO = '" + KG_Data.DKBM + "'",
             },
@@ -404,9 +404,9 @@ export default {
         let queryByIDParameters = {
           getFeatureMode: "BUFFER",
           datasetNames: [
-            layer.date_server.dataSourceName +
+            layer.date_server.datasourcename +
               ":" +
-              layer.date_server.datasetName,
+              layer.date_server.datasetname,
           ],
           geometry: {
             parts: [1],

+ 9 - 729
src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue

@@ -137,21 +137,16 @@
 
 <script>
 import { v4 as uuidv4 } from "uuid";
+import Nightscape from "@/components/Combinations/NightscapeAnalysis/index.js";
 let entityPointLightPairs = new Map(),
   entitySpotLightPairs = new Map(),
   entityDirectionalLightPairs = new Map(),
-  GeoJsonLayerList = [],
-  liudongGntities = [],
-  buildTopLines = [],
   pointLightSourceDrawHandler = null,
   spotOrDirectionalLightSourceDrawHandler = null,
   spotOrDirectionalLightSourceCountHandler = null,
   spotOrDirectionalLightSourceAdding = false,
-  spotOrDirectionalLightPositions = [],
-  directionalLight_1 = null,
-  directionalLight_3 = null,
-  directionalLight_4 = null,
-  imageLayer = null;
+  spotOrDirectionalLightPositions = [];
+
 export default {
   data() {
     return {
@@ -210,11 +205,7 @@ export default {
       },
     },
   },
-  computed: {
-    Nightscape: function () {
-      return this.sharedState.toolBar[10];
-    },
-  },
+  computed: {},
   mounted() {
     this.init();
   },
@@ -238,701 +229,15 @@ export default {
 
     //夜景开关
     startNight(isNight) {
-      let that = this;
-      scene.globe.show = true;
-      viewer.scene.hdrEnabled = isNight;
-      viewer.scene.bloomEffect.show = false;
-
-      // 是否开启夜景
-      if (!isNight) {
-        if (this.dgdsq) {
-          clearTimeout(this.dgdsq);
-        }
-        if (scene.layers.find("白天")) scene.layers.find("白天").visible = true;
-        if (scene.layers.find("夜晚"))
-          scene.layers.find("夜晚").visible = false;
-        scene.sun.show = true;
-        this.clearLightSource(true, true);
-
-        scene.skyAtmosphere.show = true;
-
-        this.switchLight(true); //白天
-        this.setHypsometric(false); //夜景材质
-        viewer.imageryLayers.remove(imageLayer);
-      } else {
-        scene.sun.show = false;
-        if (scene.layers.find("白天"))
-          scene.layers.find("白天").visible = false;
-        if (scene.layers.find("夜晚")) scene.layers.find("夜晚").visible = true;
-        // 泛光线底纹
-        let roadLine1 = Cesium.GeoJsonDataSource.load(
-          window.NightLightUrl.csfgx.url
-        );
-
-        roadLine1
-          .then(function (dataSource) {
-            viewer.dataSources.add(dataSource);
-            GeoJsonLayerList.push(dataSource);
-            let lines_1 = dataSource.entities.values;
-            for (let i = 0; i < lines_1.length; i++) {
-              let line = lines_1[i];
-              line.polyline.material = new Cesium.PolylineGlowMaterialProperty({
-                //设置Glow材质
-                glowPower: 0.005,
-                color: new Cesium.Color(
-                  window.NightLightUrl.csfgx.fgxColor.r,
-                  window.NightLightUrl.csfgx.fgxColor.g,
-                  window.NightLightUrl.csfgx.fgxColor.b,
-                  window.NightLightUrl.csfgx.fgxColor.a
-                ),
-              });
-              line.polyline.width = window.NightLightUrl.csfgx.fgxWidth;
-            }
-          })
-          .otherwise(function (error) {
-            window.alert(error);
-          });
-        let roadLine2 = Cesium.GeoJsonDataSource.load(
-          window.NightLightUrl.csfgx.url
-        );
-        //泛光亮线
-        roadLine2
-          .then(function (dataSource) {
-            viewer.dataSources.add(dataSource);
-            GeoJsonLayerList.push(dataSource);
-            let lines_1 = dataSource.entities.values;
-            for (let i = 0; i < lines_1.length; i++) {
-              let line = lines_1[i];
-              line.polyline.material = new Cesium.PolylineGlowMaterialProperty({
-                //设置Glow材质
-                glowPower: 0.001,
-                color: new Cesium.Color(
-                  window.NightLightUrl.csfgx.fgdxColor.r,
-                  window.NightLightUrl.csfgx.fgdxColor.g,
-                  window.NightLightUrl.csfgx.fgdxColor.b,
-                  window.NightLightUrl.csfgx.fgdxColor.a
-                ),
-              });
-              line.polyline.width = window.NightLightUrl.csfgx.fgdxWidth;
-            }
-          })
-          .otherwise(function (error) {
-            window.alert(error);
-          });
-
-        //地标灯光
-        Cesium.loadJson(window.NightLightUrl.yshdg.url).then((response) => {
-          let features = response.features;
-          features.forEach((element, index) => {
-            let p = element.geometry.coordinates;
-            var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
-              p[0],
-              p[1],
-              p[2] + 20
-            );
-            // var SpotLightPos32 = new Cesium.Cartesian3.fromDegrees(
-            //   p[0],
-            //   p[1],
-            //   p[2]
-            // );
-            var SpotLightOptions3 = {
-              id: "db_" + index,
-              color: new Cesium.Color(
-                window.NightLightUrl.yshdg.LightColor.r,
-                window.NightLightUrl.yshdg.LightColor.g,
-                window.NightLightUrl.yshdg.LightColor.b,
-                window.NightLightUrl.yshdg.LightColor.a
-              ),
-              cutoffDistance: window.NightLightUrl.yshdg.cutoffDistance,
-
-              decay: window.NightLightUrl.yshdg.decay,
-              intensity: window.NightLightUrl.yshdg.intensity,
-            };
-
-            let SpotLight33 = new Cesium.PointLight(
-              SpotLightPos3,
-              // SpotLightPos32,
-              SpotLightOptions3
-            );
-            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,
-              };
-
-              let SpotLightresidential = new Cesium.PointLight(
-                SpotLightPos3,
-                // SpotLightPos32,
-                SpotLightOptions3
-              );
-              scene.addLightSource(SpotLightresidential);
-            });
-          }
-        );
-        // 体育场灯光
-        Cesium.loadJson(window.NightLightUrl.tycdg.url).then((response) => {
-          let features = response.features;
-          features.forEach((element, indx) => {
-            let p = element.geometry.coordinates;
-            var SpotLightPos3 = new Cesium.Cartesian3.fromDegrees(
-              p[0],
-              p[1],
-              p[2] + 10
-            );
-
-            var SpotLightOptions3 = {
-              cutoffDistance: window.NightLightUrl.tycdg.cutoffDistance,
-              color: new Cesium.Color(
-                window.NightLightUrl.tycdg.LightColor.r,
-                window.NightLightUrl.tycdg.LightColor.g,
-                window.NightLightUrl.tycdg.LightColor.b,
-                window.NightLightUrl.tycdg.LightColor.a
-              ),
-              decay: window.NightLightUrl.tycdg.decay,
-              intensity: window.NightLightUrl.tycdg.intensity,
-            };
-
-            let SpotLight33 = new Cesium.PointLight(
-              SpotLightPos3,
-
-              // SpotLightPos32,
-              SpotLightOptions3
-            );
-            // that.tiyuchangdg.push(SpotLight33);
-            scene.addLightSource(SpotLight33);
-
-            // if (indx < 11) {
-            //   that.tiyuchangdg1.push(SpotLight33);
-            // } else if (indx >= 11 && indx < 20) {
-            //   that.tiyuchangdg2.push(SpotLight33);
-            // } else {
-            //   that.tiyuchangdg3.push(SpotLight33);
-            // }
-          });
-          // let sd = that.splitArray(that.tiyuchangdg);
-          // that.tiyuchangdg1 = sd[0];
-          // that.tiyuchangdg2 = sd[1];
-          // that.tiyuchangdg3 = sd[2];
-        });
-        // // 道路灯光
-        Cesium.loadJson(window.NightLightUrl.dldg.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] + 40
-            );
-            var SpotLightOptions3 = {
-              cutoffDistance: window.NightLightUrl.dldg.cutoffDistance,
-              color: new Cesium.Color(
-                window.NightLightUrl.dldg.LightColor.r,
-                window.NightLightUrl.dldg.LightColor.g,
-                window.NightLightUrl.dldg.LightColor.b,
-                window.NightLightUrl.dldg.LightColor.a
-              ),
-              decay: window.NightLightUrl.dldg.decay,
-              intensity: window.NightLightUrl.dldg.intensity,
-            };
-
-            let SpotLight33 = new Cesium.PointLight(
-              SpotLightPos3,
-              // SpotLightPos32,
-              SpotLightOptions3
-            );
-            scene.addLightSource(SpotLight33);
-          });
-        });
-        // 草坪灯光
-        Cesium.loadJson(window.NightLightUrl.cpdg.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] + 20
-            );
-
-            var SpotLightOptions3 = {
-              cutoffDistance: window.NightLightUrl.cpdg.cutoffDistance,
-              color: new Cesium.Color(
-                window.NightLightUrl.cpdg.LightColor.r,
-                window.NightLightUrl.cpdg.LightColor.g,
-                window.NightLightUrl.cpdg.LightColor.b,
-                window.NightLightUrl.cpdg.LightColor.a
-              ),
-              decay: window.NightLightUrl.cpdg.decay,
-              intensity: window.NightLightUrl.cpdg.intensity,
-            };
-
-            let SpotLight33 = new Cesium.PointLight(
-              SpotLightPos3,
-              // SpotLightPos32,
-              SpotLightOptions3
-            );
-            scene.addLightSource(SpotLight33);
-          });
-        });
-
-        this.loadldx();
-        this.switchLight(false);
-        scene.skyAtmosphere.show = false;
-
-        this.setHypsometric(true); //夜景
-        imageLayer = viewer.imageryLayers.addImageryProvider(
-          new Cesium.SingleTileImageryProvider({
-            url: "static/images/zt/Nightscape/BlackMarble_2016-1.jpg",
-          })
-        );
-        imageLayer.alpha = 0.5;
+      if (isNight) {
+        Nightscape.openNightSwitch();
         this.gyTableData.forEach((element) => {
           this.addLightSource(element);
         });
-
-        if (this.dgdsq) {
-          clearTimeout(this.dgdsq);
-        }
-        this.dgdsq = setInterval(function () {
-          //创建分层设色对象   设置最大/最小可见高度   颜色表  显示模式   透明度及线宽
-          var colorTable = new Cesium.ColorTable();
-          if (that.tycindex == 0) {
-            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)
-            );
-            colorTable.insert(
-              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)
-            );
-          }
-          var layer = scene.layers.find("TYCB@BaoPo0621N");
-          var hyp = new Cesium.HypsometricSetting();
-          hyp.MaxVisibleValue = 61;
-          hyp.MinVisibleValue = 30;
-          hyp.ColorTable = colorTable;
-          hyp.DisplayMode = Cesium.HypsometricSettingEnum.DisplayMode.FACE;
-          hyp.Opacity = 0.5;
-          hyp.LineInterval = 1.0;
-          //设置图层分层设色属性
-          layer.hypsometricSetting = {
-            hypsometricSetting: hyp,
-            // CoverageArea: ps,
-            analysisMode:
-              Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL,
-          };
-          that.tycindex += 1;
-          if (that.tycindex >= 3) {
-            that.tycindex = 0;
-          }
-        }, 1000 * 2);
-      }
-    },
-
-    //设置环境光
-    switchLight(isDayLight) {
-      if (isDayLight) {
-        //设置环境光(白天)
-        scene.lightSource.ambientLightColor = new Cesium.Color(
-          0.65,
-          0.65,
-          0.65,
-          1
-        );
       } else {
-        //设置环境光(夜晚)
-        // scene.lightSource.ambientLightColor = new Cesium.Color(0.3, 0.3, 0.3, 1);
-        // 添加光源
-
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.51762123055649,
-        //     18.308419781897452,
-        //     20.784050116021502
-        //   ),
-        //   gyDecay: 5,
-        //   gyDistance: 300,
-        //   gyColor: "rgba(255,255,255,1)",
-        //   gyIntensity: 5,
-        // });
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.51604504373526,
-        //     18.30819674716975,
-        //     15.12013402227458
-        //   ),
-        //   gyDecay: 1,
-        //   gyDistance: 200,
-        //   gyColor: "rgba(255,255,255,1)",
-        //   gyIntensity: 2,
-        // });
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.51119765783854,
-        //     18.311007882958762,
-        //     15.514382420330742
-        //   ),
-        //   gyDecay: 1,
-        //   gyDistance: 200,
-        //   gyColor: "rgba(255,255,255,1)",
-        //   gyIntensity: 2,
-        // });
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.5109719906024,
-        //     18.312138464239744,
-        //     15.514382420330742
-        //   ),
-        //   gyDecay: 1,
-        //   gyDistance: 200,
-        //   gyColor: "rgba(255,255,255,1)",
-        //   gyIntensity: 2,
-        // });
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.5155257151904,
-        //     18.312710967602822,
-        //     15.0056539031313925
-        //   ),
-        //   gyDecay: 1,
-        //   gyDistance: 200,
-        //   gyColor: "rgba(255,255,255,1)",
-        //   gyIntensity: 2,
-        // });
-        // this.addLightSource({
-        //   gyType: "点光源",
-        //   cartesian: new Cesium.Cartesian3.fromDegrees(
-        //     109.51794125594411,
-        //     18.310599330540743,
-        //     14.172257598338254
-        //   ),
-        //   gyDecay: 1,
-        //   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--西南侧光
-        var position = new Cesium.Cartesian3.fromDegrees(
-          108.64028472779978,
-          17.253899597841926,
-          10
-        );
-        var targetPosition1 = new Cesium.Cartesian3.fromDegrees(
-          108.98714556856183,
-          17.660729210061046,
-          10
-        );
-        var dirLightOptions = {
-          targetPosition: targetPosition1,
-          color: new Cesium.Color(220 / 255, 230 / 255, 240 / 255, 0.5),
-          intensity: 1,
-        };
-        directionalLight_1 && scene.removeLightSource(directionalLight_1);
-        directionalLight_1 = new Cesium.DirectionalLight(
-          position,
-          dirLightOptions
-        );
-        scene.addLightSource(directionalLight_1);
-
-        //新增直射光1--东北侧光
-        var position3 = new Cesium.Cartesian3.fromDegrees(
-          110.1833740842942,
-          19.23480287256715,
-          10
-        );
-        var targetPosition3 = new Cesium.Cartesian3.fromDegrees(
-          109.92243671490641,
-          18.823627245617516,
-          10
-        );
-        var dirLightOptions3 = {
-          targetPosition: targetPosition3,
-          color: new Cesium.Color(220 / 255, 223 / 255, 227 / 255, 0.5),
-          intensity: 1.5,
-        };
-        directionalLight_3 && scene.removeLightSource(directionalLight_3);
-        directionalLight_3 = new Cesium.DirectionalLight(
-          position3,
-          dirLightOptions3
-        );
-        scene.addLightSource(directionalLight_3);
-        //新增直射光1--顶光
-        var position4 = new Cesium.Cartesian3.fromDegrees(
-          109.5264539133307,
-          18.2736162462657,
-          500
-        );
-        var targetPosition4 = new Cesium.Cartesian3.fromDegrees(
-          109.5264539133307,
-          18.2736162462657,
-          400
-        );
-        var dirLightOptions4 = {
-          targetPosition: targetPosition4,
-
-          color: Cesium.Color.SILVER.withAlpha(0.5),
-          intensity: 0.1,
-        };
-        directionalLight_4 && scene.removeLightSource(directionalLight_4);
-        directionalLight_4 = new Cesium.DirectionalLight(
-          position4,
-          dirLightOptions4
-        );
-        scene.addLightSource(directionalLight_4);
+        Nightscape.closNightSwitch();
       }
     },
-    //设置白膜自发光纹理
-    setHypsometric(isShow = true) {
-      if (isShow) {
-        scene.layers.layerQueue.forEach((layer) => {
-          let hyp = null;
-          let LayerName = window.NightViewLayerName.find(
-            (c) => c == layer.name
-          );
-          if (LayerName) {
-            // 关掉边框线
-            layer.style3D.fillStyle = Cesium.FillStyle.Fill;
-            hyp = new Cesium.HypsometricSetting();
-            hyp.emissionTextureArray = [
-              {
-                url: "static/images/zt/Nightscape/Texture05.jpg",
-                USpeed: 0.5,
-                VSpeed: 0,
-                UTiling: 1,
-                VTiling: 1,
-              },
-              {
-                url: "static/images/zt/Nightscape/Texture01.jpg",
-                USpeed: 0.5,
-                VSpeed: 0,
-                UTiling: 1,
-                VTiling: 1,
-              },
-
-              {
-                url: "static/images/zt/Nightscape/build008.JPG",
-                USpeed: 0,
-                VSpeed: 0,
-                UTiling: 1,
-                VTiling: 3,
-              },
-              {
-                url: "static/images/zt/Nightscape/build129.JPG",
-                USpeed: 0,
-                VSpeed: 0,
-                UTiling: 1,
-                VTiling: 3,
-              },
-              {
-                url: "static/images/zt/Nightscape/build216.JPG",
-                USpeed: 0,
-                VSpeed: 0,
-                UTiling: 1,
-                VTiling: 3,
-              },
-              // {
-              //   url: "static/images/zt/Nightscape/HighRiseNight0008_4_S.jpg",
-              //   USpeed: 0,
-              //   VSpeed: 0,
-              //   UTiling: 1,
-              //   VTiling: 1,
-              // },
-              // {
-              //   url: "static/images/zt/Nightscape/HighRiseNight0016_3_L.jpg",
-              //   USpeed: 0,
-              //   VSpeed: 0,
-              //   UTiling: 1,
-              //   VTiling: 1,
-              // },
-              // {
-              //   url: "static/images/zt/Nightscape/HighRiseNight0020_L.jpg",
-              //   USpeed: 0,
-              //   VSpeed: 0,
-              //   UTiling: 1,
-              //   VTiling: 1,
-              // },
-            ];
-            layer.hypsometricSetting = {
-              hypsometricSetting: hyp,
-            };
-          }
-        });
-      } else {
-        scene.layers.layerQueue.forEach((layer) => {
-          layer.hypsometricSetting = {
-            hypsometricSetting: undefined,
-          };
-          layer.style3D.fillStyle = Cesium.FillStyle.Fill;
-          // 刷新场景
-          // layer.refresh();
-        });
-      }
-    },
-
-    /**
-     * 流动线
-     */
-    loadldx() {
-      let that = this;
-      Cesium.loadJson(window.NightLightUrl.dlzxx.url).then((jsonData) => {
-        debugger;
-        jsonData.features.forEach((route) => {
-          let list = route.geometry.coordinates.flat(Infinity);
-          debugger;
-          let dl = viewer.entities.add({
-            // 用于打底的线
-            polyline: {
-              positions: Cesium.Cartesian3.fromDegreesArrayHeights(list),
-              width: window.NightLightUrl.dlzxx.lddxWidth, // 线的宽度,像素为单位
-              material: new Cesium.Color(
-                window.NightLightUrl.dlzxx.lddxColor.r,
-                window.NightLightUrl.dlzxx.lddxColor.g,
-                window.NightLightUrl.dlzxx.lddxColor.b,
-                window.NightLightUrl.dlzxx.lddxColor.a
-              ),
-            },
-          });
-          liudongGntities.push(dl);
-          let dls = viewer.entities.add({
-            id: route.properties.OBJECTID,
-            polyline: {
-              positions: Cesium.Cartesian3.fromDegreesArrayHeights(list),
-              width: window.NightLightUrl.dlzxx.ldxWidth,
-              material: new Cesium.PolylineTrailMaterialProperty({
-                outlineColor: new Cesium.Color(
-                  window.NightLightUrl.dlzxx.ldxOutlineColor.r,
-                  window.NightLightUrl.dlzxx.ldxOutlineColor.g,
-                  window.NightLightUrl.dlzxx.ldxOutlineColor.b,
-                  window.NightLightUrl.dlzxx.ldxOutlineColor.a
-                ),
-                outlineWidth: window.NightLightUrl.dlzxx.ldxOutlineWidth,
-                color: new Cesium.Color(
-                  window.NightLightUrl.dlzxx.ldxColor.r,
-                  window.NightLightUrl.dlzxx.ldxColor.g,
-                  window.NightLightUrl.dlzxx.ldxColor.b,
-                  window.NightLightUrl.dlzxx.ldxColor.a
-                ),
-                trailLength: window.NightLightUrl.dlzxx.trailLength,
-                period: window.NightLightUrl.dlzxx.period,
-              }),
-            },
-          });
-          liudongGntities.push(dls);
-        });
-      });
-      //楼顶流动线
-      var liness = [];
-
-      Cesium.loadJson(window.NightLightUrl.buildTopLine.url).then(
-        (jsonData) => {
-          debugger;
-          liness = jsonData;
-          jsonData.features.forEach((route) => {
-            let list = route.geometry.coordinates.flat(Infinity);
-            let topLine = viewer.entities.add({
-              id: route.properties.OBJECTID,
-              polyline: {
-                positions: Cesium.Cartesian3.fromDegreesArrayHeights(list),
-                width: window.NightLightUrl.dlzxx.ldxWidth,
-                material: new Cesium.PolylineTrailMaterialProperty({
-                  outlineColor: new Cesium.Color(
-                    window.NightLightUrl.buildTopLine.ldxOutlineColor.r,
-                    window.NightLightUrl.buildTopLine.ldxOutlineColor.g,
-                    window.NightLightUrl.buildTopLine.ldxOutlineColor.b,
-                    window.NightLightUrl.buildTopLine.ldxOutlineColor.a
-                  ),
-                  outlineWidth: window.NightLightUrl.dlzxx.ldxOutlineWidth,
-                  color: new Cesium.Color(
-                    window.NightLightUrl.buildTopLine.ldxColor.r,
-                    window.NightLightUrl.buildTopLine.ldxColor.g,
-                    window.NightLightUrl.buildTopLine.ldxColor.b,
-                    window.NightLightUrl.buildTopLine.ldxColor.a
-                  ),
-                  trailLength: window.NightLightUrl.buildTopLine.trailLength,
-                  period: window.NightLightUrl.buildTopLine.period,
-                }),
-              },
-            });
-            buildTopLines.push(topLine);
-          });
-        }
-      );
-    },
 
     onSubmit() {
       //更新
@@ -1274,12 +579,8 @@ export default {
     /**
      * 删除灯光
      * @param isRemoveLightSource 是否删除临时灯光
-     * @param isAllRemoveLightSource 是否删除所有灯光
      */
-    clearLightSource(
-      isRemoveLightSource = true,
-      isAllRemoveLightSource = false
-    ) {
+    clearLightSource(isRemoveLightSource = true) {
       for (let key of entityPointLightPairs.keys()) {
         viewer.entities.remove(key);
         if (isRemoveLightSource)
@@ -1300,27 +601,6 @@ export default {
           scene.removeLightSource(entityDirectionalLightPairs.get(key));
       }
       entityDirectionalLightPairs.clear();
-
-      if (isAllRemoveLightSource) {
-        while (scene.lightSource.pointLight.values.length > 0) {
-          scene.removeLightSource(scene.lightSource.pointLight.values[0]);
-        }
-        while (scene.lightSource.spotLight.values.length > 0) {
-          scene.removeLightSource(scene.lightSource.spotLight.values[0]);
-        }
-        while (scene.lightSource.directionalLight.values.length > 0) {
-          scene.removeLightSource(scene.lightSource.directionalLight.values[0]);
-        }
-        GeoJsonLayerList.forEach((element) => {
-          viewer.dataSources.remove(element);
-        });
-        liudongGntities.forEach((element) => {
-          viewer.entities.remove(element);
-        });
-        buildTopLines.forEach((element) => {
-          viewer.entities.remove(element);
-        });
-      }
     },
     cartesianToWgs84(x, y, z) {
       var scene = viewer.scene;
@@ -1359,7 +639,7 @@ export default {
     },
   },
   beforeDestroy() {
-    this.clearLightSource(false, true);
+    this.clearLightSource(false);
     this.startNight(false);
   },
 };

+ 75 - 48
src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue

@@ -1,13 +1,15 @@
 <template>
   <div class="ZTGlobal" style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white">
 
-    <el-row style="border: 1px solid #06c4f3;padding: 0.5rem;color: #ffffff;">
+    <el-row :gutter="5" style="border: 1px solid #06c4f3;padding: 0.5rem;color: #ffffff;">
       定点分析:
-      <el-row :gutter="10">
-        观察者高度(米):
+      <el-row :gutter="5">
+        <el-col :span="10">
+          观察者高度(米):</el-col>
         <el-input-number size="small" label="观察者高度:" min="0" max="50" :step="0.5" precision="1"
           v-model="personH"></el-input-number>
-
+      </el-row>
+      <el-row :gutter="5">
         <el-col :span="8"><el-button size="mini" type="default" @click="addGCD">添加观察点</el-button>
         </el-col>
         <el-col :span="8"><el-button size="mini" type="default" @click="addTagget">添加目标点</el-button>
@@ -16,36 +18,37 @@
           <el-button size="mini" type="default" @click="changeView">切换视角</el-button>
         </el-col>
       </el-row>
+      绿线为可见区域,红线为不可见区域
     </el-row>
-    <el-row style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
+    <el-row :gutter="5" style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
       环视分析:
-      <el-row>
+      <el-row :gutter="5">
         <el-col :span="8"><el-button size="mini" type="default" @click="addCirclePoint">添加环视点</el-button>
         </el-col>
       </el-row>
-      <el-row :gutter="10">
+      <el-row :gutter="5">
         <el-col :span="10">
           环视角度(度): </el-col>
         <el-col :span="10">
           <el-input-number size="mini" v-model="circlePitch" min="0" max="90"
             @change="circlePitchChange"></el-input-number></el-col>
       </el-row>
-      <el-row :gutter="10">
+      <el-row :gutter="5">
         <el-col :span="10">
           环视高度(米):</el-col>
         <el-col :span="10">
           <el-input-number size="mini" v-model="circleH" min="0" max="5000" @change="circleHChange"></el-input-number>
         </el-col>
       </el-row>
-      <el-row :gutter="10">
+      <el-row>
         <el-col :span="8"><el-button ref="flyCrile" size="mini" type="default" @click="targetRing()">{{ flyCircleText
         }}</el-button>
         </el-col>
       </el-row>
     </el-row>
-    <el-row style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
-      沿线飞行:默认50km/h
-      <el-row>
+    <el-row :gutter="5" style="border: 1px solid #06c4f3; padding: 0.5rem;color: #ffffff;">
+      沿线飞行:
+      <el-row :gutter="2">
         <el-col :span="8"><el-button size="mini" type="default" @click="addPolyline">绘制线</el-button>
         </el-col>
         <el-col :span="8"><el-button size="mini" type="default" @click="startPolylineFly">飞行</el-button>
@@ -53,10 +56,20 @@
         <el-col :span="8"><el-button size="mini" type="default" @click="stopPolylineFly">停止飞行</el-button>
         </el-col>
       </el-row>
-      飞行高度:
-      <el-input-number size="small" label="飞行高度:" min="0" max="2000"  v-model="flyH"></el-input-number>
+      <el-row :gutter="2">
+        <el-col :span="10">
+          飞行高度(米):</el-col>
+        <el-input-number size="small" label="飞行高度:" min="0" max="2000" v-model="flyH"></el-input-number>
+      </el-row>
+      <el-row :gutter="2">
+        <el-col :span="10">
+          飞行速度(km/h):</el-col>
+        <el-input-number size="small" label="飞行速度:" min="0" max="120" v-model="flySpeed"></el-input-number>
+      </el-row>
+    </el-row>
+    <el-row>
     </el-row>
-    <el-row :gutter="10">
+    <el-row :gutter="5">
       <el-col :span="8">
         <el-button size="mini" type="default" @click="clearScope">清除</el-button>
       </el-col>
@@ -75,11 +88,12 @@ import {
 let handlerPoint = null; //绘制线
 var sightline;
 var flyManager;
+var points = [];
 export default {
   data() {
     return {
       tooltip: createTooltip(document.body),
-      points: [],
+
       addViewFlag: false, //当前点击状态是否是 添加观察点
       addTargetFlag: false, //当前点击状态是否是 添加目标点,
 
@@ -94,6 +108,7 @@ export default {
       circlePitch: 75,
       circleH: 500,
       flyH: 20,
+      flySpeed: 50,
       lineFylPoints: []
     };
   },
@@ -155,7 +170,6 @@ export default {
       var height = cartographic.height;
       return [longitude, latitude, height];
     },
-
     /**
      * 添加目标点
      */
@@ -163,19 +177,22 @@ export default {
       let that = this;
       that.addViewFlag = false;
       that.addTargetFlag = true;
-
       that.addCircleFlag = false
-
       that.setInput();
     },
+    /**
+     * 添加环视点
+     */
     addCirclePoint() {
       let that = this;
       that.addViewFlag = false;
       that.addTargetFlag = false;
       that.addCircleFlag = true
-
       that.setInput();
     },
+    /**
+     * 输入点
+     */
     setInput() {
       var that = this;
       handlerPoint = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);
@@ -184,9 +201,7 @@ export default {
         var point = result.object;
         // point.show = false;
         var position = result.object.position;
-
         debugger;
-
         //将获取的点的位置转化成经纬度
         var cartographic = that.Cartesian2toDegrees(position);
         if (cartographic[2] < 0) cartographic[2] = 0;
@@ -237,7 +252,7 @@ export default {
           // that.points.push(entity)
           // viewer.entities.add(entity);
           that.gcPoint = cartographic;
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
         } else if (that.addTargetFlag) {
           //添加目标点
@@ -280,10 +295,9 @@ export default {
               ), //达到一定高度隐藏
             },
           });
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
           that.addTargetFlag = false;
-
           that.targetPoint = cartographic;
           sightline.build();
           that.ComputationalPerspective();
@@ -323,7 +337,7 @@ export default {
               ), //达到一定高度隐藏
             },
           });
-          that.points.push(labelentity);
+          points.push(labelentity);
           viewer.entities.add(labelentity);
           that.addCircleFlag = false;
           that.circlPoint = cartographic;
@@ -340,8 +354,10 @@ export default {
       var point1;
       var point2;
       debugger
-      if (sightline.viewPosition[0] == 0 || sightline.viewPosition[1] == 0 || sightline._currentTargetPoint[0] == 0 || sightline._currentTargetPoint[1] == 0)
+      if (sightline.viewPosition[0] == 0 || sightline.viewPosition[1] == 0 || sightline._currentTargetPoint[0] == 0 || sightline._currentTargetPoint[1] == 0) {
+        this.$message.warning("请添加观察点或目标点")
         return;
+      }
       if (this.isFrom2To) {
         point1 = [
           sightline.viewPosition[0],
@@ -367,7 +383,6 @@ export default {
         point1[2] += this.personH;
         point2[2] -= this.personH;
       }
-
       var positionA = Cesium.Cartesian3.fromDegrees(
         point1[0],
         point1[1],
@@ -403,9 +418,12 @@ export default {
       this.isFrom2To = !this.isFrom2To;
       this.ComputationalPerspective();
     },
+    /**
+     * 停止飞行、漫游、清除图元
+     */
     clearScope() {
       viewer.entities.removeAll();
-      this.points = [];
+      points = [];
       sightline.removeAllTargetPoint();
       if (handlerPoint) {
         handlerPoint.clear();
@@ -423,10 +441,8 @@ export default {
      * 目标点环视
      */
     targetRing() {
-
       var that = this
       that.flyCircleLoop = !that.flyCircleLoop;
-
       if (that.circlPoint) {
         var position = Cesium.Cartesian3.fromDegrees(that.circlPoint[0], that.circlPoint[1], that.circlPoint[2] + 1000)
         // scene.camera.zoomIn(500)
@@ -434,13 +450,17 @@ export default {
           destination: position,
           orientation: {
             heading: Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
-            pitch: Cesium.Math.toRadians(-75),    // default value (looking down)
+            pitch: Cesium.Math.toRadians(that.circlePitch * -1),    // default value (looking down)
             roll: 0.0                             // default value
           }
         })
         scene.camera.flyCircle(position)
         scene.camera.speedRatio = 0.2
       }
+      else {
+        that.$message.warning('请添加环视点!');
+        return;
+      }
       // scene.camera.flyCircleLoop = that.flyCircleLoop;
       if (that.flyCircleLoop == true) {
         that.flyCircleText = '停止环视'
@@ -449,8 +469,10 @@ export default {
         that.flyCircleText = '环视漫游'
         scene.camera.stopFlyCircle()
       }
-
     },
+    /**
+     * 修改环视高度
+     */
     circleHChange() {
       scene.camera.setView({
         destination: Cesium.Cartesian3.fromDegrees(this.circlPoint[0], this.circlPoint[1], this.circlPoint[2] + Number(this.circleH)),
@@ -461,8 +483,10 @@ export default {
         }
       })
     },
+    /**
+     * 修改环视角度
+     */
     circlePitchChange() {
-
       scene.camera.setView({
         destination: Cesium.Cartesian3.fromDegrees(this.circlPoint[0], this.circlPoint[1], this.circlPoint[2] + Number(this.circleH)),
         orientation: {
@@ -472,6 +496,9 @@ export default {
         }
       })
     },
+    /**
+     * 绘制飞行线
+     */
     addPolyline() {
       var that = this;
       that.lineFylPoints = []
@@ -487,21 +514,23 @@ export default {
           that.lineFylPoints.push(cartographic);
         }
         //将获取的点的位置转化成经纬度
-
         handlerPoint.deactivate();
       })
     },
+    /**
+     * 开始沿线飞行
+     */
     startPolylineFly() {
       var that = this;
-      if (that.lineFylPoints == null || that.length == 0) {
+      if (that.lineFylPoints == null || that.lineFylPoints.length == 0) {
         that.$message.warning('请绘制飞行路线!');
-        return
+        return;
       }
       debugger
-
+      var speed = Number(that.flySpeed) / 3.6;
       var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
         '<SceneRoute xmlns = "https://www.supermap.com/ugc60" >' +
-        '<route name="飞行路线_1" speed="13.888888888889" lineType="0" showroutestop="False" showrouteline="False" altitudefree="False" headingfree="False" tiltfree="False" flycircle="False" alongline="True">' +
+        '<route name="飞行路线_1" speed="' + speed + '" lineType="0" showroutestop="False" showrouteline="False" altitudefree="False" headingfree="False" tiltfree="False" flycircle="False" alongline="True">' +
         '<style>' +
         '<geostyle3d>' +
         '<linecolor>RGBA(147,112,219,255)</linecolor>' +
@@ -540,7 +569,6 @@ export default {
       })
       xml += '</route>'
       xml += '</SceneRoute >'
-
       var routes = new Cesium.RouteCollection(viewer.entities);
       routes.fromXML(xml);
       //初始化飞行管理
@@ -554,28 +582,23 @@ export default {
       });
       flyManager.readyPromise.then(function () { // 飞行路线就绪
         var currentRoute = flyManager.currentRoute;
+        console.log(currentRoute.totalDuration + "秒")
         currentRoute.isLineVisible = false;
         currentRoute.isStopVisible = false;
         //生成飞行文件中的所有站点列表
         // var allStops = flyManager.getAllRouteStops();
         flyManager && flyManager.play();
       })
-
-
     },
     /**
-     * 
+     * 停止沿线飞行
      */
     stopPolylineFly() {
       var allStops = flyManager.getAllRouteStops();
       flyManager.viewToStop(allStops[allStops.length - 1])
       flyManager && flyManager.stop();
-
     }
-
-
   },
-
   beforeDestroy() {
     this.clearScope();
   },
@@ -584,4 +607,8 @@ export default {
 <style lang="scss">
 @import "@/../../zt.scss";
 </style>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.ZTGlobal .el-row {
+  margin-bottom: 0.3rem;
+}
+</style>

+ 123 - 60
src/views/ConstructionApplication3D/SunlightAnalysis/SunlightAnalysis.vue

@@ -131,24 +131,39 @@
       </el-col>
     </el-row>
     <div class="SaveCenter">
-      <el-button size="mini" type="primary" @click="onSubmit"
-        >日照时长分析</el-button
-      >
-      <el-tooltip
-        effect="dark"
-        content="日照时长结果生成后,调整地图到合适位置,然后导出"
-        placement="top"
-      >
-        <el-button
-          size="mini"
-          type="primary"
-          :disabled="sdh.length == 0 ? true : false"
-          @click="ExportResult"
-          >导出结果</el-button
-        >
-      </el-tooltip>
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-button size="mini" type="primary" @click="onSubmit"
+            >自定义日照分析</el-button
+          >
+          <el-button size="mini" type="primary" @click="onDHSubmit"
+            >大寒日</el-button
+          >
+
+          <el-button size="mini" type="primary" @click="onDZSubmit"
+            >冬至日</el-button
+          >
+        </el-col>
+      </el-row>
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-tooltip
+            effect="dark"
+            content="日照时长结果生成后,调整地图到合适位置,然后导出"
+            placement="top"
+          >
+            <el-button
+              size="mini"
+              type="primary"
+              :disabled="sdh.length == 0 ? true : false"
+              @click="ExportResult"
+              >导出结果</el-button
+            >
+          </el-tooltip>
 
-      <el-button size="mini" @click="resetForm">清除</el-button>
+          <el-button size="mini" @click="resetForm">清除</el-button>
+        </el-col>
+      </el-row>
     </div>
     <el-row :gutter="10">
       <el-col :span="24">
@@ -156,7 +171,7 @@
           <el-descriptions-item
             v-for="item in sdh"
             :key="item"
-            :label="item.scS + '-' + item.scE + '小时'"
+            :label="item.scS + ' 小时'"
             ><div
               style="width: 4.5rem; height: 100%"
               :style="{ 'background-color': item.fill }"
@@ -192,7 +207,6 @@
 let handlerPolygon = null,
   layers = null,
   shadowQuery = null,
-  handlerClick = null,
   markedPoints = [];
 import {
   point,
@@ -216,6 +230,7 @@ import {
   undergroundMode,
 } from "@/utils/MapHelper/MapHelper.js";
 import { v4 as uuidv4 } from "uuid";
+import moment from "moment";
 export default {
   data() {
     return {
@@ -231,7 +246,14 @@ export default {
         x: 0,
         y: 0,
       },
-      sdh: [],
+      sdh: [
+        { scS: "0", fill: "#313695" },
+        { scS: "1", fill: "#1E90A8" },
+        { scS: "2", fill: "#00B457" },
+        { scS: "3", fill: "#B7FF01" },
+        { scS: "4", fill: "#F2A705" },
+        { scS: ">=5", fill: "#FF0000" },
+      ],
       loading: false,
       datavalue: [10, 14],
       positions: [],
@@ -280,7 +302,6 @@ export default {
   },
   computed: {},
   mounted() {
-    debugger;
     this.multiViewportMode = scene.multiViewportMode + 1;
 
     this.init();
@@ -304,14 +325,37 @@ export default {
       this.dqSunlight();
     },
 
-    //提交数据
+    //自定义日照
     onSubmit() {
       this.analysis();
     },
+    //大寒日
+    onDHSubmit() {
+      debugger;
+      this.form.selDate = new Date(new Date().getFullYear() + "-01-20");
+      this.datavalue = [9, 15];
+      this.analysis();
+    },
+    //冬至日
+    onDZSubmit() {
+      //       冬至日期(东八区)的计算公式:(y×d+c)-l
+      //   公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=21.94,20世纪=22.60。
+      //   举例说明:2088年冬至日期=[88×0.2422+21.94]-[88/4]=43-22=21,12月21日冬至。
+      //   例外:1918年和2021年的计算结果减1日。
+      debugger;
+      let lastTwoDigitsOfYear = moment().format("YY");
+      let rns = lastTwoDigitsOfYear / 4;
+      let sjs = 21.94;
+      let dzr = Math.floor(lastTwoDigitsOfYear * 0.2422 + sjs - rns);
+      this.form.selDate = new Date(new Date().getFullYear() + "-12-" + dzr);
+
+      this.datavalue = [9, 15];
+      this.analysis();
+    },
     //清空from
     resetForm() {
       this.clear();
-      this.clearmarkedPoints();
+      // this.clearmarkedPoints();
     },
     /**
      * 开始分析
@@ -482,23 +526,22 @@ export default {
               sdsd.push(sd);
             });
             let gsd = that.setIsoline(sdsd);
-            that.sdh = [];
+            // 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 });
+              // 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();
                 debugger;
+                let ps = polygon[0].flat();
                 let id = uuidv4();
                 that.eids.push(id);
                 viewer.entities.add({
@@ -507,11 +550,11 @@ export default {
                     hierarchy: Cesium.Cartesian3.fromDegreesArray(ps),
                     material: new Cesium.Color.fromCssColorString(
                       element.properties.fill
-                    ).withAlpha(0.5),
+                    ).withAlpha(0.9),
                     height: gd + 1,
-                    outline: true,
-                    outlineColor: Cesium.Color.BLACK,
-                    outlineWidth: 2.0,
+                    outline: false,
+                    // outlineColor: Cesium.Color.BLACK,
+                    // outlineWidth: 2.0,
                     // classificationType: Cesium.ClassificationType.TERRAIN,
                   },
                 });
@@ -558,7 +601,13 @@ export default {
         shadowQuery.startTime = Cesium.JulianDate.fromDate(st);
 
         var et = new Date(dateValue);
-        et.setHours(Number(that.form.endTime));
+        let endTime = 0;
+        if (that.form.startTime != that.form.endTime) {
+          endTime = that.form.endTime - 1;
+        } else {
+          endTime = that.form.endTime;
+        }
+        et.setHours(Number(endTime));
         shadowQuery.endTime = Cesium.JulianDate.fromDate(et);
 
         //设置当前时间
@@ -649,7 +698,7 @@ export default {
         // 绘制文本
         ctx.fillStyle = "black";
         ctx.fillText(
-          legend.scS + "-" + legend.scE + "小时",
+          legend.scS + "小时",
           x,
           y + index * lineHeight + lineHeight / 2
         );
@@ -681,9 +730,9 @@ export default {
       };
     },
     clear() {
-      viewer.entities.removeAll();
-      this.form.x = 0;
-      this.form.y = 0;
+      // viewer.entities.removeAll();
+      // this.form.x = 0;
+      // this.form.y = 0;
       this.tableData = [];
       if (handlerPolygon) {
         handlerPolygon.clear();
@@ -698,7 +747,7 @@ export default {
       this.positions = [];
       this.points = [];
 
-      this.sdh = [];
+      // this.sdh = [];
       this.eids = [];
     },
     //结束时日照阴影
@@ -746,7 +795,6 @@ export default {
     },
     //日照列表行被点击
     rowClick(row, column, event) {
-      debugger;
       this.clearmarkedPoints();
       var markedPoint = viewer.entities.add(
         new Cesium.Entity({
@@ -811,6 +859,33 @@ export default {
     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];
+      let breaksProperties = [];
+      for (let index = 0; index < breaks.length; index++) {
+        let time1 = Math.ceil(
+          (this.datavalue[1] - this.datavalue[0]) * breaks[index]
+        );
+        switch (time1) {
+          case 0:
+            breaksProperties.push(this.sdh[0]);
+            break;
+          case 1:
+            breaksProperties.push(this.sdh[1]);
+            break;
+          case 2:
+            breaksProperties.push(this.sdh[2]);
+            break;
+          case 3:
+            breaksProperties.push(this.sdh[3]);
+            break;
+          case 4:
+            breaksProperties.push(this.sdh[4]);
+            break;
+          default:
+            breaksProperties.push(this.sdh[5]);
+            break;
+        }
+      }
+
       const interpolateOptions = {
         gridType: "points",
         property: "value",
@@ -822,19 +897,7 @@ export default {
         // 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" },
-        ],
+        breaksProperties: breaksProperties,
       };
       // 准备工作结束
 

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

@@ -17,7 +17,7 @@
               :key="DKZBData"
             >
               <el-col :span="24">
-                规划地块:{{ DKZBData.DKBM }}-{{ DKZBData.MName }}&nbsp;&nbsp;
+                规划地块:{{ DKZBData.DKBM }}({{ DKZBData.MName }})&nbsp;&nbsp;
                 <el-button
                   size="mini"
                   type="default"
@@ -41,11 +41,24 @@
                       {{ row.tjfazb }}
                     </template>
                   </el-table-column>
-                  <el-table-column label="核算指标" align="center">
+                  <el-table-column label="自动核算指标" align="center">
                     <template #default="{ row }">
                       {{ row.fazbyg }}
                     </template>
                   </el-table-column>
+                  <el-table-column
+                    label="人工核算指标"
+                    align="center"
+                    width="130"
+                  >
+                    <template #default="{ row }">
+                      <el-input
+                        v-model="row.rghszb"
+                        size="small"
+                        @blur="handleSave(row)"
+                      ></el-input>
+                    </template>
+                  </el-table-column>
                   <el-table-column label="控规要求" align="center">
                     <template #default="{ row }">
                       {{ row.kgyq }}
@@ -70,6 +83,7 @@
 
 <script>
 import detailedInfo from "./detailedInfo.vue";
+import { v4 as uuidv4 } from "uuid";
 export default {
   data() {
     return {
@@ -106,8 +120,10 @@ export default {
     this.init();
   },
   methods: {
-    async init() {
+    init() {
       let that = this;
+      that.MXDKZBDataList = [];
+      debugger;
       this.info.tableDataList.forEach((element) => {
         let DKZBDataList = [];
         for (let Datai = 0; Datai < element.length; Datai++) {
@@ -117,13 +133,28 @@ export default {
             MName: Data.Minfo.modelname,
             DKBM: Data.KG_Data.DKBM,
           };
+          //人工核算指标
+          let rgzb =
+            window.project_model_zb.find((c) => c.dkbm == DKZBData.DKBM) || {};
+          let rgzbid = rgzb.id ? rgzb.id : uuidv4();
           let TableData = [];
           let YDMJrow = {};
           YDMJrow.zbmc = "用地总面积";
           YDMJrow.fazbyg = Number(Data.FA_Data.YDMJ).toFixed(2);
           YDMJrow.kgyq = Number(Data.KG_Data.YDMJ).toFixed(2);
-          if (YDMJrow.fazbyg && YDMJrow.kgyq) {
-            if (Number(Data.KG_Data.YDMJ) >= Number(Data.FA_Data.YDMJ)) {
+
+          if (!rgzb.YDMJ) {
+            rgzb.YDMJ = YDMJrow.fazbyg;
+            YDMJrow.rghszb = YDMJrow.fazbyg;
+            YDMJrow.rgzbid = rgzbid;
+            YDMJrow.rgzbName = "YDMJ";
+          } else {
+            YDMJrow.rghszb = rgzb.YDMJ;
+            YDMJrow.rgzbid = rgzbid;
+            YDMJrow.rgzbName = "YDMJ";
+          }
+          if (YDMJrow.kgyq && YDMJrow.rghszb) {
+            if (Number(YDMJrow.kgyq) >= Number(YDMJrow.rghszb)) {
               YDMJrow.jl = true;
             } else {
               YDMJrow.jl = false;
@@ -139,8 +170,19 @@ export default {
           JZMJrow.tjfazb = Number(Data.TJFA_Data.JZMJ).toFixed(2);
           JZMJrow.fazbyg = Number(Data.FA_Data.JZMJ).toFixed(2);
           JZMJrow.kgyq = Number(Data.KG_Data.JZMJ).toFixed(2);
-          if (JZMJrow.fazbyg && JZMJrow.kgyq) {
-            if (Number(Data.KG_Data.JZMJ) >= Number(Data.FA_Data.JZMJ)) {
+
+          if (!rgzb.JZMJ) {
+            rgzb.JZMJ = JZMJrow.fazbyg;
+            JZMJrow.rghszb = JZMJrow.fazbyg;
+            JZMJrow.rgzbid = rgzbid;
+            JZMJrow.rgzbName = "JZMJ";
+          } else {
+            JZMJrow.rghszb = rgzb.JZMJ;
+            JZMJrow.rgzbid = rgzbid;
+            JZMJrow.rgzbName = "JZMJ";
+          }
+          if (JZMJrow.kgyq && JZMJrow.rghszb) {
+            if (Number(JZMJrow.kgyq) >= Number(JZMJrow.rghszb)) {
               JZMJrow.jl = true;
             } else {
               JZMJrow.jl = false;
@@ -155,8 +197,18 @@ export default {
           JDMJrow.zbmc = "基底面积";
           JDMJrow.fazbyg = Number(Data.FA_Data.JDMJ).toFixed(2);
           JDMJrow.kgyq = Data.KG_Data.JDMJ;
-          if (JDMJrow.fazbyg && JDMJrow.kgyq) {
-            if (Number(Data.KG_Data.JDMJ) >= Number(Data.FA_Data.JDMJ)) {
+          if (!rgzb.JDMJ) {
+            rgzb.JDMJ = JDMJrow.fazbyg;
+            JDMJrow.rghszb = JDMJrow.fazbyg;
+            JDMJrow.rgzbid = rgzbid;
+            JDMJrow.rgzbName = "JDMJ";
+          } else {
+            JDMJrow.rghszb = rgzb.JDMJ;
+            JDMJrow.rgzbid = rgzbid;
+            JDMJrow.rgzbName = "JDMJ";
+          }
+          if (JDMJrow.rghszb && JDMJrow.kgyq) {
+            if (Number(JDMJrow.kgyq) >= Number(JDMJrow.rghszb)) {
               JDMJrow.jl = true;
             } else {
               JDMJrow.jl = false;
@@ -172,16 +224,27 @@ export default {
           JRJZMJrow.tjfazb = Number(Data.TJFA_Data.JRJZMJ).toFixed(2);
           JRJZMJrow.fazbyg = Number(Data.FA_Data.JRJZMJ).toFixed(2);
           debugger;
+
           if (Data.KG_Data.JRJZMJX && Data.KG_Data.JRJZMJD) {
             JRJZMJrow.kgyq = Data.KG_Data.JRJZMJX + "/" + Data.KG_Data.JRJZMJD;
           } else {
             JRJZMJrow.kgyq = "";
           }
+          if (!rgzb.JRJZMJ) {
+            rgzb.JRJZMJ = JRJZMJrow.fazbyg;
+            JRJZMJrow.rghszb = JRJZMJrow.fazbyg;
+            JRJZMJrow.rgzbid = rgzbid;
+            JRJZMJrow.rgzbName = "JRJZMJ";
+          } else {
+            JRJZMJrow.rghszb = rgzb.JRJZMJ;
+            JRJZMJrow.rgzbid = rgzbid;
+            JRJZMJrow.rgzbName = "JRJZMJ";
+          }
 
-          if (JRJZMJrow.fazbyg && JRJZMJrow.kgyq) {
+          if (JRJZMJrow.rghszb && JRJZMJrow.kgyq) {
             if (
-              Number(Data.FA_Data.JRJZMJ) >= Number(Data.KG_Data.JRJZMJX) &&
-              Number(Data.FA_Data.JRJZMJ) <= Number(Data.KG_Data.JRJZMJD)
+              Number(JRJZMJrow.rghszb) >= Number(Data.KG_Data.JRJZMJX) &&
+              Number(JRJZMJrow.rghszb) <= Number(Data.KG_Data.JRJZMJD)
             ) {
               JRJZMJrow.jl = true;
             } else {
@@ -197,10 +260,22 @@ export default {
           RJLrow.zbmc = "容积率";
           RJLrow.fazbyg = Data.FA_Data.RJL;
           RJLrow.kgyq = Data.KG_Data.RJLX + "/" + Data.KG_Data.RJLD;
-          if (RJLrow.fazbyg && RJLrow.kgyq) {
+
+          if (!rgzb.RJL) {
+            rgzb.RJL = RJLrow.fazbyg;
+            RJLrow.rghszb = RJLrow.fazbyg;
+            RJLrow.rgzbid = rgzbid;
+            RJLrow.rgzbName = "RJL";
+          } else {
+            RJLrow.rghszb = rgzb.RJL;
+            RJLrow.rgzbid = rgzbid;
+            RJLrow.rgzbName = "RJL";
+          }
+
+          if (RJLrow.rghszb && RJLrow.kgyq) {
             if (
-              Number(Data.FA_Data.RJL) >= Number(Data.KG_Data.RJLX) &&
-              Number(Data.FA_Data.RJL) <= Number(Data.KG_Data.RJLD)
+              Number(RJLrow.rghszb) >= Number(Data.KG_Data.RJLX) &&
+              Number(RJLrow.rghszb) <= Number(Data.KG_Data.RJLD)
             ) {
               RJLrow.jl = true;
             } else {
@@ -214,10 +289,20 @@ export default {
           JZMDrow.zbmc = "建筑密度";
           JZMDrow.fazbyg = Data.FA_Data.JZMD;
           JZMDrow.kgyq = Data.KG_Data.JZMDX + "/" + Data.KG_Data.JZMDD;
-          if (JZMDrow.fazbyg && JZMDrow.kgyq) {
+          if (!rgzb.JZMD) {
+            rgzb.JZMD = JZMDrow.fazbyg;
+            JZMDrow.rghszb = JZMDrow.fazbyg;
+            JZMDrow.rgzbid = rgzbid;
+            JZMDrow.rgzbName = "JZMD";
+          } else {
+            JZMDrow.rghszb = rgzb.JZMD;
+            JZMDrow.rgzbid = rgzbid;
+            JZMDrow.rgzbName = "JZMD";
+          }
+          if (JZMDrow.rghszb && JZMDrow.kgyq) {
             if (
-              Number(Data.FA_Data.JZMD) >= Number(Data.KG_Data.JZMDX) &&
-              Number(Data.FA_Data.JZMD) <= Number(Data.KG_Data.JZMDD)
+              Number(JZMDrow.rghszb) >= Number(Data.KG_Data.JZMDX) &&
+              Number(JZMDrow.rghszb) <= Number(Data.KG_Data.JZMDD)
             ) {
               JZMDrow.jl = true;
             } else {
@@ -233,10 +318,20 @@ export default {
           JZXGDrow.zbmc = "建筑限高";
           JZXGDrow.fazbyg = Data.FA_Data.JZGD;
           JZXGDrow.kgyq = Data.KG_Data.JZXGX + "/" + Data.KG_Data.JZXGD;
-          if (JZXGDrow.fazbyg && JZXGDrow.kgyq) {
+          if (!rgzb.JZGD) {
+            rgzb.JZGD = JZXGDrow.fazbyg;
+            JZXGDrow.rghszb = JZXGDrow.fazbyg;
+            JZXGDrow.rgzbid = rgzbid;
+            JZXGDrow.rgzbName = "JZGD";
+          } else {
+            JZXGDrow.rghszb = rgzb.JZGD;
+            JZXGDrow.rgzbid = rgzbid;
+            JZXGDrow.rgzbName = "JZGD";
+          }
+          if (JZXGDrow.rghszb && JZXGDrow.kgyq) {
             if (
-              Number(Data.FA_Data.JZGD) >= Number(Data.KG_Data.JZXGX) &&
-              Number(Data.FA_Data.JZGD) <= Number(Data.KG_Data.JZXGD)
+              Number(JZXGDrow.rghszb) >= Number(Data.KG_Data.JZXGX) &&
+              Number(JZXGDrow.rghszb) <= Number(Data.KG_Data.JZXGD)
             ) {
               JZXGDrow.jl = true;
             } else {
@@ -246,6 +341,14 @@ export default {
             JZXGDrow.jl = null;
           }
 
+          if (!rgzb.id) {
+            rgzb.id = rgzbid;
+            rgzb.dkbm = DKZBData.DKBM;
+            //这里替换为后台添加表,现在纯前台,自动更新更新
+            window.project_model_zb.push(rgzb);
+          } else {
+            //这里添加后台修改表,现在纯前台,自动更新更新
+          }
           TableData.push(JZXGDrow);
           DKZBData.TableData = TableData;
           DKZBDataList.push(DKZBData);
@@ -253,6 +356,14 @@ export default {
         that.MXDKZBDataList.push(DKZBDataList);
       });
     },
+    handleSave(row) {
+      debugger;
+      let rgzb = window.project_model_zb.find((c) => c.id == row.rgzbid);
+      if (rgzb) {
+        rgzb[row.rgzbName] = row.rghszb;
+        this.init();
+      }
+    },
     /**
      * 弹窗显示详情
      * @param infoData

+ 4 - 1
src/views/ConstructionApplication3D/ZBFXAnalysisinfo/detailedInfo.vue

@@ -169,11 +169,14 @@ export default {
 <style lang="scss">
 @import "@/../../zt.scss";
 </style>
-<style lang="scss" scoped>
+<style scoped>
 .el-card {
   border: 0px solid #02a7f0;
 }
 .el-form-item {
   margin-bottom: 0;
 }
+.el-table >>> .el-table__expand-icon {
+  color: white;
+}
 </style>

+ 136 - 2
src/views/ConstructionApplication3D/backLineAnalysis/backLineAnalysisinfo.vue

@@ -44,6 +44,140 @@
         </el-table>
       </el-col>
     </el-row>
+    <el-row :gutter="10">
+      <el-col :span="24">
+        <el-descriptions border size="mini" :column="2">
+          <el-descriptions-item label="用地红线">
+            <div
+              style="
+                width: 4.5rem;
+                height: 1rem;
+                overflow: hidden;
+                position: relative;
+              "
+            >
+              <div
+                style="
+                  position: absolute;
+                  top: 50%;
+                  left: 0;
+                  right: 0;
+                  height: 1rem; /* 实际上这里的高度被border替代了,所以可以设置为0 */
+                  transform: translateY(-50%);
+                  margin: 0; /* 去除可能的默认margin */
+                  padding: 0; /* 去除可能的默认padding */
+                "
+                :style="{ borderTop: '0.3rem solid #ff0000' }"
+              ></div>
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="建筑推线面"
+            ><div
+              style="width: 4.5rem; height: 100%"
+              :style="{ 'background-color': '#7FFF009C' }"
+            >
+              &nbsp;
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="道路红线">
+            <div
+              style="
+                width: 4.5rem;
+                height: 1rem;
+                overflow: hidden;
+                position: relative;
+              "
+            >
+              <div
+                style="
+                  position: absolute;
+                  top: 50%;
+                  left: 0;
+                  right: 0;
+                  height: 1rem; /* 实际上这里的高度被border替代了,所以可以设置为0 */
+                  transform: translateY(-50%);
+                  margin: 0; /* 去除可能的默认margin */
+                  padding: 0; /* 去除可能的默认padding */
+                "
+                :style="{ borderTop: '0.3rem solid #ADFF2F' }"
+              ></div>
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="禁止开口线">
+            <div
+              style="
+                width: 4.5rem;
+                height: 1rem;
+                overflow: hidden;
+                position: relative;
+              "
+            >
+              <div
+                style="
+                  position: absolute;
+                  top: 50%;
+                  left: 0;
+                  right: 0;
+                  height: 1rem; /* 实际上这里的高度被border替代了,所以可以设置为0 */
+                  transform: translateY(-50%);
+                  margin: 0; /* 去除可能的默认margin */
+                  padding: 0; /* 去除可能的默认padding */
+                "
+                :style="{ borderTop: '0.3rem solid #FF0000' }"
+              ></div>
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="道路中线(现有)">
+            <div
+              style="
+                width: 4.5rem;
+                height: 1rem;
+                overflow: hidden;
+                position: relative;
+              "
+            >
+              <div
+                style="
+                  position: absolute;
+                  top: 50%;
+                  left: 0;
+                  right: 0;
+                  height: 1rem; /* 实际上这里的高度被border替代了,所以可以设置为0 */
+                  transform: translateY(-50%);
+                  margin: 0; /* 去除可能的默认margin */
+                  padding: 0; /* 去除可能的默认padding */
+                "
+                :style="{ borderTop: '0.3rem solid #00FFFF' }"
+              ></div>
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="道路中线(规划)">
+            <div
+              style="
+                width: 4.5rem;
+                height: 1rem;
+                overflow: hidden;
+                position: relative;
+              "
+            >
+              <div
+                style="
+                  position: absolute;
+                  top: 50%;
+                  left: 0;
+                  right: 0;
+                  height: 1rem; /* 实际上这里的高度被border替代了,所以可以设置为0 */
+                  transform: translateY(-50%);
+                  margin: 0; /* 去除可能的默认margin */
+                  padding: 0; /* 去除可能的默认padding */
+                "
+                :style="{ borderTop: '0.3rem dashed #00FFFF' }"
+              ></div>
+            </div>
+          </el-descriptions-item>
+        </el-descriptions>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
@@ -104,12 +238,12 @@ export default {
       //查询当前项目建筑轮廓范围
       this.cczmj = 0;
       let jzlkList = [];
-      if (this.info.Minfo.dataurl && this.info.Minfo.dataSourceName) {
+      if (this.info.Minfo.dataurl && this.info.Minfo.datasourcename) {
         if (this.info.DKBM.length > 0) {
           debugger;
           let queryByGeometryParameters = {
             getFeatureMode: "SQL",
-            datasetNames: [this.info.Minfo.dataSourceName + ":" + "建筑轮廓"],
+            datasetNames: [this.info.Minfo.datasourcename + ":" + "建筑轮廓"],
             queryParameter: {
               attributeFilter:
                 "LANDNO in ('" + this.info.DKBM.join("','") + "')",

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

@@ -13,9 +13,11 @@
       <el-col :span="9"> <span>广告类型:</span></el-col>
       <el-col :span="15">
         <el-cascader
+          ref="billboardTypeCascader"
           size="mini"
           placeholder="请选择广告类型"
           v-model="billboardModel.billboardType"
+          @change="changeBillboardType"
           :options="options"
           :show-all-levels="false"
           :props="{
@@ -218,7 +220,6 @@
 </template>
 <script>
 import { Image } from "element-ui";
-import { watch } from "vue";
 import { v4 as uuidv4 } from "uuid";
 /**
  * 添加的模型集合
@@ -501,6 +502,17 @@ export default {
 
       return property;
     },
+    /**
+     * 类型修改时触发
+     */
+    changeBillboardType(item) {
+      debugger;
+
+      let sds = this.$refs["billboardTypeCascader"].getCheckedNodes().data;
+      if (sds) {
+      }
+      let sd = item;
+    },
     /**
      * 保存编辑
      */

+ 6 - 6
src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue

@@ -427,9 +427,9 @@ export default {
                       var queryByGeometryParameters = {
                         getFeatureMode: "BUFFER",
                         datasetNames: [
-                          layer.date_server.dataSourceName +
+                          layer.date_server.datasourcename +
                             ":" +
-                            layer.date_server.datasetName,
+                            layer.date_server.datasetname,
                         ],
                         geometry: {
                           parts: [1],
@@ -513,9 +513,9 @@ export default {
                       var queryByGeometryParameters = {
                         getFeatureMode: "BUFFER",
                         datasetNames: [
-                          layer.date_server.dataSourceName +
+                          layer.date_server.datasourcename +
                             ":" +
-                            layer.date_server.datasetName,
+                            layer.date_server.datasetname,
                         ],
                         geometry: {
                           parts: [1],
@@ -657,9 +657,9 @@ export default {
       let queryBySQLParameters = {
         getFeatureMode: "BUFFER",
         datasetNames: [
-          window.billboardModelLT.dataSourceName +
+          window.billboardModelLT.datasourcename +
             ":" +
-            window.billboardModelLT.datasetName,
+            window.billboardModelLT.datasetname,
         ],
         geometry: {
           parts: [1],

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

@@ -513,7 +513,7 @@ export default {
       //获取模型信息
       let queryBySQLParameters = {
         getFeatureMode: "SQL",
-        datasetNames: [Minfo.dataSourceName + ":项目范围"],
+        datasetNames: [Minfo.datasourcename + ":项目范围"],
         queryParameter: {
           attributeFilter: "1=1",
         },

+ 118 - 123
src/views/ConstructionApplication3D/parkCheck/parkResult.vue

@@ -1,134 +1,129 @@
 <template>
-    <div class="ZTGlobal" style="padding: 1rem;font-size: small;">
-        <el-table :data="tableData" :header-cell-style="{ 'text-align': 'center' }"
-            style="width: 100%;  text-align: center">
-
-            <el-table-column prop="id" label="序号" width="60"></el-table-column>
-            <el-table-column prop="landNo" label="地块" width="">
-            </el-table-column>
-            <el-table-column prop="" label="机动车位">
-                <el-table-column prop="jdcDesignCount" label="设计数量(个)" width="">
-                </el-table-column>
-                <el-table-column prop="jdcNormalCount" label="规范数量(个)" width="">
-                </el-table-column>
-                <el-table-column prop="jdcPass" label="审查意见" width="">
-                    <template slot-scope="scope">
-                        <span v-if="!scope.row.isJDCPass" style="color:red">不通过</span>
-                        <span v-else style="color: #37B328">通过</span>
-                    </template>
-                </el-table-column>
-            </el-table-column>
-            <el-table-column prop="date" label="非机动车位" width="150">
-                <el-table-column prop="fjdcDesignCount" label="设计数量(个)" width="">
-                </el-table-column>
-                <el-table-column prop="fjdcNormalCount" label="规范数量(个)" width="">
-                </el-table-column>
-                <el-table-column prop="fjdcPass" label="审查意见" width="">
-                    <template slot-scope="scope">
-                        <span v-if="!scope.row.isFJDCPass" style="color:red">不通过</span>
-                        <span v-else style="color: #37B328">通过</span>
-                    </template>
-                </el-table-column>
-            </el-table-column>
-            <el-table-column prop="isPass" label="审查意见" width="40">
-                <template slot-scope="scope">
-                    <span v-if="!scope.row.isPass" style="color:red">不通过</span>
-                    <span v-else style="color: #37B328">通过</span>
-                </template>
-            </el-table-column>
-        </el-table>
-    </div>
+  <div class="ZTGlobal" style="padding: 1rem; font-size: small">
+    <el-table
+      :data="tableData"
+      :header-cell-style="{ 'text-align': 'center' }"
+      style="width: 100%; text-align: center"
+    >
+      <el-table-column prop="id" label="序号" width="60"></el-table-column>
+      <el-table-column prop="landNo" label="地块" width=""> </el-table-column>
+      <el-table-column prop="" label="机动车位">
+        <el-table-column prop="jdcDesignCount" label="方案数量(个)" width="">
+        </el-table-column>
+        <el-table-column prop="jdcNormalCount" label="规范数量(个)" width="">
+        </el-table-column>
+        <el-table-column prop="jdcPass" label="审查意见" width="">
+          <template slot-scope="scope">
+            <span v-if="!scope.row.isJDCPass" style="color: red">不通过</span>
+            <span v-else style="color: #37b328">通过</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column prop="date" label="非机动车位" width="150">
+        <el-table-column prop="fjdcDesignCount" label="方案数量(个)" width="">
+        </el-table-column>
+        <el-table-column prop="fjdcNormalCount" label="规范数量(个)" width="">
+        </el-table-column>
+        <el-table-column prop="fjdcPass" label="审查意见" width="">
+          <template slot-scope="scope">
+            <span v-if="!scope.row.isFJDCPass" style="color: red">不通过</span>
+            <span v-else style="color: #37b328">通过</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column prop="isPass" label="审查意见" width="40">
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isPass" style="color: red">不通过</span>
+          <span v-else style="color: #37b328">通过</span>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
 </template>
 <script>
 export default {
-    name: "parkResult",
-    data() {
-        return {
-            tableData: [
-                //     {
-                //     id: 0,
-                //     landNo: 'BP08-03',
-                //     jdcNormalCount: 100,
-                //     jdcDesignCount: 101,
-                //     jdcPass: false,
-                //     fjdcNormalCount: 200,
-                //     fjdcDesignCount: 201,
-                //     fjdcPass: false,
-                //     isPass: true
-                // }
-            ]
-        }
-    },
-    props: ["info"],
-
-
-    created() {
-        this.init();
-    },
-    methods: {
-        init() {
-            var data = this.info;
-            console.log(data)
-            debugger
-            if (data == null)
-                return;
-            this.tableData = [];
-            var parks = data.parks;
-            var buildings = data.buildings;
-            if (buildings == null)
-                return;
-            for (var i = 0; i < buildings.length; i++) {
-                var landNo = buildings[i].landNo;
-                var jdcNormalCount = Math.ceil(buildings[i].jdcCount);
-                var fjdcNormalCount = Math.ceil(buildings[i].fjdcCount)
-                var jdcDesignCount = 0;
-                var fjdcDesignCount = 0;
-                var isJDCPass = false;
-                var isFJDCPass = false;
-                var isPass = false;
-
-                var park = parks.find(t => t.landNo == landNo)
-                if (park) {
-                    jdcDesignCount = park.jdcCount;
-                    fjdcDesignCount = park.fjdcCount;
-                }
-                if (jdcDesignCount >= jdcNormalCount) {
-                    isJDCPass = true;
-                }
-                if (fjdcDesignCount >= fjdcNormalCount) {
-                    isFJDCPass = true;
-                }
-                if (isJDCPass == true && isFJDCPass == true)
-                    isPass = true
+  name: "parkResult",
+  data() {
+    return {
+      tableData: [
+        //     {
+        //     id: 0,
+        //     landNo: 'BP08-03',
+        //     jdcNormalCount: 100,
+        //     jdcDesignCount: 101,
+        //     jdcPass: false,
+        //     fjdcNormalCount: 200,
+        //     fjdcDesignCount: 201,
+        //     fjdcPass: false,
+        //     isPass: true
+        // }
+      ],
+    };
+  },
+  props: ["info"],
 
-                this.tableData.push({
-                    id: i + 1,
-                    landNo: landNo,
-                    jdcNormalCount: jdcNormalCount,
-                    fjdcNormalCount: fjdcNormalCount,
-                    jdcDesignCount: jdcDesignCount,
-                    fjdcDesignCount: fjdcDesignCount,
-                    isJDCPass: isJDCPass,
-                    isFJDCPass: isFJDCPass,
-                    isPass: isPass
-                })
-            }
+  created() {
+    this.init();
+  },
+  methods: {
+    init() {
+      var data = this.info;
+      console.log(data);
+      debugger;
+      if (data == null) return;
+      this.tableData = [];
+      var parks = data.parks;
+      var buildings = data.buildings;
+      if (buildings == null) return;
+      for (var i = 0; i < buildings.length; i++) {
+        var landNo = buildings[i].landNo;
+        var jdcNormalCount = Math.ceil(buildings[i].jdcCount);
+        var fjdcNormalCount = Math.ceil(buildings[i].fjdcCount);
+        var jdcDesignCount = 0;
+        var fjdcDesignCount = 0;
+        var isJDCPass = false;
+        var isFJDCPass = false;
+        var isPass = false;
 
-        },
-        // PassCheck(row, column, cellValue, index) {
-        //     if (cellValue == true)
-        //         return "<span>通过</span>"
-        //     else if (cellValue == false)
-        //         return "<span style='color:red'>不通过</span>"
-        //     else
-        //         return "<span style='color:red'>不通过</span>"
-        // }
+        var park = parks.find((t) => t.landNo == landNo);
+        if (park) {
+          jdcDesignCount = park.jdcCount;
+          fjdcDesignCount = park.fjdcCount;
+        }
+        if (jdcDesignCount >= jdcNormalCount) {
+          isJDCPass = true;
+        }
+        if (fjdcDesignCount >= fjdcNormalCount) {
+          isFJDCPass = true;
+        }
+        if (isJDCPass == true && isFJDCPass == true) isPass = true;
 
-    }
-}
+        this.tableData.push({
+          id: i + 1,
+          landNo: landNo,
+          jdcNormalCount: jdcNormalCount,
+          fjdcNormalCount: fjdcNormalCount,
+          jdcDesignCount: jdcDesignCount,
+          fjdcDesignCount: fjdcDesignCount,
+          isJDCPass: isJDCPass,
+          isFJDCPass: isFJDCPass,
+          isPass: isPass,
+        });
+      }
+    },
+    // PassCheck(row, column, cellValue, index) {
+    //     if (cellValue == true)
+    //         return "<span>通过</span>"
+    //     else if (cellValue == false)
+    //         return "<span style='color:red'>不通过</span>"
+    //     else
+    //         return "<span style='color:red'>不通过</span>"
+    // }
+  },
+};
 </script>
 <style scoped>
 th {
-    text-align: center;
+  text-align: center;
 }
-</style>
+</style>

+ 13 - 5
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -111,12 +111,13 @@
 
 <script>
 import { v4 as uuidv4 } from "uuid";
+import { addProjectinformation } from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
       form: {
         id: "",
-        meetingProgress: 0,
+        meetingprogress: "0",
         applicant: "",
         projectname: "",
         projectaddress: "",
@@ -174,14 +175,21 @@ export default {
   methods: {
     submitForm(formName) {
       let that = this;
-      this.$refs[formName].validate((valid) => {
+      this.$refs[formName].validate(async (valid) => {
         if (valid) {
           that.form.id = uuidv4();
-          that.form.meetingProgress = 0;
-          window.projectinformation.push(that.form);
+          that.form.meetingprogress = "0";
+          // window.projectinformation.push(that.form);
+          let result = await addProjectinformation(that.form);
+          if (result.code) {
+            that.$message({
+              message: "添加成功",
+              type: "success",
+            });
+            that.$layer.close(that.layerid);
+          }
           debugger;
           // that.lyoption.cancel();
-          that.$layer.close(that.layerid);
         } else {
           return false;
         }

+ 6 - 6
src/views/ConstructionApplication3D/projectManagement/ghqk.js

@@ -32,9 +32,9 @@ const ghqk = {
       let queryByGeometryParameters = {
         getFeatureMode: "BUFFER",
         datasetNames: [
-          layer.date_server.dataSourceName +
+          layer.date_server.datasourcename +
             ":" +
-            layer.date_server.datasetName,
+            layer.date_server.datasetname,
         ],
         geometry: geo,
         bufferDistance: 0.005,
@@ -164,9 +164,9 @@ const ghqk = {
       let queryByGeometryParameters = {
         getFeatureMode: "BUFFER",
         datasetNames: [
-          layer.date_server.dataSourceName +
+          layer.date_server.datasourcename +
             ":" +
-            layer.date_server.datasetName,
+            layer.date_server.datasetname,
         ],
         geometry: geo,
         bufferDistance: 0.005,
@@ -296,9 +296,9 @@ const ghqk = {
       let queryByGeometryParameters = {
         getFeatureMode: "BUFFER",
         datasetNames: [
-          layer.date_server.dataSourceName +
+          layer.date_server.datasourcename +
             ":" +
-            layer.date_server.datasetName,
+            layer.date_server.datasetname,
         ],
         geometry: geo,
         bufferDistance: 0.005,

+ 354 - 142
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -7,18 +7,23 @@
       <el-col :span="12">
         <el-input
           size="mini"
-          placeholder="请输入内容"
+          placeholder="请输入项目名称"
           v-model="input3"
           class="input-with-select"
+          clearable
         >
-          <el-button slot="append" icon="el-icon-search"></el-button>
+          <el-button
+            slot="append"
+            icon="el-icon-search"
+            @click="getProjectInfos"
+          ></el-button>
         </el-input>
       </el-col>
-      <el-col :span="12">
+      <el-col :span="5" :offset="6">
         <el-button size="mini" type="primary" plain @click="openaddProjectInfo"
           >新增项目</el-button
         >
-        <el-button size="mini" type="primary" plain>导入项目</el-button>
+        <!-- <el-button size="mini" type="primary" plain>导入项目</el-button> -->
       </el-col>
     </el-row>
     <el-row
@@ -39,12 +44,33 @@
               >
                 <template slot="title">
                   {{ item.projectname }}({{
-                    getConstructionModel(item.id).length
-                  }}个)<i
-                    style="padding-left: 10px"
-                    class="header-icon el-icon-info"
-                    @click.stop="openProjectInfo(item)"
-                  ></i>
+                    getConstructionModel(item).length
+                  }}个)
+                  <el-tooltip
+                    class="item"
+                    effect="dark"
+                    content="项目详情"
+                    placement="top-start"
+                  >
+                    <i
+                      style="padding-left: 10px"
+                      class="el-icon-info"
+                      @click.stop="openProjectInfo(item)"
+                    ></i>
+                  </el-tooltip>
+
+                  <el-tooltip
+                    class="item"
+                    effect="dark"
+                    content="删除项目"
+                    placement="top-start"
+                  >
+                    <i
+                      style="padding-left: 10px"
+                      class="el-icon-delete"
+                      @click.stop="deleteProject(item.id)"
+                    ></i>
+                  </el-tooltip>
                 </template>
 
                 <el-row :gutter="10">
@@ -76,7 +102,7 @@
 
                 <el-row
                   :gutter="10"
-                  v-for="itemModel in getConstructionModel(item.id)"
+                  v-for="itemModel in getConstructionModel(item)"
                   :key="itemModel.id"
                 >
                   <el-col :span="24">
@@ -205,76 +231,74 @@
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="DistrictAnalysis(itemModel)"
-                                >区位分析
+                                @click.stop="KGAnalysis(itemModel)"
+                                >控规分析
                               </el-button>
                             </el-col>
                             <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="limitHeightAnalysis(itemModel)"
-                                >限高分析
+                                @click.stop="normAnalysis(itemModel)"
+                                >指标分析
                               </el-button>
                             </el-col>
                             <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="trafficAnalysis(itemModel)"
-                                >交通分析
+                                @click.stop="CheckPark(itemModel, true)"
+                                >车位审核
                               </el-button>
                             </el-col>
-                          </el-row>
-                          <el-row :gutter="24">
-                            <el-col :span="8">
+                            <!-- <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="undergroundModeAnalysis()"
-                                >地下分析
+                                @click.stop="DistrictAnalysis(itemModel)"
+                                >区位分析
                               </el-button>
-                            </el-col>
-                            <el-col :span="8">
+                            </el-col> -->
+                            <!-- <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="backLineAnalysis(itemModel)"
-                                >建筑退线
+                                @click.stop="limitHeightAnalysis(itemModel)"
+                                >限高分析
                               </el-button>
-                            </el-col>
-                            <el-col :span="8">
+                            </el-col> -->
+                            <!-- <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="occupyAnalysis(itemModel)"
-                                >占压分析
+                                @click.stop="trafficAnalysis(itemModel)"
+                                >交通分析
                               </el-button>
-                            </el-col>
+                            </el-col> -->
                           </el-row>
                           <el-row :gutter="24">
                             <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="normAnalysis(itemModel)"
-                                >指标分析
+                                @click.stop="undergroundModeAnalysis()"
+                                >地下分析
                               </el-button>
                             </el-col>
                             <!-- <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="PlanningAnalysis(itemModel)"
-                                >规划情况
+                                @click.stop="backLineAnalysis(itemModel)"
+                                >建筑退线
                               </el-button>
                             </el-col> -->
                             <el-col :span="8">
                               <el-button
                                 type="primary"
                                 size="mini"
-                                @click.stop="CheckPark(itemModel, true)"
-                                >车位审核
+                                @click.stop="occupyAnalysis(itemModel)"
+                                >占压分析
                               </el-button>
                             </el-col>
                             <el-col :span="8">
@@ -302,10 +326,20 @@
                                 @click.stop="
                                   BuildingStretchingAnalysis(itemModel)
                                 "
-                                >体量调整
+                                >楼体拉伸
                               </el-button>
                             </el-col>
                           </el-row>
+                          <el-row :gutter="24">
+                            <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="PlanningAnalysis(itemModel)"
+                                >规划情况
+                              </el-button>
+                            </el-col> -->
+                          </el-row>
                         </el-row>
                       </el-card>
                     </div>
@@ -323,7 +357,7 @@
               >
                 <template slot="title">
                   {{ item.projectname }}({{
-                    getConstructionModel(item.id).length
+                    getConstructionModel(item).length
                   }}个)<i
                     style="padding-left: 10px"
                     class="header-icon el-icon-info"
@@ -348,7 +382,7 @@
 
                   <el-row
                     :gutter="10"
-                    v-for="itemModel in getConstructionModel(item.id)"
+                    v-for="itemModel in getConstructionModel(item)"
                     :key="itemModel.id"
                   >
                     <el-col :span="24">
@@ -433,7 +467,7 @@
                                 >
                               </div>
                             </el-col>
-                            <el-col :span="6">
+                            <!-- <el-col :span="6">
                               <div
                                 class="con-col hover_style"
                                 style="cursor: pointer"
@@ -448,13 +482,12 @@
                                 ></i>
                                 <a>删除</a>
                               </div>
-                            </el-col>
+                            </el-col> -->
                           </el-row>
                           <el-row
                             :ref="itemModel.id + 'AnalyzeList'"
                             class="none"
                           >
-                            <!-- <el-col :span="24"> -->
                             <el-row :gutter="24">
                               <el-col :span="8">
                                 <el-button
@@ -488,26 +521,50 @@
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="DistrictAnalysis(itemModel)"
-                                  >区位分析
+                                  @click.stop="KGAnalysis(itemModel)"
+                                  >控规分析
                                 </el-button>
                               </el-col>
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="limitHeightAnalysis(itemModel)"
-                                  >限高分析
+                                  @click.stop="normAnalysis(itemModel)"
+                                  >指标分析
                                 </el-button>
                               </el-col>
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="trafficAnalysis(itemModel)"
-                                  >交通分析
+                                  @click.stop="CheckPark(itemModel, true)"
+                                  >车位审核
                                 </el-button>
                               </el-col>
+                              <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="DistrictAnalysis(itemModel)"
+                                >区位分析
+                              </el-button>
+                            </el-col> -->
+                              <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="limitHeightAnalysis(itemModel)"
+                                >限高分析
+                              </el-button>
+                            </el-col> -->
+                              <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="trafficAnalysis(itemModel)"
+                                >交通分析
+                              </el-button>
+                            </el-col> -->
                             </el-row>
                             <el-row :gutter="24">
                               <el-col :span="8">
@@ -518,14 +575,14 @@
                                   >地下分析
                                 </el-button>
                               </el-col>
-                              <el-col :span="8">
-                                <el-button
-                                  type="primary"
-                                  size="mini"
-                                  @click.stop="backLineAnalysis(itemModel)"
-                                  >建筑退线
-                                </el-button>
-                              </el-col>
+                              <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="backLineAnalysis(itemModel)"
+                                >建筑退线
+                              </el-button>
+                            </el-col> -->
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
@@ -534,34 +591,45 @@
                                   >占压分析
                                 </el-button>
                               </el-col>
-                            </el-row>
-                            <el-row :gutter="24">
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="normAnalysis(itemModel)"
-                                  >指标分析
+                                  @click.stop="ArchitecturalAnalysis(itemModel)"
+                                  >建筑风貌
                                 </el-button>
                               </el-col>
+                            </el-row>
+                            <el-row :gutter="24">
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="PlanningAnalysis(itemModel)"
-                                  >规划情况
+                                  @click.stop="RSAnalysis(itemModel)"
+                                  >人视分析
                                 </el-button>
                               </el-col>
                               <el-col :span="8">
                                 <el-button
                                   type="primary"
                                   size="mini"
-                                  @click.stop="CarPark(itemModel)"
-                                  >车位审核
+                                  @click.stop="
+                                    BuildingStretchingAnalysis(itemModel)
+                                  "
+                                  >楼体拉伸
                                 </el-button>
                               </el-col>
                             </el-row>
-                            <!-- </el-col> -->
+                            <el-row :gutter="24">
+                              <!-- <el-col :span="8">
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="PlanningAnalysis(itemModel)"
+                                >规划情况
+                              </el-button>
+                            </el-col> -->
+                            </el-row>
                           </el-row>
                         </el-card>
                       </div>
@@ -615,10 +683,18 @@ import RSAnalysis from "@/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.
 import BuildingStretchingAnalysis from "@/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue";
 import parkResult from "@/views/ConstructionApplication3D/parkCheck/parkResult.vue";
 import ghqk from "./ghqk.js";
+import {
+  listProjectinformation,
+  delConstructionmodel,
+  updateConstructionmodel,
+  updateProjectinformation,
+  delProjectinformation,
+} from "@/api/zt/ztApi.js";
 export default {
   name: "constructionApplication3D",
   data() {
     return {
+      input3: "",
       activeName: "未上会项目",
       ysh: [],
       wsh: [],
@@ -674,32 +750,46 @@ export default {
   },
   computed: {},
   mounted() {
-    this.constructionmodel = window.constructionmodel;
+    // this.constructionmodel = window.constructionmodel;
     this.initEntitiesHandler();
     this.init();
   },
   methods: {
-    init() {
-      this.wsh = this.getshProjectinformations(0);
-      this.ysh = this.getshProjectinformations(1);
+    async init() {
+      this.wsh = await this.getshProjectinformations("0");
+      this.ysh = await this.getshProjectinformations("1");
+    },
+    /**
+     * 查询过滤
+     */
+    getProjectInfos() {
+      //先清空当前视图
+      scene.multiViewportMode = Cesium.MultiViewportMode.NONE;
+      this.qxyp();
+      this.removeModel();
+      this.removeAll();
+      undergroundMode(false);
+      //过滤
+      this.init();
     },
-
     /**
      * //获取项目进度
-     * @param meetingProgress
+     * @param meetingprogress
      */
-    getshProjectinformations(meetingProgress) {
+    async getshProjectinformations(meetingprogress) {
+      // let Projectinformations = await listProjectinformation({
+      //   meetingprogress: meetingprogress,
+      //   projectname: this.input3,
+      // });
+      // return Projectinformations.rows;
       let Projectinformations = window.projectinformation.filter(
-        (c) => c.meetingProgress == meetingProgress
+        (c) => c.meetingprogress == meetingprogress
       );
       return Projectinformations;
     },
     //获取项目模型信息
-    getConstructionModel(fid) {
-      let ConstructionModels = this.constructionmodel.filter(
-        (c) => c.projectinformationid == fid
-      );
-      return ConstructionModels;
+    getConstructionModel(Projectinfo) {
+      return Projectinfo.ztConstructionmodelList;
     },
 
     /**
@@ -707,13 +797,35 @@ export default {
      * @param projectin 方案信息
      */
     setStrategy(projectin) {
-      this.$layer.confirm("确认该项目已上会?", (layerid) => {
-        projectin.meetingProgress = 1;
-        this.WaitingSelectionModel.selectionStatus = true;
-        this.DestroyAll();
-        this.init();
-        this.$layer.close(layerid);
-      });
+      if (this.WaitingSelectionModel) {
+        this.$layer.confirm("确认该项目已上会?", async (layerid) => {
+          projectin.meetingprogress = "1";
+          this.WaitingSelectionModel.selectionStatus = true;
+          let Projectinfoistrue = await updateProjectinformation({
+            id: projectin.id,
+            meetingprogress: "1",
+          });
+          if (Projectinfoistrue.code == 200) {
+            let ismodeltrue = await updateConstructionmodel({
+              id: this.WaitingSelectionModel.id,
+              selectionStatus: this.WaitingSelectionModel.selectionStatus,
+            });
+            if (ismodeltrue.code == 200) {
+              this.$message({
+                message: ismodeltrue.msg,
+                type: "success",
+              });
+              this.getProjectInfos();
+              this.$layer.close(layerid);
+            }
+          }
+        });
+      } else {
+        this.$message({
+          message: "请先选中待上会模型方案",
+          type: "warning",
+        });
+      }
     },
 
     //分析列表显隐
@@ -734,14 +846,22 @@ export default {
       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";
-            }
-          });
+          if (item) {
+            item.childNodes.forEach((Citem) => {
+              if (
+                Citem.className &&
+                Citem.className.indexOf("status ce") !== -1
+              ) {
+                Citem.style.display = "none";
+              }
+            });
+          }
+        }
+        if (key.indexOf("AnalyzeList") !== -1) {
+          let itemfx = this.$refs[key][0];
+          if (itemfx) {
+            itemfx.$el.classList.add("none");
+          }
         }
       }
     },
@@ -757,6 +877,7 @@ export default {
 
     //选中报建模型
     SelectConstructionModelHendle(Minfo) {
+      debugger;
       if (this.WaitingSelectionModel != Minfo) {
         this.removeModel();
         this.WaitingSelectionModel = null;
@@ -804,9 +925,11 @@ export default {
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
-        cancel: () => {
+        cancel: async () => {
           //关闭事件
-          this.wsh = this.getshProjectinformations(0);
+          debugger;
+          // this.wsh = await this.getshProjectinformations("0");
+          this.getProjectInfos();
         },
       });
     },
@@ -827,17 +950,42 @@ export default {
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
-        cancel: () => {
+        cancel: async () => {
           //关闭事件
-          this.wsh = this.getshProjectinformations(0);
+          debugger;
+          // this.wsh = await this.getshProjectinformations("0");
+          this.getProjectInfos();
         },
       });
     },
-    removeConstructionmodel(Minfo) {
-      let i = this.constructionmodel.findIndex((c) => c == Minfo);
-      this.constructionmodel.splice(i, 1);
-      this.wsh = this.getshProjectinformations(0);
-      this.ysh = this.getshProjectinformations(1);
+    //删除报建模型
+    async removeConstructionmodel(Minfo) {
+      this.$layer.confirm("确认删除该报建模型?", async (layerid) => {
+        let istrue = await delConstructionmodel(Minfo.id);
+        if (istrue.code == 200) {
+          this.$message({
+            message: istrue.msg,
+            type: "success",
+          });
+          this.getProjectInfos();
+          this.$layer.close(layerid);
+        }
+      });
+    },
+
+    //删除项目
+    async deleteProject(id) {
+      this.$layer.confirm("确认删除该项目?", async (layerid) => {
+        let istrue = await delProjectinformation(id);
+        if (istrue.code == 200) {
+          this.$message({
+            message: istrue.msg,
+            type: "success",
+          });
+          this.getProjectInfos();
+          this.$layer.close(layerid);
+        }
+      });
     },
 
     //打开项目信息弹窗
@@ -998,7 +1146,7 @@ export default {
         //获取模型信息
         let queryBySQLParameters = {
           getFeatureMode: "SQL",
-          datasetNames: [Minfo.dataSourceName + ":" + Minfo.datasetName],
+          datasetNames: [Minfo.datasourcename + ":" + Minfo.datasetname],
           queryParameter: {
             attributeFilter: "1=1",
           },
@@ -1128,7 +1276,7 @@ export default {
               //获取模型信息
               let queryBySQLParameters = {
                 getFeatureMode: "SQL",
-                datasetNames: [Minfo.dataSourceName + ":" + Minfo.datasetName],
+                datasetNames: [Minfo.datasourcename + ":" + Minfo.datasetname],
                 queryParameter: {
                   attributeFilter: "1=1",
                 },
@@ -1368,9 +1516,9 @@ export default {
         let queryByIDParameters = {
           getFeatureMode: "BUFFER",
           datasetNames: [
-            layer.date_server.dataSourceName +
+            layer.date_server.datasourcename +
               ":" +
-              layer.date_server.datasetName,
+              layer.date_server.datasetname,
           ],
           geometry: {
             parts: [1],
@@ -1465,6 +1613,15 @@ export default {
         }
       }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
     },
+
+    //控规分析
+    KGAnalysis(Minfo) {
+      let that = this;
+      this.getGuiHuaDiKuai(function () {
+        that.getBufferTraffic();
+        that.getbackLine(Minfo);
+      });
+    },
     //区位分析
     DistrictAnalysis() {
       this.getGuiHuaDiKuai();
@@ -1503,7 +1660,7 @@ export default {
           //获取模型信息
           let queryBySQLParameters = {
             getFeatureMode: "SQL",
-            datasetNames: [Minfo.dataSourceName + ":项目范围"],
+            datasetNames: [Minfo.datasourcename + ":项目范围"],
             queryParameter: {
               attributeFilter: " DKBM = '" + bm.value + "'",
             },
@@ -1655,7 +1812,7 @@ export default {
           });
         }
       }
-      this.openXGFXInfo(that.layerDataList, JZXGD, DKBM);
+      // this.openXGFXInfo(that.layerDataList, JZXGD, DKBM);
     },
     /**
      * // 计算超高距离
@@ -1694,6 +1851,7 @@ export default {
       // };
 
       // 加载道路红线
+      //道路红线
       let layer = flatten(window.layerTree).find(
         (item) => item.core == "005006"
       );
@@ -1701,9 +1859,9 @@ export default {
         let queryByGeometryParameters = {
           getFeatureMode: "BUFFER",
           datasetNames: [
-            layer.date_server.dataSourceName +
+            layer.date_server.datasourcename +
               ":" +
-              layer.date_server.datasetName,
+              layer.date_server.datasetname,
           ],
           geometry: geo,
           bufferDistance: 0.002,
@@ -1757,7 +1915,7 @@ export default {
               polyline: {
                 positions: Cesium.Cartesian3.fromDegreesArray(ps),
                 width: 5,
-                material: new Cesium.Color(255 / 255, 0, 0, 1),
+                material: Cesium.Color.GREENYELLOW,
                 clampToGround: true,
               },
             });
@@ -1774,9 +1932,9 @@ export default {
         let queryByGeometryParameters = {
           getFeatureMode: "BUFFER",
           datasetNames: [
-            layer.date_server.dataSourceName +
+            layer.date_server.datasourcename +
               ":" +
-              layer.date_server.datasetName,
+              layer.date_server.datasetname,
           ],
           geometry: geo,
           bufferDistance: 0.002,
@@ -1846,7 +2004,7 @@ export default {
                 polyline: {
                   positions: Cesium.Cartesian3.fromDegreesArray(ps),
                   width: 5,
-                  material: new Cesium.Color(0.0, 223 / 255, 22 / 255, 1),
+                  material: Cesium.Color.CYAN,
                   clampToGround: true,
                 },
               });
@@ -1863,9 +2021,9 @@ export default {
         let queryByGeometryParameters = {
           getFeatureMode: "BUFFER",
           datasetNames: [
-            layer.date_server.dataSourceName +
+            layer.date_server.datasourcename +
               ":" +
-              layer.date_server.datasetName,
+              layer.date_server.datasetname,
           ],
           geometry: geo,
           bufferDistance: 0.002,
@@ -1918,7 +2076,7 @@ export default {
               polyline: {
                 positions: Cesium.Cartesian3.fromDegreesArray(ps),
                 width: 5,
-                material: Cesium.Color.ORANGE,
+                material: Cesium.Color.RED,
                 clampToGround: true,
               },
             });
@@ -1933,6 +2091,28 @@ export default {
     //切换地下模式
     undergroundModeAnalysis() {
       this.underground = !this.underground;
+      window.QXLayerNames.forEach((QXLayerName) => {
+        debugger;
+        let layer = scene.layers.find(QXLayerName);
+        if (this.underground) {
+          if (layer && layer.style3D) {
+            layer.style3D.fillForeColor.alpha = window.Layeralpha;
+          }
+          if (layer && layer.alpha) {
+            layer.alpha = window.Layeralpha;
+          }
+        }
+        // 倾斜图层通明度1
+        else {
+          if (layer && layer.style3D) {
+            layer.style3D.fillForeColor.alpha = 1;
+          }
+          if (layer && layer.alpha) {
+            layer.alpha = 1;
+          }
+        }
+      });
+
       undergroundMode(this.underground);
     },
     //建筑退线
@@ -1968,9 +2148,9 @@ export default {
             let queryByGeometryParameters = {
               getFeatureMode: "SQL",
               datasetNames: [
-                layer.date_server.dataSourceName +
+                layer.date_server.datasourcename +
                   ":" +
-                  layer.date_server.datasetName,
+                  layer.date_server.datasetname,
               ],
               queryParameter: {
                 attributeFilter: "DKBM = '" + bm.value + "'",
@@ -2080,9 +2260,9 @@ export default {
             let queryByGeometryParameters = {
               getFeatureMode: "SPATIAL",
               datasetNames: [
-                layer.date_server.dataSourceName +
+                layer.date_server.datasourcename +
                   ":" +
-                  layer.date_server.datasetName,
+                  layer.date_server.datasetname,
               ],
               geometry: GHYDlayerData.geometry,
               spatialQueryMode: "INTERSECT",
@@ -2187,6 +2367,7 @@ export default {
     normAnalysis(Minfo) {
       let that = this;
       this.getGuiHuaDiKuai(function () {
+        that.HighLimit(Minfo);
         that.getnorm(Minfo);
       });
     },
@@ -2241,11 +2422,11 @@ export default {
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJX = "";
 
-        if (Minfo.dataurl && Minfo.dataSourceName) {
+        if (Minfo.dataurl && Minfo.datasourcename) {
           //获取项目范围数据数据
           let queryByGeometryParameters = {
             getFeatureMode: "SQL",
-            datasetNames: [Minfo.dataSourceName + ":项目范围"],
+            datasetNames: [Minfo.datasourcename + ":项目范围"],
             queryParameter: {
               attributeFilter: "DKBM = '" + KG_Data.DKBM + "'",
             },
@@ -2281,7 +2462,7 @@ export default {
 
           let queryByGeometryParameters2 = {
             getFeatureMode: "SQL",
-            datasetNames: [Minfo.dataSourceName + ":" + Minfo.datasetName],
+            datasetNames: [Minfo.datasourcename + ":" + Minfo.datasetname],
             queryParameter: {
               attributeFilter: "LANDNO = '" + KG_Data.DKBM + "'",
             },
@@ -2360,8 +2541,9 @@ export default {
           FA_Data.JDMJ = jzjdzmj;
           //计容建筑面积 为地上建筑总面积
           FA_Data.JRJZMJ = dsjzzmj;
-          // 容积率
-          FA_Data.RJL = (FA_Data.JRJZMJ / FA_Data.YDMJ).toFixed(2);
+          // 容积率 20240814改为使用建筑面积计算容积率
+          // FA_Data.RJL = (FA_Data.JRJZMJ / FA_Data.YDMJ).toFixed(2);
+          FA_Data.RJL = (FA_Data.JZMJ / FA_Data.YDMJ).toFixed(2);
 
           //建筑密度
           FA_Data.JZMD = (Number(FA_Data.JDMJ / FA_Data.YDMJ) * 100).toFixed(2);
@@ -2379,10 +2561,13 @@ export default {
           if (land == null) continue;
           tableDataList[i].FA_Data.JZMJ = land.mj;
           tableDataList[i].FA_Data.JRJZMJ = land.jrmj;
+          debugger;
+          //20240814改为使用建筑面积计算容积率
+          // tableDataList[i].FA_Data.RJL = (land.jrmj / item.FA_Data.YDMJ).toFixed(2);
           tableDataList[i].FA_Data.RJL = (
-            land.jrmj / item.FA_Data.YDMJ
+            (land.mj - land.dxjzmj) /
+            item.FA_Data.YDMJ
           ).toFixed(2);
-
           //开发商提交的方案文档指标
           debugger;
           tableDataList[i].TJFA_Data.JZMJ = land.famj;
@@ -2466,7 +2651,7 @@ export default {
      */
     async buidAreaAndParksComputer(Minfo, isJSPark) {
       var that = this;
-      var dataSourceName = Minfo.dataSourceName; //模型数据集
+      var datasourcename = Minfo.datasourcename; //模型数据集
       var dataurl = Minfo.dataurl; //报建项目服务地址
       var tcwLayerName = window.CarPark.tcwLayer; //停车位图层
       var floorLayerName = window.CarPark.floorLayer; //分层矢量图层
@@ -2479,8 +2664,8 @@ export default {
       };
 
       var dataSources = [];
-      dataSources.push(dataSourceName + ":" + tcwLayerName);
-      dataSources.push(dataSourceName + ":" + floorLayerName);
+      dataSources.push(datasourcename + ":" + tcwLayerName);
+      dataSources.push(datasourcename + ":" + floorLayerName);
       //获取停车位及分层数据
       var result;
       var queryByGeometryParameters = {
@@ -2874,8 +3059,18 @@ export default {
         var buidNoList = [];
         var landjdcCount = 0;
         var landfjdcCount = 0;
+        var fadxjzmj = 0.0;
+        var dxjzmj = 0.0;
         for (var j = 0; j < landGroup.length; j++) {
           var buildNo = landGroup[j].buildNo;
+          if (
+            landGroup[j].floor.toUpperCase().indexOf("B") > -1 ||
+            landGroup[j].floor.toUpperCase().indexOf("地下") > 1 ||
+            landGroup[j].yt.toUpperCase().indexOf("停车") > -1
+          ) {
+            fadxjzmj += landGroup[j].faArea;
+            dxjzmj += landGroup[j].area;
+          }
           if (buidNoList.indexOf(buildNo) == -1) buidNoList.push(buildNo);
           if (isJSPark != null && isJSPark == true) {
             landjdcCount += landGroup[j].jdcCount;
@@ -3034,6 +3229,8 @@ export default {
           mj: landMJ,
           jrmj: landJRMJ,
           famj: landFAMJ,
+          fadxjzmj: fadxjzmj,
+          dxjzmj: dxjzmj,
           fajrmj: landFAJRMJ,
           jdcCount: landjdcCount,
           fjdcCount: landfjdcCount,
@@ -3276,7 +3473,9 @@ export default {
       }
       this.DLTBlayerDatas = [];
     },
-
+    /**
+     * 点查图层信息
+     */
     initEntitiesHandler() {
       let that = this;
       this.getEntitiesHandler = new Cesium.ScreenSpaceEventHandler(
@@ -3290,6 +3489,11 @@ export default {
           let info = that.LandPlanningList.find((c) => c.id == id);
           that.openOBJInfo("用地红线详情", info.data);
         }
+        if (pick && pick.id.id && pick.id.id.indexOf("ydhxl") !== -1) {
+          let id = pick.id.id.split("ydhxl-")[1];
+          let info = that.LandPlanningList.find((c) => c.id == id);
+          that.openOBJInfo("用地红线详情", info.data);
+        }
         //道路信息弹窗
         if (pick && pick.id.id && pick.id.id.indexOf("DLX-") !== -1) {
           let id = pick.id.id.split("DLX-")[1];
@@ -3403,7 +3607,7 @@ export default {
         },
         offset: [left, top], //left top
         area: ["430px", "430px"], //宽 高
-        title: "建筑退线分析",
+        title: "控规分析",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -3411,6 +3615,7 @@ export default {
           //关闭事件
           this.removeLandPlanningList();
           this.removeJZTXlayerDatas();
+          this.removeDLlayerDatasList();
         },
       });
     },
@@ -3458,17 +3663,20 @@ export default {
      * @param Minfo
      */
     openZBFXInfo(tableDataList, Minfo) {
-      if (this.ZBFXInfolayerid) {
-        this.$layer.close(this.ZBFXInfolayerid);
-      }
+      // if (this.ZBFXInfolayerid) {
+      //   this.$layer.close(this.ZBFXInfolayerid);
+      // }
       let that = this;
+      let wpx = 650;
+      let hpx = 430;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;
       //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
       //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
-      let left = w - 450 + 450 / 2;
-      let top = 430 / 2 + 60;
-      let layerid = this.$layer.iframe({
+      let left = w - wpx + wpx / 2;
+      let top = hpx / 2 + 60;
+      this.$layer.iframe({
+        id: "ZBFXJGiframe",
         content: {
           content: ZBFXAnalysisinfo, //传递的组件对象
           parent: this, //当前的vue对象
@@ -3477,14 +3685,18 @@ export default {
           }, //props
         },
         offset: [left, top], //left top
-        area: ["450px", "430px"], //宽 高
+        area: [wpx + "px", hpx + "px"], //宽 高
         title: "指标分析",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
         cancel: () => {
           //关闭事件
+          //指标分析数据
+          this.removeLandPlanningList();
+          //限高分析数据
           this.removeLandPlanningList();
+          this.removeHighLimit();
         },
       });
     },
@@ -3599,7 +3811,7 @@ export default {
         //获取模型信息
         let queryBySQLParameters = {
           getFeatureMode: "SQL",
-          datasetNames: [Minfo.dataSourceName + ":项目范围"],
+          datasetNames: [Minfo.datasourcename + ":项目范围"],
           queryParameter: {
             attributeFilter: "1=1",
           },

+ 147 - 157
src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue

@@ -1,8 +1,8 @@
 <template>
     <div style="margin: 1rem; padding: 0.5rem; width: 99%;height: 99%;">
         <!-- <img :src="imageData.data" style="height: auto; width: auto;" />"> -->
-        <canvas id="mycan1" ref="mycan1" width="907" height="350" style="background-color: azure;display: ;"></canvas>
-        <canvas id="mycan2" ref="mycan2" width="907" height="350"></canvas>
+        <canvas id="mycan1" ref="mycan1" width="907" height="350" style="background-color: azure;display: none;"></canvas>
+        <canvas id="mycan2" ref="mycan2" width="907" height="350" style="height: 100%;height: 100%;"></canvas>
         <el-button type="primary" @click="download">下载</el-button>
         <!-- <img id="img"  ref="img" style=" width: 100%;height: :100%;"/> -->
     </div>
@@ -26,170 +26,160 @@ export default {
             var minH = that.imageData.minH;
 
             image.src = this.imageData.data;
-            // image.onload = function () {
-            //     var canvas1 = that.$refs["mycan1"]
-            //     var canvas2 = that.$refs["mycan2"]
-            //     var context = canvas2.getContext("2d")
-            //     canvas2.width = image.width;
-            //     canvas2.height = image.height;
-            //     var dW = image.width
-            //     var dh = image.height
-
-            //     var xRate = dW / that.imageData.width;
-            //     var yRate = dh / that.imageData.height;
-            //     var clipH = minH * yRate
-            //     var scale = that.imageData.height / (that.imageData.height - minH)
-
-            //     var drawScaleY = 350 / image.height;
-
-
-            //     yRate = canvas2.height / that.imageData.height;
-            //     scale = canvas2.height / (canvas2.height - clipH * drawScaleY)
-            //     context.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas2.width, canvas2.height);
-            //     // context.fillStyle = '#fff';
-            //     // context.fillRect(0, 0, canvas2.width, canvas2.height);
-            //     // 将canvas的透明背景设置成白色
-            //     var imageData = context.getImageData(0, 0, canvas2.width, canvas2.height);
-
-            //     // 遍历像素点,将彩色像素点转换为黑白像素点
-
-            //     for (var i = 0; i < imageData.data.length; i += 4) {
-
-            //         debugger
-            //         var r = imageData.data[i];
-
-
-            //         var g = imageData.data[i + 1];
-
-            //         var b = imageData.data[i + 2];
-            //         // var a = imageData.data[i + 3];
-            //         if (r == 0 && b == 0 && g == 0) {
-
-            //             imageData.data[i] = 132;
-
-            //             imageData.data[i + 1] = 180;
-
-            //             imageData.data[i + 2] = 237;
-            //         }
-            //     }
-            //     context.putImageData(imageData, 0, 0)
-            //     context.strokeStyle = "rgba(255,0,0,1)";
-            //     context.lineWidt = 25
-            //     context.strokeRect(0, 0, canvas2.width, canvas2.height)
-
-            //     yRate = canvas2.height / (that.imageData.height);
-
-            //     var dataX = parseInt(that.imageData.width / 50) * 10
-            //     for (var i = 0; i <= that.imageData.width; i += dataX) {
-            //         context.font = "20px serif";
-            //         context.strokeText(i, i * xRate, 20);
-            //         context.strokeText(i, i * xRate, canvas2.height);
-            //     }
-
-            //     var datay = parseInt(that.imageData.height / 50) * 10
-            //     for (var j = datay; j <= that.imageData.height; j += datay) {
-            //         context.font = "20px serif";
-            //         context.strokeText(j, 10, canvas2.height - j * yRate);
-            //         context.strokeText(j, canvas2.width - 50, canvas2.height - j * yRate);
-            //     }
-            //     //context.scale(1, scale)
-            // }
             image.onload = function () {
                 var canvas1 = that.$refs["mycan1"]
                 var canvas2 = that.$refs["mycan2"]
-                var ctx = canvas1.getContext("2d");
-
-                // canvas1.height = image.height;
-                // canvas1.width = image.width;
-                var xRate = canvas1.width / that.imageData.width;
-                var yRate = canvas1.height / that.imageData.height;
-
-                var clipH = minH * yRate;
-
-                // canvas1.height -= clipH;
-
-                ctx.drawImage(image, 0, 0, image.width, image.height , 0, 0, canvas1.width, canvas1.height);
-
-                // var canvasData = ctx.getImageData(0, 0, canvas1.width, canvas1.height); //读取图片数据
-                // var lOffset = canvasData.width;
-                // var rOffset = 0;
-                // var tOffset = canvasData.height;
-                // var bOffset = 0;
-                // for (var i = 0; i < image.width; i++) {
-                //     for (var j = 0; j < image.height; j++) {
-                //         // var pos = (i + canvas1.width * j) * 4
-                //         var pos = (i + image.width * j) * 4
-                //             if (canvasData.data[pos] == 0|| canvasData.data[pos + 1] == 0 || canvasData.data[pos + 2] == 0 || canvasData.data[pos + 3] ==0) {
-                //             bOffset = Math.max(j, bOffset); // 找到有色彩的最下端
-                //             rOffset = Math.max(i, rOffset); // 找到有色彩的最右端
-                //             tOffset = Math.min(j, tOffset); // 找到有色彩的最上端
-                //             lOffset = Math.min(i, lOffset); // 找到有色彩的最左端
-                //         }
-                //     }
-                // }
-                // for(var j=0;j<image.height;j++)
-                // {
-                //     for(var i=0;i<image.width;i++)
-                //     {
-                        
-                //     }
-                // }
-
-
-                // lOffset++;
-                // rOffset++;
-                // tOffset++;
-                // bOffset++;
-
-                // canvas2.width = rOffset - lOffset;
-                // canvas2.height = bOffset - tOffset;
-
-                // xRate = canvas2.width / that.imageData.width;
+                var context = canvas2.getContext("2d")
+                canvas2.width = image.width;
+                canvas2.height = image.height;
+                // var dW = image.width
+                // var dh = image.height
+
+                // var xRate = dW / that.imageData.width;
+                // var yRate = dh / that.imageData.height;
+                // var clipH = minH * yRate
+                // var scale = that.imageData.height / (that.imageData.height - minH)
+
+                // var drawScaleY = 350 / image.height;
                 // yRate = canvas2.height / that.imageData.height;
-                // debugger
-                // var context = canvas2.getContext("2d");
-                // var drawScaleY = canvas2.height / canvas1.height;
-
-
-                // // context.putImageData(canvasData, lOffset, tOffset, canvas1.width, canvas1.height, 0, 0, canvas2.width, canvas2.height);//绘制
-                // context.putImageData(canvasData, lOffset, tOffset)
-                // var canvasData2 = context.getImageData(0, 0, canvas2.width, canvas2.height);
-
-                // // // 遍历像素点,将彩色像素点转换为黑白像素点
-                // // for (var i = 0; i < canvasData2.data.length; i += 4) {
-                // //     var r = canvasData2.data[i];
-                // //     var g = canvasData2.data[i + 1];
-                // //     var b = canvasData2.data[i + 2];
-                // //     // var a = imageData.data[i + 3];
-                // //     if (r == 0 && b == 0 && g == 0) {
-                // //         canvasData2.data[i] = 132;
-                // //         canvasData2.data[i + 1] = 180;
-                // //         canvasData2.data[i + 2] = 237;
-                // //     }
-                // // }
-                // // context.putImageData(canvasData2, 0, 0)
-
-                // context.strokeStyle = "rgba(255,0,0,1)";
-                // var dataX = parseInt(that.imageData.width / 50) * 10;
-                // for (var i = 0; i <= that.imageData.width; i += dataX) {
-                //     context.font = "20px serif";
-                //     context.strokeText(i, i * xRate, 20);
-                //     context.strokeText(i, i * xRate, canvas2.height);
-                // }
-                // var datay = parseInt(that.imageData.height / 50) * 10;
-                // for (var j = datay; j <= that.imageData.height; j += datay) {
-                //     context.font = "20px serif";
-                //     context.strokeText(j, 10, canvas2.height - j * yRate);
-                //     context.strokeText(j, canvas2.width - 30, canvas2.height - j * yRate);
-                // }
-                // console.log(canvas2.toDataURL());//得到最终裁剪出来的base64
+                // scale = canvas2.height / (canvas2.height - clipH * drawScaleY)
+                context.drawImage(image, 0, 0);// image.width, image.height, 0, 0, canvas2.width, canvas2.height
+                // context.fillStyle = '#fff';
+                // context.fillRect(0, 0, canvas2.width, canvas2.height);
+                // 将canvas的透明背景设置成白色
+                var imageData = context.getImageData(0, 0, canvas2.width, canvas2.height);
+                // 遍历像素点,将彩色像素点转换为黑白像素点
+                var data = imageData.data
+                for (var i = 0; i < data.length; i += 4) {
+                    debugger
+                    var r = data[i];
+                    var g = data[i + 1];
+                    var b = data[i + 2];
+                    // // var a = imageData.data[i + 3];
+                    // if (r == 0 && b == 0 && g == 0) {
+                    //     imageData.data[i] = 132;
+                    //     imageData.data[i + 1] = 180;
+                    //     imageData.data[i + 2] = 237;
+                    // }
+                    if (r + b + g == 0)
+                        data[i + 3] = 0;
+                }
+                context.putImageData(imageData, 0, 0)
+                context.strokeStyle = "rgba(255,0,0,1)";
+                context.lineWidth = 2
+                context.strokeRect(0, 0, canvas2.width, canvas2.height)
+                var xRate = canvas2.width / that.imageData.width;
+                var  yRate = canvas2.height / (that.imageData.height);
+                var dataX = parseInt(that.imageData.width / 50) * 10
+                for (var i = 0; i <= that.imageData.width; i += dataX) {
+                    context.font = "30px serif";
+                    context.strokeText(i, i * xRate, 20);
+                    context.strokeText(i, i * xRate, canvas2.height);
+                }
+                var datay = parseInt(that.imageData.height / 50) * 10
+                for (var j = datay; j <= that.imageData.height; j += datay) {
+                    context.font = "30px serif";
+                    context.strokeText(j, 10, canvas2.height - j * yRate);
+                    context.strokeText(j, canvas2.width - 50, canvas2.height - j * yRate);
+                }
+                //context.scale(1, scale)
             }
+            // image.onload = function () {
+            //     var canvas1 = that.$refs["mycan1"]
+            //     var canvas2 = that.$refs["mycan2"]
+            //     var ctx = canvas1.getContext("2d");
+
+            //     // canvas1.height = image.height;
+            //     // canvas1.width = image.width;
+            //     var xRate = canvas1.width / that.imageData.width;
+            //     var yRate = canvas1.height / that.imageData.height;
+
+            //     var clipH = minH * yRate;
+
+            //     // canvas1.height -= clipH;
+
+            //     ctx.drawImage(image, 0, 0, image.width, image.height , 0, 0, canvas1.width, canvas1.height);
+
+            //     // var canvasData = ctx.getImageData(0, 0, canvas1.width, canvas1.height); //读取图片数据
+            //     // var lOffset = canvasData.width;
+            //     // var rOffset = 0;
+            //     // var tOffset = canvasData.height;
+            //     // var bOffset = 0;
+            //     // for (var i = 0; i < image.width; i++) {
+            //     //     for (var j = 0; j < image.height; j++) {
+            //     //         // var pos = (i + canvas1.width * j) * 4
+            //     //         var pos = (i + image.width * j) * 4
+            //     //             if (canvasData.data[pos] == 0|| canvasData.data[pos + 1] == 0 || canvasData.data[pos + 2] == 0 || canvasData.data[pos + 3] ==0) {
+            //     //             bOffset = Math.max(j, bOffset); // 找到有色彩的最下端
+            //     //             rOffset = Math.max(i, rOffset); // 找到有色彩的最右端
+            //     //             tOffset = Math.min(j, tOffset); // 找到有色彩的最上端
+            //     //             lOffset = Math.min(i, lOffset); // 找到有色彩的最左端
+            //     //         }
+            //     //     }
+            //     // }
+            //     // for(var j=0;j<image.height;j++)
+            //     // {
+            //     //     for(var i=0;i<image.width;i++)
+            //     //     {
+
+            //     //     }
+            //     // }
+
+
+            //     // lOffset++;
+            //     // rOffset++;
+            //     // tOffset++;
+            //     // bOffset++;
+
+            //     // canvas2.width = rOffset - lOffset;
+            //     // canvas2.height = bOffset - tOffset;
+
+            //     // xRate = canvas2.width / that.imageData.width;
+            //     // yRate = canvas2.height / that.imageData.height;
+            //     // debugger
+            //     // var context = canvas2.getContext("2d");
+            //     // var drawScaleY = canvas2.height / canvas1.height;
+
+
+            //     // // context.putImageData(canvasData, lOffset, tOffset, canvas1.width, canvas1.height, 0, 0, canvas2.width, canvas2.height);//绘制
+            //     // context.putImageData(canvasData, lOffset, tOffset)
+            //     // var canvasData2 = context.getImageData(0, 0, canvas2.width, canvas2.height);
+
+            //     // // // 遍历像素点,将彩色像素点转换为黑白像素点
+            //     // // for (var i = 0; i < canvasData2.data.length; i += 4) {
+            //     // //     var r = canvasData2.data[i];
+            //     // //     var g = canvasData2.data[i + 1];
+            //     // //     var b = canvasData2.data[i + 2];
+            //     // //     // var a = imageData.data[i + 3];
+            //     // //     if (r == 0 && b == 0 && g == 0) {
+            //     // //         canvasData2.data[i] = 132;
+            //     // //         canvasData2.data[i + 1] = 180;
+            //     // //         canvasData2.data[i + 2] = 237;
+            //     // //     }
+            //     // // }
+            //     // // context.putImageData(canvasData2, 0, 0)
+
+            //     // context.strokeStyle = "rgba(255,0,0,1)";
+            //     // var dataX = parseInt(that.imageData.width / 50) * 10;
+            //     // for (var i = 0; i <= that.imageData.width; i += dataX) {
+            //     //     context.font = "20px serif";
+            //     //     context.strokeText(i, i * xRate, 20);
+            //     //     context.strokeText(i, i * xRate, canvas2.height);
+            //     // }
+            //     // var datay = parseInt(that.imageData.height / 50) * 10;
+            //     // for (var j = datay; j <= that.imageData.height; j += datay) {
+            //     //     context.font = "20px serif";
+            //     //     context.strokeText(j, 10, canvas2.height - j * yRate);
+            //     //     context.strokeText(j, canvas2.width - 30, canvas2.height - j * yRate);
+            //     // }
+            //     // console.log(canvas2.toDataURL());//得到最终裁剪出来的base64
+            // }
         },
         download() {
-            var canvas = this.$refs['mycan1']
+            var canvas = this.$refs['mycan2']
 
             // var context = canvas.getContext("2d")
-            var url = canvas.toDataURL("image/jpeg");
+            var url = canvas.toDataURL("image/png");
             var a = document.createElement('a');
             var event = new MouseEvent('click');
             a.download = (new Date()).getTime() + ".png"; // 指定下载图片的名称

Fichier diff supprimé car celui-ci est trop grand
+ 541 - 501
src/views/cockpit/common/VectorSpace/BoxCommonVector.vue


+ 217 - 161
src/views/cockpit/tdsc.vue

@@ -2,66 +2,96 @@
   <div class="tdsc">
     <Title :title="'土地收储'"></Title>
 
-
     <div class="selectTab">
-      <el-select v-model="tab" placeholder="请选择" :popper-append-to-body="false" @change="change_model">
-        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+      <el-select
+        v-model="tab"
+        placeholder="请选择"
+        :popper-append-to-body="false"
+        @change="change_model"
+      >
+        <el-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        >
         </el-option>
       </el-select>
     </div>
     <div v-show="tab == options[1].value">
       <!-- <BarGraph3D ref="tdsc_bar_graph" /> -->
       <div id="tdsc_jg_echart"></div>
-
     </div>
     <div v-show="tab == options[0].value">
-      <DialWatch :dial_watch_info="dial_watch_info" ref="tdsc_scjd" class="tdsc_scjd" @draw_vector="dra" />
+      <DialWatch
+        :dial_watch_info="dial_watch_info"
+        ref="tdsc_scjd"
+        class="tdsc_scjd"
+        @draw_vector="dra"
+      />
     </div>
   </div>
 </template>
 
 <script>
 //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
-import { QueryOne, QueryList } from '@/api/cockpitNew'
-import BarGraph3D from './common/BarGraph3D.vue';
-import DialWatch from './common/DialWatch.vue';
-import Title from './common/Title.vue';
+import { QueryOne, QueryList } from "@/api/cockpitNew";
+import BarGraph3D from "./common/BarGraph3D.vue";
+import DialWatch from "./common/DialWatch.vue";
+import Title from "./common/Title.vue";
 
 export default {
   components: { BarGraph3D, DialWatch, Title },
   data() {
     return {
-      tab: 'scjd',
+      tab: "scjd",
       flag: true,
       options: [
         { value: "scjd", label: "收储进度" },
         { value: "scjgg", label: "计划收储" },
       ],
-      legendData: ['计划收储', '完成收储'],
-      xdata: ['居民用地', '公共管理用地', '商业商服用地', '工矿用地', '工矿用地仓储用地', "交通运输用地"],
+      legendData: ["计划收储", "完成收储"],
+      xdata: [
+        "居民用地",
+        "公共管理用地",
+        "商业商服用地",
+        "工矿用地",
+        "工矿用地仓储用地",
+        "交通运输用地",
+      ],
       result: [
-        { name: '计划收储', data: [...new Array(5)].map((item, i) => +(Math.random(0, 10) * 1000).toFixed(0)) },
-        { name: '完成收储', data: [...new Array(5)].map((item, i) => +(Math.random(0, 0.5) * 1000).toFixed(0)) },
+        {
+          name: "计划收储",
+          data: [...new Array(5)].map(
+            (item, i) => +(Math.random(0, 10) * 1000).toFixed(0)
+          ),
+        },
+        {
+          name: "完成收储",
+          data: [...new Array(5)].map(
+            (item, i) => +(Math.random(0, 0.5) * 1000).toFixed(0)
+          ),
+        },
       ],
       dial_watch_info: {
         echart_data: 0,
         lt: {
-          key: '计划收储',
+          key: "计划收储",
           value: 0,
           unit: "公顷",
-
-        }, lb: {
+        },
+        lb: {
           key: "完成收储",
           value: 0,
           unit: "公顷",
-
-        }, rt: {
+        },
+        rt: {
           key: "计划收储项目",
           value: 0,
           unit: "个",
           viewer: true,
-
-        }, rb: {
+        },
+        rb: {
           key: "完成收储项目",
           value: 0,
           unit: "个",
@@ -74,24 +104,23 @@ export default {
   //监控data中的数据变化
   watch: {},
   //方法集合
-  beforeCreate() { }, //生命周期 - 创建之前
-  created() {
-  }, //生命周期 - 创建完成(可以访问当前this实例)
-  beforeMount() { }, //生命周期 - 挂载之前
+  beforeCreate() {}, //生命周期 - 创建之前
+  created() {}, //生命周期 - 创建完成(可以访问当前this实例)
+  beforeMount() {}, //生命周期 - 挂载之前
   methods: {
     init_tu_gy_echart(xdata, result) {
       var dom = document.getElementById("tdsc_jg_echart");
       var myChart = window.echarts.init(dom);
 
       var option = {
-        backgroundColor: 'rgba(0,0,0,0)',
+        backgroundColor: "rgba(0,0,0,0)",
         tooltip: {
-          backgroundColor: 'RGBA(20, 106, 178, 0.4)',
+          backgroundColor: "RGBA(20, 106, 178, 0.4)",
           trigger: "axis",
           textStyle: {
             fontSize: 14,
-            color: '#fff'
-          }
+            color: "#fff",
+          },
           // formatter: params => {
           //   console.log('params: ', params);
           //   let rander = params.map(item =>
@@ -109,22 +138,22 @@ export default {
           // }
         },
         grid: {
-          left: '2%',
-          right: '4%',
-          bottom: '15%',
-          top: '20%',
-          containLabel: true
+          left: "2%",
+          right: "4%",
+          bottom: "15%",
+          top: "20%",
+          containLabel: true,
         },
         legend: {
-          data: ['收储面积', '收储个数'],
-          left: '7%',
-          top: '5%',
+          data: ["收储面积", "收储个数"],
+          left: "7%",
+          top: "5%",
           textStyle: {
-            color: "#666666"
+            color: "#666666",
           },
           itemWidth: 15,
           itemHeight: 10,
-          itemGap: 25
+          itemGap: 25,
         },
         xAxis: {
           axisTick: { show: false },
@@ -145,104 +174,110 @@ export default {
           },
           data: xdata,
         },
-        yAxis: [{
-          type: 'value',
-          splitLine: {
-            show: false,
-            lineStyle: {
-              color: 'rgba(163, 163, 163, 0.5)',
-              type: 'dashed'
-            }
+        yAxis: [
+          {
+            type: "value",
+            splitLine: {
+              show: false,
+              lineStyle: {
+                color: "rgba(163, 163, 163, 0.5)",
+                type: "dashed",
+              },
+            },
+            axisLabel: {
+              color: "#A0A4AA",
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: "rgba(65, 97, 128, 0.5)",
+              },
+            },
           },
-          axisLabel: {
-            color: '#A0A4AA'
+          {
+            type: "value",
+            name: "",
+            nameTextStyle: {
+              color: "#666666",
+            },
+            position: "right",
+            axisLine: {
+              lineStyle: {
+                color: "#cdd5e2",
+              },
+            },
+            splitLine: {
+              show: false,
+            },
+            axisLabel: {
+              show: false,
+              formatter: "{value} %", //右侧Y轴文字显示
+              textStyle: {
+                color: "#666666",
+              },
+            },
           },
-          axisLine: {
+        ],
+        dataZoom: [
+          {
             show: true,
-            lineStyle: {
-              color: 'rgba(65, 97, 128, 0.5)',
+            height: 12,
+            xAxisIndex: [0],
+            top: "88%",
+            start: 0,
+            end: 40,
+            handleIcon:
+              "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z",
+            handleSize: "110%",
+            handleStyle: {
+              color: "#d3dee5",
             },
-          },
-        },
-        {
-          type: "value",
-          name: "",
-          nameTextStyle: {
-            color: "#666666"
-          },
-          position: "right",
-          axisLine: {
-            lineStyle: {
-              color: '#cdd5e2'
-            }
-          },
-          splitLine: {
-            show: false,
-          },
-          axisLabel: {
-            show: false,
-            formatter: "{value} %", //右侧Y轴文字显示
             textStyle: {
-              color: "#666666"
-            }
-          }
-        }
-        ],
-        dataZoom: [{
-          "show": true,
-          "height": 12,
-          "xAxisIndex": [
-            0
-          ],
-          top: '88%',
-          "start": 0,
-          "end": 40,
-          handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
-          handleSize: '110%',
-          handleStyle: {
-            color: "#d3dee5",
-
+              color: "#333",
+            },
+            borderColor: "#90979c",
           },
-          textStyle: {
-            color: "#333"
+          {
+            type: "inside",
+            show: true,
+            height: 15,
+            start: 1,
+            end: 35,
           },
-          borderColor: "#90979c"
-        }, {
-          "type": "inside",
-          "show": true,
-          "height": 15,
-          "start": 1,
-          "end": 35
-        }],
-        series: [{
-          name: '收储面积',
-          type: 'bar',
-          barWidth: '12px',
-          itemStyle: {
-            normal: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-                offset: 0,
-                color: '#12BDDF'
-              }, {
-                offset: 1,
-                color: 'rgba(24, 253, 255, 0)'
-              }]),
+        ],
+        series: [
+          {
+            name: "收储面积",
+            type: "bar",
+            barWidth: "12px",
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  {
+                    offset: 0,
+                    color: "#12BDDF",
+                  },
+                  {
+                    offset: 1,
+                    color: "rgba(24, 253, 255, 0)",
+                  },
+                ]),
+              },
             },
+            data: result[1].data,
           },
-          data: result[1].data
-        }
-          , {
-          name: "收储个数",
-          type: 'line',
-          smooth: true,
-          itemStyle: {
-            normal: {
-              color: '#FFCC64'  // 折线的颜色
-            }
+          {
+            name: "收储个数",
+            type: "line",
+            smooth: true,
+            itemStyle: {
+              normal: {
+                color: "#FFCC64", // 折线的颜色
+              },
+            },
+            data: result[0].data,
           },
-          data: result[0].data
-        }
-        ]
+        ],
       };
       myChart.setOption(option);
     },
@@ -278,9 +313,30 @@ export default {
       store.setXzqh_flag(false);
       store.setCockpit_vector({
         title: "土地收储计划项目",
-        word: "收储项目名称",
+        searchs: [
+          { type: "input", label: "收储项目名称", key: "val0" },
+          {
+            type: "select",
+            label: "项目类型",
+            key: "val1",
+            options: [
+              { value: "0", label: " 新增" },
+              { value: "1", label: " 年度转存" },
+            ],
+          },
+          {
+            type: "select",
+            label: "收储方式",
+            key: "val2",
+            options: [
+              { value: "征收", label: " 征收" },
+              { value: "收回", label: " 收回" },
+            ],
+          },
+        ],
+        searchform: { val0: "", val1: "", val2: "" },
         tableData: [],
-        tablejscType: 'jsc_tdsc_zbmx',
+        tablejscType: "jsc_tdsc_zbmx",
         columns: [
           "序号",
           "项目类型",
@@ -301,43 +357,43 @@ export default {
       let obj = {
         // beginTime: params ? params.beginTime : store.state.cockpit_date[0],
         // endTime: params ? params.endTime : store.state.cockpit_date[1],
-        jscType: 'jsc_tdsc_ztgh',
-        id: params ? params.id : '4602'
+        jscType: "jsc_tdsc_ztgh",
+        id: params ? params.id : "4602",
       };
       let data = await QueryOne(obj);
       let proData = {
         lt: {
-          key: '计划收储',
+          key: "计划收储",
           value: data.data.jh_mj,
           unit: "公顷",
-
-        }, lb: {
+        },
+        lb: {
           key: "完成收储",
           value: data.data.sj_mj,
           unit: "公顷",
-
-        }, rt: {
+        },
+        rt: {
           key: "计划收储项目",
           value: data.data.jh_xzqdm_number,
           unit: "个",
           viewer: true,
-
-        }, rb: {
+        },
+        rb: {
           key: "完成收储项目",
           value: data.data.sj_xzqdm_number,
           unit: "个",
         },
-      }
+      };
       that.dial_watch_info = proData;
       let echart_data = 0;
-      if (data.data.sj_mj == '暂无') {
-        echart_data = '0'
+      if (data.data.sj_mj == "暂无") {
+        echart_data = "0";
       } else if (data.data.jh_mj == 0 && data.data.sj_mj > 0) {
-        echart_data = 100
+        echart_data = 100;
       } else {
-        echart_data = (data.data.sj_mj / data.data.jh_mj * 100).toFixed(2)
+        echart_data = ((data.data.sj_mj / data.data.jh_mj) * 100).toFixed(2);
       }
-      echart_data += '%'
+      echart_data += "%";
       // that.$refs.tdgy_gyjd.init_dial_watch(echart_data);
 
       that.$refs.tdsc_scjd.init_dial_watch(echart_data);
@@ -350,15 +406,14 @@ export default {
       // this.init_tdsc_jg();
 
       // this.$refs.tdsc_bar_graph.setOptions(this.legendData, this.xdata, this.result);
-
-    })
+    });
   },
-  beforeUpdate() { }, //生命周期 - 更新之前
-  updated() { }, //生命周期 - 更新之后
-  beforeDestroy() { }, //生命周期 - 销毁之前
-  destroy() { },//生命周期 - 销毁完成
-  activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
-  deactivated() { } //若组件实例是 <Keee> 缓存树的一部分,当组件从 DOM 中被移除时调用。
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroy() {}, //生命周期 - 销毁完成
+  activated() {}, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
+  deactivated() {}, //若组件实例是 <Keee> 缓存树的一部分,当组件从 DOM 中被移除时调用。
 };
 </script>
 <style  lang="scss"  scoped>
@@ -374,7 +429,6 @@ export default {
   -webkit-box-shadow: none;
   box-shadow: none;
   z-index: 100;
-
 }
 
 .title {
@@ -390,7 +444,6 @@ export default {
   background-image: url("/static/images/overview/titlebox.gif");
   position: relative;
 
-
   span {
     color: #fff;
     font-size: 14px;
@@ -401,7 +454,6 @@ export default {
   }
 }
 
-
 .selectTab {
   position: absolute;
   right: 1rem;
@@ -432,12 +484,17 @@ export default {
 
   /deep/ .el-select-dropdown__list {
     color: #bcd3e5 !important;
-    background: linear-gradient(180deg,
-        rgba(3, 115, 177, 0) 11%,
-        rgba(3, 115, 177, 0.48) 100%);
-    border-image: linear-gradient(360deg,
+    background: linear-gradient(
+      180deg,
+      rgba(3, 115, 177, 0) 11%,
+      rgba(3, 115, 177, 0.48) 100%
+    );
+    border-image: linear-gradient(
+        360deg,
         rgba(75, 185, 250, 0.2),
-        rgba(75, 185, 250, 0.05)) 1 1 !important;
+        rgba(75, 185, 250, 0.05)
+      )
+      1 1 !important;
     border: none;
   }
 
@@ -471,7 +528,6 @@ export default {
   top: 0;
 }
 
-
 #scje_echart {
   z-index: -1;
   left: -2rem;

+ 22 - 4
src/views/cockpit/ydjc.vue

@@ -82,11 +82,11 @@
                 </span>
               </div>
               <div class="itemCon">
-                <p>{{ item["名称"] }}</p>
+                <p>{{ item["名称"] || item["建设项目"] }}</p>
                 <p>
                   <span
                     ><span class="font_color">面积</span
-                    >{{ item["面积(平方米)"] }}平方米</span
+                    >{{ item["面积(平方米)"] || item["总面积"] }}平方米</span
                   >
                 </p>
               </div>
@@ -110,6 +110,24 @@ import XZQHPieChart from "./common/XZQHPieChart.vue";
 
 import Title from "./common/Title.vue";
 import parse from "wellknown";
+let columns1 = ["名称", "面积(平方米)"];
+let columns2 = [
+  "批准时间",
+  "建设项目",
+  "总面积(平方米)",
+  "农用地集体",
+  "农用地国有",
+  "农用地集体其中耕地",
+  "土地坐落",
+  "土地用途",
+  "备注",
+  "建设用地集体",
+  "批准文号",
+  "指标情况",
+  "权属",
+  "用地单位",
+  "补偿标准(万元/公顷)",
+];
 export default {
   components: { ThreeStackedBarAndLine, Title, XZQHPieChart },
   data() {
@@ -212,10 +230,10 @@ export default {
         store.setXzqh_flag(false);
         store.setCockpit_vector({
           title: this.value == "lsyd" ? "临时用地项目" : "农转用地项目",
-          word: "名称",
+          word: this.value == "lsyd" ? "名称" : "建设项目",
           tableData: this.xzqh_flag ? [] : this.list,
           tablejscType: `jsc_zdydjg_${this.value}_qxzbmx`,
-          columns: ["名称", "面积(平方米)"],
+          columns: this.value == "lsyd" ? columns1 : columns2,
         });
       }
     },

+ 0 - 1
src/views/siteselection/components/fzxz.vue

@@ -341,7 +341,6 @@ export default {
       var _temp = this.$refs.range.getRange();
       // this.ruleForm.xzfw = _temp.xzfw;
       this.ruleForm.xzmj = _temp.xzmj;
-      console.log(this.ruleForm, "0---");
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
           if (!this.$refs.range.fileDataID) {

+ 230 - 202
static/Config/config.js

@@ -529,7 +529,7 @@ window.layerTreeNodes = [
       {
         id: 1,
         label: "规划模型",
-        layerName: "BaoPo@BaoPo0621N",
+        layerName: "BaoPo@Baopo0723",
       },
       // {
       //   id: 2,
@@ -544,22 +544,22 @@ window.layerTreeNodes = [
       {
         id: 4,
         label: "体育场",
-        layerName: "TYC@BaoPo0621N",
+        layerName: "TYC@Baopo0723",
       },
       {
         id: 5,
         label: "体育馆",
-        layerName: "TYCB@BaoPo0621N",
+        layerName: "TYCB@Baopo0723",
       },
       {
         id: 6,
         label: "地形",
-        layerName: "DiXing@BaoPo0621N",
+        layerName: "DiXing@Baopo0723",
       },
       {
         id: 7,
         label: "道路",
-        layerName: "Road@BaoPo0621N",
+        layerName: "Road@Baopo0723",
       },
       {
         id: 8,
@@ -771,12 +771,12 @@ window.bjConfig = {
 };
 /**
  * //项目信息
- * meetingProgress (未上会:0,已上会:1)
+ * meetingprogress (未上会:0,已上会:1)
  */
 window.projectinformation = [
   {
     id: "ertyuiop",
-    meetingProgress: 0,
+    meetingprogress: "0",
     applicant: "三亚投资发展有限公司",
     projectname: "东岸卓越城项目",
     projectaddress: "抱坡路",
@@ -787,11 +787,52 @@ window.projectinformation = [
     landsituation: "",
     totalprojectinvestment: "约19亿元",
     fundingsource: "企业投资",
+    ztConstructionmodelList: [
+      {
+        id: "hfgdg",
+        projectinformationid: "ertyuiop",
+        modelname: "报建模型1",
+        creationtime: "2024-04-24 17:22:13",
+        url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
+        dataurl:
+          "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
+        datasourcename: "DongAnZhuoYueCheng",
+        datasetname: "建筑轮廓",
+        selectionStatus: false,
+        designunit: "筑博设计股份有限公司",
+        totalarea: "",
+        groundarea: "",
+        groundcapacity: "",
+        buildingarea: "",
+        plandescription:
+          "拟建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个",
+      },
+      {
+        id: "2hfgddfzg",
+        projectinformationid: "ertyuiop",
+        modelname: "报建模型2",
+        creationtime: "2024-04-24 17:22:13",
+
+        url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
+        dataurl:
+          "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
+        datasourcename: "DongAnZhuoYueCheng2",
+        datasetname: "建筑轮廓",
+        selectionStatus: false,
+        designunit: "2筑博设计股份有限公司",
+        totalarea: "",
+        groundarea: "",
+        groundcapacity: "",
+        buildingarea: "",
+        plandescription:
+          "拟建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个",
+      },
+    ],
   },
   {
     id: "222ertyuiop",
     projectname: "三亚投资发展有限公司",
-    meetingProgress: 1,
+    meetingprogress: "1",
     applicant: "东岸卓越城项目",
     projectaddress: "抱坡路",
     plotnumber: "BP08-03,BP08-11",
@@ -801,11 +842,52 @@ window.projectinformation = [
     landsituation: "",
     totalprojectinvestment: "约19亿元",
     fundingsource: "企业投资",
+    ztConstructionmodelList: [
+      {
+        id: "hfgdg",
+        projectinformationid: "ertyuiop",
+        modelname: "报建模型1",
+        creationtime: "2024-04-24 17:22:13",
+        url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
+        dataurl:
+          "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
+        datasourcename: "DongAnZhuoYueCheng",
+        datasetname: "建筑轮廓",
+        selectionStatus: true,
+        designunit: "筑博设计股份有限公司",
+        totalarea: "",
+        groundarea: "",
+        groundcapacity: "",
+        buildingarea: "",
+        plandescription:
+          "拟建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个",
+      },
+      {
+        id: "2hfgddfzg",
+        projectinformationid: "ertyuiop",
+        modelname: "报建模型2",
+        creationtime: "2024-04-24 17:22:13",
+
+        url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
+        dataurl:
+          "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
+        datasourcename: "DongAnZhuoYueCheng2",
+        datasetname: "建筑轮廓",
+        selectionStatus: false,
+        designunit: "2筑博设计股份有限公司",
+        totalarea: "",
+        groundarea: "",
+        groundcapacity: "",
+        buildingarea: "",
+        plandescription:
+          "拟建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个",
+      },
+    ],
   },
   {
     id: "A1",
     projectname: "榕华四季",
-    meetingProgress: 0,
+    meetingprogress: "0",
     applicant: "榕华四季",
     projectaddress: "抱坡路",
     plotnumber: "BP08-11-2",
@@ -815,105 +897,31 @@ window.projectinformation = [
     landsituation: "",
     totalprojectinvestment: "",
     fundingsource: "企业投资",
+    ztConstructionmodelList: [
+      {
+        // 榕华四季
+        id: "A",
+        projectinformationid: "A1",
+        modelname: "A1",
+        creationtime: "2024-04-24 17:22:13",
+        url: "http://192.168.60.2:8090/iserver/services/3D-RHSJ/rest/realspace",
+        dataurl:
+          "http://192.168.60.2:8090/iserver/services/data-RHSJ/rest/data",
+        datasourcename: "RHSJ",
+        datasetname: "建筑轮廓",
+        selectionStatus: false,
+        designunit: "",
+        totalarea: "",
+        groundarea: "",
+        groundcapacity: "",
+        buildingarea: "",
+        plandescription: "",
+      },
+    ],
   },
 ];
-//报建模型
-window.constructionmodel = [
-  {
-    id: "hfgdg",
-    projectinformationid: "ertyuiop",
-    modelname: "报建模型1",
-    creationtime: "2024-04-24 17:22:13",
-    url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
-    dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-    dataSourceName: "DongAnZhuoYueCheng",
-    datasetName: "建筑轮廓",
-    selectionStatus: false,
-    designunit: "筑博设计股份有限公司",
-    totalarea: "",
-    groundarea: "",
-    groundcapacity: "",
-    buildingarea: "",
-    plandescription:
-      "拟建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个",
-  },
-  {
-    id: "2hfgddfzg",
-    projectinformationid: "ertyuiop",
-    modelname: "报建模型2",
-    creationtime: "2024-04-24 17:22:13",
-
-    url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
-    dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
-    dataSourceName: "DongAnZhuoYueCheng2",
-    datasetName: "建筑轮廓",
-    selectionStatus: false,
-    designunit: "2筑博设计股份有限公司",
-    totalarea: "",
-    groundarea: "",
-    groundcapacity: "",
-    buildingarea: "",
-    plandescription:
-      "拟建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个",
-  },
-  // {
-  //   id: "222hfgdg",
-  //   projectinformationid: "222ertyuiop",
-  //   modelname: "222报建模型1",
-  //   creationtime: "2024-04-24 17:22:13",
-
-  //   url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
-  //   dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
-  //   dataSourceName: "sanyatieluxiaoqu2",
-  //   datasetName: "建筑轮廓",
-  //   selectionStatus: true,
-  //   designunit: "筑博设计股份有限公司",
-  //   totalarea: "",
-  //   groundarea: "",
-  //   groundcapacity: "",
-  //   buildingarea: "",
-  //   plandescription:
-  //     "拟建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个",
-  // },
-
-  {
-    // 榕华四季
-    id: "A",
-    projectinformationid: "ertyuiop",
-    modelname: "A1",
-    creationtime: "2024-04-24 17:22:13",
-    url: "http://192.168.60.2:8090/iserver/services/3D-RHSJ/rest/realspace",
-    dataurl: "http://192.168.60.2:8090/iserver/services/data-RHSJ/rest/data",
-    dataSourceName: "RHSJ",
-    datasetName: "建筑轮廓",
-    selectionStatus: false,
-    designunit: "",
-    totalarea: "",
-    groundarea: "",
-    groundcapacity: "",
-    buildingarea: "",
-    plandescription: "",
-  },
-  // {
-  //   id: "B",
-  //   projectinformationid: "A1",
-  //   modelname: "B1",
-  //   creationtime: "2024-04-24 17:22:13",
-
-  //   url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
-  //   dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan4/rest/data",
-  //   dataSourceName: "DongAnZhuoYueCheng2",
-  //   datasetName: "建筑轮廓",
-  //   selectionStatus: false,
-  //   designunit: "筑博设计股份有限公司",
-  //   totalarea: "",
-  //   groundarea: "",
-  //   groundcapacity: "",
-  //   buildingarea: "",
-  //   plandescription:
-  //     "拟建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.project_model_zb = [{ id: "qwertyuiop", dkbm: "" }];
 
 //图层服务查询分组树
 window.layerTree = [
@@ -933,8 +941,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "索引",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -953,8 +961,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "市政府",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -973,8 +981,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "区政府",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -993,8 +1001,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "道路中线",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1013,8 +1021,8 @@ window.layerTree = [
           nvfid: "45wef26fwsd78",
           server_name: "兴趣点",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1033,8 +1041,8 @@ window.layerTree = [
           nvfid: "45wef26fwsd78",
           server_name: "行政区划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1053,8 +1061,8 @@ window.layerTree = [
           nvfid: "45wef26fwsd78",
           server_name: "水系",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
     ],
@@ -1075,8 +1083,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "土地利用现状",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1095,8 +1103,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "山体绿地",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1115,8 +1123,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "地类图斑",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "地类图斑",
+          datasourcename: "sanya",
+          datasetname: "地类图斑",
         },
       },
     ],
@@ -1137,8 +1145,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "土地利用现状",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1157,8 +1165,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "综合管廊规划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1177,8 +1185,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "雨水管线规划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1197,8 +1205,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "污水管线规划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1217,8 +1225,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "燃气管线规划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1237,8 +1245,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "给水管线规划",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1257,8 +1265,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "规划地块",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "规划地块",
+          datasourcename: "sanya",
+          datasetname: "规划地块",
         },
       },
     ],
@@ -1279,8 +1287,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "土地规划",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1299,8 +1307,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "城镇开发边界",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "城镇开发边界",
+          datasourcename: "sanya",
+          datasetname: "城镇开发边界",
         },
       },
       {
@@ -1319,8 +1327,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "生态保护红线",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "生态保护红线",
+          datasourcename: "sanya",
+          datasetname: "生态保护红线",
         },
       },
       {
@@ -1339,8 +1347,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "永久基本农田",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "永久基本农田",
+          datasourcename: "sanya",
+          datasetname: "永久基本农田",
         },
       },
       {
@@ -1359,8 +1367,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "建筑退线",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "建筑退线",
+          datasourcename: "sanya",
+          datasetname: "建筑退线",
         },
       },
     ],
@@ -1381,8 +1389,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "市政设施",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1401,8 +1409,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "高速",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1421,8 +1429,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "铁路",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1441,8 +1449,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "道路",
           url: "",
-          dataSourceName: "",
-          datasetName: "",
+          datasourcename: "",
+          datasetname: "",
         },
       },
       {
@@ -1461,8 +1469,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "道路中线",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "道路中线",
+          datasourcename: "sanya",
+          datasetname: "道路中线",
         },
       },
       {
@@ -1481,8 +1489,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "禁止开口线",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "禁止开口线",
+          datasourcename: "sanya",
+          datasetname: "禁止开口线",
         },
       },
       {
@@ -1501,8 +1509,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "道路红线",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "道路红线",
+          datasourcename: "sanya",
+          datasetname: "道路红线",
         },
       },
     ],
@@ -1523,8 +1531,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "基础地价",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1543,8 +1551,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "c1_2_商服级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c1_2_商服级别",
+          datasourcename: "sanya",
+          datasetname: "c1_2_商服级别",
         },
       },
       {
@@ -1563,8 +1571,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c2_2_0_住宅级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c2_2_0_住宅级别",
+          datasourcename: "sanya",
+          datasetname: "c2_2_0_住宅级别",
         },
       },
       {
@@ -1583,8 +1591,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c3_2_工业级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c3_2_工业级别",
+          datasourcename: "sanya",
+          datasetname: "c3_2_工业级别",
         },
       },
       {
@@ -1603,8 +1611,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c4_1_公服级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c4_1_公服级别",
+          datasourcename: "sanya",
+          datasetname: "c4_1_公服级别",
         },
       },
       {
@@ -1623,8 +1631,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c2_3_0_工业级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c2_3_0_工业级别",
+          datasourcename: "sanya",
+          datasetname: "c2_3_0_工业级别",
         },
       },
       {
@@ -1643,8 +1651,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c2_1_0_商服级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c2_1_0_商服级别",
+          datasourcename: "sanya",
+          datasetname: "c2_1_0_商服级别",
         },
       },
       {
@@ -1663,8 +1671,8 @@ window.layerTree = [
           nvfid: "4526wsd78",
           server_name: "c4_路线价",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c4_路线价",
+          datasourcename: "sanya",
+          datasetname: "c4_路线价",
         },
       },
       {
@@ -1683,8 +1691,8 @@ window.layerTree = [
           nvfid: "4526sawsd78",
           server_name: "c2_2_住宅级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c2_2_住宅级别",
+          datasourcename: "sanya",
+          datasetname: "c2_2_住宅级别",
         },
       },
       {
@@ -1703,8 +1711,8 @@ window.layerTree = [
           nvfid: "4526sawsd78",
           server_name: "c2_4_0_公服级别",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "c2_4_0_公服级别",
+          datasourcename: "sanya",
+          datasetname: "c2_4_0_公服级别",
         },
       },
     ],
@@ -1725,8 +1733,8 @@ window.layerTree = [
       nvfid: "456sd78",
       server_name: "土地权属",
       url: "",
-      dataSourceName: "",
-      datasetName: "",
+      datasourcename: "",
+      datasetname: "",
     },
     children: [
       {
@@ -1745,8 +1753,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "国有使用权",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "国有使用权",
+          datasourcename: "sanya",
+          datasetname: "国有使用权",
         },
       },
       {
@@ -1765,8 +1773,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "集体使用权",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "集体使用权",
+          datasourcename: "sanya",
+          datasetname: "集体使用权",
         },
       },
       {
@@ -1785,8 +1793,8 @@ window.layerTree = [
           nvfid: "456sd78",
           server_name: "集体所有权",
           url: "http://192.168.60.2:8090/iserver/services/data-sanyamap1/rest/data",
-          dataSourceName: "sanya",
-          datasetName: "集体所有权",
+          datasourcename: "sanya",
+          datasetname: "集体所有权",
         },
       },
     ],
@@ -1957,6 +1965,8 @@ window.billboardReviewList = [
         id: "wew232",
         code: "00101",
         billboardType: "平行建筑主体户外广告",
+        isAddModel: true,
+        ModelType: "box",
         ReviewItems: [
           {
             id: "4553",
@@ -2016,6 +2026,8 @@ window.billboardReviewList = [
             id: "we44fsxcvd3w232",
             code: "0010201",
             billboardType: "底层以上没有出挑结构的建筑",
+            isAddModel: true,
+            ModelType: "box",
             ReviewItems: [
               {
                 id: "4553",
@@ -2146,6 +2158,8 @@ window.billboardReviewList = [
         id: "we443w232",
         code: "00103",
         billboardType: "围墙上设置的户外广告",
+        isAddModel: true,
+        ModelType: "box",
         ReviewItems: [
           {
             id: "4534553",
@@ -2212,6 +2226,8 @@ window.billboardReviewList = [
         id: "wew232",
         code: "00201",
         billboardType: "公交候车亭广告",
+        isAddModel: true,
+        ModelType: "box",
         ReviewItems: [
           {
             id: "4553",
@@ -2277,6 +2293,9 @@ window.billboardReviewList = [
             id: "wew232",
             code: "0020201",
             billboardType: "公共自行车亭广告",
+            isAddModel: true,
+            ModelType: "box",
+
             ReviewItems: [
               {
                 id: "4553",
@@ -2944,8 +2963,8 @@ window.billboardReviewList = [
 window.billboardModelLT = {
   url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
   dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-  dataSourceName: "DongAnZhuoYueCheng",
-  datasetName: "建筑轮廓",
+  datasourcename: "DongAnZhuoYueCheng",
+  datasetname: "建筑轮廓",
 };
 
 /**
@@ -3132,27 +3151,25 @@ window.ZSBC = {
      * 国有所有权
      */
     StateUsed: {
-      layerName: '国有使用权',
+      layerName: "国有使用权",
       layerDataSource: "sanya:国有使用权", //[数据集:图层名]
-      ownerfld:'RIGHT_OWNE',
+      ownerfld: "RIGHT_OWNE",
     },
     /**
      * 集体使用权
      */
-    CollectiveUsed : {
-      layerName: '集体使用权',
+    CollectiveUsed: {
+      layerName: "集体使用权",
       layerDataSource: "sanya:集体使用权", //[数据集:图层名]
-      ownerfld:'QLR',
+      ownerfld: "QLR",
     },
     /**
      * 集体所有权
      */
     CollectiveOwner: {
-
       layerName: "集体所有权",
       layerDataSource: "sanya:集体所有权", //[数据集:图层名]
-      ownerfld:'SYQR',
-
+      ownerfld: "SYQR",
     },
     /**
      * 地类图斑
@@ -3651,3 +3668,14 @@ window.landUseNatureRelation = [
   },
 ];
 window.earthRadius = 0.994615737;
+//用于地下模式更改透明度
+//图层名称
+window.QXLayerNames = [
+  "qxsy",
+  "TYCB@BaoPo0621N",
+  "TYC@BaoPo0621N",
+  "BaoPo@BaoPo0621N",
+  "Road@BaoPo0621N",
+  "DiXing@BaoPo0621N",
+];
+window.Layeralpha = 0;

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff