Przeglądaj źródła

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

maxiaoxiao 11 miesięcy temu
rodzic
commit
bf7ec10339

+ 10 - 6
src/components/echartsTemplate/3dPie.vue

@@ -10,6 +10,8 @@ let colors = [
 ];
 let option = {
   legend: {
+    show: false,
+
     tooltip: {
       show: true,
     },
@@ -18,9 +20,10 @@ let option = {
     itemWidth: 12, // 设置宽度
     itemHeight: 12, // 设置高度
     data: [],
-    bottom: "20%",
-    right: "2%",
-
+    // bottom: "20%",
+    // right: "2%",
+    x: 50,
+    y:100,
     itemGap: 10,
     textStyle: {
       color: "#fff",
@@ -84,7 +87,6 @@ let option = {
       // autoRotate: true, // 自动旋转
     },
   },
-
   series: [],
 };
 export default {
@@ -115,7 +117,9 @@ export default {
           `${item.name}`.includes(`${name}`)
         );
         if (sItem) {
-          return `{name|${name}}  {value|${sItem.value}}  {unit|${_this.$props.unit}} `;
+          return `{name|${name}}  {unit|${_this.$props.unit}} `;
+
+          // return `{name|${name}}  {value|${sItem.value}}  {unit|${_this.$props.unit}} `;
           // return name + 'sItem.value';
         } else {
           return name;
@@ -340,7 +344,7 @@ export default {
       return series;
     },
   },
-  mounted() {},
+  mounted() { },
 };
 </script>
 <style lang="scss" scoped>

+ 136 - 30
src/views/cockpit/gdbh.vue

@@ -1,18 +1,24 @@
 <template>
   <borderTemplate titleName="耕地保护" class="gdbh">
     <div class="content">
-      <div class="item" v-for="(sd, i) in sdlist" :key="i">
-        <div class="icon" :class="`icongdbh${i}`"></div>
-        <div class="text">
-          <p>{{ sd.name }}</p>
-          <span class="sdvalue">{{ sdata[sd.prop] || 0 }}</span>
-          <!-- <span class="unit">{{ sd.unit }}</span> -->
-          <span class="unit">平分千米</span>
-
-        </div>
+      <div class="selectTab">
+        <el-select v-model="tab" placeholder="请选择" :popper-append-to-body="false" @change="change_model">
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+          </el-option>
+        </el-select>
       </div>
     </div>
-    <pie3d id="gdbh_echart" unit="km²" ref="echartRef"></pie3d>
+    <pie3d id="gdbh_echart_gdlr" unit="" ref="gdbh_echart_gdlr"></pie3d>
+    <pie3d id="gdbh_echart_gdlc" unit="" ref="gdbh_echart_gdlc"></pie3d>
+    <div class="legend_gdlx">
+      <div class="gdbh_echart_gdlr_legend">
+
+      </div>
+      <div class="gdbh_echart_gdlc_legend">
+
+      </div>
+    </div>
+
   </borderTemplate>
 </template>
 
@@ -27,11 +33,12 @@ export default {
   data() {
     return {
       sdata: {},
-      sdlist: [
-        { name: "高标准农田", prop: "gzl_yjjbntmj", unit: "km²" }, //耕地保有量
-        { name: "补充耕地项目", prop: "xzqhdm_number", unit: "个" },
-        { name: "永久基本农田", prop: "yjjbntmj", unit: "km²" },
-        { name: "补充耕地面积", prop: "mj", unit: "km²" },
+      tab: '耕地现状',
+      options: [
+        { value: "gdlx", label: "耕地流向" },
+        { value: "gdxz", label: "耕地现状" },
+        { value: "zbph", label: "占补平衡" },
+
       ],
     };
   },
@@ -78,14 +85,30 @@ export default {
           });
         } else {
           optionsData = [
-            { name: "水田", value: 0 },
-            { name: "水浇地", value: 0 },
-            { name: "旱地", value: 0 },
+            { name: "土地复垦", value: 0 },
+            { name: "异地购买", value: 0 },
+            { name: "补充耕地", value: 0 },
+            { name: "增减挂", value: 0 },
+
           ];
         }
 
         this.$nextTick(() => {
-          this.$refs.echartRef.setOptions(optionsData, 1 / 100000);
+          this.$refs.gdbh_echart_gdlr.setOptions([
+            { name: "土地复垦", value: 12 },
+            { name: "异地购买", value: 21 },
+            { name: "补充耕地", value: 54 },
+            { name: "增减挂", value: 22 },
+
+          ]);
+          this.$refs.gdbh_echart_gdlc.setOptions([
+            { name: "林地", value: 22 },
+            { name: "草地", value: 5 },
+            { name: "交通用地", value: 13 },
+            { name: "其他", value: 43 },
+
+          ]);
+
         });
       });
     },
