Browse Source

修改名称

zy 2 years ago
parent
commit
f42e4c6d0e

+ 14 - 0
neim-biz/src/main/java/com/jiayue/biz/controller/HomePageController.java

@@ -202,4 +202,18 @@ public class HomePageController extends BaseController {
     }
 
 
+    //查询所有的场站坐标
+    @GetMapping("/getStationSeat")
+    public AjaxResult getStationSeat(){
+        return AjaxResult.success(homePageService.getStationSeat());
+    }
+
+
+    //查询所有的项目坐标
+    @GetMapping("/getProjectSeat")
+    public AjaxResult getProjectSeat(){
+        return AjaxResult.success(homePageService.getProjectSeat());
+    }
+
+
 }

+ 0 - 2
neim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusOne.java

@@ -19,7 +19,5 @@ public class ProjectMenusOne {
     private String workContent;
     //计划完成时间
     private String planTime;
-    //一级菜单状态
-    private String status;
     private List<ProjectMenusTow> projectMenusTows;
 }

+ 4 - 0
neim-biz/src/main/java/com/jiayue/biz/service/HomePageService.java

@@ -99,4 +99,8 @@ public interface HomePageService extends IService<WindTowerDataParentTable> {
 
     //地图点位坐标 (风机、测风塔、拐点)
     HashMap<String, Object> getPointMap();
+    //查询所有的场站坐标
+    ArrayList<Object> getStationSeat();
+    //查询所有的项目坐标
+    ArrayList<Object> getProjectSeat();
 }

+ 41 - 0
neim-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java

@@ -878,6 +878,47 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
     }
 
     /**
+     * 查询所有的场站坐标
+     */
+    public ArrayList<Object> getStationSeat() {
+        ArrayList<Object> arrayList = new ArrayList<>();
+        List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
+        for (StationInfo stationInfo : stationInfos) {
+            HashMap<String, Object> hashMap = new HashMap<>();
+            hashMap.put("id", stationInfo.getId());
+            hashMap.put("stationName", stationInfo.getStationBasicInfo().getStationName());
+            //经度
+            hashMap.put("longitude", stationInfo.getStationBasicInfo().getLongitude());
+            //纬度
+            hashMap.put("latitude", stationInfo.getStationBasicInfo().getLatitude());
+            arrayList.add(hashMap);
+        }
+        return arrayList;
+    }
+
+    /**
+     * 查询所有的项目坐标
+     */
+    public ArrayList<Object> getProjectSeat() {
+        ArrayList<Object> arrayList = new ArrayList<>();
+        //获取项目信息
+        List<ProjectInfo> projectInfoList = projectInfoService.getProjectInfoList();
+        for (ProjectInfo projectInfo : projectInfoList) {
+            if (projectInfo.getEquipment() != null && projectInfo.getEquipment().size() > 0) {
+                Equipment equipment = projectInfo.getEquipment().get(0);
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("longitude", equipment.getLongitude());
+                map.put("latitude", equipment.getLatitude());
+                map.put("id", projectInfo.getId());
+                map.put("projectNameEasy", projectInfo.getProjectBasicInfo().getProjectNameEasy());
+                map.put("projectName", projectInfo.getProjectBasicInfo().getProjectName());
+                arrayList.add(map);
+            }
+        }
+        return arrayList;
+    }
+
+    /**
      * 查询场站详细信息(风机、机型等)
      */
     public HashMap<String, Object> getStationInfo(String stationId) {

BIN
neim-ui/public/img/heapmap/mean-wind-speed_rendering.tiff


BIN
neim-ui/public/img/heapmap/sunshine-radiation_rendering.tiff


BIN
neim-ui/public/largeScreenImg/huafuStation.png


BIN
neim-ui/public/largeScreenImg/project.png


BIN
neim-ui/public/largeScreenImg/station.png


+ 23 - 1
neim-ui/src/api/biz/dataQuery/largeScreenPage.js

@@ -58,10 +58,32 @@ export function stationInfo(query) {
     method: 'get',
     params: query
   })
-}// 场站下拉框
+}
+// 场站下拉框
 export function stationSelect() {
   return request({
     url: '/dataQuery/homePage/stationSelect',
     method: 'get'
   })
 }
+// 地图点位坐标 (风机、测风塔、拐点)
+export function getPointMap() {
+  return request({
+    url: '/dataQuery/homePage/getPointMap',
+    method: 'get'
+  })
+}
+// 查询所有的场站坐标
+export function getStationSeat() {
+  return request({
+    url: '/dataQuery/homePage/getStationSeat',
+    method: 'get'
+  })
+}
+// 查询所有的项目坐标
+export function getProjectSeat() {
+  return request({
+    url: '/dataQuery/homePage/getProjectSeat',
+    method: 'get'
+  })
+}

+ 67 - 24
neim-ui/src/views/largeScreenPage/Subpage/preProjectResources.vue

@@ -29,7 +29,7 @@
               <span class="textBox">已发起的项目</span>
             </div>
             <div class="contentBox">
-              <span class="numberBox">{{pInfo.approvalNum}}</span>
+              <span class="numberBox">{{ pInfo.approvalNum }}</span>
               <span class="textBox">完成核准项目</span>
             </div>
             <div class="contentBox">
@@ -48,20 +48,26 @@
         <div id="mapBtuOne" class="mapBtu mapBtuBefore" @click="clickBtu('mapBtuOne')">
           <span class="mapBtuText">地形图</span>
         </div>
