Переглянути джерело

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

maxiaoxiao 11 місяців тому
батько
коміт
0dd2048fff

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

@@ -64,7 +64,7 @@
         <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
       </div>
     </el-dialog>
-    <el-dialog title="编辑" :modal="false" :visible.sync="editFormVisible" modal-append-to-body>
+    <el-dialog title="编辑" :modal="false" :visible.sync="editFormVisible" append-to-body="true" width="20rem">
       <el-form :model="oldRow" :rules="rules" ref="oldRow">
         <el-form-item label="房屋结构" prop="jg">
           <el-select v-model="oldRow.jg">

+ 46 - 36
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue

@@ -263,10 +263,9 @@
                     </div>
                   </div>
                 </div>
-
-                <div id="JTDLChart" style="height: 12rem; width: 25rem;"></div>
                 <div id="JTOWNERChart" style="height:12rem; width: 25rem;"></div>
                 <div id="JTUSEChart" style="height: 12rem; width: 25rem;"></div>
+                <div id="JTDLChart" style="height: 12rem; width: 25rem;"></div>
 
               </el-tab-pane>
               <el-tab-pane label="青苗补偿评估" name="QMPG">
@@ -498,6 +497,7 @@
   </div>
 </template>
 <script>
+
 import {
   polygon,
   area,
@@ -1077,6 +1077,8 @@ export default {
       qsEntities: [],
       // handlerPolygon: null
       // clipMode: Cesium.ModifyRegionMode.CLIP_OUTSIDE;
+      gyqsChartdatas: [],
+      jtqsChartDatas: []
     };
   },
   created() {
@@ -1194,6 +1196,7 @@ export default {
             "endDateTime": endDate,
           }
         }