@@ -161,13 +184,12 @@ export default {
       // color: #bcd3e5;
       // line-height: 24px;
 
-
       font-kerning: normal;
-      font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
+      font-family: "Arial Negreta", "Arial Normal", "Arial";
       font-weight: 700;
       font-style: normal;
       font-size: 14px;
-      color: #FFFFFF;
+      color: #ffffff;
     }
 
     .sdvalue {
@@ -178,11 +200,10 @@ export default {
       // color: #68F4FB;
       // line-height: 16px;
 
-
-      font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
+      font-family: "Arial Negreta", "Arial Normal", "Arial";
       font-weight: 700;
       font-style: normal;
-      color: #68F4FB;
+      color: #68f4fb;
     }
 
     .unit {
@@ -201,11 +222,96 @@ export default {
     width: 50px;
   }
 
-  #gdbh_echart {
-    width: 100%;
-    height: calc(100% - 100px);
-    // position: relative;
-    // top: 110px;
+  #gdbh_echart_gdlr {
+
+    width: 17rem;
+    height: 10rem;
+    position: fixed;
+    top: 6rem;
+    left: 96rem;
+  }
+
+  #gdbh_echart_gdlc {
+    width: 17rem;
+    height: 10rem;
+    position: fixed;
+    top: 6rem;
+    left: 108rem;
+  }
+}
+
+.legend_gdlx {
+  margin-top: 2rem;
+  width: 25rem;
+  height: 4rem;
+
+  .gdbh_echart_gdlr_legend {
+    height: 4rem;
+    width: 12rem;
+    background: no-repeat;
+
+    background-image: url("/static/images/overview/gdbh_echart_gdlr_legend.png");
+    display: inline-block;
+  }
+
+  .gdbh_echart_gdlc_legend {
+    height: 4rem;
+    width: 12rem;
+    background: no-repeat;
+
+    background-image: url("/static/images/overview/gdbh_echart_gdlc_legend.png");
+    display: inline-block;
+    float: right;
+    margin-top: 1rem;
+  }
+}
+
+.selectTab {
+  position: fixed;
+  left: 109rem;
+  bottom: 51rem;
+
+
+  /deep/ .el-input__inner {
+    // padding-right: 30px;
+    width: 128px !important;
+    height: 24px !important;
+    line-height: 24px;
+    padding-left: 22px;
+    padding-right: 0px;
+    font-size: 12px;
+    color: #bcd3e5;
+    border: none;
+    background: url("/static/images/overview/selectBg.png") no-repeat !important;
+    background-size: 100% 100%;
+  }
+
+  /deep/ .el-input__icon {
+    line-height: 1;
+  }
+
+  /deep/ .el-input__suffix {
+    right: -2px;
+  }
+
+  /deep/ .el-select-dropdown__list {
+    color: #bcd3e5 !important;
+    background: linear-gradient(180deg,
+        rgba(3, 115, 177, 0) 11%,
+        rgba(3, 115, 177, 0.48) 100%);
+    border-image: linear-gradient(360deg,
+        rgba(75, 185, 250, 0.2),
+        rgba(75, 185, 250, 0.05)) 1 1 !important;
+    border: none;
+  }
+
+  /deep/ .el-select-dropdown__item.hover,
+  .el-select-dropdown__item:hover {
+    background-color: rgba(87, 163, 226, 0.5);
+  }
+
+  /deep/ .el-select-dropdown__item {
+    color: #ecf6ff;
   }
 }
 </style>

