Ver código fonte

修改冲突

服务器 10 meses atrás
pai
commit
4dacd9bf35

+ 5 - 0
package-lock.json

@@ -13806,6 +13806,11 @@
         "resolve": "^1.1.6"
       }
     },
+    "recorder-core": {
+      "version": "1.3.24040900",
+      "resolved": "https://registry.npmmirror.com/recorder-core/-/recorder-core-1.3.24040900.tgz",
+      "integrity": "sha512-QVOXHqrQhQ5FMgXTKh4P7oc31Qex2Q5skgBT972+0wrtwHr76zMnrybo48/VyUhS75whRxMFJ5yQpv+wj333Bw=="
+    },
     "redent": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz",

+ 2 - 1
package.json

@@ -22,6 +22,7 @@
         "moment": "^2.30.1",
         "postcss-plugin-px2rem": "^0.8.1",
         "proj4": "^2.11.0",
+        "recorder-core": "^1.3.24040900",
         "url-loader": "^4.1.0",
         "view-design": "^4.3.2",
         "vue": "^2.7.16",
@@ -96,4 +97,4 @@
         "last 2 versions",
         "not ie <= 8"
     ]
-}
+}

+ 20 - 0
src/api/aiModel.js

@@ -0,0 +1,20 @@
+export function GetMsg(msg) {
+    return axios({
+        method: "POST",
+        url: `${window.aiURI}/msg`,
+        data: JSON.stringify({ msg }),
+        headers: {
+            "Content-Type": "application/json",
+        },
+    })
+}
+export function uploadAudio(data) {
+    return axios({
+        method: "POST",
+        url: `${window.aiURI}/upload`,
+        data,
+        headers: {
+            "Content-Type": "application/json",
+        },
+    })
+}

+ 7 - 0
src/api/ghss/gdbh.js

@@ -50,4 +50,11 @@ export function DeleteGdbh(bsm) {
         method: 'get',
         params
     })
+}
+  export function getOneDetail(params) {
+    return request({
+        url: '/apply/gdbh/QueryGdbhJg/id',
+        method: 'get',
+        params
+    })
 }

+ 2 - 0
src/common/js/cockpit.js

@@ -39,6 +39,8 @@ const hidden_wall = (flag) => {
                 res.show = flag;
             }
         })
+        let wall = viewer.dataSources._dataSources.find(d => d._name == 'manager_entity')
+        if (!wall) viewer.dataSources.add(manager_entity);
     }
 }
 const pick_xzqh = (pri_name) => {

+ 0 - 1
src/components/Combinations/LayerManage/LayerManage.vue

@@ -249,7 +249,6 @@ export default {
               item.name.indexOf("管线") > -1
             ) {
               item._baseUri.query = obj.id;
-              item.indexedDBSetting.isAttributesSave = true; //保存属性
             }
           });
           // store.state.tempLatData = layers[0];

+ 79 - 94
src/components/Query/clickQuery/clickQuery.vue

@@ -1,28 +1,14 @@
 <template>
-  <div
-    class="sm-panel sm-function-module-query"
-    v-show="PoinyQueryShow && vectorShow"
-    v-drag
-  >
+  <div class="sm-panel sm-function-module-query" v-show="PoinyQueryShow && vectorShow" v-drag>
     <div class="sm-panel-header">
       <span>{{ Resource.PoinyQuery }}</span>
       <span class="closeBtn" @click="toggleVisibility">&times;</span>
     </div>
     <!-- <div class="sm-function-module-content-btn"> -->
     <div class="btnList">
-      <span
-        v-for="(item, index) in actionOptions"
-        :key="index"
-        class="icon-span"
-        :title="item.lable"
-        :class="item.isSelect ? 'selected-icon' : ''"
-        @click="changleQueryItem(item)"
-      >
-        <i
-          class="iconfont iconSize"
-          :class="item.iconName"
-          style="margin-top: 0px"
-        ></i>
+      <span v-for="(item, index) in actionOptions" :key="index" class="icon-span" :title="item.lable"
+        :class="item.isSelect ? 'selected-icon' : ''" @click="changleQueryItem(item)">
+        <i class="iconfont iconSize" :class="item.iconName" style="margin-top: 0px"></i>
       </span>
       <!-- <el-button type="primary" size="small" @click.stop="mapLayerQuery"
         >点击</el-button
@@ -33,51 +19,28 @@
     </div>
     <div class="sm-function-module-content-tabs">
       <el-tabs @tab-click="handleTabClick" v-model="activeLayerId">
-        <el-tab-pane
-          :label="item.label"
-          :name="item.id"
-          v-for="(item, index) in layerList"
-          :key="index"
-        ></el-tab-pane>
+        <el-tab-pane :label="item.label" :name="item.id" v-for="(item, index) in layerList" :key="index"></el-tab-pane>
       </el-tabs>
     </div>
     <div class="sm-function-module-content-table">
-      <el-collapse
-        :value="activeNames"
-        @change="handleCollapseChange"
-        v-if="
-          activeLayerId &&
-          queryResults[activeLayerId] &&
-          queryResults[activeLayerId].length > 0
-        "
-      >
-        <el-collapse-item
-          :title="'查询结果' + (index + 1)"
-          :name="'查询结果' + (index + 1)"
-          v-for="(item, index) in queryResults[activeLayerId]"
-          :key="index"
-        >
+      <el-collapse :value="activeNames" @change="handleCollapseChange" v-if="
+        activeLayerId &&
+        queryResults[activeLayerId] &&
+        queryResults[activeLayerId].length > 0
+      ">
+        <el-collapse-item :title="'查询结果' + (index + 1)" :name="'查询结果' + (index + 1)"
+          v-for="(item, index) in queryResults[activeLayerId]" :key="index">
           <template slot="title">
             查询结果{{ index + 1
-            }}<i
-              title="定位"
-              class="header-icon el-icon-s-promotion flyBtn2"
-              @click.stop="flyTo(index)"
-            ></i>
+            }}<i title="定位" class="header-icon el-icon-s-promotion flyBtn2" @click.stop="flyTo(index)"></i>
           </template>
-          <el-table
-            :data="item"
-            :show-header="false"
-            border
-            style="width: 100%"
-            :header-cell-style="{
-              background: 'rgba(10, 25, 38, 0.6)',
-              color: '#66b1ff',
-              fontSize: '14px',
-              fontFamily: 'Microsoft YaHei',
-              fontWeight: '400',
-            }"
-          >
+          <el-table :data="item" :show-header="false" border style="width: 100%" :header-cell-style="{
+            background: 'rgba(10, 25, 38, 0.6)',
+            color: '#66b1ff',
+            fontSize: '14px',
+            fontFamily: 'Microsoft YaHei',
+            fontWeight: '400',
+          }">
             <el-table-column prop="name" label="字段" width="100">
             </el-table-column>
             <el-table-column prop="value" label="值" width="208">
@@ -106,7 +69,7 @@ import * as turf from "@turf/turf";
 let gwtype;
 let query_click = null;
 let manager_layer_png = null;
-let dataSourceLayer =null
+let dataSourceLayer = null;
 export default {
   name: "clickQuery",
   components: { CockpitVector, MultiLevelQuery },
@@ -182,7 +145,7 @@ export default {
         : true;
     },
   },
