zy 1 vuosi sitten
vanhempi
commit
91fa138859

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

@@ -175,6 +175,11 @@ public class HomePageController extends BaseController {
         return AjaxResult.success(homePageService.stationSelect());
     }
 
+    @GetMapping("/gStationSelect")
+    public AjaxResult gStationSelect() {
+        return AjaxResult.success(homePageService.gStationSelect());
+    }
+
     //地图点位坐标 (风机、测风塔、拐点)
     @GetMapping("/getPointMap")
     public AjaxResult getPointMap(){

+ 2 - 0
neim-biz/src/main/java/com/jiayue/biz/dto/SelectLabForVal.java

@@ -1,5 +1,6 @@
 package com.jiayue.biz.dto;
 
+import com.jiayue.biz.domain.WeatherStationInfo;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -16,4 +17,5 @@ public class SelectLabForVal {
     private String label;
     private String value;
     private List<EquipmentDto> equipmentDto;
+    private List<WeatherStationInfo> weatherStationInfo;
 }

+ 8 - 1
neim-biz/src/main/java/com/jiayue/biz/service/HomePageService.java

@@ -73,12 +73,19 @@ public interface HomePageService extends IService<WindTowerDataParentTable> {
     HashMap<String, Object> getStationInfo(String stationId);
 
     /**
-     * 场站测风塔下拉框
+     * 场站测风塔下拉框
      *
      * @return List<SelectLabForVal>
      */
     List<SelectLabForVal> stationSelect();
 
+    /**
+     * 光场站测风塔下拉框
+     *
+     * @return List<SelectLabForVal>
+     */
+    List<SelectLabForVal> gStationSelect();
+
     //项目进展
     List<ProjectEvolveDto> getProjectEvolve(String projectId);
 

+ 67 - 8
neim-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java

@@ -37,6 +37,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 首页Service业务层处理
@@ -664,6 +665,9 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
         ArrayList<Map<String, List<List<Coordinates>>>> coordinateList = new ArrayList<>();
         //风机List
         List<HashMap<String, Object>> fanList = new ArrayList<>();
+        // 环境监测仪
+        List<Map<String, Object>> weatherList = new ArrayList<>();
+        List<Map<String, Object>> inverterList = new ArrayList<>();
         HashSet<String> eqNoList = new HashSet<>();
         for (StationInfo stationInfo : stationInfoList) {
             if (stationInfo.getEquipment() != null && stationInfo.getEquipment().size() > 0) {
@@ -682,14 +686,39 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
                 }
                 towerList.addAll(arrayList);
             }
-            Map<String, List<FanTower>> collect = stationInfo.getFanTowerList().stream().collect(Collectors.groupingBy(FanTower::getFanModel));
-            for (Map.Entry<String, List<FanTower>> entry : collect.entrySet()) {
+            if (stationInfo.getFanTowerList() != null && stationInfo.getFanTowerList().size() > 0) {
+                Map<String, List<FanTower>> collect = stationInfo.getFanTowerList().stream().collect(Collectors.groupingBy(FanTower::getFanModel));
+                for (Map.Entry<String, List<FanTower>> entry : collect.entrySet()) {
+                    HashMap<String, Object> map = new HashMap<>();
+                    List<FanTower> collect1 = stationInfo.getFanTowerList().stream().filter(w -> w.getFanModel().equals(entry.getKey())).collect(Collectors.toList());
+                    map.put("type", "station");
+                    map.put("name", stationInfo.getStationBasicInfo().getStationName());
+                    map.put("data", collect1);
+                    fanList.add(map);
+                }
+            }
+            if (stationInfo.getWeatherStationInfos() != null && stationInfo.getWeatherStationInfos().size() > 0) {
+                ArrayList<Map<String, Object>> arrayList = new ArrayList<>();
+                for (WeatherStationInfo weatherStationInfo : stationInfo.getWeatherStationInfos()) {
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("type", "station");
+                    map.put("longitude", weatherStationInfo.getLongitude());
+                    map.put("latitude", weatherStationInfo.getLatitude());
+                    map.put("name", weatherStationInfo.getName());
+                    map.put("id", weatherStationInfo.getId());
+                    map.put("stationId", stationInfo.getId());
+                    arrayList.add(map);
+                }
+                weatherList.addAll(arrayList);
+            }
+            if (stationInfo.getInverterInfos() != null && stationInfo.getInverterInfos().size() > 0) {
+                ArrayList<Map<String, Object>> arrayList = new ArrayList<>();
                 HashMap<String, Object> map = new HashMap<>();
-                List<FanTower> collect1 = stationInfo.getFanTowerList().stream().filter(w -> w.getFanModel().equals(entry.getKey())).collect(Collectors.toList());
                 map.put("type", "station");
                 map.put("name", stationInfo.getStationBasicInfo().getStationName());
-                map.put("data", collect1);
-                fanList.add(map);
+                map.put("data", stationInfo.getInverterInfos());
+                arrayList.add(map);
+                inverterList.addAll(arrayList);
             }
         }
         for (ProjectInfo projectInfo : projectInfoList) {
@@ -725,7 +754,6 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
         dataMap.put("coordinatesList", coordinateList);
 
 
-
         List<Map<String, Object>> listMap = new ArrayList<>();
         //利用塔编号过滤分组项目以及场站的id
         for (String s : eqNoList) {
@@ -747,6 +775,8 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
 
         dataMap.put("towerList", listMap);
         dataMap.put("fan", fanList);
+        dataMap.put("weather", weatherList);
+        dataMap.put("inverter", inverterList);
         return dataMap;
     }
 
@@ -939,12 +969,13 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
     }
 
     /**
-     * 场站测风塔下拉框
+     * 场站测风塔下拉框
      *
      * @return List<SelectLabForVal>
      */
     public List<SelectLabForVal> stationSelect() {
-        List<StationInfo> stationInfoList = stationInfoService.selectStationInfo();
+        List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
+        List<StationInfo> stationInfoList = stationInfos.stream().filter(w -> w.getStationBasicInfo().getStationType().equals("风")).collect(Collectors.toList());
         ArrayList<SelectLabForVal> selectList = new ArrayList<>();
         if (stationInfoList.size() > 0) {
             //循环数据 放入项目id和项目名称
@@ -972,6 +1003,34 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
 
         return selectList;
     }
+    /**
+     * 光场站测风塔下拉框
+     *
+     * @return List<SelectLabForVal>
+     */
+    public List<SelectLabForVal> gStationSelect() {
+        List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
+        List<StationInfo> stationInfoList = stationInfos.stream().filter(w -> w.getStationBasicInfo().getStationType().equals("光")).collect(Collectors.toList());
+        ArrayList<SelectLabForVal> selectList = new ArrayList<>();
+        if (stationInfoList.size() > 0) {
+            //循环数据 放入项目id和项目名称
+            for (StationInfo stationInfo : stationInfoList) {
+                SelectLabForVal selectLabForVal = new SelectLabForVal();
+                selectLabForVal.setLabel(stationInfo.getStationBasicInfo().getStationName());
+                selectLabForVal.setValue(stationInfo.getId());
+                if (stationInfo.getWeatherStationInfos() !=null && stationInfo.getWeatherStationInfos().size() > 0) {
+                    ArrayList<WeatherStationInfo> weatherStationList = new ArrayList<>();
+                    //循环数据 放入测风塔id和测风塔名称
+                    for (WeatherStationInfo weatherStationInfo : stationInfo.getWeatherStationInfos()) {
+                        weatherStationList.add(weatherStationInfo);
+                    }
+                    selectLabForVal.setWeatherStationInfo(weatherStationList);
+                }
+                selectList.add(selectLabForVal);
+            }
+        }
+        return selectList;
+    }
 
     //项目进展
     public List<ProjectEvolveDto> getProjectEvolve(String projectId) {

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


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


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

@@ -59,13 +59,20 @@ export function stationInfo(query) {
     params: query
   })
 }
-// 场站下拉框
+// 场站下拉框
 export function stationSelect() {
   return request({
     url: '/dataQuery/homePage/stationSelect',
     method: 'get'
   })
 }
+// 光场站下拉框
+export function gStationSelect() {
+  return request({
+    url: '/dataQuery/homePage/gStationSelect',
+    method: 'get'
+  })
+}
 // 地图点位坐标 (风机、测风塔、拐点)
 export function getPointMap() {
   return request({

+ 1 - 0
neim-ui/src/layout/components/TagsView/index.vue

@@ -63,6 +63,7 @@ export default {
            && value.name !== "projectEvolve"
            && value.name !== "emailResourcesInfo"
            && value.name !== "realResourcesInfo"
+           && value.name !== "realPvResourcesInfo"
          ){
            finnalRoutes.push(value)
          }

+ 6 - 0
neim-ui/src/router/index.js

@@ -134,6 +134,12 @@ export const constantRoutes = [
     name: 'realResourcesInfo',
     meta: { title: '风资源信息', icon: 'dashboard', affix: true },
     hidden: true
+  },{
+    path: '/homepage/realPvResourcesInfo',
+    component: () => import('@/views/largeScreenPage/Subpage/realPvResourcesInfo'),
+    name: 'realPvResourcesInfo',
+    meta: { title: '风资源信息', icon: 'dashboard', affix: true },
+    hidden: true
   },
   // {
   //   path: '',

+ 1 - 0
neim-ui/src/store/getters.js

@@ -16,6 +16,7 @@ const getters = {
   sidebarRouters: state => state.permission.sidebarRouters,
   emailWindTowerInfo: state => state.equipmentInfo.emailWindTowerInfo,
   realWindTowerInfo: state => state.equipmentInfo.realWindTowerInfo,
+  realPvWindTowerInfo: state => state.equipmentInfo.realPvWindTowerInfo,
   windAllInfo: state => state.equipmentInfo.windAllInfo,
   stationInfo: state => state.equipmentInfo.stationInfo,
   projectInfo: state => state.equipmentInfo.projectInfo,

+ 8 - 0
neim-ui/src/store/modules/equipmentInfo.js

@@ -6,6 +6,7 @@ const state = {
   emailWindTowerInfo: sessionStorage.getItem("emailWindTowerInfo") || {},
   windAllInfo:[],
   realWindTowerInfo: sessionStorage.getItem("realWindTowerInfo") || {},
+  realPvWindTowerInfo: sessionStorage.getItem("realPvWindTowerInfo") || {},
 }
 
 const mutations = {
@@ -26,6 +27,10 @@ const mutations = {
   update_realWindTowerInfo:(state,value)=>{
     state.realWindTowerInfo = value
   },
+  // 修改光实时塔编号
+  update_realPvWindTowerInfo:(state,value)=>{
+    state.realPvWindTowerInfo = value
+  },
   // 所有塔信息实时塔编号
   update_windAllInfo:(state,value)=>{
     state.windAllInfo = value
@@ -39,6 +44,9 @@ const actions = {
   realWindTowerInfo({ commit },value) {
     commit('update_realWindTowerInfo',value)
   },
+  realPvWindTowerInfo({ commit },value) {
+    commit('update_realPvWindTowerInfo',value)
+  },
   update_windAllInfo({ commit },value) {
     commit('update_windAllInfo',value)
   },

+ 551 - 0
neim-ui/src/views/largeScreenPage/Subpage/realPvResourcesInfo.vue

@@ -0,0 +1,551 @@
+<template>
+  <div class="page emailResourcesInfoPage">
+    <div class="timeBox">{{ time }}</div>
+    <div class="topTiltle">
+      <span class="title">在  运  资  源  信  息</span>
+    </div>
+    <div class="btuGroup">
+      <div class="topBtu topLeftBtu" @click="back()">
+        <span class="btuText">返回&nbsp;</span>
+      </div>
+      <div class="topBtu topRightBtu" @click="push()">
+        <span class="btuText">后台管理</span>
+      </div>
+    </div>
+    <div class="myMain-container">
+      <div class="main-content">
+        <!--  主体上半部分      -->
+        <div class="main-top">
+          <div class="mainBg main-top-left">
+            <!--  标题-->
+            <div class="leftTiltleTextBg">
+              <div class="tiltle" style="margin-left: 2%;top: -53%;">
+                <div class="rSelect">
+                  <div class="projectSelect">
+                    <el-select class="choiceSelect" v-model="stationId" placeholder="请选择" size="small"
+                               :popper-append-to-body="false"
+                               @change="changeStation"
+                               style="width: 100%">
+                      <el-option
+                        v-for="(item,index) in stationOption"
+                        :key="index"
+                        :label="item.label"
+                        :value="item.value">
+                      </el-option>
+                    </el-select>
+                  </div>
+                  <div class="towerSelect">
+                    <el-select class="choiceSelect" v-model="cftNo" placeholder="请选择" size="small"
+                               :popper-append-to-body="false"
+                               @change="changeTower"
+                               style="width: 100%">
+                      <el-option
+                        v-for="(item,index) in towerOption"
+                        :key="index"
+                        :label="item.name"
+                        :value="item.id">
+                      </el-option>
+                    </el-select>
+                  </div>
+                </div>
+
+              </div>
+            </div>
+            <!-- 内容  -->
+            <div class="infoContent">
+              <div class="textInfo">
+                <span class="textInfoTitle">环境监测仪基础信息</span>
+                <div class="textInfoContent">
+                  <div><span>经度:{{ stationInfo.longitude }}</span><span
+                    style="margin-left: 3%">纬度:{{ stationInfo.latitude }}</span></div>
+                </div>
+
+              </div>
+
+              <div class="hexagonContent">
+                <div class="contentBox">
+                  <span class="numberBox">{{ stationInfo.wd }}</span>
+                  <span class="textBox">主风向</span>
+                </div>
+                <div class="contentBox">
+                  <span class="numberBox">{{ stationInfo.hour }}<span style="font-size: 14px">h</span></span>
+                  <span class="textBox">等效利用小数</span>
+                </div>
+                <div class="contentBox">
+                  <span class="numberBox">{{ stationInfo.power }}</span>
+                  <span class="textBox">发电量</span>
+                  <span class="numberBox" style="font-size: 14px">MWh</span>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="mainBg main-top-center">
+            <!--  标题-->
+            <div class="rightTiltleTextBg">
+              <div class="tiltle">
+                <span class="mainTitle">风速与风向</span>
+              </div>
+            </div>
+            <!-- 内容  -->
+            <div>
+              <ws-and-wd/>
+            </div>
+          </div>
+          <div class="mainBg main-top-right">
+            <!--  标题-->
+            <div class="rightTiltleTextBg">
+              <div class="tiltle">
+                <span class="mainTitle">温度与压强</span>
+              </div>
+            </div>
+            <!-- 内容  -->
+            <div>
+              <humidity-and-pressure/>
+            </div>
+          </div>
+        </div>
+        <!-- 主体下半部分       -->
+        <div class="main-bottom">
+          <div class="mainBg main-bottom-left">
+            <!--  标题-->
+            <div class="rightTiltleTextBg">
+              <div class="tiltle">
+                <span class="mainTitle">辐射对比</span>
+              </div>
+            </div>
+            <!-- 内容  -->
+            <div>
+              <radiation/>
+            </div>
+          </div>
+          <div class="mainBg main-bottom-right">
+            <!--  标题-->
+            <div class="rightTiltleTextBg">
+              <div class="tiltle">
+                <span class="mainTitle">环境与光伏板温度</span>
+              </div>
+            </div>
+            <!-- 内容  -->
+            <div>
+              <temperature/>
+            </div>
+          </div>
+        </div>
+
+      </div>
+    </div>
+    <div class="bottomPushBtu" @click="pushStationResource()">
+      <span>在运风光场站资源管理</span>
+    </div>
+  </div>
+</template>
+
+<script>
+import wsAndWd from '../pvComponents/wsAndWdChart'
+import humidityAndPressure from '../pvComponents/humidityAndPressure'
+import radiation from '../pvComponents/radiation'
+import temperature from '../pvComponents/temperature'
+import {stationSelect,gStationSelect} from "../../../api/biz/dataQuery/largeScreenPage";
+export default {
+  name: "realPvResourcesInfo",
+  components: {wsAndWd,humidityAndPressure,radiation,temperature},
+  data() {
+    return {
+      time: '',
+      realPvWindTowerInfo: {},
+      stationId: '',
+      stationOption: [],//项目列表
+      cftNo: '',
+      towerOption: [],//塔列表
+      stationInfo:{},
+    }
+  },
+  destroyed() {
+    clearInterval(this.timer)
+    this.timer = null
+  },
+  mounted() {
+    this.realPvWindTowerInfo = JSON.parse(this.$store.getters.realPvWindTowerInfo)
+    // this.formatTime()
+    this.getStationSelect()
+    // this.timer = setInterval(this.formatTime, 1000 * 60)
+  },
+  methods: {
+    getStationSelect() {
+      gStationSelect().then(res => {
+        this.stationOption = res.data
+        if (this.realPvWindTowerInfo !== undefined) {
+          this.stationId = this.realPvWindTowerInfo.stationId
+          let station = this.stationOption.find(w => w.value === this.stationId)
+          this.towerOption = station.weatherStationInfo
+          if (this.realPvWindTowerInfo.equipmentNo !== null && this.realPvWindTowerInfo.equipmentNo !== undefined) {
+            this.cftNo = this.realPvWindTowerInfo.equipmentNo
+          } else {
+            this.cftNo = this.towerOption === null?'':this.towerOption[0].id
+            this.stationInfo = {
+              longitude:this.towerOption[0].longitude,
+              latitude:this.towerOption[0].latitude
+          }
+          }
+        } else {
+          this.stationId = this.stationOption[0].value
+          this.towerOption = this.stationOption[0].weatherStationInfo
+          this.cftNo = this.towerOption === null?'':this.towerOption[0].id
+          this.stationInfo = {
+            longitude:this.towerOption[0].longitude,
+            latitude:this.towerOption[0].latitude
+          }
+        }
+      }).catch(err => {
+        console.log('获取场站列表失败:' + err)
+      })
+    },
+
+    // 改变场站下拉框
+    changeStation() {
+      let station = this.stationOption.find(w => w.value === this.stationId)
+      this.towerOption = station.weatherStationInfo
+      this.cftNo = this.towerOption === null?'':this.towerOption[0].id
+      this.stationInfo = {
+        longitude:this.towerOption[0].longitude,
+        latitude:this.towerOption[0].latitude
+      }
+    },
+    // 改变塔信息下拉框
+    changeTower() {
+      let towerInfo = this.towerOption.find(w => w.id === this.cftNo)
+      this.cftInfo = {equipmentNo: this.cftNo, wdHeights: towerInfo.wdHeight}
+    },
+    push() {
+      this.$router.push({path: "/dataQuery/windTowerStatusInfo"})
+    },
+    back() {
+      this.$router.push({path: "/homepage/stationInfo"})
+    },
+    pushStationResource() {
+      this.$router.push({path: "/homepage/stationResources"})
+    },
+
+    /*时间格式化*/
+    formatTime() {
+      this.time = ''
+      let date = new Date()
+      let year = date.getFullYear();                // 年
+      let month = date.getMonth() + 1;        // 月
+      let day = date.getDate();
+      let hour = date.getHours();                   // 获取当前小时数(0-23)
+      let minutes = date.getMinutes();
+      if (month < 10) month = "0" + month;
+      if (day < 10) day = "0" + day;
+      if (minutes < 10) minutes = "0" + minutes;
+      this.time = year + "-" + month + "-" + day + " " + hour + ' : ' + minutes;
+    }
+  }
+}
+</script>
+
+<style scoped>
+.emailResourcesInfoPage {
+  width: 100%;
+  height: calc(100vh);
+  /*background: url(../../../assets/largeScreenImg/backBg.png) no-repeat;*/
+  /*background-size: 100% 100%;*/
+  background: #030F1A;
+  color: white;
+}
+
+
+.timeBox {
+  position: absolute;
+  left: 2%;
+  top: 0;
+  font-size: 20px;
+  line-height: 40px;
+  font-family: timeFont !important;
+}
+
+.page {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  overflow: auto;
+  box-shadow: inset -1px -20px 550px 200px rgb(12 25 69  / 80%);
+}
+
+.topTiltle {
+  width: 100%;
+  height: 5.5%;
+  background: url(../../../assets/largeScreenImg/index/topTitleBg.png) -2px -1px no-repeat;
+  background-size: 100% 100%;
+  display: flex;
+  justify-content: center;
+}
+
+.title {
+  width: 17%;
+  height: 100%;
+  text-align: center;
+  margin-top: .2%;
+  font-size: 30px;
+  font-weight: 800;
+  background-image: linear-gradient(
+    360deg,
+    rgba(178, 204, 252, 1) 0,
+    rgba(178, 204, 252, 1) 0,
+    rgba(255, 255, 255, 1) 100%,
+    rgba(255, 255, 255, 1) 100%
+  );
+  background-clip: text;
+  color: transparent;
+}
+
+.btuGroup {
+  position: absolute;
+  right: 0;
+  top: 0;
+  color: white;
+  width: 15%;
+  height: 5.5%;
+  display: flex;
+  justify-content: flex-end;
+  font-size: 18px;
+}
+
+.topBtu {
+  height: 100%;
+  margin-top: -1.5%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+}
+
+.topRightBtu {
+  background: url(../../../assets/largeScreenImg/index/topRightBtuBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  width: 50%;
+}
+
+.topLeftBtu {
+  background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  width: 35%;
+}
+
+.mainBg {
+  background: url(../../../assets/largeScreenImg/index/leftTextBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  padding: 1%;
+}
+
+.main-content {
+  width: 100%;
+  height: calc(91vh);
+  display: flex;
+  flex-direction: column;
+  justify-content: space-evenly;
+}
+
+.main-top, .main-bottom {
+  height: 46%;
+  display: flex;
+  justify-content: space-evenly;
+}
+
+.main-top-left {
+  width: 25%;
+}
+.main-top-center,.main-top-right{
+  width: 35%;
+}
+.main-bottom-left,.main-bottom-right {
+  width: 48.5%;
+}
+
+.rightTiltleTextBg {
+  height: 32px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/rightTitleBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.leftTiltleTextBg {
+  margin-top: 7px;
+  height: 25px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/leftTitleBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.centerTiltleTextBg {
+  height: 32px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/centerTitleBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.topCenterTiltleTextBg {
+  height: 32px;
+  background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/projectEvolveTitleBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.tiltle {
+  color: rgba(183, 243, 252, 1);
+  font-size: 20px;
+  font-weight: 550;
+  margin-left: 8%;
+  position: relative;
+  top: -25%;
+}
+
+.rSelect {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.projectSelect {
+  height: 34px;
+  width: 200px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/projectBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.towerSelect {
+  height: 30px;
+  width: 200px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/towerBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.rSelect /deep/ .el-input--small .el-input__inner {
+  background: transparent;
+  border: 0;
+  color: white;
+  font-size: 16px;
+}
+
+.projectSelect /deep/ .el-input--small .el-input__inner {
+  margin-left: 5%;
+  margin-top: 1%;
+}
+
+.rSelect /deep/ .el-select .el-input .el-select__caret {
+  color: #ffffff;
+}
+
+.centerTitle {
+  margin-left: 5%;
+}
+
+.topCenterTitle {
+  margin-left: 2.5%;
+}
+
+.hexagonContent {
+  display: flex;
+  justify-content: space-around;
+  flex-wrap: wrap;
+}
+
+.infoContentBottom {
+  margin-top: 2%;
+}
+
+.textInfo {
+  color: #00FFDE;
+  line-height: 30px;
+  font-size: 18px;
+  margin-top: 3%;
+}
+
+.textInfoTitle {
+  color: white;
+  padding: 1% 1% 1% 3%;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/titleBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.textInfoContent {
+  margin-left: 3%;
+}
+
+.contentBox {
+  margin-top: 5%;
+  width: 30%;
+  height: 125px;
+  background: url(../../../assets/largeScreenImg/index/liubianxingBorder.png) 100% no-repeat;
+  background-size: 100% 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+
+.numberBox {
+  font-size: 24px;
+  font-weight: 700;
+  background-image: linear-gradient(
+    rgba(255, 255, 255, 1) 0,
+    rgba(255, 255, 255, 1) 0,
+    rgba(70, 255, 222, 1) 98.730469%,
+    rgba(70, 255, 222, 1) 100%
+  );
+  background-clip: text;
+  color: transparent;
+}
+
+.tiltleLeftSign {
+  width: 10px;
+  height: 15px;
+}
+
+.windDataBox {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 2%;
+}
+
+.windDataBg {
+  height: 130px;
+  width: 45%;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/envirBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.windSign {
+  width: 79px;
+  height: 72px;
+}
+
+.dataBox {
+  width: 45%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.dataContent {
+  font-size: 28px;
+  font-family: timeFont !important;
+  background: linear-gradient(0deg, #9CF472 0%, #FFFFFF 99.12109375%);
+  -webkit-background-clip: text;
+  -webkit-text-fill-color: transparent;
+}
+
+.bottomPushBtu {
+  background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  line-height: 60px;
+  width: 12%;
+  cursor: pointer;
+  text-align: center;
+  position: absolute;
+  right: 0;
+  bottom: 0;
+}
+</style>

+ 10 - 3
neim-ui/src/views/largeScreenPage/Subpage/stationInfo.vue

@@ -207,9 +207,16 @@ export default {
     },
     pushInfo() {
       let station = {stationId:this.station.id,equipmentNo:null}
-      sessionStorage.setItem("realWindTowerInfo", JSON.stringify(station))
-      this.$store.dispatch('equipmentInfo/realWindTowerInfo', JSON.stringify(station))
-      this.$router.push({path: "/homepage/realResourcesInfo"})
+      if(this.station.type === '风'){
+        sessionStorage.setItem("realWindTowerInfo", JSON.stringify(station))
+        this.$store.dispatch('equipmentInfo/realWindTowerInfo', JSON.stringify(station))
+        this.$router.push({path: "/homepage/realResourcesInfo"})
+      }else{
+        sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
+        this.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
+        this.$router.push({path: "/homepage/realPvResourcesInfo"})
+      }
+
     },
     back() {
       this.$router.push({path: "/homepage/stationResources"})

+ 78 - 19
neim-ui/src/views/largeScreenPage/components/bigeHeatMap.vue

@@ -242,6 +242,8 @@ export default {
         let fengjiblue = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiblue.png'
         let fengjigreen = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjigreen.png'
         let fengjiyellow = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiyellow.png'
+        let iconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/huanjingjianceyi.png'
+        let nIconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/nibianqi.png'
         // 所有场站标记点位
         if (this.mapData.allStationInfo !== null && this.mapData.allStationInfo !== undefined) {
           let data = this.mapData.allStationInfo
@@ -414,6 +416,18 @@ export default {
             iconAnchor: [35, 55],
             className: 'stationIcon',
           })
+          let huanjingjianceyi = window.BM.icon({
+            iconUrl: iconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
+          let nibianqi = window.BM.icon({
+            iconUrl: nIconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
           let fj_icon = [{
             icon: window.BM.icon({
               iconUrl: fjIconurl,
@@ -421,21 +435,21 @@ export default {
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiblue,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjigreen,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiyellow,
               iconSize: [30, 30],
@@ -443,23 +457,65 @@ export default {
               className: 'stationIcon',
             })
           }]
+          /*环境监测仪*/
+          for (let item of data.weather) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: huanjingjianceyi,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            marker.on('mouseover', function (e) {
+              // console.log(item)
+              marker.bindTooltip('<div>环境监测仪名称:' + item.name + '</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 station = {stationId:item.stationId,equipmentNo:item.id}
+              sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
+              _self.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
+              _self.$router.push({path: "/homepage/realPvResourcesInfo"})
+            })
+          }
+          /*逆变器*/
+
+          for (let inverter of data.inverter) {
+            for (let item of inverter.data) {
+              let coordinate = [Number(item.latitude), Number(item.longitude)]
+              let marker = window.BM.marker(coordinate, {
+                icon: nibianqi,
+                riseOnHover: true
+              }).addTo(this.bMap);
+              marker.on('mouseover', function (e) {
+                // console.log(item)
+                marker.bindTooltip('<div>所属场站名称:' + inverter.name + '</div>'+'<div>逆变器名称:' + item.name + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                  {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
+              })
+              marker.on('mouseout', function () {
+                marker.bindTooltip().closeTooltip();
+              })
+            }
+          }
           let i = 0
           for (let fan of data.fan) {
-            if(i>3) i = 0
+            if (i > 3) i = 0
             for (let item of fan.data) {
               let coordinate = [Number(item.latitudeFan), Number(item.longitudeFan)]
               let marker = ''
-              if(fan.name === '依兰珠山风电场'){
+              if (fan.name === '依兰珠山风电场') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[3].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else if(fan.name === '依兰鸡冠山四期200MW风电项目'){
+              } else if (fan.name === '依兰鸡冠山四期200MW风电项目') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[2].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else{
+              } else {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[i].icon,
                   riseOnHover: true
@@ -469,10 +525,10 @@ export default {
               marker.on('mouseover', function (e) {
                 // console.log(item)
                 if (fan.type === 'project') {
-                  marker.bindTooltip('<div>项目预设风机点位:</div>' +'<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
+                  marker.bindTooltip('<div>项目预设风机点位:</div>' + '<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 } else {
-                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>'+ '<div>机型:' + item.fanModel + '</div>',
+                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>' + '<div>机型:' + item.fanModel + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 }
 
@@ -486,20 +542,23 @@ export default {
           for (let coordinatesList of data.coordinatesList) {
             for (let key in coordinatesList) {
               let coordinates = coordinatesList[key]
-              for (let item of coordinates) {
-                if (item.length > 0) {
-                  let latlngs = []
-                  for (let coor of item) {
-                    latlngs.push([Number(coor.latitude), Number(coor.longitude)])
-                    window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+              if(coordinates !== null){
+                for (let item of coordinates) {
+                  if (item.length > 0) {
+                    let latlngs = []
+                    for (let coor of item) {
+                      latlngs.push([Number(coor.latitude), Number(coor.longitude)])
+                      window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+                    }
+                    var polygon = BM.polygon(latlngs).addTo(this.bMap);
+                    polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
+                    // 让地图适配当前的线段
+                    this.bMap.fitBounds(polygon.getBounds());
                   }
-                  var polygon = BM.polygon(latlngs).addTo(this.bMap);
-                  polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
-                  // 让地图适配当前的线段
-                  this.bMap.fitBounds(polygon.getBounds());
                 }
               }
 
+
             }
           }
           // 项目或者场站id

+ 78 - 19
neim-ui/src/views/largeScreenPage/components/bigeHeatSunMap.vue

@@ -237,6 +237,8 @@ export default {
         let fengjiblue = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiblue.png'
         let fengjigreen = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjigreen.png'
         let fengjiyellow = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiyellow.png'
+        let iconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/huanjingjianceyi.png'
+        let nIconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/nibianqi.png'
         // 所有场站标记点位
         if (this.mapData.allStationInfo !== null && this.mapData.allStationInfo !== undefined) {
           let data = this.mapData.allStationInfo
@@ -396,6 +398,18 @@ export default {
             iconAnchor: [35, 55],
             className: 'stationIcon',
           })
+          let huanjingjianceyi = window.BM.icon({
+            iconUrl: iconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
+          let nibianqi = window.BM.icon({
+            iconUrl: nIconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
           let fj_icon = [{
             icon: window.BM.icon({
               iconUrl: fjIconurl,
@@ -403,21 +417,21 @@ export default {
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiblue,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjigreen,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiyellow,
               iconSize: [30, 30],
@@ -425,23 +439,65 @@ export default {
               className: 'stationIcon',
             })
           }]
+          /*环境监测仪*/
+          for (let item of data.weather) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: huanjingjianceyi,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            marker.on('mouseover', function (e) {
+              // console.log(item)
+              marker.bindTooltip('<div>环境监测仪名称:' + item.name + '</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 station = {stationId:item.stationId,equipmentNo:item.id}
+              sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
+              _self.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
+              _self.$router.push({path: "/homepage/realPvResourcesInfo"})
+            })
+          }
+          /*逆变器*/
+
+          for (let inverter of data.inverter) {
+            for (let item of inverter.data) {
+              let coordinate = [Number(item.latitude), Number(item.longitude)]
+              let marker = window.BM.marker(coordinate, {
+                icon: nibianqi,
+                riseOnHover: true
+              }).addTo(this.bMap);
+              marker.on('mouseover', function (e) {
+                // console.log(item)
+                marker.bindTooltip('<div>所属场站名称:' + inverter.name + '</div>'+'<div>逆变器名称:' + item.name + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                  {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
+              })
+              marker.on('mouseout', function () {
+                marker.bindTooltip().closeTooltip();
+              })
+            }
+          }
           let i = 0
           for (let fan of data.fan) {
-            if(i>3) i = 0
+            if (i > 3) i = 0
             for (let item of fan.data) {
               let coordinate = [Number(item.latitudeFan), Number(item.longitudeFan)]
               let marker = ''
-              if(fan.name === '依兰珠山风电场'){
+              if (fan.name === '依兰珠山风电场') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[3].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else if(fan.name === '依兰鸡冠山四期200MW风电项目'){
+              } else if (fan.name === '依兰鸡冠山四期200MW风电项目') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[2].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else{
+              } else {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[i].icon,
                   riseOnHover: true
@@ -451,10 +507,10 @@ export default {
               marker.on('mouseover', function (e) {
                 // console.log(item)
                 if (fan.type === 'project') {
-                  marker.bindTooltip('<div>项目预设风机点位:</div>' +'<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
+                  marker.bindTooltip('<div>项目预设风机点位:</div>' + '<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 } else {
-                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>'+ '<div>机型:' + item.fanModel + '</div>',
+                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>' + '<div>机型:' + item.fanModel + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 }
 
@@ -468,20 +524,23 @@ export default {
           for (let coordinatesList of data.coordinatesList) {
             for (let key in coordinatesList) {
               let coordinates = coordinatesList[key]
-              for (let item of coordinates) {
-                if (item.length > 0) {
-                  let latlngs = []
-                  for (let coor of item) {
-                    latlngs.push([Number(coor.latitude), Number(coor.longitude)])
-                    window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+              if(coordinates !== null){
+                for (let item of coordinates) {
+                  if (item.length > 0) {
+                    let latlngs = []
+                    for (let coor of item) {
+                      latlngs.push([Number(coor.latitude), Number(coor.longitude)])
+                      window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+                    }
+                    var polygon = BM.polygon(latlngs).addTo(this.bMap);
+                    polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
+                    // 让地图适配当前的线段
+                    this.bMap.fitBounds(polygon.getBounds());
                   }
-                  var polygon = BM.polygon(latlngs).addTo(this.bMap);
-                  polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
-                  // 让地图适配当前的线段
-                  this.bMap.fitBounds(polygon.getBounds());
                 }
               }
 
+
             }
           }
           // 项目或者场站id

+ 80 - 23
neim-ui/src/views/largeScreenPage/components/bigeMap.vue

@@ -158,8 +158,8 @@ export default {
           window.geo2 = geo2;
           // console.log(geo2.getBounds())
           //限制拖动
-          this.bMap.setMaxBounds([[43.42301,122.574976],[53.561657,135.086264]]);
-          this.bMap.fitBounds([[43.42301,122.574976],[53.561657,135.086264]]);
+          this.bMap.setMaxBounds([[43.42301, 122.574976], [53.561657, 135.086264]]);
+          this.bMap.fitBounds([[43.42301, 122.574976], [53.561657, 135.086264]]);
           // this.bMap.setMaxBounds(geo2.getBounds());
           // this.bMap.fitBounds(geo2.getBounds());
 
@@ -200,6 +200,8 @@ export default {
         let gfbconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/guangfuban.png'
         let gfsconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/guang.png'
         let gfhfconurl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/huafuguangfu.png'
+        let iconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/huanjingjianceyi.png'
+        let nIconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/nibianqi.png'
         // 所有场站标记点位
         if (this.mapData.allStationInfo !== null && this.mapData.allStationInfo !== undefined) {
           let data = this.mapData.allStationInfo
@@ -330,7 +332,6 @@ export default {
             iconSize: [30, 50],
             iconAnchor: [30, 50],
           })
-          console.log(data)
           for (let item of data) {
             let coordinate = [Number(item.latitude), Number(item.longitude)]
             let marker = ''
@@ -373,6 +374,18 @@ export default {
             iconAnchor: [35, 55],
             className: 'stationIcon',
           })
+          let huanjingjianceyi = window.BM.icon({
+            iconUrl: iconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
+          let nibianqi = window.BM.icon({
+            iconUrl: nIconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
           let fj_icon = [{
             icon: window.BM.icon({
               iconUrl: fjIconurl,
@@ -380,21 +393,21 @@ export default {
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiblue,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjigreen,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiyellow,
               iconSize: [30, 30],
@@ -402,24 +415,65 @@ export default {
               className: 'stationIcon',
             })
           }]
-          console.log(data.fan)
+          /*环境监测仪*/
+          for (let item of data.weather) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: huanjingjianceyi,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            marker.on('mouseover', function (e) {
+              // console.log(item)
+              marker.bindTooltip('<div>环境监测仪名称:' + item.name + '</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 station = {stationId:item.stationId,equipmentNo:item.id}
+              sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
+              _self.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
+              _self.$router.push({path: "/homepage/realPvResourcesInfo"})
+            })
+          }
+          /*逆变器*/
+
+          for (let inverter of data.inverter) {
+            for (let item of inverter.data) {
+              let coordinate = [Number(item.latitude), Number(item.longitude)]
+              let marker = window.BM.marker(coordinate, {
+                icon: nibianqi,
+                riseOnHover: true
+              }).addTo(this.bMap);
+              marker.on('mouseover', function (e) {
+                // console.log(item)
+                marker.bindTooltip('<div>所属场站名称:' + inverter.name + '</div>'+'<div>逆变器名称:' + item.name + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                  {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
+              })
+              marker.on('mouseout', function () {
+                marker.bindTooltip().closeTooltip();
+              })
+            }
+          }
           let i = 0
           for (let fan of data.fan) {
-            if(i>3) i = 0
+            if (i > 3) i = 0
             for (let item of fan.data) {
               let coordinate = [Number(item.latitudeFan), Number(item.longitudeFan)]
               let marker = ''
-              if(fan.name === '依兰珠山风电场'){
+              if (fan.name === '依兰珠山风电场') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[3].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else if(fan.name === '依兰鸡冠山四期200MW风电项目'){
+              } else if (fan.name === '依兰鸡冠山四期200MW风电项目') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[2].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else{
+              } else {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[i].icon,
                   riseOnHover: true
@@ -429,10 +483,10 @@ export default {
               marker.on('mouseover', function (e) {
                 // console.log(item)
                 if (fan.type === 'project') {
-                  marker.bindTooltip('<div>项目预设风机点位:</div>' +'<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
+                  marker.bindTooltip('<div>项目预设风机点位:</div>' + '<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 } else {
-                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>'+ '<div>机型:' + item.fanModel + '</div>',
+                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>' + '<div>机型:' + item.fanModel + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 }
 
@@ -446,20 +500,23 @@ export default {
           for (let coordinatesList of data.coordinatesList) {
             for (let key in coordinatesList) {
               let coordinates = coordinatesList[key]
-              for (let item of coordinates) {
-                if (item.length > 0) {
-                  let latlngs = []
-                  for (let coor of item) {
-                    latlngs.push([Number(coor.latitude), Number(coor.longitude)])
-                    window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+              if(coordinates !== null){
+                for (let item of coordinates) {
+                  if (item.length > 0) {
+                    let latlngs = []
+                    for (let coor of item) {
+                      latlngs.push([Number(coor.latitude), Number(coor.longitude)])
+                      window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+                    }
+                    var polygon = BM.polygon(latlngs).addTo(this.bMap);
+                    polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
+                    // 让地图适配当前的线段
+                    this.bMap.fitBounds(polygon.getBounds());
                   }
-                  var polygon = BM.polygon(latlngs).addTo(this.bMap);
-                  polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
-                  // 让地图适配当前的线段
-                  this.bMap.fitBounds(polygon.getBounds());
                 }
               }
 
+
             }
           }
           // 项目或者场站id

+ 79 - 20
neim-ui/src/views/largeScreenPage/components/zaiXianBigeMap.vue

@@ -64,7 +64,7 @@ export default {
         // window.BM.Config.HTTP_URL = 'http://www.bigemap.com:9000';
 
         window.BM.Config.HTTP_URL = process.env.VUE_APP_GIS_API;
-        let ip1 = process.env.VUE_APP_GIS_API;
+        let ip1 = 'http://49.4.78.194:17143';
         let ip2 = 'http://49.4.78.194:17143';
 
         // window.BM.Config.HTTP_URL = 'http://49.4.78.194:17143';
@@ -189,6 +189,8 @@ export default {
         let fengjiblue = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiblue.png'
         let fengjigreen = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjigreen.png'
         let fengjiyellow = 'http://' + _self.href.split("//")[1].split("/")[0] + '/img/fengji/fengjiyellow.png'
+        let iconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/huanjingjianceyi.png'
+        let nIconUrl = 'http://' + _self.href.split("//")[1].split("/")[0] + '/largeScreenImg/nibianqi.png'
         // 所有场站标记点位
         if (this.mapData.allStationInfo !== null && this.mapData.allStationInfo !== undefined) {
           let data = this.mapData.allStationInfo
@@ -348,6 +350,18 @@ export default {
             iconAnchor: [35, 55],
             className: 'stationIcon',
           })
+          let huanjingjianceyi = window.BM.icon({
+            iconUrl: iconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
+          let nibianqi = window.BM.icon({
+            iconUrl: nIconUrl,
+            iconSize: [35, 55],
+            iconAnchor: [35, 55],
+            className: 'stationIcon',
+          })
           let fj_icon = [{
             icon: window.BM.icon({
               iconUrl: fjIconurl,
@@ -355,21 +369,21 @@ export default {
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiblue,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjigreen,
               iconSize: [30, 30],
               iconAnchor: [30, 30],
               className: 'stationIcon',
             })
-          },{
+          }, {
             icon: window.BM.icon({
               iconUrl: fengjiyellow,
               iconSize: [30, 30],
@@ -377,23 +391,65 @@ export default {
               className: 'stationIcon',
             })
           }]
+          /*环境监测仪*/
+          for (let item of data.weather) {
+            let coordinate = [Number(item.latitude), Number(item.longitude)]
+            let marker = window.BM.marker(coordinate, {
+              icon: huanjingjianceyi,
+              riseOnHover: true
+            }).addTo(this.bMap);
+            marker.on('mouseover', function (e) {
+              // console.log(item)
+              marker.bindTooltip('<div>环境监测仪名称:' + item.name + '</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 station = {stationId:item.stationId,equipmentNo:item.id}
+              sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
+              _self.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
+              _self.$router.push({path: "/homepage/realPvResourcesInfo"})
+            })
+          }
+          /*逆变器*/
+
+          for (let inverter of data.inverter) {
+            for (let item of inverter.data) {
+              let coordinate = [Number(item.latitude), Number(item.longitude)]
+              let marker = window.BM.marker(coordinate, {
+                icon: nibianqi,
+                riseOnHover: true
+              }).addTo(this.bMap);
+              marker.on('mouseover', function (e) {
+                // console.log(item)
+                marker.bindTooltip('<div>所属场站名称:' + inverter.name + '</div>'+'<div>逆变器名称:' + item.name + '</div>' + '<div>经度:' + item.longitude + '</div>' + '<div>纬度:' + item.latitude + '</div>',
+                  {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
+              })
+              marker.on('mouseout', function () {
+                marker.bindTooltip().closeTooltip();
+              })
+            }
+          }
           let i = 0
           for (let fan of data.fan) {
-            if(i>3) i = 0
+            if (i > 3) i = 0
             for (let item of fan.data) {
               let coordinate = [Number(item.latitudeFan), Number(item.longitudeFan)]
               let marker = ''
-              if(fan.name === '依兰珠山风电场'){
+              if (fan.name === '依兰珠山风电场') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[3].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else if(fan.name === '依兰鸡冠山四期200MW风电项目'){
+              } else if (fan.name === '依兰鸡冠山四期200MW风电项目') {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[2].icon,
                   riseOnHover: true
                 }).addTo(this.bMap);
-              }else{
+              } else {
                 marker = window.BM.marker(coordinate, {
                   icon: fj_icon[i].icon,
                   riseOnHover: true
@@ -403,10 +459,10 @@ export default {
               marker.on('mouseover', function (e) {
                 // console.log(item)
                 if (fan.type === 'project') {
-                  marker.bindTooltip('<div>项目预设风机点位:</div>' +'<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
+                  marker.bindTooltip('<div>项目预设风机点位:</div>' + '<div>所属项目名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 } else {
-                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>'+ '<div>机型:' + item.fanModel + '</div>',
+                  marker.bindTooltip('<div>所属场站名称:' + fan.name + '</div>' + '<div>经度:' + item.longitudeFan + '</div>' + '<div>纬度:' + item.latitudeFan + '</div>' + '<div>机型:' + item.fanModel + '</div>',
                     {permanent: true, className: 'infoToolTip', offset: [0, -30]}).openTooltip();
                 }
 
@@ -420,20 +476,23 @@ export default {
           for (let coordinatesList of data.coordinatesList) {
             for (let key in coordinatesList) {
               let coordinates = coordinatesList[key]
-              for (let item of coordinates) {
-                if (item.length > 0) {
-                  let latlngs = []
-                  for (let coor of item) {
-                    latlngs.push([Number(coor.latitude), Number(coor.longitude)])
-                    window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+              if(coordinates !== null){
+                for (let item of coordinates) {
+                  if (item.length > 0) {
+                    let latlngs = []
+                    for (let coor of item) {
+                      latlngs.push([Number(coor.latitude), Number(coor.longitude)])
+                      window.BM.marker([Number(coor.latitude), Number(coor.longitude)]).addTo(this.bMap);
+                    }
+                    var polygon = BM.polygon(latlngs).addTo(this.bMap);
+                    polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
+                    // 让地图适配当前的线段
+                    this.bMap.fitBounds(polygon.getBounds());
                   }
-                  var polygon = BM.polygon(latlngs).addTo(this.bMap);
-                  polygon.bindTooltip(key, {permanent: true, className: 'infoToolTip', offset: [0, 0]}).openTooltip();
-                  // 让地图适配当前的线段
-                  this.bMap.fitBounds(polygon.getBounds());
                 }
               }
 
+
             }
           }
           // 项目或者场站id

+ 186 - 0
neim-ui/src/views/largeScreenPage/pvComponents/humidityAndPressure.vue

@@ -0,0 +1,186 @@
+<template>
+  <div>
+    <div id="pAndRh"/>
+  </div>
+</template>
+
+<script>
+export default {
+  // 湿度与压强
+  name: "humidityAndPressure",
+  data(){
+    return{
+      pAndRh:null
+    }
+  },
+  destroyed() {
+    if (!this.pAndRh) {
+      return
+    }
+    if (this.pAndRh != null) {
+      this.pAndRh.dispose()
+      this.pAndRh = null
+    }
+  },
+  mounted() {
+    this.draw()
+  },
+  methods:{
+    draw() {
+      if(this.pAndRh === null){
+        this.pAndRh = this.$echarts.init(document.getElementById('pAndRh'))
+      }
+      let option = {
+        backgroundColor: 'transparent',
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+        legend: {
+          top: 20,
+          icon: 'rect',
+          itemWidth: 14,
+          itemHeight: 5,
+          itemGap: 13,
+          data: ['压强', '湿度'],
+          right: '4%',
+          textStyle: {
+            fontSize: 12,
+            color: 'white'
+          },
+          selected:{
+            '压强':true,
+            '湿度':true
+          }
+        },
+        dataZoom: [{
+          type: 'inside'
+        }],
+        grid: {
+          left: '4%',
+          right: '2%',
+          bottom: '10%',
+          containLabel: true
+        },
+        xAxis: [{
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          data: []
+        }],
+        yAxis: [{
+          type: 'value',
+          name: 'HPa',
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+          {
+            type: 'value',
+            name: '%',
+            axisTick: {
+              show: false
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#57617B'
+              }
+            },
+            axisLabel: {
+              margin: 10,
+              textStyle: {
+                fontSize: 14
+              }
+            },
+            splitLine: {
+              lineStyle: {
+                color: '#57617B'
+              }
+            }
+          }
+        ],
+        series: [{
+          name: '压强',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          itemStyle: {
+            normal: {
+
+              color: 'rgb(219,50,51)',
+              borderColor: 'rgba(219,50,51,0.2)',
+              borderWidth: 12
+            }
+          },
+          data: []
+        },
+
+          {
+            name: '湿度',
+            type: 'line',
+            yAxisIndex: 1,
+            smooth: true,
+            symbol: 'circle',
+            symbolSize: 5,
+            showSymbol: false,
+            lineStyle: {
+              normal: {
+                width: 2
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(0,136,212)',
+                borderColor: 'rgba(0,136,212,0.2)',
+                borderWidth: 12
+
+              }
+            },
+            data: []
+          },
+        ]
+      }
+      this.pAndRh.setOption(option,true)
+
+    }
+  }
+}
+</script>
+
+<style scoped>
+#pAndRh{
+  width: 100%;
+  height: calc(35vh);
+}
+</style>

+ 185 - 0
neim-ui/src/views/largeScreenPage/pvComponents/radiation.vue

@@ -0,0 +1,185 @@
+<template>
+  <div>
+    <div id="radiationcharts"></div>
+  </div>
+</template>
+
+<script>
+export default {
+  // 辐射
+  name: "radiation",
+  data() {
+    return {
+      radiationcharts: null
+    }
+  },
+  mounted() {
+    this.draw()
+  },
+  destroyed() {
+    if (!this.radiationcharts) {
+      return
+    }
+    if (this.radiationcharts != null) {
+      this.radiationcharts.dispose()
+      this.radiationcharts = null
+    }
+  },
+  methods: {
+    draw() {
+      if (this.radiationcharts === null) {
+        this.radiationcharts = this.$echarts.init(document.getElementById('radiationcharts'))
+      }
+
+      let option = {
+        backgroundColor: 'transparent',
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+        legend: {
+          top: 20,
+          icon: 'rect',
+          itemWidth: 14,
+          itemHeight: 5,
+          itemGap: 13,
+          data: ['水平总辐射', '直辐射', '散辐射', '斜面总辐射'],
+          right: '4%',
+          textStyle: {
+            fontSize: 12,
+            color: 'white'
+          },
+          selected: {
+            '水平总辐射': true,
+            '直辐射': true,
+            '散辐射': true,
+            '斜面总辐射': false
+          }
+        },
+        dataZoom: [{
+          type: 'inside'
+        }],
+        grid: {
+          left: '4%',
+          right: '2%',
+          bottom: '10%',
+          containLabel: true
+        },
+        xAxis: [{
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          data: []
+        }],
+        yAxis: [{
+          type: 'value',
+          name: '瓦/平方米',
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        }],
+        series: [{
+          name: '水平总辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          itemStyle: {
+            normal: {
+
+              color: 'rgb(219,50,51)',
+              borderColor: 'rgba(219,50,51,0.2)',
+              borderWidth: 12
+            }
+          },
+          data: []
+        },
+
+          {
+            name: '直辐射',
+            type: 'line',
+            smooth: true,
+            symbol: 'circle',
+            symbolSize: 5,
+            showSymbol: false,
+            lineStyle: {
+              normal: {
+                width: 2
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(0,136,212)',
+                borderColor: 'rgba(0,136,212,0.2)',
+                borderWidth: 12
+
+              }
+            },
+            data: []
+          },
+          {
+            name: '散辐射',
+            type: 'line',
+            smooth: true,
+            symbol: 'circle',
+            symbolSize: 5,
+            showSymbol: false,
+            lineStyle: {
+              normal: {
+                width: 2
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(137,189,27)',
+                borderColor: 'rgba(137,189,2,0.27)',
+                borderWidth: 12
+
+              }
+            },
+            data: []
+          }
+        ]
+      }
+      this.radiationcharts.setOption(option, true)
+    }
+  }
+}
+</script>
+
+<style scoped>
+#radiationcharts {
+  width: 100%;
+  height: calc(35vh);
+}
+</style>

+ 172 - 0
neim-ui/src/views/largeScreenPage/pvComponents/temperature.vue

@@ -0,0 +1,172 @@
+<template>
+  <div>
+    <div id="temperatureCharts"/>
+  </div>
+</template>
+
+<script>
+export default {
+  // 环境温度与光伏板温度
+  name: "temperature",
+  data() {
+    return {
+      temperatureCharts: null,
+    }
+  },
+  destroyed() {
+    if (!this.temperatureCharts) {
+      return
+    }
+    if (this.temperatureCharts != null) {
+      this.temperatureCharts.dispose()
+      this.temperatureCharts = null
+    }
+  },
+  mounted() {
+    this.draw()
+  },
+  methods: {
+    draw() {
+      if (this.temperatureCharts == null) {
+        this.temperatureCharts = this.$echarts.init(document.getElementById('temperatureCharts'))
+      }
+      let option = {
+        backgroundColor: 'transparent',
+        // title: {
+        //   top: 20,
+        //   text: '气象信息-温度',
+        //   textStyle: {
+        //     fontWeight: 'normal',
+        //     fontSize: 16,
+        //     color: this.lineColor
+        //   },
+        //   left: '1%'
+        // },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+        legend: {
+          top: 20,
+          icon: 'rect',
+          itemWidth: 14,
+          itemHeight: 5,
+          itemGap: 13,
+          data: ['环境温度', '光伏板温度'],
+          right: '4%',
+          textStyle: {
+            fontSize: 12,
+            color: 'white'
+          },
+          selected: {
+            '环境温度': true,
+            '光伏板温度': true
+          }
+        },
+        dataZoom: [{
+          type: 'inside'
+        }],
+        grid: {
+          left: '2%',
+          right: '2%',
+          bottom: '10%',
+          containLabel: true
+        },
+        xAxis: [{
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          data: []
+        }],
+        yAxis: [{
+          type: 'value',
+          name: '°C',
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        }],
+        series: [{
+          name: '环境温度',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          itemStyle: {
+            normal: {
+
+              color: 'rgb(219,50,51)',
+              borderColor: 'rgba(219,50,51,0.2)',
+              borderWidth: 12
+            }
+          },
+          data: []
+        },
+
+          {
+            name: '光伏板温度',
+            type: 'line',
+            smooth: true,
+            symbol: 'circle',
+            symbolSize: 5,
+            showSymbol: false,
+            lineStyle: {
+              normal: {
+                width: 2
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(0,136,212)',
+                borderColor: 'rgba(0,136,212,0.2)',
+                borderWidth: 12
+
+              }
+            },
+            data: []
+          },
+
+
+        ]
+      }
+      this.temperatureCharts.setOption(option,true)
+    }
+  }
+}
+</script>
+
+<style scoped>
+#temperatureCharts{
+  width: 100%;
+  height: calc(35vh);
+}
+</style>

+ 190 - 0
neim-ui/src/views/largeScreenPage/pvComponents/wsAndWdChart.vue

@@ -0,0 +1,190 @@
+<template>
+  <div>
+    <div id="wsAndWd"/>
+  </div>
+</template>
+
+<script>
+export default {
+  // 风速与风向
+  name: "wsAndWd",
+  data() {
+    return {
+      wsAndWd: null
+    }
+  },
+  destroyed() {
+    if (!this.wsAndWd) {
+      return
+    }
+    if (this.wsAndWd != null) {
+      this.wsAndWd.dispose()
+      this.wsAndWd = null
+    }
+  },
+  mounted() {
+    this.draw()
+  },
+  methods: {
+    draw() {
+      if (this.wsAndWd === null) {
+        this.wsAndWd = this.$echarts.init(document.getElementById('wsAndWd'))
+      }
+
+      let option = {
+        backgroundColor: 'transparent',
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+        legend: {
+          top: 20,
+          icon: 'rect',
+          itemWidth: 14,
+          itemHeight: 5,
+          itemGap: 13,
+          data: ['风速', '风向'],
+          right: '4%',
+          textStyle: {
+            fontSize: 12,
+            color: 'white'
+          },
+          selected: {
+            '风速': true,
+            '风向': true
+          }
+        },
+        dataZoom: [{
+          type: 'inside'
+        }],
+        grid: {
+          left: '4%',
+          right: '2%',
+          bottom: '10%',
+          containLabel: true
+        },
+        xAxis: [{
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          data: []
+        }],
+        yAxis: [{
+          type: 'value',
+          name: 'm/s',
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: 'white'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+          {
+            type: 'value',
+            name: '°',
+            axisTick: {
+              show: false
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#57617B'
+              }
+            },
+            axisLabel: {
+              margin: 10,
+              textStyle: {
+                fontSize: 14
+              }
+            },
+            splitLine: {
+              lineStyle: {
+                color: '#57617B'
+              }
+            }
+          }
+        ],
+        series: [{
+          name: '风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+
+          itemStyle: {
+            normal: {
+              color: 'rgb(122,27,189)',
+              borderColor: 'rgba(74,2,189,0.27)',
+              borderWidth: 12
+
+            }
+          },
+          data: []
+        },
+
+          {
+            name: '风向',
+            type: 'line',
+            yAxisIndex: 1,
+            smooth: true,
+            symbol: 'circle',
+            symbolSize: 5,
+            showSymbol: false,
+            lineStyle: {
+              normal: {
+                width: 2
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(137,189,27)',
+                borderColor: 'rgba(137,189,2,0.27)',
+                borderWidth: 12
+
+              }
+            },
+            data: []
+          },
+
+
+        ]
+      }
+      this.wsAndWd.setOption(option, true)
+
+    }
+  }
+}
+</script>
+
+<style scoped>
+#wsAndWd {
+  width: 100%;
+  height:calc(35vh);
+}
+</style>