+ 8 - 6
src/views/cockpit/gkzb.vue

@@ -2,7 +2,7 @@
   <div class="jsyd">
     <div class="title">
       <div class="icon"></div>
-      <span>管控指标</span>
+      <span>建设用地规划指标</span>
     </div>
     <div class="content">
       <div class="item">
@@ -88,14 +88,14 @@
       <div class="box_bottom"></div>
       <div class="box_text">
         <div class="text box_bottom_text">
-          <p>己入库控规范围
+          <p>城镇开发边界内控规范围
 
           </p>
           <span>{{ store.state.cockpit_gkzb.ghdkmj }}</span>k㎡
 
         </div>
         <div class="text">
-          <p>覆盖城镇开发边界
+          <p>城镇开发边界内覆盖度
 
           </p>
           <span>{{ store.state.cockpit_gkzb.bfb }}</span>%
@@ -264,7 +264,7 @@ export default {
   background: no-repeat;
   background-size: 100%;
 
-  background-image: url("/static/images/overview/jsyd_back.png");
+  background-image: url("/static/images/overview/gkzb_back.png");
 
 
 }
@@ -284,15 +284,17 @@ export default {
 }
 
 .box_text {
-  width: 15rem;
+  width: 21rem;
   margin-left: 6rem;
 
   p {
     font-size: 12px;
+    position: relative;
+    right: 3rem;
   }
 
   .text {
-    width: 115px;
+    width: 160px;
 
   }
 }

+ 15 - 62
src/views/cockpit/stxf.vue

@@ -3,23 +3,12 @@
     <template v-slot:title>
       <!-- #content="row" -->
       <div class="selectTab">
-        <el-select
-          v-model="tab"
-          placeholder="请选择"
-          :popper-append-to-body="false"
-          @change="changeCharts"
-        >
-          <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
+        <el-select v-model="tab" placeholder="请选择" :popper-append-to-body="false" @change="changeCharts">
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </div>
     </template>
-    <div class="time1" v-if="tab == 'ssxf'">2023-2025年</div>
     <div class="stacontent">
       <div class="item" v-for="(sd, index) in sdlist[tab]" :key="index">
         <div class="itembg"></div>
@@ -28,37 +17,34 @@
         {{ sd.unit }}
       </div>
     </div>
-    <div class="time2" v-if="tab == 'ssxf'">截止2024年5月</div>
-    <Bar3d id="stxf_echart" ref="echartRef"></Bar3d>
+
   </borderTemplate>
 </template>
 
 <script>
 //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
 import borderTemplate from "./borderTemplate.vue";