-<!--        <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
-<!--          <span class="mapBtuText">风场气象图</span>-->
-<!--        </div>-->
+        <!--        <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
+        <!--          <span class="mapBtuText">风场气象图</span>-->
+        <!--        </div>-->
         <div id="mapBtuThree" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuThree')">
           <span class="mapBtuText">风资源分布图</span>
         </div>
-<!--        <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
-<!--          <span class="mapBtuText">光辐射气象图</span>-->
-<!--        </div>-->
+        <!--        <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
+        <!--          <span class="mapBtuText">光辐射气象图</span>-->
+        <!--        </div>-->
         <div id="mapBtuFive" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFive')">
           <span class="mapBtuText">光资源分布图</span>
         </div>
       </div>
     </div>
+    <div v-if="mapMark === 'mapBtuOne'">
+      <bige-map :mapValue="mapValue"/>
+    </div>
+    <div v-else>
+      <bige-heat-map :mapValue="mapValue"/>
+    </div>
     <div class="bottomPushBtu" @click="pushStationResource()">
       <span>在运风光场站资源管理</span>
     </div>
@@ -123,19 +129,25 @@
 </template>
 
 <script>
-import {projectInfo} from "@/api/biz/dataQuery/largeScreenPage";
+import {projectInfo, getProjectSeat} from "@/api/biz/dataQuery/largeScreenPage";
+import bigeMap from "@/views/largeScreenPage/components/bigeMap";
+import bigeHeatMap from "@/views/largeScreenPage/components/bigeHeatMap";
+
 export default {
   name: "preProjectResources",
+  components: {
+    bigeMap, bigeHeatMap
+  },
   data() {
     return {
       timer: null,
       time: '',
       dialogShow: false,
       pInfo: {
-        initiatedNum:'31',//已发起项目数目
-        approvalNum:'5',//已完成核准项目数目
-        buildNum:'4',//正在实施项目数目
-        electricNum:'1',//投产发电项目数目
+        initiatedNum: '31',//已发起项目数目
+        approvalNum: '5',//已完成核准项目数目
+        buildNum: '4',//正在实施项目数目
+        electricNum: '1',//投产发电项目数目
       },
 
       //一类项目列表
@@ -162,7 +174,16 @@ export default {
         // {name: '黑龙江华电富拉尔基灰场100MW光伏项目', value: '14'},
         // {name: '黑龙江华电佳木斯灰场50MW光伏项目', value: '15'},
         // {name: '黑龙江华电哈三灰场100MW光伏项目', value: '16'}
-      ]
+      ],
+      mapMark: 'mapBtuThree',
+      //地图传值
+      mapValue: {
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: null,//场站坐标
+        projectInfo: null,//项目坐标
+      },
+      projectSeat:[],// 项目位置
     }
   },
   destroyed() {
@@ -175,21 +196,33 @@ export default {
     this.timer = setInterval(this.formatTime, 1000 * 60)
   },
   methods: {
-    getInfo(){
-      projectInfo().then(res=>{
-      let data = res.data
-       this.pInfo =data.pInfo
-       this.projectOne = data.one
-       this.projectTwo = data.tow
-       this.projectThree = data.three
-      }).catch(err=>{
-        console.log('项目信息异常:'+err)
+    getInfo() {
+      getProjectSeat().then(res => {
+        this.projectSeat = res.data
+        this.mapValue = {
+          params: new Date(),
+          level: '',//地图层级
+          center: [],//中心坐标
+          stationInfo: null,//场站坐标
+          projectInfo: res.data
+        }
+      }).catch(err => {
+        console.log('项目信息异常:' + err)
+      })
+      projectInfo().then(res => {
+        let data = res.data
+        this.pInfo = data.pInfo
+        this.projectOne = data.one
+        this.projectTwo = data.tow
+        this.projectThree = data.three
+      }).catch(err => {
+        console.log('项目信息异常:' + err)
       })
     },
     //项目列表点击名称事件
     projectNameClick(project) {
-      sessionStorage.setItem("projectInfo",JSON.stringify(project))
-      this.$store.dispatch('equipmentInfo/projectInfo',JSON.stringify(project))
+      sessionStorage.setItem("projectInfo", JSON.stringify(project))
+      this.$store.dispatch('equipmentInfo/projectInfo', JSON.stringify(project))
       this.$router.push({path: "/homepage/projectInfo"})
     },
     push() {
@@ -202,6 +235,14 @@ export default {
       this.$router.push({path: "/homepage/stationResources"})
     },
     clickBtu(id) {
+      this.mapValue = {
+        params: new Date(),
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: null,//场站坐标
+        projectInfo: this.projectSeat
+      }
+      this.mapMark = id
       let clickItem = document.getElementById(id)
       let activeItem = document.querySelector('.mapBtuBefore')
       activeItem.classList.remove('mapBtuBefore')
@@ -322,6 +363,7 @@ export default {
   width: 20%;
   display: flex;
   flex-direction: column;
+  z-index: 10000;
 }
 
 .rightBg {
@@ -335,6 +377,7 @@ export default {
   right: 22%;
   top: 7%;
   width: 10%;
+  z-index: 100000;
 }
 
 .rightTiltleTextBg {

+ 6 - 283
neim-ui/src/views/largeScreenPage/Subpage/projectEvolve.vue

@@ -90,291 +90,14 @@ export default {
   methods: {
     // 获取项目进展情况
     getProjectEvolve() {
-      projectEvolve({eqId:this.project.value}).then(res=>{
-        console.log(res.data)
+      projectEvolve({projectId:this.project.id}).then(res=>{
+        // console.log(res.data)
+        this.spanArr = []
+        this.tableData =res.data
+        this.spanArr = this.merge()
       }).catch(err=>{
         console.log('项目进展信息获取失败:'+err)
       })
-      this.spanArr = []
-      this.tableData = [
-        {
-          index: '一',
-          taskContent: '成立项目公司',
-          planTime: '2023/2/15',
-          detailedTaskContent: '',
-          realTime: '',
-          status: '已完成',
-        },
-        {index: '二', taskContent: '项目核准', planTime: '3月5日前必须完成', detailedTaskContent: '', realTime: '', status: '',},
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '1.修编可研,将15万千瓦改成20万千瓦',
-          realTime: '2023/2/5',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '2.完成场址区1:2000和升压站1:500地形图测绘',
-          realTime: '2023/2/28',
-          status: '正在开展',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '3.微观选址完成',
-          realTime: '2023/2/15',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '4.勘察规划选址批复',
-          realTime: '2023/2/15',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '5.开展土地预审招标',
-          realTime: '2023/2/6',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '6.开展土地预审编制',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '项目土地预审批复',
-          planTime: '2023/2/20',
-          detailedTaskContent: '7.取得土地预审批复',
-          realTime: '2023/2/20',
-          status: '已完成',
-        },
-        {
-          index: '2',
-          taskContent: '项目核准申请报告',
-          planTime: '2023/2/21',
-          detailedTaskContent: '1.编写项目核准申请文件',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '2',
-          taskContent: '项目核准申请报告',
-          planTime: '2023/2/21',
-          detailedTaskContent: '2.编写项目申请报告(建设方案)',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '2',
-          taskContent: '项目核准申请报告',
-          planTime: '2023/2/21',
-          detailedTaskContent: '3.获取土地预审后上报到依兰县发改局',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '3',
-          taskContent: '相关支持文件:可研报告、环评报告、水保报告',
-          planTime: '2023/2/20',
-          detailedTaskContent: '1.修编可研后将收资材料给环评、水保单位编制完成报告后提报批复',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '3',
-          taskContent: '相关支持文件:可研报告、环评报告、水保报告',
-          planTime: '2023/2/20',
-          detailedTaskContent: '2.编制环评、水保文件',
-          realTime: '2023/2/20',
-          status: '已完成',
-        },
-        {
-          index: '4',
-          taskContent: '地方发改委申报',
-          planTime: '2023/2/25',
-          detailedTaskContent: '将建设方案和土地预审上报地方后进行跟踪督办',
-          realTime: '2023/2/25',
-          status: '已完成',
-        },
-        {
-          index: '5',
-          taskContent: '黑龙江省发改委批复',
-          planTime: '2023/3/5',
-          detailedTaskContent: '',
-          realTime: '',
-          status: '已完成',
-        },
-        {index: '三', taskContent: '投资决策', planTime: '3月20日前必须完成', detailedTaskContent: '', realTime: '', status: '',},
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.修编可研深度',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.1连续一年的测风数据',
-          realTime: '已完成',
-          status: '依兰四期利用依兰三期测风数据',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.2完成1:2000地形图测绘',
-          realTime: '2023/2/28',
-          status: '正在开展,计划7日完成。',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.3地质勘测工作',
-          realTime: '2023/2/28',
-          status: '现阶段完成初勘',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.4完成现场踏勘和初步的机位选址',
-          realTime: '2023/2/28',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '1.5完成可研阶段风电机组布机方案',
-          realTime: '2023/2/28',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '2.根据审查条件准备支撑材料',
-          realTime: '2023/2/15',
-          status: '正在收资',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '2.1完成环评报告',
-          realTime: '2023/2/20',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '2.2完成水保报告',
-          realTime: '2023/2/20',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '2.3取得土地预审批复',
-          realTime: '2023/2/20',
-          status: '已完成',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '3.上报集团技经中心开展审查',
-          realTime: '2023/2/20',
-          status: '正在开展',
-        },
-        {
-          index: '1',
-          taskContent: '可研完成审查',
-          planTime: '2023/3/10',
-          detailedTaskContent: '4.取得审查意见',
-          realTime: '2023/3/10',
-          status: '完成核准,为快速完成,需要带条件进行审查',
-        },
-        {
-          index: '2',
-          taskContent: '环评批复',
-          planTime: '2023/3/10',
-          detailedTaskContent: '过程跟踪,督办环评开展情况',
-          realTime: '2023/3/10',
-          status: '前期转工程后,确定机位,开展批复工作',
-        },
-        {
-          index: '3',
-          taskContent: '水土保持批复',
-          planTime: '2023/3/10',
-          detailedTaskContent: '过程跟踪,督办水保开展情况',
-          realTime: '2023/3/10',
-          status: '前期转工程后,确定机位,开展批复工作',
-        },
-        {
-          index: '4',
-          taskContent: '接入系统获得经研院评审意见',
-          planTime: '2023/3/15',
-          detailedTaskContent: '1.开展招标工作',
-          realTime: '2023/2/10',
-          status: '已完成',
-        },
-        {
-          index: '4',
-          taskContent: '接入系统获得经研院评审意见',
-          planTime: '2023/3/15',
-          detailedTaskContent: '2.接入系统设计报告编制',
-          realTime: '2023/3/10',
-          status: '已完成',
-        },
-        {
-          index: '4',
-          taskContent: '接入系统获得经研院评审意见',
-          planTime: '2023/3/15',
-          detailedTaskContent: '3.上报国网公司进行评审申请',
-          realTime: '2023/3/11',
-          status: '已完成',
-        },
-        {
-          index: '4',
-          taskContent: '接入系统获得经研院评审意见',
-          planTime: '2023/3/15',
-          detailedTaskContent: '4.获取初步会议纪要',
-          realTime: '2023/3/15',
-          status: '本年接入系统为重大难点,无法确认时间',
-        },
-        {
-          index: '5',
-          taskContent: '获得集团投资计划',
-          planTime: '2023/3/15',
-          detailedTaskContent: '',
-          realTime: '',
-          status: '',
-        },
-        {index: '6', taskContent: '主设备选型', planTime: '2023/3/15', detailedTaskContent: '', realTime: '', status: '',},
-        {index: '7', taskContent: '上报投资决策', planTime: '2023/3/15', detailedTaskContent: '', realTime: '', status: '',},
-      ]
-      this.spanArr = this.merge()
     },
     // 找相同的列
     merge() {
@@ -610,6 +333,6 @@ export default {
   text-align: center;
   position: absolute;
   right: 0;
-  bottom: -.5%;
+  bottom: 0%;
 }
 </style>

+ 59 - 16
neim-ui/src/views/largeScreenPage/Subpage/provincialEnergyStations.vue

@@ -78,47 +78,68 @@
           <div id="mapBtuOne" class="mapBtu mapBtuBefore" @click="clickBtu('mapBtuOne')">
             <span class="mapBtuText">地形图</span>
           </div>
-<!--          <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
-<!--            <span class="mapBtuText">风场气象图</span>-->
-<!--          </div>-->
+          <!--          <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
+          <!--            <span class="mapBtuText">风场气象图</span>-->
+          <!--          </div>-->
           <div id="mapBtuThree" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuThree')">
             <span class="mapBtuText">风资源分布图</span>
           </div>
-<!--          <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
-<!--            <span class="mapBtuText">光辐射气象图</span>-->
-<!--          </div>-->
+          <!--          <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
+          <!--            <span class="mapBtuText">光辐射气象图</span>-->
+          <!--          </div>-->
           <div id="mapBtuFive" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFive')">
             <span class="mapBtuText">光资源分布图</span>
           </div>
         </div>
+        <div v-if="mapMark === 'mapBtuOne'">
+          <bige-map :mapValue="mapValue"/>
+        </div>
+        <div v-else>
+          <bige-heat-map :mapValue="mapValue"/>
+        </div>
+
+
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import {hauFuInfo} from "@/api/biz/dataQuery/largeScreenPage";
+import {getStationSeat, hauFuInfo} from "@/api/biz/dataQuery/largeScreenPage";
+import bigeMap from "@/views/largeScreenPage/components/bigeMap";
+import bigeHeatMap from "@/views/largeScreenPage/components/bigeHeatMap";
 
 export default {
   name: "provincialEnergyStations",
+  components: {
+    bigeMap,bigeHeatMap
+  },
   data() {
     return {
       timer: null,
       time: '',
-      provinceInfo:{//全省信息
+      mapMark:'mapBtuOne',
+      provinceInfo: {//全省信息
         // fNum:'100',
         // fHours:'2496h',
         // gNum:'41',
         // gHours:'1620h'
       },
-      hdInfo:{ //华电信息
+      hdInfo: { //华电信息
         // fNum:'10',
         // fEName:'瑞信风电场',//风场站名称
         // fHours:'3256h',
         // gNum:'4',
         // gEName:'宁姜环球光伏',//光伏站名称
         // gHours:'1636h'
-      }
+      },
+      //地图传值
+      mapValue: {
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: null,//场站坐标
+      },
+      stationSeat:[],//场站位置
     }
   },
   destroyed() {
@@ -128,15 +149,28 @@ export default {
   mounted() {
     this.formatTime()
     this.getInfo()
+
     this.timer = setInterval(this.formatTime, 1000 * 60)
   },
   methods: {
-    getInfo(){
-      hauFuInfo().then(res=>{
+    getInfo() {
+      getStationSeat().then(res=>{
+        // console.log(res.data)
+        this.stationSeat = res.data
+        this.mapValue = {
+          params:new Date(),
+          level: '',//地图层级
+          center: [],//中心坐标
+          stationInfo: res.data,//场站坐标
+        }
+      }).catch(err=>{
+        console.log('所有场站位置查询异常' + err)
+      })
+      hauFuInfo().then(res => {
         this.provinceInfo = res.data.provinceInfo
         this.hdInfo = res.data.hdInfo
-      }).catch(err=>{
-        console.log('华富总体信息查询异常'+err)
+      }).catch(err => {
+        console.log('华富总体信息查询异常' + err)
       })
     },
     push() {
@@ -152,6 +186,13 @@ export default {
       this.$router.push({path: "/homepage/stationResources"})
     },
     clickBtu(id) {
+      this.mapValue = {
+        params:new Date(),
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: this.stationSeat,//场站坐标
+      }
+      this.mapMark = id
       let clickItem = document.getElementById(id)
       let activeItem = document.querySelector('.mapBtuBefore')
       activeItem.classList.remove('mapBtuBefore')
@@ -188,8 +229,8 @@ export default {
 .provincialEnergyStationsPage {
   width: 100%;
   height: calc(100vh);
-  background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/ps6g1swu667otdfgvidaizwk7p5p4on7b9azu9yxgzdr9vygb97c721c8b-8de6-4c17-9b4d-952d26ecb72e) -202px -3px no-repeat;
-  background-size: 100% 100%;
+  /*background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/ps6g1swu667otdfgvidaizwk7p5p4on7b9azu9yxgzdr9vygb97c721c8b-8de6-4c17-9b4d-952d26ecb72e) -202px -3px no-repeat;*/
+  /*background-size: 100% 100%;*/
   color: white;
 }
 
@@ -278,6 +319,7 @@ export default {
   width: 20%;
   display: flex;
   flex-direction: column;
+  z-index: 1000000;
 }
 
 .rightBg {
@@ -295,6 +337,7 @@ export default {
   right: 22%;
   top: 7%;
   width: 10%;
+  z-index: 10000;
 }
 
 .rightTiltleTextBg {

+ 364 - 0
neim-ui/src/views/largeScreenPage/components/bigeHeatMap.vue

@@ -0,0 +1,364 @@
+<template>
+  <div>
+    <div id='map'></div>
+    <div id="position">
+      <div id="zoom">
+        当前级别 : 6
+      </div>
+      <div id="move">
+        当前中心点: 纬度:0.00000,经度:0.00000
+      </div>
+    </div>
+    <!--    <el-radio-group v-model="leavel" @change="setData">-->
+    <!--      <el-radio class="radio" label="100">100Mb</el-radio>-->
+    <!--      <el-radio class="radio" label="250">250Mb</el-radio>-->
+    <!--      <el-radio class="radio" label="500">500Mb</el-radio>-->
+    <!--      <el-radio class="radio" label="1000">1000Mb</el-radio>-->
+    <!--    </el-radio-group>-->
+  </div>
+</template>
+
+<script>
+import bigemap from '@/utils/bigemap/map'
+import Tiff from "tiff.js";
+import axios from "axios";
+
+let map;
+export default {
+  name: "bigeMap",
+  props: {mapValue: Object},
+  watch: {
+    mapValue: {
+      immediate: true,
+      handler(value) {
+        if (value.params !== undefined) {
+          console.log("热力图:" + value)
+          this.mapData = value
+          this.initBigeMap()
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      bMap: null,
+      velocityLayer: null,
+      leavel: {},
+      latlngs: [[[0.0, 0.0], [0.0, 0.0]]],
+      cone: {},
+      mTime: null,
+      code: 230000,
+      mapData: {},// 传过来的值
+      href: window.location.href
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+    initBigeMap() {
+      let _self = this
+      bigemap.then(() => {
+        window.BM.Config.HTTP_URL = 'http://www.bigemap.com:9000';
+        // arcgis-satellite
+        // amap-satellite
+        // zhongkexingtu
+        let map = window.BM.map('map', 'bigemap.arcgis-satellite', {
+          center: [30, 104],
+          minZoom: 6,
+          zoom: 11,
+          zoomControl: true,
+          attributionControl: false,
+          preferCanvas: true, //适用于数据量大时 地图反应速度加快
+        });
+        window.Bmap = map;
+
+        this.bMap = map;
+        //首尾需要一致
+        let mask = window.BMturf.polygon([[[-180, -90], [180, -90], [180, 90], [-180, 90], [-180, -90]]]);
+        let geo2;
+        fetch('/js/geojson/230000/' + this.code + '.geojson').then(res => res.json()).then(data => {
+          // fetch('/js/geojson/' + this.code + '.geojson').then(res => res.json()).then(data => {
+          geo2 = window.BM.geoJSON(data, {
+            style: function () {
+              return {
+                color: '#ffffff',
+                weight: 3,
+                fillColor: '#ffffff',
+                fillOpacity: 0.1
+              };
+            },
+            onEachFeature: function (feature, layer) {
+              feature.properties && feature.properties.name && layer.bindTooltip(feature.properties.name, {
+                direction: 'bottom',
+                className: 'my_tooltip',
+                permanent: true
+              });
+            }
+          }).on('mouseover', function (e) {
+            e.layer.setStyle({
+              color: '#ffffff',
+              weight: 1,
+              fillColor: 'transparent',
+              fillOpacity: 0.9
+            });
+          }).on('mouseout', function (e) {
+            e.layer.setStyle({
+              color: '#ffffff',
+              weight: 3,
+              fillColor: '#ffffff',
+              fillOpacity: 0.2
+            });
+          }).addTo(this.bMap);
+          window.geo2 = geo2;
+          //限制拖动
+          this.bMap.setMaxBounds(geo2.getBounds());
+          this.bMap.fitBounds(geo2.getBounds());
+
+          const layers = geo2.getLayers();
+          for (const item of layers) {
+            const layer = item.feature;
+            mask = window.BMturf.mask(layer, mask);
+          }
+          window.BM.geoJSON(mask, {
+            color: 'orange',
+            fillColor: '#0A163A',
+            fillOpacity: 0.7
+          }).addTo(this.bMap);
+
+          //初始化热力图
+          this.setHeatMap(this.bMap);
+          //绑定事件
+          this.bindEvents(this.bMap);
+
+        })
+        // 标记点位
+        if (this.mapData.stationInfo !== null) {
+          let data = this.mapData.stationInfo
+          let iconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/station.png'
+
+          let station_icon = window.BM.icon({
+            iconUrl: iconurl,
+            iconSize: [30, 50],
+            iconAnchor: [30, 50]
+          })
+          for (let item of data) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            window.BM.marker(coordinate, {
+              icon: station_icon
+            }).addTo(this.bMap);
+          }
+        }
+        // 标记点位
+        if (this.mapData.projectInfo !== null) {
+          let data = this.mapData.projectInfo
+          let iconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/project.png'
+
+          let station_icon = window.BM.icon({
+            iconUrl: iconurl,
+            iconSize: [30, 50],
+            iconAnchor: [30, 50]
+          })
+          for (let item of data) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: station_icon,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            // 悬浮动作
+            marker.on('mouseover', function (e) {
+              marker.bindTooltip('<div>项目名称:' + item.projectNameEasy + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                {permanent:true,className:'infoToolTip',offset:[0,-30]}).openTooltip();
+            })
+            marker.on('mouseout', function () {
+              marker.bindTooltip().closeTooltip();
+            })
+            // 点击动作
+            marker.on('click', function (e) {
+              let project = {id: item.id,projectSort: item.projectName}
+              sessionStorage.setItem("projectInfo", JSON.stringify(project))
+              _self.$store.dispatch('equipmentInfo/projectInfo', JSON.stringify(project))
+              _self.$router.push({path: "/homepage/projectInfo"})
+            })
+          }
+        }
+        /**
+         * 加载实时气象源动画效果
+         fetch("/js/json/wind_data/20230403_00_atmoslev_1000_mb.json")
+         .then((res) => {
+            return res.json();
+          })
+         .then((data) => {
+            this.velocityLayer = window.BM.velocityLayer({
+              displayValues: true,
+              displayOptions: {
+                velocityType: "windy",
+                displayPosition: "topright",
+                displayEmptyString: "没有数据",
+                directionString: "风向",
+                speedString: "速度",
+              },
+              data: data,
+              minVelocity: 0.05,
+              maxVelocity: 10,
+              colorScale: ["red", "green", "yellow", "pink"],
+              velocityScale: 0.02, //  default 0.005,
+            });
+            this.velocityLayer.addTo(this.bMmap);
+          });
+         */
+      })
+    },
+    //设置热力图效果
+    setHeatMap(map) {
+      axios.get("/img/heapmap/mean-wind-speed_rendering.tiff", {
+        responseType: "arraybuffer",
+      }).then((res) => {
+        const fr = new FileReader();
+        fr.onloadend = function (e) {
+          var image = new Tiff({buffer: e.target.result});
+          var imageUrl = image.toDataURL(),
+            imageBounds = [
+              [43.422993, 121.183134],
+              [53.564656, 135.091461],
+            ];
+          window.imgOverlay = window.BM.imageOverlay(imageUrl, imageBounds).addTo(map);
+          map.fitBounds(imageBounds);
+        };
+        fr.readAsArrayBuffer(new Blob([res.data]));
+      });
+    },
+    //绑定事件-监听地图级别和拖动
+    bindEvents(map) {
+      map.on('moveend', function (e) {
+        const c = this.getCenter();
+        document.getElementById('move').innerHTML = '当前中心点: 纬度:' + c.lat.toFixed(5) + ',经度:' + c.lng.toFixed(5);
+      });
+      //添加一个缩放事件
+      map.on('zoomend', function (e) {
+        document.getElementById('zoom').innerHTML = '当前级别 : ' + this.getZoom();
+      });
+    },
+    setData(params) {
+      fetch(`/js/json/wind_data/20230403_00_atmoslev_` + params + `_mb.json`)
+        .then((res) => {
+          return res.json();
+        })
+        .then((data) => {
+          this.velocityLayer.options.displayOptions.velocityType = params + `Mb`;
+          this.velocityLayer.setData(data);
+        });
+    },
+    initRegion(code) {
+      sessionStorage.clear();
+      sessionStorage.setItem('latlngs', JSON.stringify(this.latlngs));
+      this.chons(code)
+    },
+    //加载地图方法
+    chons(code) {
+      fetch('/js/geojson/230000/' + code + '.geojson')
+        .then((res) => {
+          return res.json();
+        })
+        .then((data) => {
+          this.cone = this.BM.geoJSON(data, {
+            style: function () {
+              return {
+                color: '#ffffff',
+                fillColor: 'transparent',
+                weight: 1,
+                fillOpacity: 0.9
+              };
+            },
+          }).on('mouseover', function (e) {
+            const rel = e.layer.feature.properties;
+            e.layer.setStyle({
+              color: '#ffffff',
+              fillColor: 'transparent',
+              weight: 3,
+              fillOpacity: 1
+            });
+
+            //显示弹窗信息坐标
+            let x = rel.center['1'];
+            let y = rel.center['0'];
+            let coordinate = [[x, y]];
+
+            //组装参数
+            let adcode = rel.adcode;
+            let name = rel.name;
+            let level = rel.level;
+            let cont =
+              "<div>acode :" + adcode + "</div>" +
+              "<div>name <span style='margin-left: 2px'>:</span>" + name + "</div>" +
+              "<div>level <span style='margin-left: 7px'>:</span>" + level + "</div>";
+            //显示弹窗
+            if (!e.layer.getPopup()) {
+              e.layer.bindPopup(cont);
+            }
+            e.layer.openPopup();
+          }).on('mouseout', function (e) {
+            e.layer.setStyle({
+              color: '#ffffff',
+              fillColor: 'transparent',
+              weight: 1,
+              fillOpacity: 0.9
+            });
+            // 点击地图区域向下钻取
+            // }).on('click', (e) => {
+            //   const rel = e.layer.feature.properties;
+            //   const zb = e.layer._bounds;
+            //   if (code === rel.adcode) {
+            //     return false;
+            //   } else {
+            //     //定时器
+            //     clearTimeout(this.mTime);
+            //     this.mTime = setTimeout(() => {
+            //       //重新加载
+            //       this.chons(rel.adcode);
+            //       this.cone.remove();
+            //       //临时缓存
+            //       sessionStorage.setItem('diqu', JSON.stringify(rel.acroutes));
+            //       const latadd = sessionStorage.getItem('latlngs');
+            //       const lataddp = JSON.parse(latadd);
+            //       lataddp.push([[zb._northEast.lat, zb._northEast.lng], [zb._southWest.lat, zb._southWest.lng]]);
+            //       sessionStorage.setItem('latlngs', JSON.stringify(lataddp));
+            //       if (lataddp.slice(-1).length !== 0) {
+            //         this.bMap.fitBounds(lataddp.slice(-1));
+            //       }
+            //     }, 300);
+            //   }
+          }).addTo(this.bMap);
+        })
+    }
+  }
+}
+</script>
+<style>
+.infoToolTip{
+  color: white;
+  background: rgba(0, 133, 212, 0.75);
+  border: .5px solid #0085d4;
+}
+
+.my_tooltip{
+  color: #0085d4;
+  background: transparent;
+  border: none;
+  /*font-size: 18px;*/
+}
+.my_tooltip::before{
+  display: none;
+}
+</style>
+<style scoped>
+#map {
+  width: 100%;
+  height: calc(90vh);
+}
+
+.bigemap-popup-content-wrapper, .map-legends, .map-tooltip {
+  border-radius: 8px;
+  box-shadow: 5px 5px 5px rgb(0 0 0);
+}
+</style>

+ 92 - 6
neim-ui/src/views/largeScreenPage/components/bigeMap.vue

@@ -25,6 +25,20 @@ import axios from "axios";
 let map;
 export default {
   name: "bigeMap",
+  props: {mapValue: Object},
+  watch: {
+    mapValue: {
+      immediate: true,
+      handler(value) {
+        if(value.params !== undefined){
+          console.log("地形图:"+value)
+          this.mapData = value
+          this.initBigeMap()
+        }
+
+      }
+    }
+  },
   data() {
     return {
       bMap: null,
@@ -34,19 +48,22 @@ export default {
       cone: {},
       mTime: null,
       code: 230000,
+      mapData:{},// 传过来的值
+      href: window.location.href
     }
   },
   mounted() {
-    this.initBigeMap()
+
   },
   methods: {
     initBigeMap() {
+      let _self = this
       bigemap.then(() => {
         window.BM.Config.HTTP_URL = 'http://www.bigemap.com:9000';
         // arcgis-satellite
         // amap-satellite
         // zhongkexingtu
-        this.bMap = window.BM.map('map', 'bigemap.arcgis-satellite', {
+        let map = window.BM.map('map', 'bigemap.arcgis-satellite', {
           center: [30, 104],
           minZoom: 6,
           zoom: 11,
@@ -54,11 +71,14 @@ export default {
           attributionControl: false,
           preferCanvas: true, //适用于数据量大时 地图反应速度加快
         });
+        window.Bmap=map;
+
+        this.bMap=map;
         //首尾需要一致
-        const polygon = window.BMturf.polygon([[[112, -21], [116, -36], [146, -39], [153, -24], [133, -10], [112, -21]]]);
         let mask = window.BMturf.polygon([[[-180, -90], [180, -90], [180, 90], [-180, 90], [-180, -90]]]);
         let geo2;
         fetch('/js/geojson/230000/' + this.code + '.geojson').then(res => res.json()).then(data => {
+        // fetch('/js/geojson/' + this.code + '.geojson').then(res => res.json()).then(data => {
           geo2 = window.BM.geoJSON(data, {
             style: function () {
               return {
@@ -90,6 +110,7 @@ export default {
               fillOpacity: 0.2
             });
           }).addTo(this.bMap);
+          window.geo2=geo2;
           //限制拖动
           this.bMap.setMaxBounds(geo2.getBounds());
           this.bMap.fitBounds(geo2.getBounds());
@@ -106,12 +127,61 @@ export default {
           }).addTo(this.bMap);
 
           //初始化热力图
-          this.setHeatMap(this.bMap);
+          // this.setHeatMap(this.bMap);
           //绑定事件
           this.bindEvents(this.bMap);
 
         })
+        // 标记点位
+        if(this.mapData.stationInfo !== null){
+          let data = this.mapData.stationInfo
+          let iconurl = 'http://'+_self.href.split("//")[1].split("/")[0]+'/largeScreenImg/station.png'
+
+          let station_icon = window.BM.icon({
+            iconUrl: iconurl,
+            iconSize: [30, 50],
+            iconAnchor: [30, 50]
+          })
+          for(let item of data){
+            let coordinate = [Number(item.latitude),Number(item.longitude)]
+            window.BM.marker(coordinate,{
+              icon: station_icon
+            }).addTo(this.bMap);
+          }
+        }
+        // 标记点位
+        if (this.mapData.projectInfo !== null) {
+          let data = this.mapData.projectInfo
+          let iconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/project.png'
 
+          let station_icon = window.BM.icon({
+            iconUrl: iconurl,
+            iconSize: [30, 50],
+            iconAnchor: [30, 50]
+          })
+          for (let item of data) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: station_icon,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            // 悬浮动作
+            marker.on('mouseover', function (e) {
+              marker.bindTooltip('<div>项目名称:' + item.projectNameEasy + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                {permanent:true,className:'infoToolTip',offset:[0,-30]}).openTooltip();
+            })
+            marker.on('mouseout', function () {
+              marker.bindTooltip().closeTooltip();
+            })
+            // 点击动作
+            marker.on('click', function (e) {
+              let project = {id: item.id,projectSort: item.projectName}
+              sessionStorage.setItem("projectInfo", JSON.stringify(project))
+              _self.$store.dispatch('equipmentInfo/projectInfo', JSON.stringify(project))
+              _self.$router.push({path: "/homepage/projectInfo"})
+            })
+          }
+        }
         /**
          * 加载实时气象源动画效果
          fetch("/js/json/wind_data/20230403_00_atmoslev_1000_mb.json")
@@ -141,7 +211,7 @@ export default {
     },
     //设置热力图效果
     setHeatMap(map) {
-      axios.get("/img/heapmap/mean-wind-speed-2022.tiff", {
+      axios.get("/img/heapmap/mean-wind-speed_rendering.tiff", {
         responseType: "arraybuffer",
       }).then((res) => {
         const fr = new FileReader();
@@ -152,7 +222,7 @@ export default {
               [43.422993, 121.183134],
               [53.564656, 135.091461],
             ];
-          window.BM.imageOverlay(imageUrl, imageBounds).addTo(map);
+          window.imgOverlay=window.BM.imageOverlay(imageUrl, imageBounds).addTo(map);
           map.fitBounds(imageBounds);
         };
         fr.readAsArrayBuffer(new Blob([res.data]));
@@ -264,7 +334,23 @@ export default {
   }
 }
 </script>
+<style>
+.infoToolTip{
+  color: white;
+  background: rgba(0, 133, 212, 0.75);
+  border: .5px solid #0085d4;
+}
 
+.my_tooltip{
+  color: #0085d4;
+  background: transparent;
+  border: none;
+  /*font-size: 18px;*/
+}
+.my_tooltip::before{
+  display: none;
+}
+</style>
 <style scoped>
 #map {
   width: 100%;

+ 36 - 7
neim-ui/src/views/largeScreenPage/index.vue

@@ -54,7 +54,14 @@
             <span class="mapBtuText">光资源分布图</span>
           </div>
         </div>
-        <bige-map/>
+        <div v-if="mapMark === 'mapBtuOne'">
+          <bige-map :mapValue="mapValue"/>
+        </div>
+        <div v-else>
+          <bige-heat-map :mapValue="mapValue"/>
+        </div>
+
+
       </div>
     </div>
   </div>
@@ -62,17 +69,19 @@
 
 <script>
 import bigeMap from "@/views/largeScreenPage/components/bigeMap";
+import bigeHeatMap from "@/views/largeScreenPage/components/bigeHeatMap";
 import {provincialEnergyInfo} from "@/api/biz/dataQuery/largeScreenPage";
 
 export default {
   name: "index",
   components: {
-    bigeMap
+    bigeMap,bigeHeatMap
   },
   data() {
     return {
       BM: null,
       Bmap: null,
+
       velocityLayer: null,
       leavel: {},
       latlngs: [[[0.0, 0.0], [0.0, 0.0]]],
@@ -80,9 +89,16 @@ export default {
       mTime: null,
       code: 230000,
       //==============
+      mapMark: 'mapBtuOne',
       timer: null,
       time: '',
-      resourcesOverview: '黑龙江处于高纬度地区,日照强度较大,太阳能转换率较高,为开发太阳能源提供了有理条件。特别是大兴安岭一带常年受到东亚西风带影响,具有风速大,气候干燥特点,与同维度地图相比,风资源更丰富,利于风能资源的开发与利用。'
+      resourcesOverview: '黑龙江处于高纬度地区,日照强度较大,太阳能转换率较高,为开发太阳能源提供了有理条件。特别是大兴安岭一带常年受到东亚西风带影响,具有风速大,气候干燥特点,与同维度地图相比,风资源更丰富,利于风能资源的开发与利用。',
+      //地图传值
+      mapValue: {
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: [],//场站坐标
+      }
     }
   },
   destroyed() {
@@ -95,11 +111,17 @@ export default {
     this.timer = setInterval(this.formatTime, 1000 * 60)
   },
   methods: {
-    getInfo(){
-      provincialEnergyInfo().then(res=>{
+    getInfo() {
+      this.mapValue = {
+        params:new Date(),
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: null,//场站坐标
+      }
+      provincialEnergyInfo().then(res => {
         this.resourcesOverview = res.data.resourcesOverview
-      }).catch(err=>{
-        console.log('全省信息查询异常'+err)
+      }).catch(err => {
+        console.log('全省信息查询异常' + err)
       })
     },
     push() {
@@ -109,6 +131,13 @@ export default {
       this.$router.push({path: "/homepage/provincialEnergyStations"})
     },
     clickBtu(id) {
+      this.mapValue = {
+        params:new Date(),
+        level: '',//地图层级
+        center: [],//中心坐标
+        stationInfo: null,//场站坐标
+      }
+      this.mapMark = id
       let clickItem = document.getElementById(id)
       let activeItem = document.querySelector('.mapBtuBefore')
       activeItem.classList.remove('mapBtuBefore')