+       
         debugger
         getZdProjectList(queryParams).then((res) => {
           that.projectList = res.rows;
@@ -1222,8 +1225,6 @@ export default {
         that.rowsCount = list.length;
         list = list.slice((that.currentPage - 1) * that.pageSize, that.pageSize)
       }
-
-
     },
     onCurrentChange() {
       this.queryProject()
@@ -1260,8 +1261,6 @@ export default {
       second = second < 10 ? ('0' + second) : second;
       return y.toString() + '-' + m.toString() + '-' + d.toString() + ' ' + h.toString() + ':' + minute.toString() + ':' + second.toString();
     },
-
-
     //关闭窗体
     dialogClose() {
       viewer.entities.removeAll();
@@ -1302,7 +1301,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "40rem"],
-        title: "拆迁补偿标准",
+        title: "拆迁补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1330,7 +1329,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["50rem", "40rem"],
-        title: "拆迁补偿标准置",
+        title: "拆迁补偿标准置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1357,8 +1356,8 @@ export default {
           data: { qmValue: that.ruleForm.qmValue }, //props
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["30rem", "15rem"],
-        title: "青苗补偿标准",
+        area: ["30rem", "18rem"],
+        title: "青苗补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1385,8 +1384,8 @@ export default {
           data: { qmValue: that.ruleForm.qmValue }, //props
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["35rem", "20rem"],
-        title: "青苗补偿标准置",
+        area: ["35rem", "16rem"],
+        title: "青苗补偿标准置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1414,7 +1413,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "32rem"],
-        title: "征地补偿标准",
+        title: "征地补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1442,7 +1441,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "37rem"],
-        title: "征地补偿标准",
+        title: "征地补偿标准配置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1946,7 +1945,7 @@ export default {
       myChart.clear()
       myChart.setOption(option);
       var showOrHide = false;
-      that.JTDLLoad(null, showOrHide);
+      // that.JTDLLoad(null, showOrHide);
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTYD');
         var name = parmas.name
@@ -1989,10 +1988,10 @@ export default {
         else {
 
           var dlColor = that.getLandColor(dlmc);
-        var color = dlColor.replace("rgb", "")
-          .replace("(", "")
-          .replace(")", "");
-        var colorArr = color.split(",");
+          var color = dlColor.replace("rgb", "")
+            .replace("(", "")
+            .replace(")", "");
+          var colorArr = color.split(",");
           attributes = {
             fieldNames: that.zdResult.fieldInfos,
             fieldValues: features[i].fieldValues,
@@ -2131,7 +2130,7 @@ export default {
       myChart.setOption(option);
 
       var shaowOrHide = false;
-      that.GYDLLoad(null, shaowOrHide);
+      // that.GYDLLoad(null, shaowOrHide);
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYDL');
         var name = parmas.name
@@ -2509,7 +2508,7 @@ export default {
       // var chartDom = document.getElementById('CQBCChart');
       // var myChart = window.echarts.init(chartDom);
 
-      item = {
+      var item = {
         id: smid,
         smid: smid,
         cqr: cqrVal,
@@ -2533,7 +2532,7 @@ export default {
       var that = this;
       var chartDom = document.getElementById("GYQSChart");
       var myChart = window.echarts.init(chartDom);
-      var datas = [];
+      that.gyqsChartdatas = [];
       var nameLength = 0;
       var colors = ["rgb(63,177,227)", "rgb(107,230,193)", "rgb(196,235,173)", "rgb(150,222,232)"];
       // ["rgb(245,248,220)", "rgb(191,233,170)", "rgb(104,177,103)", "rgb(205,245,122)",
@@ -2544,9 +2543,8 @@ export default {
       var color = "";
       var qsList = [];
 
-
       for (var i = 0; i < that.qsResult.stateUsedList.length; i++) {
-        datas.push({
+        that.gyqsChartdatas.push({
           value: Number(that.qsResult.stateUsedList[i].mj.toFixed(2)),
           name: that.qsResult.stateUsedList[i].qsdwmc,
         });
@@ -2580,9 +2578,9 @@ export default {
           pageTextStyle: {
             color: "#ffffff"
           },
-          data: datas.map((t) => t.name),
+          data: that.gyqsChartdatas.map((t) => t.name),
           formatter: function (name) {
-            var val = datas.find((t) => t.name == name).value;
+            var val = that.gyqsChartdatas.find((t) => t.name == name).value;
             var spname = '';
             if (name.length > 13) {
 
@@ -2632,20 +2630,21 @@ export default {
             labelLine: {
               show: false,
             },
-            data: datas,
+            data: that.gyqsChartdatas,
           },
         ],
       };
+
       myChart.clear();
       myChart.setOption(option);
-      that.GYQSLoad(datas);
+      // that.GYQSLoad(datas);
 
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYQS');
         var name = parmas.name
         var showOrHide = parmas.selected[name]
         // var index = Object.keys(parmas.selected).findIndex(t => t == name)
-        that.GYQSLoad(datas, name, showOrHide);
+        that.GYQSLoad(that.gyqsChartdatas, name, showOrHide);
       });
     },
     GYQSLoad(datas, name, showOrHide) {
@@ -2873,7 +2872,7 @@ export default {
       myChart.clear();
       myChart.setOption(option);
       var shaowOrHide = false;
-      that.JTUseLoad(datas, null, shaowOrHide)
+      // that.JTUseLoad(datas, null, shaowOrHide)
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTUSE');
         var name = parmas.name
@@ -3111,7 +3110,7 @@ export default {
         ],
       };
       var showOrHide = false;
-      that.JTOwnerLoad(datas, null, showOrHide);
+      // that.JTOwnerLoad(datas, null, showOrHide);
       myChart.clear();
       myChart.setOption(option);
       myChart.on("legendselectchanged", function (parmas) {
@@ -3774,6 +3773,7 @@ export default {
      * point1(裁剪),points2(被裁剪) [{x:1,y:2}]
      */
     computerInsertArea(points1, points2) {
+      var area = 0;
       if (
         points1 == null ||
         points2 == null ||
@@ -3781,7 +3781,7 @@ export default {
         points1.length == 0
       ) {
         console.log("征地补偿图斑计算传入参数错误");
-        return 0;
+        area = 0;
       }
       var parts1 = [];
       var poly1 = [];
@@ -3793,18 +3793,28 @@ export default {
       }
       poly1 = polygon([parts1]);
       var textarea = area(poly1) * window.earthRadius;
-      console.log("分析范围:" + textarea);
+
       for (var i = 0; i < points2.length; i++) {
         parts2.push([points2[i].x, points2[i].y]);
       }
       poly2 = polygon([parts2]);
       var isContain = booleanContains(poly1, poly2);
-      if (isContain) return area(poly2) * window.earthRadius;
+      if (isContain) {
+        area = area(poly2) * window.earthRadius;
+      }
       else {
         var intersection = intersect(poly1, poly2);
-        return area(intersection) * window.earthRadius;
+        area = area(intersection) * window.earthRadius;
       }
-      return 0;
+      return area;
+    },
+    areaFrom4326To4525(region) {
+      var fromProj = proj4.defs();
+      var toProj = proj4.defs(window.localWkid4525);
+      proj4.defs("EPSG:4525", "+proj=longlat +ellps=GRS80 +no_defs +type=crs");
+      var point;
+
+      proj4.transform(fromProj, toProj, point)
     },
 
     /**

+ 2 - 4
src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue

@@ -34,16 +34,14 @@
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
     </el-row>
-    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" modal-append-to-body>
+    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
         <el-form-item label="名称" prop="name">
           <el-input v-model="ruleForm.name" autocomplete="off"></el-input>
         </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">取消</el-button>
         <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
-      </div>
+      </el-form>
     </el-dialog>
   </div>
 </template>

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

@@ -62,7 +62,7 @@
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
     </el-row>
-    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" modal-append-to-body>
+    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
         <el-form-item label="名称" prop="name">
           <el-input v-model="ruleForm.name"></el-input>

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

@@ -13,7 +13,7 @@
     </el-row>
     <el-row style="display: flex; align-items: center">
       <el-col :span="6">土地年产值:</el-col>
-      <el-col :span="16"><el-input controls-position="right" size="mini" style="width: 100%" type="number"
+      <el-col :span="16"><el-input controls-position="right" size="mini" style="width: 100%" 
           placeholder="请输入" v-model="curBCBZ.tdcz" @change="changeZDBZ"></el-input>
       </el-col>
       <el-col :span="2">元/亩</el-col>
@@ -24,13 +24,13 @@
     </el-row>
     <el-row>
       <el-col :span="6">综合补偿倍数:</el-col>
-      <el-col :span="16"><el-input size="mini" style="width: 100%" type="number" placeholder="请输入"
+      <el-col :span="16"><el-input size="mini" style="width: 100%"  placeholder="请输入"
           v-model="curBCBZ.tdbcbs" @change="changeZDBZ"></el-input></el-col>
     </el-row>
     <el-row>
       <el-col :span="6">土地补偿费:</el-col>
       <el-col :span="16">
-        <el-input size="mini" placeholder="自动计算" readonly type="number" v-model="curBCBZ.tdbcf"></el-input></el-col>
+        <el-input size="mini" placeholder="自动计算" readonly  v-model="curBCBZ.tdbcf"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     <el-row class="subtitle">
@@ -39,12 +39,12 @@
     </el-row>
     <el-row>
       <el-col :span="6">综合补偿倍数</el-col>
-      <el-col :span="16"><el-input size="mini" type="number" style="width: 100%" placeholder="请输入"
+      <el-col :span="16"><el-input size="mini"  style="width: 100%" placeholder="请输入"
           v-model="curBCBZ.azbcbs" @change="changeZDBZ"></el-input></el-col>
     </el-row>
     <el-row>
       <el-col :span="6">安置补偿费:</el-col>
-      <el-col :span="16"><el-input size="mini" v-model="curBCBZ.azbcf" readonly type="number"
+      <el-col :span="16"><el-input size="mini" v-model="curBCBZ.azbcf" readonly 
           placeholder="自动计算"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>

Різницю між файлами не показано, бо вона завелика
+ 0 - 1
src/views/ConstructionApplication3D/Demolition/zdAnalyse.js


+ 3 - 1
src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue

@@ -521,7 +521,9 @@ export default {
     },
   },
 
-  beforeDestroy() {},
+  beforeDestroy() {
+    this.removeAll();
+  },
 };
 </script>
 <style lang="scss">

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

@@ -5,7 +5,7 @@
   >
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       定点分析:
       <el-row :gutter="5">
@@ -39,7 +39,7 @@
     </el-row>
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       环视分析:
       <el-row :gutter="5">
@@ -87,7 +87,7 @@
     </el-row>
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       沿线飞行:
       <el-row :gutter="2">

+ 276 - 0
src/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue

@@ -0,0 +1,276 @@
+<template>
+  <div
+    class="ZTGlobal"
+    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
+  >
+    <el-form label-width="80px">
+      <el-form-item label="模式切换">
+        <el-button
+          v-if="!underground"
+          size="mini"
+          type="primary"
+          @click="undergroundModeAnalysis"
+          >切换到地下</el-button
+        >
+        <el-button
+          v-if="underground"
+          size="mini"
+          type="primary"
+          @click="undergroundModeAnalysis"
+          >切换到地上</el-button
+        >
+        <el-button size="mini" @click="removeEntities">清除</el-button>
+      </el-form-item>
+      <el-form-item label="剖切">
+        <el-button size="mini" type="primary" @click="onSubmit"
+          >绘制剖切</el-button
+        >
+        <el-checkbox v-model="checked">切换到地下</el-checkbox>
+      </el-form-item>
+      <!-- <el-form-item label="">
+        <el-button size="mini" @click="removeEntities">清除</el-button>
+      </el-form-item> -->
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { v4 as uuidv4 } from "uuid";
+import {
+  cartesian3ToWGS84,
+  mapQuery,
+  flatten,
+  mercator2lonLat,
+  undergroundMode,
+} from "@/utils/MapHelper/MapHelper.js";
+import {
+  point,
+  buffer,
+  bboxPolygon,
+  square,
+  destination,
+  polygon,
+  booleanPointInPolygon,
+} from "@turf/turf";
+let polygonids = [];
+var editorBox;
+var boxEntity;
+let handlerBox;
+export default {
+  data() {
+    return {
+      //地下模式状态
+      underground: false,
+      tooltip: createTooltip(document.body),
+      checked: false,
+    };
+  },
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    layerid: {
+      type: String,
+      default: "",
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  computed: {},
+  mounted() {},
+  methods: {
+    //绘制剖切
+    async onSubmit() {
+      this.removeEntities();
+      if (this.checked) {
+        this.undergroundModeAnalysis(true);
+      }
+
+      let that = this;
+
+      handlerBox = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Box);
+      handlerBox.movingEvt.addEventListener(function (windowPosition) {
+        if (handlerBox.isDrawing) {
+          that.tooltip.showAt(
+            windowPosition,
+            "<p>点击鼠标左键结束矩形绘制,移动鼠标绘制box高度。</p><p>右键结束绘制.</p>"
+          );
+        } else {
+          that.tooltip.showAt(
+            windowPosition,
+            "<p>点击鼠标左键,开始绘制矩形作为box底面</p>"
+          );
+        }
+      });
+      handlerBox.drawEvt.addEventListener(function (e) {
+        boxEntity = e.object;
+        var newDim = boxEntity.box.dimensions.getValue();
+        var position = boxEntity.position.getValue(0);
+        var boxOption = {
+          dimensions: newDim,
+          position: position,
+          clipMode: "clip_behind_all_plane",
+          heading: 0,
+        };
+
+        //box编辑
+        editorBox = new Cesium.BoxEditor(viewer, boxEntity);
+
+        editorBox.editEvt.addEventListener(function (e) {
+          boxEntity.box.dimensions = e.dimensions;
+          boxEntity.position = e.position;
+          boxEntity.orientation = e.orientation;
+
+          that.setClipBox();
+        });
+        editorBox.distanceDisplayCondition =
+          new Cesium.DistanceDisplayCondition(0, 950);
+        editorBox.activate();
+        that.setAllLayersClipOptions(boxOption);
+        that.tooltip.setVisible(false);
+        handlerBox.clear();
+        handlerBox.deactivate();
+      });
+      handlerBox.activate();
+    },
+    setClipBox() {
+      let that = this;
+      var clipMode = "clip_behind_all_plane";
+      if (typeof boxEntity == "undefined") {
+        return;
+      }
+      var newDim = boxEntity.box.dimensions.getValue();
+      var position = boxEntity.position.getValue(0);
+
+      var heading = 0;
+      if (typeof boxEntity.orientation != "undefined") {
+        let rotationM3 = Cesium.Matrix3.fromQuaternion(
+          boxEntity.orientation._value,
+          new Cesium.Matrix3()
+        );
+        let localFrame = Cesium.Matrix4.fromRotationTranslation(
+          rotationM3,
+          Cesium.Cartesian3.ZERO,
+          new Cesium.Matrix4()
+        );
+        let inverse = Cesium.Matrix4.inverse(
+          Cesium.Transforms.eastNorthUpToFixedFrame(position),
+          new Cesium.Matrix4()
+        );
+        let hprm = Cesium.Matrix4.multiply(
+          inverse,
+          localFrame,
+          new Cesium.Matrix4()
+        );
+        var rotation = Cesium.Matrix4.getMatrix3(hprm, new Cesium.Matrix3());
+        let hpr = Cesium.HeadingPitchRoll.fromQuaternion(
+          Cesium.Quaternion.fromRotationMatrix(rotation)
+        );
+        heading = hpr.heading;
+      }
+
+      var boxOptions = {
+        dimensions: newDim,
+        position: position,
+        clipMode: clipMode,
+        heading: heading,
+      };
+      that.setAllLayersClipOptions(boxOptions);
+    },
+
+    setAllLayersClipOptions(boxOptions) {
+      let layers = scene.layers.layerQueue;
+      for (var i = 0, j = layers.length; i < j; i++) {
+        layers[i].setCustomClipBox(boxOptions);
+      }
+    },
+    //清除
+    removeEntities() {
+      let layers = scene.layers.layerQueue;
+      for (var i = 0, j = layers.length; i < j; i++) {
+        layers[i].clearCustomClipBox();
+      }
+      if (editorBox) {
+        editorBox.deactivate();
+      }
+
+      viewer.entities.removeAll();
+      if (handlerBox) {
+        handlerBox.clear();
+        handlerBox.deactivate();
+      }
+    },
+
+    /**
+     * 切换地下模式
+     * @param isunderground true 地下, false 地上,空 切换
+     */
+    undergroundModeAnalysis(isunderground) {
+      if (isunderground == true) {
+        this.underground = true;
+      } else if (isunderground == false) {
+        this.underground = false;
+      } else {
+        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);
+    },
+  },
+
+  beforeDestroy() {
+    this.undergroundModeAnalysis(false);
+    this.removeEntities();
+  },
+};
+</script>
+<style lang="scss">
+@import "@/../../zt.scss";
+</style>
+<style lang="scss" scoped>
+.el-card {
+  border: 0px solid #02a7f0;
+}
+.el-form-item {
+  margin-bottom: 0;
+}
+.grid-content {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 21 - 4
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -28,7 +28,7 @@
           </el-form-item>
           <el-form-item label="用地面积" size="mini" prop="landarea">
             <el-col :span="20">
-              <el-input size="mini" v-model="form.landarea"></el-input>
+              <el-input size="mini" v-model.number="form.landarea"></el-input>
             </el-col>
             <el-col :span="4">平方米</el-col>
           </el-form-item>
@@ -64,7 +64,7 @@
             <el-col :span="20">
               <el-input
                 size="mini"
-                v-model="form.totalprojectinvestment"
+                v-model.number="form.totalprojectinvestment"
               ></el-input>
             </el-col>
             <el-col :span="4">亿元</el-col>
@@ -144,6 +144,14 @@ export default {
         landusenature: [
           { required: true, message: "用地性质", trigger: "blur" },
         ],
+        landarea: [
+          { required: true, message: "不能为空", trigger: "blur" },
+          { type: "number", message: "必须为数字值", trigger: "blur" },
+        ],
+        totalprojectinvestment: [
+          { required: true, message: "不能为空", trigger: "blur" },
+          { type: "number", message: "必须为数字值", trigger: "blur" },
+        ],
       },
     };
   },
@@ -175,8 +183,16 @@ export default {
   mounted() {
     debugger;
     // this.init();
-    if (this.info) {
+    if (this.info.id) {
       this.form = this.info;
+      if (this.form.landarea) {
+        this.form.landarea = Number(this.form.landarea);
+      }
+      if (this.form.totalprojectinvestment) {
+        this.form.totalprojectinvestment = Number(
+          this.form.totalprojectinvestment
+        );
+      }
     }
   },
   methods: {
@@ -184,7 +200,8 @@ export default {
       let that = this;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
-          if (this.info) {
+          if (this.info.id) {
+            debugger;
             let result = await updateProjectinformation(that.form);
             if (result.code) {
               that.$message({

+ 4 - 4
src/views/ConstructionApplication3D/projectInfo/projectInfo.vue

@@ -16,7 +16,7 @@
             info.plotnumber
           }}</el-descriptions-item>
           <el-descriptions-item label="用地面积">
-            {{ info.landarea }}
+            {{ info.landarea }}平方米
           </el-descriptions-item>
           <el-descriptions-item label="用地性质">{{
             info.landusenature
@@ -27,9 +27,9 @@
           <el-descriptions-item label="土地情况">{{
             info.landsituation
           }}</el-descriptions-item>
-          <el-descriptions-item label="项目总投资">{{
-            info.totalprojectinvestment
-          }}</el-descriptions-item>
+          <el-descriptions-item label="项目总投资"
+            >{{ info.totalprojectinvestment }}亿元</el-descriptions-item
+          >
           <el-descriptions-item label="资金来源">{{
             info.fundingsource
           }}</el-descriptions-item>

+ 37 - 25
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -58,6 +58,18 @@
                       @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-edit"
+                      @click.stop="openaddProjectInfo(item)"
+                    ></i>
+                  </el-tooltip>
 
                   <el-tooltip
                     class="item"
@@ -703,6 +715,7 @@ import ArchitecturaAnalysis from "@/views/ConstructionApplication3D/Architectura
 import RSAnalysis from "@/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue";
 import BuildingStretchingAnalysis from "@/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue";
 import parkResult from "@/views/ConstructionApplication3D/parkCheck/parkResult.vue";
+import clipboxByEditor from "@/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue";
 import ghqk from "./ghqk.js";
 import CheckParkAnalyse from "./CheckParkAnalyse.js";
 import {
@@ -997,7 +1010,7 @@ export default {
       });
     },
     // 添加项目信息
-    openaddProjectInfo() {
+    openaddProjectInfo(item) {
       if (this.addProjectInfolayerid) {
         this.$layer.close(this.addProjectInfolayerid);
       }
@@ -1005,7 +1018,7 @@ export default {
         content: {
           content: addProjectInfo, //传递的组件对象
           parent: this, //当前的vue对象
-          data: {}, //props
+          data: { info: item }, //props
         },
 
         area: ["30rem", "38rem"], //宽 高
@@ -2153,30 +2166,29 @@ 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;
-          }
-        }
+      let that = this;
+      let w = document.body.offsetWidth;
+      let h = document.body.offsetHeight;
+      //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
+      //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
+      let left = w - 340 + 340 / 2;
+      let top = 340 / 2 + 60;
+      this.XGFXInfolayerid = this.$layer.iframe({
+        content: {
+          content: clipboxByEditor, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: {}, //props
+        },
+        offset: [left, top], //left top
+        area: ["340px", "180px"], //宽 高
+        title: "地下分析",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+        },
       });
-
-      undergroundMode(this.underground);
     },
     //建筑退线
     backLineAnalysis(Minfo) {

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

@@ -37,7 +37,7 @@ var endPoint;
 export default {
   data() {
     return {
-      skyColor: 'rgba(87, 126, 197, 0.23)',
+      skyColor: 'rgba(113, 155, 247, 0.5)',
       faceW: 200,
       faceH: 100,
       minH: 0,
@@ -203,7 +203,7 @@ export default {
             parent: that, //当前的vue对象
             data: { 'imageData': { 'height': that.faceH, 'width': that.viewW, 'data': base64data, 'minH': that.minH, "rgb": that.skyColor } }, //props
           },
-          area: ["100rem", "35rem"], //宽 高
+          area: ["70rem", "35rem"], //宽 高
           title: "天际线分析结果",
           maxmin: true,
           shade: false, //是否显示遮罩
@@ -247,6 +247,7 @@ export default {
       facade.clear();
       // drawHandler.clear();
       viewer.entities.removeAll();
+      // rgba(96, 150, 248, 0.8)
     }
 
   }

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js


+ 273 - 4
src/views/shareResources/components/ServiceDetails.vue

@@ -5,23 +5,292 @@
         <span>服务详情</span>
         <i class="el-icon-close" @click="isDetailsShow = false"></i>
       </div>
-      <div class="ServiceCon"></div>
+      <div class="ServiceCon">
+        <div class="detailList">
+          <el-descriptions title="自定义样式列表" :column="1" border>
+            <el-descriptions-item
+              label="服务名称"
+              label-class-name="my-label"
+              content-class-name="my-content"
+              >kooriookami</el-descriptions-item
+            >
+            <el-descriptions-item
+              label="数据说明"
+              content-class-name="my-content"
+              :span="3"
+              >客观地说广东省帝黑XXXXXXXX</el-descriptions-item
+            >
+            <el-descriptions-item label="数据所有者"
+              >XXXXX</el-descriptions-item
+            >
+            <el-descriptions-item label="数据年份">XXXX</el-descriptions-item>
+            <el-descriptions-item label="服务类型">XXX</el-descriptions-item>
+            <el-descriptions-item label="服务发布时间"
+              >XXX</el-descriptions-item
+            >
+            <el-descriptions-item label="联系人">XXX</el-descriptions-item>
+          </el-descriptions>
+        </div>
+        <div class="btnCon">
+          <span @click="dialogVisible = true">申请调用</span>
+          <span><i>申请记录</i></span>
+        </div>
+      </div>
     </div>
+    <el-dialog
+      title="提示"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <div>
+        <el-form
+          :model="ruleForm"
+          :rules="rules"
+          ref="ruleForm"
+          label-width="100px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label-width="0px">
+            <el-col :span="12">
+              <el-form-item prop="date1" label="申请时间">
+                <el-date-picker
+                  type="date"
+                  placeholder="选择日期"
+                  v-model="ruleForm.date1"
+                  style="width: 100%"
+                ></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="sqbm" label="申请部门">
+                <el-input v-model="ruleForm.sqbm"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form-item>
+          <el-form-item label-width="0px">
+            <el-col :span="12">
+              <el-form-item prop="sjfw" label="数据服务">
+                <el-input v-model="ruleForm.sjfw"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="sjlx" label="数据类型">
+                <el-input v-model="ruleForm.sjlx"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form-item>
+          <el-form-item label="申请范围" prop="xzqTreeValue">
+            <el-cascader
+              :show-all-levels="false"
+              :options="xzqTreeData"
+              placeholder="行政区"
+              :props="{ checkStrictly: true, expandTrigger: 'hover' }"
+              clearable
+              v-model="xzqTreeValue"
+            ></el-cascader>
+          </el-form-item>
+          <el-form-item label="申请理由" prop="sqly">
+            <el-input type="textarea" v-model="ruleForm.sqly"></el-input>
+          </el-form-item>
+          <el-form-item label="系统名称" prop="name">
+            <el-input v-model="ruleForm.name"></el-input>
+          </el-form-item>
+          <el-form-item label="调用IP" prop="dyip">
+            <el-input v-model="ruleForm.name"></el-input>
+          </el-form-item>
+          <el-form-item label="预期截止时间" prop="yqjzsj">
+            <el-date-picker
+              type="date"
+              placeholder="选择日期"
+              v-model="ruleForm.yqjzsj"
+              style="width: 100%"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="附件材料" prop="fjcl">
+            <el-upload
+              class="upload-demo"
+              :on-change="handleChange"
+              :auto-upload="false"
+              :show-file-list="false"
+              :file-list="fileList"
+              :limit="1"
+              accept=".zip"
+            >
+              <el-button class="upload-btn" icon="Upload" size="mini"
+                >上传</el-button
+              >
+            </el-upload>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm('ruleForm')"
+          >取消</el-button
+        >
+        <el-button @click="resetForm('ruleForm')">确定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import { GetXzqhTree } from "@/api/map";
 export default {
   data() {
     return {
-        isDetailsShow:false,
+      isDetailsShow: false,
+      dialogVisible: false,
+      xzqTreeData: [], //申请范围
+      fileList: [], //文件
+      ruleForm: {
+        name: "", //系统名称
+        date1: "", //申请时间
+        sqbm: "", //申请部门
+        sqly: "", //申请理由
+        sjfw: "", //数据服务
+        sjlx: "", //数据类型
+        // sqfw:'',//申请范围
+        xzqTreeValue: "", //申请范围
+        dyip: "", //调用ip
+        yqjzsj: "", //预期服务截止时间
+        fjcl: "", //附件材料
+      },
+      rules: {
+        name: [
+          { required: true, message: "请输入活动名称", trigger: "blur" },
+          { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
+        ],
+        sqly: [{ required: true, message: "请填写活动形式", trigger: "blur" }],
+        xzqTreeValue: [
+          { required: true, message: "请选择申请范围", trigger: "change" },
+        ],
+      },
     };
   },
+  created() {
+    this.getXzqTreeData();
+  },
+  methods: {
+    getXzqTreeData() {
+      GetXzqhTree().then((res) => {
+        if (res.data.length > 0) {
+          const list = res.data[0].children.filter((item) => {
+            return item.label == "三亚市";
+          });
+          if (list.length > 0) {
+            list[0].value = "4602";
+            this.xzqTreeData = list[0];
+          } else this.xzqTreeData = res.data;
+          //   store.setRegionTree(this.xzqTreeData);
+        }
+      });
+    },
+    //上传文件
+    handleChange(file, fileList) {
+      if (fileList.length > 0) {
+        this.fileList = [fileList[fileList.length - 1]]; //这一步,是展示最后一次选择文件
+        // this.clearAll(false);
+      }
+      const formdata = new FormData();
+      formdata.append("file", file.raw);
+      formdata.append("fromType", 2);
+      formdata.append("fromRoute", this.$route.path);
+      ShapeUpload(formdata).then((res) => {
+        if (res.success) {
+          console.log("成功啦", res);
+        }
+      });
+    },
+    handleClose(done) {
+      this.dialogVisible = false;
+      // this.$confirm('确认关闭?')
+      //   .then(_ => {
+      //     done();
+      //   })
+      //   .catch(_ => {});
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+  },
 };
 </script>
 
-<style lang="less" scoped>
+<style lang="scss" scoped>
 .ServiceCon {
-  height: 560px;
+  height: 760px;
+  background-color: aliceblue;
+  cursor: auto;
+
+  .btnCon {
+    width: 94%;
+    height: 100px;
+    position: absolute;
+    bottom: 0;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+
+    span {
+      width: 200px;
+      height: 48px;
+      color: black;
+      display: inline-block;
+      line-height: 48px;
+      text-align: center;
+    }
+
+    span:first-child {
+      background-color: #81d3f8;
+    }
+
+    span:nth-child(2) {
+      i {
+        font-style: normal;
+        color: #169bd5;
+      }
+    }
+  }
+
+  .detailList {
+  }
+}
+
+/deep/ .el-icon-close:before {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  font-size: larger;
+  font-weight: bold;
+
+  &:hover {
+    color: aqua;
+  }
+}
+
+.sm-function-module-query {
+  max-height: 800px !important;
+}
+
+.sm-panel {
+  top: 38px;
+}
+</style>
+<style>
+.my-content {
+  /* background: #fde2e2; */
+  height: 46px !important;
 }
 </style>

Деякі файли не було показано, через те що забагато файлів було змінено