-import Bar3d from "../../components/echartsTemplate/3dBar.vue";
 import { QueryOne, QueryList } from "../../api/cockpitNew";
 
 export default {
-  components: { borderTemplate, Bar3d },
+  components: { borderTemplate },
   data() {
     return {
       options: [
-        { value: "tdxf", label: "土地综合整治" },
+        { value: "tdzz", label: "土地整治" },
         { value: "ssxf", label: "山水工程" },
-        { value: "haxf", label: "海岸线保护" },
       ],
-      tab: "ssxf",
+      tab: "tdzz",
       paramdatas: {},
       sdlist: {
-        tdxf: [
+        tdzz: [
           { name: "综合整治项目", prop: "xzqhdm_number", unit: "个" },
           { name: "土地整治面积", prop: "zlmj", unit: "公顷" },
           { name: "总投资", prop: "tzje", unit: "万元" },
         ],
         ssxf: [
-          { name: "山水项目", prop: "xzqhdm_number", unit: "个" },
-          { name: "整治面积", prop: "zlmj", unit: "公顷" },
+          { name: "2023-2025年项目", prop: "xzqhdm_number", unit: "个" },
+          { name: "整治面积", prop: "zlmj", unit: "平方千米" },
           { name: "总投资", prop: "tzje", unit: "万元" },
         ],
         haxf: [
@@ -67,7 +53,7 @@ export default {
           { name: "海岸线整治修复项目", prop: "tzje", unit: "个" },
         ],
       },
-      sdata: { tdxf: {}, ssxf: {}, haxf: {} },
+      sdata: { tdzz: {}, ssxf: {}, haxf: {} },
       eData: {
         xData: ["农用地", "建设用地", "生态修复", "历史文化保护"],
         yData: [
@@ -85,28 +71,6 @@ export default {
   watch: {},
   methods: {
     changeCharts() {
-      this.setData(this.paramdatas);
-    },
-    // //第二个图表
-    setData(datas) {
-      this.paramdatas = datas;
-      if (this.tab == "ssxf") {
-        this.GetQueryOne(datas);
-        this.GetQueryList(datas);
-      } else {
-        this.sdata.tdxf = { xzqhdm_number: 100, zlmj: 0, tzje: 20 };
-        this.sdata.haxf = { xzqhdm_number: 40, zlmj: 30, tzje: 3 };
-        this.eData.gridbottom = "10%";
-        this.eData.xData = ["农用地", "建设用地", "生态修复", "历史文化保护"];
-        this.eData.yData = [
-          [10, 10, 10],
-          [10, 10, 30],
-          [10, 10, 10],
-        ];
-        this.$nextTick(() => {
-          this.$refs.echartRef.setOptions(this.eData);
-        });
-      }
     },
     GetQueryOne(datas) {
       let params = {
@@ -136,12 +100,13 @@ export default {
       });
     },
   },
-  mounted() {},
+  mounted() { },
 };
 </script>
 <style lang="scss" scoped>
 .stxf {
-  top: 33.3%  !important;
+  top: 33.3% !important;
+
   .stacontent {
     width: 100%;
     height: 44px;
@@ -155,6 +120,7 @@ export default {
   height: 44px;
   position: relative;
   text-align: center;
+
   .itembg {
     width: 112px;
     height: 34px;
@@ -164,6 +130,7 @@ export default {
     background: no-repeat;
     background-image: url("/static/images/overview/Tab.png");
   }
+
   .text {
     font-weight: bold;
     font-size: 14px;
@@ -177,18 +144,4 @@ export default {
     line-height: 18px;
   }
 }
-#stxf_echart {
-  width: 100%;
-  height: calc(100% - 44px);
-  position: relative;
-  //   left: -28%;
-  //   top: 7%;
-}
-.time1,
-.time2 {
-  font-weight: bold;
-  font-size: 14px;
-  color: #bcd3e5;
-  margin-top: 10px;
-}
 </style>

+ 1 - 2
src/views/cockpit/tdsc.vue

@@ -82,7 +82,6 @@ export default {
         right: '2%',
         selectedMode: false
       }
-      const grid = { top: '15%', left: '12%', right: '2%', bottom: '25%' }
       // xAxis
       const xAxis = {
         offset: 5,
@@ -175,7 +174,7 @@ export default {
 
       let option = {
 
-        tooltip, legend, xAxis, yAxis, series, grid, dataZoom, backgroundColor: 'rgba(0, 0, 0, 0)'
+        tooltip, legend, xAxis, yAxis, series, dataZoom, backgroundColor: 'rgba(0, 0, 0, 0)'
       }
 
 

+ 4 - 3
src/views/siteselection/components/fzxz.vue

@@ -411,7 +411,8 @@ export default {
     submitData() {
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
-          alert("submit!");
+          // this.activeTabs = 'lsju'
+          this.$emit('updateParent','activeTabs','lsju')
         } else {
           console.log("error submit!!");
           return false;
@@ -526,10 +527,10 @@ export default {
   }
 }
 /deep/ .el-input .el-input--mini .el-input--suffix {
-  width: 284px !important;
+  width: 278px !important;
 }
 /deep/ .el-select {
-  width: 284px !important;
+  width: 278px !important;
 }
 /deep/ .el-form-item__error {
   top: 32px !important;

+ 47 - 43
src/views/siteselection/components/xzjg.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="xzjg">
     <div>项目名称XXXXXX</div>
-    <div class="box-sizing" style="height:  47%; width: 100%">
+    <div class="box-sizing" style="height: 47%; width: 100%">
       <div class="title site-title">
         <!-- <span class="block-title"
           >意向地块{{ bgList ? bgList.length : 0 }})</span
@@ -28,7 +28,7 @@
               <span class="tools">
                 <i
                   class="header-icon el-icon-place"
-                  @click="mapview(item1)"
+                  @click.stop="mapview(item1)"
                 ></i>
                 <i
                   class="header-icon el-icon-delete"
@@ -51,7 +51,7 @@
         </el-collapse>
       </el-scrollbar>
     </div>
-    <div class="box-sizing padding-bottom-60" style="height:  47%; width: 100%">
+    <div class="box-sizing padding-bottom-60" style="height: 47%; width: 100%">
       <div class="title height-50 flex-box align-center">
         <span class="block-title"
           >备选地块({{
@@ -75,7 +75,7 @@
                 item.properties.ydmj.toFixed(0)
               }})
               <span class="tools">
-                <i class="header-icon el-icon-place" @click="mapview(item)"></i>
+                <i class="header-icon el-icon-place" @click.stop="mapview(item)"></i>
                 <i
                   class="header-icon el-icon-plus"
                   @click="addprogramme($event, item)"
@@ -98,13 +98,11 @@
       </el-scrollbar>
     </div>
 
-    <div class="xz-btn flex-box" style="justify-content: space-between">
-      <div class="max-height flex-box align-center margin-left-22"></div>
-      <div class="max-height flex-box align-center">
+    <!-- <div class="xz-btn flex-box" style="justify-content: space-between">
+      <div>
         <el-button round class="btn-style" @click="resetAll">重选</el-button>
         <el-button
           round
-          class="btn-style"
           @click="downReport"
           v-if="reportText == '查看报告'"
           >下载报告</el-button
@@ -112,12 +110,11 @@
         <el-button
           type="primary"
           round
-          class="btn-style margin-right-22"
           @click="submit"
           >{{ reportText }}</el-button
         >
       </div>
-    </div>
+    </div> -->
   </div>
 </template>
 
@@ -160,11 +157,12 @@ export default {
       geoJsonEntities: null,
       xzjgObj: ghjgData,
       tempObj: ghjgData,
-      copyData:null,
+      copyData: null,
+      arrww: [],
     };
   },
   mounted() {
-    this.copyData = JSON.parse(JSON.stringify(ghjgData))
+    this.copyData = JSON.parse(JSON.stringify(ghjgData));
     this.addPolygon("规划结果", "ghjg");
     this.addPolygon("draw", "draw");
   },
@@ -229,44 +227,49 @@ export default {
     resetAll() {
       // this.xzjgObj = JSON.parse(JSON.stringify(this.tempObj))
       // parent.emit("update:xzjgObj", JSON.parse(JSON.stringify(this.tempObj)));
-      this.xzjgObj = this.copyData
+      this.xzjgObj = this.copyData;
       this.reportText = "生成报告";
       this.bgList = [];
     },
     mapview(item) {
+      this.edlARR()
       // e.stopPropagation()
-      // console.log(item, "=====");
-      // console.log(item.geometry.coordinates[0][0][0][0],'item.geometry.coordinates[0][0]');
-      // viewer.camera.flyTo({
-      //   destination: Cesium.Cartesian3.fromDegrees(
-      //     item.geometry.coordinates[0][0][0][0],
-      //     item.geometry.coordinates[0][0][0][1],
-      //     15000.0
-      //   ),
-      //   orientation: {
-      //     heading: Cesium.Math.toRadians(20.0),
-      //     pitch: Cesium.Math.toRadians(-35.0),
-      //     roll: 0.0,
-      //   },
-      // });
       let tempArr = item.geometry.coordinates[0];
+      for (let i = 0; i < tempArr.length; i++) {
+        const oneDArray = tempArr[i].reduce(
+          (accumulator, currentValue) => accumulator.concat(currentValue),
+          []
+        );
+        console.log(i);
+        let entity = new Cesium.Entity({
+          name: "地块" + i,
+          show: true,
+          polygon: {
+            hierarchy: {
+              positions: Cesium.Cartesian3.fromDegreesArray(oneDArray),
+            },
+            material: Cesium.Color.WHITE.withAlpha(0.3),
+            clampToGround: true,
+            outline: true,
+            outlineWidth: 6,
+            outlineColor: Cesium.Color.fromCssColorString("#FF0000"),
+          },
+        });
+        viewer.entities.add(entity);
+        // 存ID
+        this.arrww.push(entity.id);
+        viewer.flyTo(entity);
+      }
+    },
 
-      let entity = new Cesium.Entity({
-        name: "地块",
-        show: true,
-        position: Cesium.Cartesian3.fromDegrees(
-          obj.centroid[0],
-          res.properties.centroid[1],
-          5000
-        ),
-        clampToGround: true,
-        stroke: Cesium.Color.BLUE,
-        fill: Cesium.Color.WHITE.withAlpha(0.3), //注意:颜色必须大写,即不能为blue
-        strokeWidth: 5,
-      });
-      earth.czm.viewer.entities.add(entity);
-      // 存ID
-      this.arrww.push(entity.id);
+    edlARR() {
+      //删除路径
+      if (this.arrww.length != 0) {
+        this.arrww.forEach((item) => {
+          viewer.entities.removeById(item);
+        });
+        this.arrww = [];
+      }
     },
     submit() {
       console.log("生成报告");
@@ -306,6 +309,7 @@ export default {
 
   beforeDestroy() {
     viewer.dataSources.removeAll();
+    this.edlARR()
   },
 };
 </script>

+ 9 - 5
src/views/siteselection/index.vue

@@ -15,9 +15,9 @@
         @tab-click="tabClick"
       >
         <el-tab-pane label="辅助选址" name="fzxz">
-          <FZXZ></FZXZ>
+          <FZXZ @updateParent="changeData"></FZXZ>
         </el-tab-pane>
-        <el-tab-pane label="历史记录"  name="lsju">
+        <el-tab-pane label="历史记录" name="lsju">
           <Lsjl
             :rzBsm="rzBsm"
             :activeTabs="activeTabs"
@@ -26,7 +26,11 @@
           ></Lsjl>
         </el-tab-pane>
         <!-- :disabled="activeTabs != 'scjg'" -->
-        <el-tab-pane label="选址结果" :disabled="activeTabs != 'scjg'" name="xzjg">
+        <el-tab-pane
+          label="选址结果"
+          :disabled="activeTabs != 'scjg'"
+          name="xzjg"
+        >
           <XZJG
             :activeTabs="activeTabs"
             :loading="loading"
@@ -75,7 +79,6 @@ export default {
   methods: {
     changeData(name, updata) {
       this[name] = updata;
-      console.log(name, updata, "name, updata");
     },
     tabClick(evt) {
       this.activeTabs = evt.name;
@@ -83,8 +86,9 @@ export default {
   },
   watch: {
     activeTabs(newValue) {
-       if (newValue != "lsju")
+      if (newValue != "lsju") {
         viewer.dataSources.removeAll();
+      }
     },
   },
 };

+ 1 - 4
src/views/viewer1.vue

@@ -93,7 +93,7 @@ export default {
         },
         setDatas() {
             this.$refs.gdbh_ref.setData({ id: this.params.id });
-            this.$refs.stxf_ref.setData({ id: this.params.id });
+            // this.$refs.stxf_ref.setData({ id: this.params.id });
             this.$refs.wpjg_ref.setData(this.params);
         },
         dateChange(date) {
@@ -143,15 +143,12 @@ export default {
             store.setCockpitHysyEchart(obg_echart);
 
 
-            this.$refs.hysy_ref["getRenKou"]();
 
             // getRenKou();
 
         },
         hysyq_xzqh() {
             const that = this;
-            that.$refs.hysy_ref["label_data"]();
-            that.$refs.hysy_ref["echart_data"]();
         },
         async gkzb_xzqh(address) {
             let obj = {

BIN
static/images/overview/gdbh_echart_gdlc_legend.png


BIN
static/images/overview/gdbh_echart_gdlr_legend.png