-  created() {},
+  created() { },
   watch: {
     activeLayerId(val) {
       if (val && val != "0") {
@@ -238,7 +201,7 @@ export default {
     },
     toggleVisibility() {
       this.removeMapLayerQuery();
-      this.remove_query_click()
+      this.remove_query_click();
       store.setToolBarAction(9);
       tdsy.remove(false);
       store.state.vectorData = [];
@@ -378,43 +341,65 @@ export default {
           eneityName.indexOf("雨水") > -1 ||
           eneityName.indexOf("管线") > -1
         ) {
-          let buildingLayer = scene.layers.find(eneityName);
-          if (buildingLayer.getSelection().length > 0) {
-            const selectedId = Number(buildingLayer.getSelection()[0]);
-            buildingLayer.getAttributesById([selectedId]).then(function (atts) {
-              if (atts) {
-                Pid = atts["管线段"] || atts["物探点"];
-                var length = Object.keys(atts).length;
-                var des;
-                for (var i = 0; i < length; i++) {
-                  var key = Object.keys(atts)[i];
-                  var value = atts[key];
-                  // console.log(key);
-                  // console.log(value);
-                  if (
-                    key.toLowerCase().indexOf("shape") < 0 &&
-                    key.toLowerCase().indexOf("sm") &&
-                    value != ""
-                  ) {
-                    tempArr.push({
-                      name: key,
-                      value: value,
-                    });
+          for (let i = 0; i < store.state.vectorlayerlist.length; i++) {
+            let obj = store.state.vectorlayerlist[i];
+            console.log(obj.url);
+            let str1 = eneityName.match(/@(\S*)#/)[1];
+            let str2 = eneityName.match(/(\S*)@/)[1];
+            let str3 = str1 + ":" + str2;
+            let url1 = obj.url.replace("3D-", "data-");
+            let url2 = url1.replace(
+              "realspace",
+              "data/featureResults.rjson?returnContent=true"
+            );
+            let queryByIDParameters = {
+              getFeatureMode: "ID",
+              datasetNames: [str3],
+              ids: [pickedFeature.id],
+            };
+            let e = await this.mapQuery(url2, queryByIDParameters);
+            if (e && e.totalCount > 0) {
+              that.layerList.push(store.state.vectorlayerlist[i]);
+              for (let u = 0; u < e.features.length; u++) {
+                let cur = [];
+                var linSAr = JSON.parse(JSON.stringify(e.features[u]));
+                if (e.features[u].fieldNames) {
+                  linSAr.fieldNames.forEach((fieldName, i) => {
+                    let v = linSAr.fieldValues[i];
+                    if (v != "" && !isNaN(parseFloat(v))) {
+                      v = Math.round(parseFloat(v) * 100) / 100;
+                    }
+
+                    // cur.push({ name: fieldName, value: v });
+                    if (
+                      fieldName.toLowerCase().indexOf("shape") < 0 &&
+                      fieldName.toLowerCase().indexOf("sm") &&
+                      v != ""
+                    ) {
+                      cur.push({ name: fieldName, value: v });
+                    }
+                  });
+
+                  //获取图层id的参数
+                  let substring = pickedFeature.primitive._baseUri.query;
+                  for (let p = 0; p < store.state.vectorlayerlist.length; i++) {
+                    if (store.state.vectorlayerlist[p].id == substring) {
+                      that.layerList.push(store.state.vectorlayerlist[p]);
+                      break;
+                    }
                   }
+                  that.queryResults[substring] = [cur];
+                  that.queryResultsGeom[substring] = [];
+                  that.activeLayerId = substring;
+                } else {
+                  that.$message({
+                    message: "查询结果为空!",
+                    type: "warning",
+                    customClass: "messageIndex",
+                  });
                 }
               }
-              //获取图层id的参数
-              let substring = pickedFeature.primitive._baseUri.query;
-              for (let p = 0; p < store.state.vectorlayerlist.length; i++) {
-                if (store.state.vectorlayerlist[p].id == substring) {
-                  that.layerList.push(store.state.vectorlayerlist[p]);
-                  break;
-                }
-              }
-              that.queryResults[substring] = [tempArr];
-              that.queryResultsGeom[substring] = [];
-              that.activeLayerId = substring;
-            });
+            }
           }
         }
 

+ 113 - 120
src/components/TerrainAnalysis/TerrainCutFillAnalysis/TerrainCutFillAnalysis.vue

@@ -6,27 +6,46 @@
     <div v-show="radio == 'cut'">
       <div class="cut_fill_centent1">
         填挖深度(米):
-        <el-input class="cut_fill_input" v-model="height" placeholder=""></el-input>
-        <br>
+        <el-input
+          class="cut_fill_input"
+          v-model="height"
+          placeholder=""
+        ></el-input>
+        <br />
         土石方量(立方米):
-        <el-input class="cut_fill_input" v-model="result" placeholder=""></el-input>
-
+        <el-input
+          class="cut_fill_input"
+          v-model="result"
+          placeholder=""
+        ></el-input>
       </div>
-
     </div>
 
     <div v-show="radio == 'smooth'">
       <div class="cut_fill_centent1">
         平整深度(米):
-        <el-input class="cut_fill_input" v-model="smooth_height" placeholder="" readonly="readonly"></el-input>
-        <br>
+        <el-input
+          class="cut_fill_input"
+          v-model="smooth_height"
+          placeholder=""
+          readonly="readonly"
+        ></el-input>
+        <br />
         土石方量(立方米):
-        <el-input class="cut_fill_input" v-model="result" placeholder=""></el-input>
-        <br>
-        <br>
+        <el-input
+          class="cut_fill_input"
+          v-model="result"
+          placeholder=""
+        ></el-input>
+        <br />
+        <br />
 
         土石面积(平方米):
-        <el-input class="cut_fill_input" v-model="result_area" placeholder=""></el-input>
+        <el-input
+          class="cut_fill_input"
+          v-model="result_area"
+          placeholder=""
+        ></el-input>
       </div>
     </div>
     <div class="cut_fill_Buttons">
@@ -38,19 +57,19 @@
 
 <script>
 //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
-import CutFillAnalysis from "./CutFillAnalysis.js"
+import CutFillAnalysis from "./CutFillAnalysis.js";
 let cutFillAnalysis = null;
-import { getDsm } from '@/api/analse'
+import { getDsm } from "@/api/analse";
 import * as turf from "@turf/turf";
 
 export default {
   name: "TerrainCutFillAnalysis",
   components: {},
   data() {
-
     return {
-      radio: 'cut',
-      input: '', sharedState: store.state,
+      radio: "cut",
+      input: "",
+      sharedState: store.state,
       height: 300,
       result: null,
       handler_Cut_fill: null,
@@ -60,7 +79,6 @@ export default {
   },
   //监听属性 类似于data概念
   computed: {
-
     isCutFill: function () {
       return this.sharedState.terrain[4];
     },
@@ -73,72 +91,69 @@ export default {
     extract(positions) {
       viewer.scene.globe.removeAllExtractRegion();
       viewer.scene.globe.addExtractRegion({
-        name: 'extract', //名称
+        name: "extract", //名称
         position: positions, //区域
         height: this.height, //开挖深度
         transparent: false, //封边是否透明
         extractHeight: Number(this.height), //抽出高度
-        granularity: 1 //精度
+        granularity: 1, //精度
       });
     },
     cutana(positions) {
       viewer.scene.globe.removeAllExcavationRegion();
       viewer.scene.globe.addExcavationRegion({
-        name: 'ggg',
+        name: "ggg",
         position: positions,
         height: Number(-this.height),
-        transparent: false
+        transparent: false,
       });
     },
     coordsToWktPolygon(coords) {
-      // 检查坐标数组的长度是否为偶数  
+      // 检查坐标数组的长度是否为偶数
       if (coords.length % 2 !== 0) {
-        throw new Error('Coordinate array length must be even.');
+        throw new Error("Coordinate array length must be even.");
       }
 
-      // 构建WKT Polygon字符串  
-      let wktPolygon = 'POLYGON((';
+      // 构建WKT Polygon字符串
+      let wktPolygon = "POLYGON((";
       for (let i = 0; i < coords.length; i += 2) {
-        // 添加经度和纬度对  
+        // 添加经度和纬度对
         wktPolygon += `${coords[i]} ${coords[i + 1]}`;
-        // 如果不是最后一对坐标,则添加逗号  
+        // 如果不是最后一对坐标,则添加逗号
         if (i + 2 < coords.length) {
-          wktPolygon += ', ';
+          wktPolygon += ", ";
         }
       }
-      // 闭合多边形,添加第一个点  
+      // 闭合多边形,添加第一个点
       wktPolygon += `, ${coords[0]} ${coords[1]}))`;
 
       return wktPolygon;
     },
     async smooth_ana(positions, positions_noHeight, threeArray, height) {
-
       let data = await getDsm({
-        "geom": this.coordsToWktPolygon(positions_noHeight),
-        'type': 'min'
+        geom: this.coordsToWktPolygon(positions_noHeight),
+        type: "min",
       });
 
-
       viewer.scene.globe.removeAllExcavationRegion();
       viewer.scene.globe.addExcavationRegion({
-        name: 'ggg',
+        name: "ggg",
         position: positions,
         height: data.data,
-        transparent: false
+        transparent: false,
       });
 
-      this.smooth_height = data.data.toFixed(2)
+      this.smooth_height = data.data.toFixed(2);
 
       let cutVolume = cutFillAnalysis.VolumeAnalysis(threeArray, height);
       that.result = cutVolume.toFixed(2);
     },
     async smooth_ana1(positions, positions_noHeight, threeArray, height) {
-      console.log('positions: ', positions);
-
+      console.log("positions: ", positions);
 
       let data = await getDsm({
-        "geom": this.coordsToWktPolygon(positions_noHeight),
-        'type': 'max'
+        geom: this.coordsToWktPolygon(positions_noHeight),
+        type: "max",
       });
 
       let newArr = positions.map((item, index) => {
@@ -146,11 +161,11 @@ export default {
       });
       viewer.scene.globe.removeAllModifyRegion();
       viewer.scene.globe.addModifyRegion({
-        name: 'ggg',
-        position: newArr
+        name: "ggg",
+        position: newArr,
       });
 
-      this.smooth_height = data.data.toFixed(2)
+      this.smooth_height = data.data.toFixed(2);
       // let cutVolume = cutFillAnalysis.VolumeAnalysis1(threeArray, Number(height));
       // console.log('cutVolume: ', cutVolume);
 
@@ -159,65 +174,66 @@ export default {
         // 将每两个连续的元素组合成一个新的数组,并添加到新数组中
         newArray.push([positions_noHeight[i], positions_noHeight[i + 1]]);
       }
-      newArray.push(newArray[0])
+      newArray.push(newArray[0]);
 
-      var polygon = turf.polygon([
-        newArray
-      ]);
+      var polygon = turf.polygon([newArray]);
 
       this.result_area = turf.area(polygon).toFixed(2);
     },
 
     draw() {
-
-
       const that = this;
       that.clear();
 
       if (that.handler_Cut_fill == null) {
-        that.handler_Cut_fill = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Polygon, 0);
+        that.handler_Cut_fill = new Cesium.DrawHandler(
+          viewer,
+          Cesium.DrawMode.Polygon,
+          0
+        );
       }
 
-
       var tooltip = createTooltip(viewer._element);
       //绘制多边形
       that.handler_Cut_fill.activeEvt.addEventListener(function (isActive) {
         if (isActive == true) {
           viewer.enableCursorStyle = false;
-          viewer._element.style.cursor = '';
+          viewer._element.style.cursor = "";
           // $('body').removeClass('drawCur').addClass('drawCur');
-        }
-        else {
+        } else {
           viewer.enableCursorStyle = true;
           // $('body').removeClass('drawCur');
         }
       });
-      that.handler_Cut_fill.movingEvt.addEventListener(function (windowPosition) {
+      that.handler_Cut_fill.movingEvt.addEventListener(function (
+        windowPosition
+      ) {
         if (windowPosition.x < 200 && windowPosition.y < 150) {
           tooltip.setVisible(false);
           return;
         }
         if (that.handler_Cut_fill.isDrawing) {
-          tooltip.showAt(windowPosition, '<p>点击确定开挖区域中间点</p><p>右键单击结束绘制,进行开挖</p>');
-        }
-        else {
-          tooltip.showAt(windowPosition, '<p>点击绘制开挖区域第一个点</p>');
+          tooltip.showAt(
+            windowPosition,
+            "<p>点击确定开挖区域中间点</p><p>右键单击结束绘制,进行开挖</p>"
+          );
+        } else {
+          tooltip.showAt(windowPosition, "<p>点击绘制开挖区域第一个点</p>");
         }
       });
       that.handler_Cut_fill.drawEvt.addEventListener(function (result) {
         if (!result.object.positions) {
-          tooltip.showAt(result, '<p>请绘制正确的多边形</p>');
+          tooltip.showAt(result, "<p>请绘制正确的多边形</p>");
           that.handler_Cut_fill.polygon.show = false;
           that.handler_Cut_fill.polyline.show = false;
           that.handler_Cut_fill.deactivate();
           that.handler_Cut_fill.activate();
           return;
-        };
+        }
         var array = [].concat(result.object.positions);
         tooltip.setVisible(false);
 
-        that.array = array
-
+        that.array = array;
 
         var positions = [];
         var positions_noHeight = [];
@@ -227,59 +243,57 @@ export default {
           var longitude = Cesium.Math.toDegrees(cartographic.longitude);
           var latitude = Cesium.Math.toDegrees(cartographic.latitude);
           var h = cartographic.height;
-          if (positions.indexOf(longitude) == -1 && positions.indexOf(latitude) == -1) {
+          if (
+            positions.indexOf(longitude) == -1 &&
+            positions.indexOf(latitude) == -1
+          ) {
             positions.push(longitude);
             positions.push(latitude);
             positions.push(h);
             positions_noHeight.push(longitude);
             positions_noHeight.push(latitude);
-
           }
         }
         let threeArray = null;
 
         if (positions.length % 2 == 0) {
           threeArray = positions;
-
-
         } else {
-
           threeArray = that.appendLastThree(positions);
-
         }
 
-        if (that.radio == 'smooth') {
+        if (that.radio == "smooth") {
           // that.smooth_ana(positions, positions_noHeight, threeArray, -that.height);
-          that.smooth_ana1(positions, positions_noHeight, threeArray, -that.height);
-
-
-        } else if (that.radio == 'cut') {
+          that.smooth_ana1(
+            positions,
+            positions_noHeight,
+            threeArray,
+            -that.height
+          );
+        } else if (that.radio == "cut") {
           if (that.height < 0) {
             that.cutana(threeArray);
           } else {
             that.extract(threeArray);
           }
-
         }
 
-
         that.handler_Cut_fill.polygon.show = false;
         that.handler_Cut_fill.polyline.show = false;
         that.handler_Cut_fill.deactivate();
         // that.handler_Cut_fill.activate();
 
-        let cutVolume = cutFillAnalysis.VolumeAnalysis(that.array, -that.height);
+        let cutVolume = cutFillAnalysis.VolumeAnalysis(
+          that.array,
+          -that.height
+        );
         that.result = cutVolume.toFixed(2);
-
-
       });
       that.handler_Cut_fill.activate();
-
     },
     clear() {
       const that = this;
 
-
       if (that.handler_Cut_fill != null) {
         that.handler_Cut_fill.clear();
         viewer.scene.globe.removeAllExcavationRegion();
@@ -287,36 +301,32 @@ export default {
         viewer.scene.globe.removeAllModifyRegion();
 
         that.handler_Cut_fill.deactivate();
-        that.handler_Cut_fill = null
+        that.handler_Cut_fill = null;
         that.result = null;
         that.smooth_height = null;
         that.result_area = null;
-
       }
-
     },
     appendLastThree(arr) {
-      // 创建一个新数组来存储结果  
-      let result = [...arr]; // 使用扩展运算符复制原始数组  
+      // 创建一个新数组来存储结果
+      let result = [...arr]; // 使用扩展运算符复制原始数组
 
-      // 检查数组长度是否至少有三个元素  
+      // 检查数组长度是否至少有三个元素
       // if (arr.length >= 3) {
-      // 获取后三个元素并添加到结果数组末尾  
+      // 获取后三个元素并添加到结果数组末尾
       result.push(...arr.slice(-3));
       // }
 
-      // 返回结果数组  
+      // 返回结果数组
       return result;
-    }
+    },
   },
-  beforeCreate() { }, //生命周期 - 创建之前
+  beforeCreate() {}, //生命周期 - 创建之前
   created() {
-
     // const terrainP = new Cesium.CesiumTerrainProvider({
     //   url: 'http://192.168.60.3:8099/iserver/services/3D-local3DCache-SanYaDSMHuanCun/rest/realspace/datas/dsm@dsm',
     //   isSct: true//地形服务源自SuperMap iServer发布时需设置isSct为true
     // });
-
     // const terrainP = new Cesium.CesiumTerrainProvider({
     //   url: 'https://www.supermapol.com/realspace/services/3D-stk_terrain/rest/realspace/datas/info/data/path',
     //   requestWaterMask: true,
@@ -333,42 +343,27 @@ export default {
     //   }
     // });
     // viewer.terrainProvider = terrainP;
-
-
-
   }, //生命周期 - 创建完成(可以访问当前this实例)
-  beforeMount() { }, //生命周期 - 挂载之前
+  beforeMount() {}, //生命周期 - 挂载之前
   mounted() {
-
     this.$nextTick((res) => {
-      cutFillAnalysis = new CutFillAnalysis(
-        viewer,
-        80,
-      );
+      cutFillAnalysis = new CutFillAnalysis(viewer, 80);
       // viewer.scene.globe.depthTestAgainstTerrain = false;
 
-
-
       // const terrainP = new Cesium.CesiumTerrainProvider({
       //   url: 'http://192.168.60.2:8090/iserver/services/3D-local3DCache-SanYaShi_GaoCheng_Level_16DataSource/rest/realspace/datas/%E4%B8%89%E4%BA%9A%E5%B8%82_%E9%AB%98%E7%A8%8B_Level_16%40DataSource',
       //   isSct: true//地形服务源自SuperMap iServer发布时需设置isSct为true
       // });
 
-
-
       // viewer.terrainProvider = terrainP;
-
-
-
-    })
-
+    });
   }, //生命周期 - 挂在完成
-  beforeUpdate() { }, //生命周期 - 更新之前
-  updated() { }, //生命周期 - 更新之后
-  beforeDestroy() { }, //生命周期 - 销毁之前
-  destroy() { },//生命周期 - 销毁完成
-  activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
-  deactivated() { } //若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroy() {}, //生命周期 - 销毁完成
+  activated() {}, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
+  deactivated() {}, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
 };
 </script>
 <style lang="scss" scoped>
@@ -386,7 +381,7 @@ export default {
 
 .cut_fill_input {
   display: inline-block;
-  width: 50%
+  width: 50%;
 }
 
 .cut_fill_input:first-child {
@@ -395,9 +390,7 @@ export default {
 }
 
 .cut_fill_Buttons {
-
   margin-bottom: 2%;
   float: right;
-
 }
 </style>

+ 2 - 6
src/views/LandscapeProject/index.vue

@@ -1,7 +1,7 @@
 <!--山水工程列表-->
 <template>
   <div class="ghzc LandscapeProject">
-    <Boxcommon :islist="islist">
+    <Boxcommon :islist="islist" ref="Boxcommon">
       <template v-slot:title>
         <span class="clearBtn" @click="changeType">
           切换到工程{{ islist ? "总览" : "列表" }}
@@ -233,11 +233,7 @@ export default {
     // activeTabs(newValue) {},
   },
   beforeDestroy() {
-    store.setCockpit_vector({
-      title: "",
-      tableData: [],
-      columns: [],
-    });
+    this.$refs.Boxcommon.close();
   },
 };
 </script>

+ 117 - 45
src/views/aiModel/index.vue

@@ -17,14 +17,23 @@
       <div v-for="(item, index) in questionList" :key="index">
         <!--右侧-->
         <div class="counsel-right flex" v-if="item.type == 0">
-          <i class="el-icon-loading" v-if="item.status == 0"></i>
+          <i class="el-icon-loading" v-if="item.mstatus == 0"></i>
           <i
             class="el-icon-warning cursor"
-            v-else-if="item.status == 1"
+            v-else-if="item.mstatus == 1"
             @click="sendToBackend(item.content, index)"
           ></i>
           <div class="content">
-            <span>{{ item.content }}</span>
+            <audio
+              v-if="item.mp3url"
+              controls
+              autoplay
+              :src="item.mp3url"
+            ></audio>
+            <div v-if="item.content">
+              <span>{{ item.content }}</span>
+              <i class="el-icon-document-copy" @click="copy(item)"></i>
+            </div>
           </div>
           <div class="header-img">
             <img src="/static/images/aiModel/default.png" />
@@ -51,7 +60,10 @@
     </div>
     <div class="searchBtom">
       <div
-        class="el-icon-microphone icon"
+        class="icon"
+        :class="
+          spdisabled ? 'el-icon-turn-off-microphone' : 'el-icon-microphone'
+        "
         title="按住说话"
         :disabled="spdisabled"
         @click="voice"
@@ -73,7 +85,8 @@
 </template>
 <script>
 import { AddFzxz } from "../../api/ghss/ghxz.js";
-
+import { GetMsg, uploadAudio } from "../../api/aiModel.js";
+import record from "./record.js";
 let recognition = null;
 export default {
   props: {},
@@ -109,7 +122,7 @@ export default {
         };
         recognition.onresult = (event) => {
           this.sendContent = event.results[0][0].transcript;
-          this.send(); // 将识别结果发送到后台
+          // this.send(); // 将识别结果发送到后台
         };
         recognition.onerror = (event) => {
           this.$message.warning("语音识别出错: " + event.error);
@@ -121,6 +134,30 @@ export default {
         };
       }
     },
+    /**初始化 */
+    init() {
+      let _this = this;
+      record.getPermission(function (permiss) {
+        if (permiss.status == "fail") {
+          _this.$message.warning("语音识别出错: " + permiss.data);
+        } else {
+          record.startRecorder();
+          _this.$message.success("开始语音识别...");
+          _this.spdisabled = true;
+        }
+      });
+    },
+    /**结束录音 */
+    stop() {
+      let _this = this;
+      record.stopRecorder(function (res) {
+        _this.upload(res);
+      });
+      this.spdisabled = false;
+    },
+    copy(item) {
+      this.sendContent = item.content;
+    },
     sendDefault() {
       this.sendContent = this.defaultMsg;
       // this.send();
@@ -131,7 +168,7 @@ export default {
         this.questionList.push({
           type: 0,
           content: this.sendContent,
-          status: 0,
+          mstatus: 0,
         });
         this.sendToBackend(this.sendContent, this.questionList.length - 1);
         this.sendContent = "";
@@ -140,59 +177,84 @@ export default {
     voice() {
       console.log("---this.spdisabled-", this.spdisabled);
       if (!this.spdisabled) {
-        if (!recognition) this.initSpeech();
-        recognition.start(); // 开始语音识别
+        // if (!recognition) this.initSpeech();
+        // recognition.start(); // 开始语音识别
+        this.init();
+      } else {
+        this.stop();
       }
     },
+    upload({ blob, formData }) {
+      this.questionList.push({
+        type: 0,
+        mp3url: (window.URL || webkitURL).createObjectURL(blob),
+        mstatus: 0,
+      });
+      let mindex = this.questionList.length - 1;
+      /**处理 */
+      uploadAudio(formData)
+        .then((ares) => {
+          if (ares.status == 200) {
+            this.questionList[mindex].content = ares.data.voiceMsg;
+            this.sendToBackend(ares.data.voiceMsg, mindex);
+          } else {
+            this.$message.error(ares.data.msg);
+          }
+        })
+        .catch(() => {});
+    },
     sendToBackend(msg, mindex) {
-      this.questionList[mindex].status = 0;
-      axios({
-        method: "POST",
-        url: `${window.aiURI}/msg`,
-        data: JSON.stringify({ msg }),
-        headers: {
-          "Content-Type": "application/json",
-        },
-      })
+      this.questionList[mindex].mstatus = 0;
+      GetMsg(msg)
         .then((mres) => {
           if (mres.status == 200) {
-            this.questionList[mindex].status = 2;
-            if (mres.data.type == "selectLand") {
-              this.questionList.push({ content: "分析中...请稍等" });
-              const loading = this.$loading({
-                lock: true,
-                text: "分析中",
-                spinner: "el-icon-loading",
-                background: "rgba(0, 0, 0, 0.7)",
+            this.questionList[mindex].mstatus = 2;
+            if (mres.data.code == 200 && mres.data.data) {
+              if (mres.data.type == "selectLand") {
+                this.questionList.push({ content: "分析中...请稍等" });
+                this.AddFzxz(mres.data.data, mres.data.type);
+              }
+            } else {
+              this.questionList.push({
+                content: mres.data.data || "抱歉!缺少分析数据",
               });
-              AddFzxz(mres.data.data)
-                .then((res) => {
-                  loading.close();
-                  this.questionList.push({
-                    type: mres.data.type,
-                    content: "查看智能选址结果",
-                    data: res.data,
-                  });
-                  this.$message({
-                    message: res.message,
-                    type: res.success ? "success" : "warning",
-                  });
-                })
-                .catch((error) => {
-                  loading.close();
-                  this.$message.error(error);
-                });
             }
           } else {
-            this.questionList[mindex].status = 1;
+            this.questionList[mindex].mstatus = 1;
             // this.$message.error("发送到后台时发生错误:");
           }
         })
         .catch(() => {
-          this.questionList[mindex].status = 1;
+          this.questionList[mindex].mstatus = 1;
           // this.$message.error("发送到后台时发生错误:");
         });
     },
+    AddFzxz(xzdata, type) {
+      const loading = this.$loading({
+        lock: true,
+        text: "分析中",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)",
+      });
+      AddFzxz(xzdata)
+        .then((res) => {
+          console.log("xuanz", res);
+          loading.close();
+          this.questionList.push({
+            type,
+            content: "查看智能选址结果",
+            data: res.data,
+          });
+          this.$message({
+            message: res.message,
+            type: res.success ? "success" : "warning",
+          });
+        })
+        .catch((error) => {
+          loading.close();
+          this.$message.error(error);
+        });
+    },
     onClick(item) {
       if (item.type == "selectLand") {
         this.$router.push({
@@ -296,8 +358,18 @@ export default {
       i {
         font-size: 20px;
       }
+      .el-icon-warning {
+        color: #ff6666;
+      }
     }
   }
+  audio {
+    height: 40px;
+  }
+  audio::-webkit-media-controls-enclosure {
+    // background-color: #40a0ff6c;
+    // color: #fff;
+  }
 }
 .voice {
   width: 75%;

+ 93 - 0
src/views/aiModel/record.js

@@ -0,0 +1,93 @@
+import Recorder from 'recorder-core';
+//引入mp3格式支持文件;如果需要多个格式支持,把这些格式的编码引擎js文件放到后面统统引入进来即可
+import 'recorder-core/src/engine/mp3';
+import 'recorder-core/src/engine/mp3-engine';
+//录制wav格式的用这一句就行
+import 'recorder-core/src/engine/wav';
+// import { RecordType } from './type';
+const record = {
+  RecordApp: null,
+  recBlob: null,
+  /**麦克风授权 */
+  getPermission: (fn) => {
+    const newRec = Recorder({
+      //mp3格式,指定采样率hz、比特率kbps,其他参数使用默认配置;注意:是数字的参数必须提供数字,不要用字符串;需要使用的type类型,需提前把格式支持文件加载进来,比如使用wav格式需要提前加载wav.js编码引擎
+      type: "mp3",
+      bitRate: 16,
+      sampleRate: 16000,
+      onProcess: function (buffers, powerLevel, bufferDuration, bufferSampleRate, newBufferIdx, asyncEnd) {
+        //录音实时回调,大约1秒调用12次本回调
+        // document.querySelector(".recpowerx").style.width = powerLevel + "%";
+        // document.querySelector(".recpowert").innerText = formatMs(bufferDuration, 1) + " / " + powerLevel;
+
+        //可视化图形绘制
+        // wave.input(buffers[buffers.length - 1], powerLevel, bufferSampleRate);
+      }
+    });
+    //打开录音,获得权限
+    newRec.open(
+      () => {
+        record.RecordApp = newRec;
+        fn({ status: 'success', data: '开启成功' });
+      },
+      (msg, isUserNotAllow) => {
+        //用户拒绝了录音权限,或者浏览器不支持录音
+        fn({ status: 'fail', data: msg });
+        console.log((isUserNotAllow ? 'UserNotAllow,' : '') + '无法录音:' + msg);
+      }
+    );
+  },
+  /**开始录音 */
+  startRecorder: () => {
+    if (record.RecordApp && Recorder.IsOpen()) {
+      record.RecordApp.start();
+    }
+  },
+  /** 停止录音 */
+  stopRecorder: (fn) => {
+    try {
+      if (!record) {
+        console.error('未打开录音');
+        return;
+      }
+      record.RecordApp.stop((blob, duration) => {
+        console.log('录音成功', blob, '时长:' + duration + 'ms');
+        if (blob) {
+          record.recBlob = blob;
+          const formData = new FormData();
+          // formData.append('audio', blob);
+          formData.append("file", blob, "recorder.mp3");
+          fn({ loading: true, formData, blob });
+        }
+        /* eslint-enable */
+        record.RecordApp.close();
+        record.RecordApp = null;
+      });
+    } catch (err) {
+      fn({ err: err });
+      console.error('结束录音出错:' + err);
+      record.RecordApp.close();
+      record.RecordApp = null;
+    }
+  },
+  /**关闭录音,释放麦克风资源 */
+  destroyRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.close();
+      record.RecordApp = null;
+    }
+  },
+  /**暂停 */
+  pauseRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.pause();
+    }
+  },
+  /**恢复继续录音 */
+  resumeRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.resume();
+    }
+  },
+};
+export default record;

+ 4 - 0
src/views/cockpit/js/tdsy.js

@@ -38,6 +38,10 @@ export let layer = null
 export let superProvider = null
 export let layersObj = {} //添加的单个layer
 export function addLayer(obj) {
+    if (layer) {
+        viewer.imageryLayers.remove(layer);
+        layer = null
+    }
     // this.bus.$emit("checkedChange", {...obj,checked:true });
     superProvider = new Cesium.SuperMapImageryProvider({
         url: obj.url,

+ 0 - 4
src/views/complianceAnalysis/components/lsjl.vue

@@ -85,7 +85,6 @@
 import parse from "wellknown";
 import { GetPage, Delect } from "@/api/ghss/hgxfx.js";
 import { Message, MessageBox } from "element-ui";
-import { rest } from "lodash";
 import { GetXzResList, DelXzRes } from "../../../api/ghss/ghxz.js";
 import { SelectGdbhList,DeleteGdbh } from "../../../api/ghss/gdbh.js";
 let dataSources;
@@ -159,7 +158,6 @@ export default {
               }
             });
           } else if (this.$props.type == "gdbh") {
-            console.log("耕地保护删除",item.bsm);
             DeleteGdbh(item.bsm).then((res) => {
               if (res.success) {
                 Message.success("删除成功!");
@@ -231,7 +229,6 @@ export default {
           this.datalist = [...this.datalist, ...res.data];
         });
       } else if (this.$props.type == "ghxz") {
-        console.log("我是规划选址");
         //规划选址历史记录
         let tempObj = { ...this.pageObj };
         let obj = {
@@ -256,7 +253,6 @@ export default {
           }, 100);
 
           if (res.code == 200) {
-            console.log("我是耕地保护");
             this.listdisabled = res.rows.length < 10;
             this.datalist = [...this.datalist, ...res.rows];
           }

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

@@ -116,8 +116,8 @@ export default {
         mxbsm:mxbsm,
         yzbsm:val.bsm
       }
-      console.log(obj,":objobjobj")
       this.$emit("updateParent", "interObj", obj);
+      this.$emit("updateParent", "showInter", true);
 
     },
     initData() {

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

@@ -25,7 +25,7 @@
         <el-button size="mini" @click="zdyModel">自定义模型</el-button>
       </div>
       <div class="treeDiv">
-        <el-table :data="anaModels" style="width: 100%" :show-header="false" @selection-change="handleSelectionChange">
+        <el-table ref="multipleTable" :data="anaModels" style="width: 100%" :show-header="false" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="33"> </el-table-column>
           <el-table-column prop="bsmmc" show-overflow-tooltip>
           </el-table-column>
@@ -160,6 +160,7 @@ export default {
         xmmc: "耕地保护项目_" + this.getCurrentDateTime(),
       };
       this.$refs.ruleForm.resetFields();
+      this.$refs.multipleTable.clearSelection();
       this.$refs.range.reset();
     },
     submitData() {
@@ -188,12 +189,14 @@ export default {
             loading.close();
             this.activeTabs = "lsju";
             this.$emit("updateParent", "activeTabs", "lsju");
+            this.$refs.multipleTable.clearSelection();
           }, 1000);
           AddGdbh(obj)
               .then((res) => {
                 loading.close();
                 this.activeTabs = "lsju";
                 this.$emit("updateParent", "activeTabs", "lsju");
+                this.$refs.multipleTable.clearSelection();
                 this.$message({
                   message: res.message,
                   type: res.success ? "success" : "warning",

+ 272 - 60
src/views/farmlandProtection/components/interDetails.vue

@@ -1,53 +1,146 @@
 <template>
   <div>
-    {{ interObj }}
-    <div class="sm-panel sm-function-module-query" v-drag>
-      <div class="sm-panel-header">
-        <span> 占压图斑</span>
-      </div>
-      <div class="tableCon">
-        <el-table
-          :header-cell-style="{
-            background: 'rgba(10, 25, 38, 0.6)',
-            color: '#66b1ff',
-            fontSize: '14px',
-            fontFamily: 'Microsoft YaHei',
-            fontWeight: '400',
-          }"
-          :data="tableData"
-          style="width: 100%"
-        >
-          <el-table-column
-            show-overflow-tooltip="true"
-            prop="id"
-            label="图斑编号"
+    <div class="DetilsCon">
+      <div class="sm-panel sm-function-module-query" v-drag>
+        <div class="sm-panel-header">
+          <span>占压耕地图斑</span>
+          <i class="el-icon-close" @click="closeInster"></i>
+        </div>
+        <div class="tableCon">
+          <el-table
+            :header-cell-style="{
+              background: 'rgba(10, 25, 38, 0.6)',
+              color: '#66b1ff',
+              fontSize: '14px',
+              fontFamily: 'Microsoft YaHei',
+              fontWeight: '400',
+            }"
+            :data="tableData"
+            style="width: 100%"
           >
-          </el-table-column>
-          <el-table-column
-            show-overflow-tooltip="true"
-            prop="siweiarea"
-            label="图斑面积"
+            <el-table-column
+              show-overflow-tooltip="true"
+              prop="id"
+              label="图斑编号"
+            >
+            </el-table-column>
+            <el-table-column
+              show-overflow-tooltip="true"
+              prop="siweiarea"
+              label="图斑面积"
+            >
+            </el-table-column>
+            <el-table-column width="100" label="操作">
+              <template slot-scope="scope">
+                <!-- <span>编辑</span> -->
+                <el-button size="mini" type="text" @click="flyTo(scope.row)"
+                  >定位</el-button
+                >
+                <el-button
+                  size="mini"
+                  type="text"
+                  @click="handleView(scope.row)"
+                  >详情</el-button
+                >
+              </template>
+            </el-table-column></el-table
           >
-          </el-table-column>
-          <el-table-column width="100" label="操作">
-            <template slot-scope="scope">
-              <!-- <span>编辑</span> -->
-              <el-button size="mini" type="text" @click="flyTo(scope.row)"
-                >定位</el-button
+        </div>
+      </div>
+    </div>
+    <div class="conViews" v-if="isShallow">
+      <div class="sm-panel sm-function-module-query" v-drag>
+        <div class="sm-panel-header">
+          <span>图斑详情</span>
+          <i class="el-icon-close" @click="isShallow = false"></i>
+        </div>
+        <el-tabs
+          type="border-card"
+          class="xz_box info"
+          v-model="activeTabs"
+          stretch
+        >
+          <el-tab-pane label="套合结果" name="thjg">
+            <!-- <div class="inter_result"></div> -->
+            <div class="Integration inter_result">
+              <div
+                class="Integration_list"
+                v-for="(item, i) in yzjgData"
+                :key="i"
               >
-              <el-button size="mini" type="text" @click="handleView(scope.row)"
-                >详情</el-button
+                <div
+                  v-for="(item2, c) in item.mx_data"
+                  :key="c"
+                  class="list_Cont"
+                >
+                  <div class="list_item">
+                    <div class="listText">
+                      <span style="color: #fff">{{ item2.bsmmc }}图斑数</span>
+                      <span
+                        style="
+                          color: #2d8cf0;
+                          font-weight: bold;
+                          cursor: pointer;
+                        "
+                        @click="resultDeatils(item2, item.mx_bsm)"
+                        >{{ item2.sumcount }}个</span
+                      >
+                    </div>
+                  </div>
+                  <div class="list_item">
+                    <div class="listText">
+                      <span style="color: #fff">{{ item2.bsmmc }}面积(㎡)</span>
+                      <span color="#80FFFF">{{ item2.sumvalue }}</span>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </el-tab-pane>
+          <!-- -->
+          <el-tab-pane label="基本信息" name="jbxx">
+            <div class="inter_result" v-if="activeTabs == 'jbxx'">
+              <el-table
+                :header-cell-style="{
+                  background: 'rgba(10, 25, 38, 0.6)',
+                  color: '#66b1ff',
+                  fontSize: '14px',
+                  fontFamily: 'Microsoft YaHei',
+                  fontWeight: '400',
+                }"
+                :data="jbxxData"
+                height="350"
+                style="width: 100%"
               >
-            </template>
-          </el-table-column></el-table
-        >
+                <el-table-column
+                  show-overflow-tooltip="true"
+                  prop="name"
+                  label="属性名称"
+                >
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip="true"
+                  prop="value"
+                  label="属性值"
+                >
+                </el-table-column>
+              </el-table>
+              <el-carousel indicator-position="outside">
+                <el-carousel-item v-for="item in 4" :key="item">
+                  <h3>{{ item }}</h3>
+                </el-carousel-item>
+              </el-carousel>
+            </div>
+          </el-tab-pane>
+        </el-tabs>
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import { getYZ } from "../../../api/ghss/gdbh.js";
+import { name } from "file-loader";
+import { getYZ, getOneDetail } from "../../../api/ghss/gdbh.js";
 
 export default {
   props: {
@@ -57,48 +150,75 @@ export default {
   },
   data() {
     return {
-      tableData: [
-        {
-          id: 61,
-          siweiarea: 568605.55,
-        },
-        {
-          id: 69,
-          siweiarea: 93683.01,
-        },
-        {
-          id: 62,
-          siweiarea: 27863.95,
-        },
-      ],
+      activeTabs: "thjg",
+      tableData: [],
+      viewsData: null,
+      isShallow: false,
+      jbxxData: null,
+      yzjgData: [],
     };
   },
+  mounted() {
+    // this.init();
+  },
   methods: {
+    //关闭套合结果详情
+    closeInster() {
+      this.$emit("updateParent", "showInter", false);
+      this.isShallow = false
+    },
     flyTo(val) {},
-    handleView(val) {},
+    handleView(val) {
+      this.isShallow = true
+      getOneDetail({
+        bsm: this.interObj.bsm,
+        id: val.id,
+      }).then((res) => {
+        if (res.statuscode == 200) {
+          this.viewsData = res.data;
+          this.yzjgData = res.data.yzjg;
+          this.jbxxData = Object.keys(res.data.tbxx).map((key) => ({
+            name: key,
+            value: res.data.tbxx[key],
+          }));
+        } else {
+          this.$message.error(res.message);
+        }
+      });
+      this.isShallow = true;
+    },
     init() {
       getYZ(this.interObj).then((res) => {
         if (res.statuscode == 200) {
-          console.log(1111, res);
+          this.tableData = res.data;
         } else {
           this.$message.error(res.message);
         }
       });
     },
   },
-  mounted(){
-
-  },
+  mounted() {},
   watch: {
-    interObj(newValue) {
-        console.log('=======')
-      this.init();
+    // interObj(newValue) {
+    //   this.init();
+    // },
+    interObj: {
+      handler(newVal) {
+        this.init();
+      },
+      deep: true,
+      immediate: true,
     },
   },
 };
 </script>
 
 <style lang="scss" scoped>
+.DetilsCon {
+  position: relative;
+  right: 57%;
+}
+
 .tableCon {
   height: 40rem;
 
@@ -133,5 +253,97 @@ export default {
     background: rgba(10, 25, 38, 0) !important;
   }
 }
+
+/deep/ .el-icon-close:before {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  font-size: larger;
+  font-weight: bold;
+
+  &:hover {
+    color: aqua;
+  }
+}
+
+/deep/ .el-carousel__item h3 {
+  color: #475669;
+  font-size: 18px;
+  opacity: 0.75;
+  line-height: 200px;
+  text-align: center;
+  margin: 0;
+}
+
+/deep/ .el-carousel__container {
+  height: 200px;
+}
+
+/deep/ .el-carousel__item:nth-child(2n) {
+  background-color: #99a9bf;
+}
+
+/deep/ .el-carousel__item:nth-child(2n + 1) {
+  background-color: #d3dce6;
+}
+
+.inter_result {
+  height: 580px;
+}
+
+.Integration {
+  max-height: 580px;
+  overflow: hidden;
+  overflow-y: auto;
+
+  .Integration_list {
+    background-color: #0f7bc875;
+    display: flex;
+    justify-content: space-between;
+    margin-top: 8px;
+    flex-wrap: wrap;
+    padding: 10px;
+
+    .listCol {
+      width: 49%;
+      display: flex;
+      align-items: center;
+      white-space: nowrap;
+      margin-bottom: 5px;
+
+      .listText {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+
+        span {
+          height: 20px;
+          height: 20px;
+          line-height: 20px;
+        }
+      }
+    }
+    .list_Cont {
+      width: 100%;
+      display: flex;
+      align-items: center;
+      white-space: nowrap;
+      margin-bottom: 5px;
+      .list_item {
+        width: 50%;
+        .listText {
+          width: 100%;
+          display: flex;
+          flex-direction: column;
+
+          span {
+            height: 20px;
+            line-height: 20px;
+          }
+        }
+      }
+    }
+  }
+}
 </style>
 </style>

+ 165 - 164
src/views/farmlandProtection/index.vue

@@ -1,184 +1,185 @@
 <!--合规性分析-->
-<template >
-    <div class="ghzc siteselection">
-      <div class="innerContainer leftPane" v-drag @click.native.stop>
-        <h2 class="Pangetitle darg-div">
-          <span class="pange_text">耕地保护</span>
-        </h2>
-        <el-tabs type="border-card" class="xz_box" v-model="activeTabs" stretch @tab-click="tabClick">
-          <el-tab-pane label="辅助监测研判" name="fzjcyp">
-            <FZJCYP v-loading="loading" @updateParent="changeData" ref="fzjcyp"></FZJCYP>
-          </el-tab-pane>
-          <el-tab-pane label="历史记录" name="lsju">
-            <Lsjl :rzBsm="rzBsm" :activeTabs="activeTabs" @updateParent="changeData" type="gdbh" ref="lsju"></Lsjl>
-          </el-tab-pane>
-          <el-tab-pane label="分析结果" :disabled="activeTabs != 'scjg'" name="fxjg">
-            <div v-drag style="height: 100%;">
-              <FXJG :activeTabs="activeTabs" :loading="loading" :fxjgObj="nowObj" ref="fxjg"
-                v-if="activeTabs == 'fxjg'"></FXJG>
-            </div>
-          </el-tab-pane>
-        </el-tabs>
-      </div>
-      <!-- <RzDtails :rzBsm="rzBsm" @updateParent="changeData" :interObj="interObj"></RzDtails> -->
-    
+<template>
+  <div class="ghzc siteselection">
+    <div class="innerContainer leftPane" v-drag @click.native.stop>
+      <h2 class="Pangetitle darg-div">
+        <span class="pange_text">耕地保护</span>
+      </h2>
+      <el-tabs type="border-card" class="xz_box" v-model="activeTabs" stretch @tab-click="tabClick">
+        <el-tab-pane label="辅助监测研判" name="fzjcyp">
+          <FZJCYP v-loading="loading" @updateParent="changeData" ref="fzjcyp"></FZJCYP>
+        </el-tab-pane>
+        <el-tab-pane label="历史记录" name="lsju">
+          <Lsjl :rzBsm="rzBsm" :activeTabs="activeTabs" @updateParent="changeData" type="gdbh" ref="lsju"></Lsjl>
+        </el-tab-pane>
+        <el-tab-pane label="分析结果" :disabled="activeTabs != 'scjg'" name="fxjg">
+          <div v-drag style="height: 100%;">
+            <FXJG :activeTabs="activeTabs" @updateParent="changeData" :loading="loading" :fxjgObj="nowObj" ref="fxjg"
+              v-if="activeTabs == 'fxjg'"></FXJG>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
     </div>
-  </template>
-  
-  <script>
-  import FZJCYP from "./components/fzjcyp.vue";
-  import FXJG from "./components/fxjg.vue";
-  import Lsjl from "../complianceAnalysis/components/lsjl.vue";
-  import RzDtails from "./components/interDetails.vue";
-  export default {
-    name: "farmlandProtection",
-    components: {
-      FZJCYP,
-      Lsjl,
-      FXJG,
-      RzDtails
+    <RzDtails :rzBsm="rzBsm" @updateParent="changeData" :interObj="interObj" v-if="showInter"></RzDtails>
+
+  </div>
+</template>
+
+<script>
+import FZJCYP from "./components/fzjcyp.vue";
+import FXJG from "./components/fxjg.vue";
+import Lsjl from "../complianceAnalysis/components/lsjl.vue";
+import RzDtails from "./components/interDetails.vue";
+export default {
+  name: "farmlandProtection",
+  components: {
+    FZJCYP,
+    Lsjl,
+    FXJG,
+    RzDtails
+  },
+  data() {
+    return {
+      activeTabs: "fzjcyp",
+      rzBsm: "",
+      rwBsm: "",
+      nowObj: {},
+      rzMc: "",
+      loading: false,
+      interObj: {},//套合信息存储
+      showInter: false,
+    };
+  },
+  created() { },
+  methods: {
+    changeData(name, updata) {
+      this[name] = updata;
     },
-    data() {
-      return {
-        activeTabs: "fzjcyp",
-        rzBsm: "",
-        rwBsm: "",
-        nowObj: {},
-        rzMc: "",
-        loading: false,
-        interObj:{},//套合信息存储
-      };
+    tabClick(evt) {
+      this.activeTabs = evt.name;
     },
-    created() { },
-    methods: {
-      changeData(name, updata) {
-        this[name] = updata;
-        console.log(this[name])
-      },
-      tabClick(evt) {
-        this.activeTabs = evt.name;
-      },
-    },
-    watch: {
-      activeTabs(newValue) {
-  
-        // if (newValue != "fzxz") this.$refs.fzxz.reset();
-        if (newValue != "lsju") this.$refs.lsju.reset();
-  
-        if (newValue == "lsju") {
-          this.$refs.lsju.reset();
-          this.$refs.lsju.changeForm();
-        }
-        if (newValue == "fxjg") {
+  },
+  watch: {
+    activeTabs(newValue) {
+
+      // if (newValue != "fzxz") this.$refs.fzxz.reset();
+      if (newValue != "lsju") this.$refs.lsju.reset();
+
+      if (newValue == "lsju") {
+        this.$refs.lsju.reset();
+        this.$refs.lsju.changeForm();
+      }
+      if (newValue == "fxjg") {
         this.$nextTick(() => {
           this.$refs.fxjg.initData();
         });
+      }else{
+        this.showInter = false
       }
-      },
     },
-  };
-  </script>
-  
-  <style lang="scss" scoped>
-  .siteselection {
-    .xz_box {
-      .title {
-        padding: 8px;
-        margin-bottom: 10px;
-  
-        span {
-          color: #605e5e;
-          padding-left: 8px;
-          border-left: 3px solid #3a8ee6;
-        }
-  
-        button {
-          padding: 0;
-          float: right;
-          margin-right: 5px;
-          min-height: unset;
-        }
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.siteselection {
+  .xz_box {
+    .title {
+      padding: 8px;
+      margin-bottom: 10px;
+
+      span {
+        color: #605e5e;
+        padding-left: 8px;
+        border-left: 3px solid #3a8ee6;
       }
-  
-      .el-form-item {
-        margin-bottom: 0;
+
+      button {
+        padding: 0;
+        float: right;
+        margin-right: 5px;
+        min-height: unset;
       }
-  
-      .xz_table {
-        height: 180px;
-  
-        /deep/.el-table__header-wrapper {
-          height: 40px;
-        }
-  
-        /deep/.el-table__body-wrapper {
-          height: calc(100% - 40px);
-          overflow-y: auto;
-        }
-      }
-  
-      .xz_type {
-        margin-bottom: 10px;
-        justify-content: space-evenly;
-  
-        div {
-          i {
-            font-size: 36px;
-          }
-        }
+    }
+
+    .el-form-item {
+      margin-bottom: 0;
+    }
+
+    .xz_table {
+      height: 180px;
+
+      /deep/.el-table__header-wrapper {
+        height: 40px;
       }
-  
-      .xz-btn {
-        width: 100%;
-        // background: #efefef;
-        position: absolute;
-        height: 55px;
-        z-index: 999;
-        bottom: 0;
-        right: 0;
-        display: flex;
-        align-items: center;
+
+      /deep/.el-table__body-wrapper {
+        height: calc(100% - 40px);
+        overflow-y: auto;
       }
-  
-      .jg-box {
-        td {
-          padding-left: 15px;
-        }
-  
-        .el-collapse-item__header {
-          span {
-            position: absolute;
-            right: 40px;
-          }
-        }
-  
-        .el-collapse-item__content {
-          padding-bottom: 0;
+    }
+
+    .xz_type {
+      margin-bottom: 10px;
+      justify-content: space-evenly;
+
+      div {
+        i {
+          font-size: 36px;
         }
       }
     }
-  
-    .tckz {
+
+    .xz-btn {
+      width: 100%;
+      // background: #efefef;
       position: absolute;
-      left: auto;
-      right: 10px;
-      bottom: 100px;
-      text-align: center;
-      // background-color: rgba(255, 255, 255, 0.85);
-      padding-top: 5px;
-      padding-bottom: 5px;
-      padding-right: 5px;
-      padding-left: 5px;
-      border-radius: 5px;
-  
-      >div {
-        padding: 5px;
-        text-align: left;
+      height: 55px;
+      z-index: 999;
+      bottom: 0;
+      right: 0;
+      display: flex;
+      align-items: center;
+    }
+
+    .jg-box {
+      td {
+        padding-left: 15px;
       }
+
+      .el-collapse-item__header {
+        span {
+          position: absolute;
+          right: 40px;
+        }
+      }
+
+      .el-collapse-item__content {
+        padding-bottom: 0;
+      }
+    }
+  }
+
+  .tckz {
+    position: absolute;
+    left: auto;
+    right: 10px;
+    bottom: 100px;
+    text-align: center;
+    // background-color: rgba(255, 255, 255, 0.85);
+    padding-top: 5px;
+    padding-bottom: 5px;
+    padding-right: 5px;
+    padding-left: 5px;
+    border-radius: 5px;
+
+    >div {
+      padding: 5px;
+      text-align: left;
     }
   }
-  </style>
-  <style lang="scss">
-  @import "../complianceAnalysis//ghzc.scss";
-  </style>
-  
+}
+</style>
+<style lang="scss">
+@import "../complianceAnalysis//ghzc.scss";
+</style>

+ 1 - 1
src/views/modelStretch/index.vue

@@ -273,7 +273,7 @@ export default {
       // that.removeEntities();
       // //基础高度(地形高度)加入地形后可删除
       let jcgd = 0;
-      jcgd = this.getjcHigeht(geojson);
+      jcgd = this.getjcHigeht(this.form.geojson);
       //顶部高度,底部高度
       let maxH = jcgd,
         minH = jcgd;

+ 4 - 0
static/Config/config.js

@@ -1,7 +1,11 @@
 //后台地址配置
 window.axiosURI = "http://192.168.60.2:8080";
 window.ZTaxiosURI = "http://localhost:9300";
+<<<<<<< HEAD
 window.aiURI = "http://192.168.60.2:4000";
+=======
+window.aiURI = "http://192.168.60.6:4000";
+>>>>>>> a032cb3c0fec62cef25b3750819e57d2438343e6
 //倾斜模型高度配置
 window.modelBottomAltitude = 0;
 // 服务器ip