Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

wangt 11 bulan lalu
induk
melakukan
3f9d393031
53 mengubah file dengan 533 tambahan dan 103 penghapusan
  1. 89 1
      neim-biz/src/main/java/com/jiayue/biz/controller/ElectricStationController.java
  2. 17 1
      neim-biz/src/main/java/com/jiayue/biz/domain/FanModelData.java
  3. 28 4
      neim-biz/src/main/java/com/jiayue/biz/job/AirDensityJob.java
  4. 1 0
      neim-biz/src/main/java/com/jiayue/biz/service/StationInfoService.java
  5. 6 0
      neim-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java
  6. 7 0
      neim-biz/src/main/java/com/jiayue/biz/service/impl/StationInfoServiceImpl.java
  7. 8 3
      neim-biz/src/main/resources/application-dev.yml
  8. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/bad-base-signal-full.png
  9. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/badTa.png
  10. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/badfengji.png
  11. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/base-signal-full.png
  12. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/bg.png
  13. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/bg1.png
  14. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengche.png
  15. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji.png
  16. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji/fengjiblue.png
  17. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji/fengjigreen.png
  18. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji/fengjired.png
  19. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji/fengjiyellow.png
  20. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/fengji1.png
  21. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/guangfu.png
  22. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/guangfuban.png
  23. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/guangfujiance.png
  24. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/heapmap/mean-wind-speed-2022.tiff
  25. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/heapmap/mean-wind-speed_rendering.tiff
  26. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/heapmap/sunshine-radiation-2022.tiff
  27. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/heapmap/sunshine-radiation_rendering.tiff
  28. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/pdf.png
  29. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/pdfBg.png
  30. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/qixiangzhan.png
  31. TEMPAT SAMPAH
      neim-biz/src/main/resources/img/ta.png
  32. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/80mWs1.png
  33. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/80mWs2.png
  34. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/80mWs3.png
  35. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/guangfu.png
  36. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/guangfuban.png
  37. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/huafuStation.png
  38. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/huafugf.png
  39. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/huafuguangfu.png
  40. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/huanjingjianceyi.png
  41. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/hufugf.png
  42. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/kaiguan.png
  43. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/mapimg.png
  44. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/nibianqi.png
  45. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/project.png
  46. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/station.png
  47. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/sun.png
  48. TEMPAT SAMPAH
      neim-biz/src/main/resources/largeScreenImg/tupian.png
  49. 1 1
      neim-ui/package.json
  50. 9 0
      neim-ui/src/api/biz/dataQuery/electricStation.js
  51. 48 1
      neim-ui/src/views/dataQuery/electrucStation/index.vue
  52. 318 91
      neim-ui/src/views/largeScreenPage/Subpage/stationInfo.vue
  53. 1 1
      neim-ui/src/views/largeScreenPage/components/bigeMap.vue

+ 89 - 1
neim-biz/src/main/java/com/jiayue/biz/controller/ElectricStationController.java

@@ -1,18 +1,32 @@
 package com.jiayue.biz.controller;
 
-import com.jiayue.biz.domain.ElectricStation;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import com.jiayue.biz.domain.*;
 import com.jiayue.biz.dto.StationInfoDto;
 import com.jiayue.biz.service.ElectricStationService;
 import com.jiayue.biz.service.StationInfoService;
+import com.jiayue.biz.util.CommonUtil;
 import com.jiayue.common.core.controller.BaseController;
 import com.jiayue.common.core.domain.AjaxResult;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
 
 @RestController
 @RequestMapping("/dataQuery/electricStation")
 @AllArgsConstructor
+@Slf4j
 public class ElectricStationController extends BaseController {
     private final ElectricStationService electricStationService;
 
@@ -44,4 +58,78 @@ public class ElectricStationController extends BaseController {
         return AjaxResult.success("200") ;
     }
 
+
+    /**
+     * 更新场站风机坐标数据
+     *
+     * @param file
+     * @param projectNo
+     * @return
+     */
+    @PostMapping("/fantowerFile")
+    public AjaxResult uploadProjectFile(@RequestParam("file") MultipartFile file, @RequestParam("stationId") String stationId) {
+
+        try {
+            // 得到上传文件后缀
+            String originalName = file.getOriginalFilename();
+            String fileUrl = CommonUtil.getRealPath() + File.separator + "fantowerFile" + File.separator;
+
+            // 复制文件
+            File targetFile = new File(fileUrl, originalName);
+            if (targetFile.exists()) {
+                FileUtils.delete(targetFile);
+            }
+            FileUtils.writeByteArrayToFile(targetFile, file.getBytes());
+
+            log.info("坐标文件上传成功:{} ,更新记录信息", fileUrl + originalName);
+
+            //读取上传文件的内容
+
+            List<String> fileStrList = FileUtil.readLines(targetFile, StandardCharsets.UTF_8);
+            if (null == fileStrList || fileStrList.isEmpty()) {
+                return success("读取文件内容为空");
+            }
+
+            String stationCode = fileStrList.get(0).split(" ")[1];
+            if(!stationId.equals(stationCode)){
+                return error("读取文件内容不正确,填写的场站ID:" + stationCode + ",与选择的场站编号不符合");
+            }
+            StationInfo stationInfo = stationInfoService.getOneStationInfoByCode(stationCode);
+            //风机型号
+            String fjTypeStr = fileStrList.get(1);
+            if (fjTypeStr.startsWith("fengji")) {
+                log.info("上传文件风机型号信息:{}", fjTypeStr);
+                String fjType = fjTypeStr.substring(6);
+                log.info("上传文件风机型号:{}", fjType);
+                List<FanTower> fanTowerList = new ArrayList<>();
+                for (int i = 2; i < fileStrList.size(); i++) {
+                    String fjStr = fileStrList.get(i);
+                    if (StrUtil.isNotBlank(fjStr)) {
+                        if(fjStr.startsWith("fengji")){
+                            fjType = fjStr.split(" ")[1];
+                            continue;
+                        }
+                        String[] fjStrArr = fjStr.split("\t");
+                        FanTower fanTower = new FanTower();
+                        fanTower.setId(fjStrArr[0]);
+                        fanTower.setFanModel(fjType);
+                        fanTower.setFanName(fjStrArr[1]);
+                        fanTower.setLongitudeFan(fjStrArr[2].trim());
+                        fanTower.setLatitudeFan(fjStrArr[3].trim());
+                        fanTowerList.add(fanTower);
+                    }
+                }
+                stationInfo.setFanTowerList(fanTowerList);
+            } else {
+                return success("读取文件内容不正确,未填写风机型号信息");
+            }
+
+            stationInfoService.saveStation(stationInfo);
+            log.info("根据上传文件内容更新项目信息完成");
+        } catch (IOException e) {
+            logger.error("保存文件到服务器(本地)失败", e);
+        }
+
+        return success("文件上传成功");
+    }
 }

+ 17 - 1
neim-biz/src/main/java/com/jiayue/biz/domain/FanModelData.java

@@ -20,7 +20,7 @@ public class FanModelData {
     private String modelName;
     //场站简称
     private String stationNameEasy;
-    //平均风速
+    //平均风速/日照
     private String wsAve;
     //主风向
     private String wdSum;
@@ -28,4 +28,20 @@ public class FanModelData {
     private String generatingCapacity;
     //满发小时数
     private String realTimeTotal;
+    //最大最小 风站:风速/ 光伏:日照
+    private String wsMax;
+    private String wsMin;
+
+    //发电量日
+    private String generatingCapacityr;
+    //发电量月
+    private String generatingCapacityy;
+
+
+    //满发小时数日
+    private String realTimeTotalr;
+    //满发小时数月
+    private String realTimeTotaly;
+
+
 }

+ 28 - 4
neim-biz/src/main/java/com/jiayue/biz/job/AirDensityJob.java

@@ -171,6 +171,8 @@ public class AirDensityJob {
 
     public void saveMongoBattery(StationInfo stationInfo, FanJsonInfo towerJsonInfo, List<FanModelData> fanModelDataList) {
         String[] strArr = new String[]{towerJsonInfo.getFdln(), towerJsonInfo.getFd1n(), towerJsonInfo.getFd2n(), towerJsonInfo.getFd3n(), towerJsonInfo.getFd4n()};
+        String[] strArrr = new String[]{towerJsonInfo.getFdl(), towerJsonInfo.getFd1(), towerJsonInfo.getFd2(), towerJsonInfo.getFd3(), towerJsonInfo.getFd4()};
+        String[] strArry = new String[]{towerJsonInfo.getFdly(), towerJsonInfo.getFd1y(), towerJsonInfo.getFd2y(), towerJsonInfo.getFd3y(), towerJsonInfo.getFd4y()};
 
         List<String> collect = new ArrayList<>();
         Map<String, List<Object>> modelMap = new HashMap<>();
@@ -192,11 +194,17 @@ public class AirDensityJob {
 
         }
         String fdn = "";
+        String fdr = "";
+        String fdy = "";
         for (int i = 0; i < collect.size(); i++) {
             if (collect.size() == 1) {
                 fdn = strArr[i];
+                fdr = strArrr[i];
+                fdy = strArry[i];
             } else {
                 fdn = strArr[i + 1];
+                fdr = strArrr[i + 1];
+                fdy = strArry[i + 1];
             }
             String modelName = collect.get(i);
             if (StrUtil.isBlank(modelName)) {
@@ -210,15 +218,31 @@ public class AirDensityJob {
             }
 
             int fanTotal = modelMap.get(modelName).size();
+            //年发电
             fdn = new BigDecimal(fdn).multiply(BigDecimal.valueOf(10)).toString();
             realTimeTotal = new BigDecimal(fdn).divide(new BigDecimal(capacity).multiply(new BigDecimal(fanTotal)), 2, BigDecimal.ROUND_HALF_UP);//满发小时数(年)
+            //日发电
+            fdr = new BigDecimal(fdr).multiply(BigDecimal.valueOf(10)).toString();
+            BigDecimal realTimeTotalr = BigDecimal.ZERO;
+            realTimeTotalr = new BigDecimal(fdr).divide(new BigDecimal(capacity).multiply(new BigDecimal(fanTotal)), 2, BigDecimal.ROUND_HALF_UP);//满发小时数(日)
+            //月发电
+            fdy = new BigDecimal(fdy).multiply(BigDecimal.valueOf(10)).toString();
+            BigDecimal realTimeTotaly = BigDecimal.ZERO;
+            realTimeTotaly = new BigDecimal(fdy).divide(new BigDecimal(capacity).multiply(new BigDecimal(fanTotal)), 2, BigDecimal.ROUND_HALF_UP);//满发小时数(日)
             //一期
             FanModelData fanModelData = new FanModelData(UUID.randomUUID().toString(), stationInfo.getId(),
                     stationInfo.getStationBasicInfo().getStationName(), modelName, stationInfo.getStationBasicInfo().getAbbreviation(),
-                    new BigDecimal(towerJsonInfo.getPjfs()).setScale(2, RoundingMode.HALF_UP).toString(), towerJsonInfo.getZfx(),
-                    fdn, realTimeTotal.toString());
-            //发电量(年)
-            fdn = new BigDecimal(towerJsonInfo.getFd2n()).setScale(2, RoundingMode.HALF_UP).toString();
+                    new BigDecimal(towerJsonInfo.getPjfs()).setScale(2, RoundingMode.HALF_UP).toString()
+                    , towerJsonInfo.getZfx(),
+                    fdn
+                    , realTimeTotal.toString()
+                    ,new BigDecimal(towerJsonInfo.getZdfs()).setScale(2, RoundingMode.HALF_UP).toString()
+                    ,new BigDecimal(towerJsonInfo.getZxfs()).setScale(2, RoundingMode.HALF_UP).toString()
+                    ,fdr
+                    ,fdy
+                    ,realTimeTotalr.toString()
+                    ,realTimeTotaly.toString()
+            );
             List<FanModelData> modelDataList = fanModelDataList.stream().filter(f -> f.getStationId().equals(stationInfo.getId())
                     && f.getModelName().equals(modelName)).collect(Collectors.toList());
             if (modelDataList.size() > 0) {

+ 1 - 0
neim-biz/src/main/java/com/jiayue/biz/service/StationInfoService.java

@@ -25,4 +25,5 @@ public interface StationInfoService {
     //删除
    void delStationInfo(StationInfoDto stationInfoDto);
 
+    StationInfo getOneStationInfoByCode(String stationCode);
 }

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

@@ -1064,12 +1064,18 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
                 map.put("modelTotal", size);
                 //平均风速
                 map.put("wsAve", fanModelData.getWsAve());
+                map.put("wsMax", fanModelData.getWsMax());
+                map.put("wsMin", fanModelData.getWsMin());
                 //主风向
                 map.put("wdSum", fanModelData.getWdSum());
                 //发电量
                 map.put("generatingCapacity", fanModelData.getGeneratingCapacity());
+                map.put("generatingCapacityr", fanModelData.getGeneratingCapacityr());
+                map.put("generatingCapacityy", fanModelData.getGeneratingCapacityy());
                 //等效小时数
                 map.put("realTimeTotal", size == 0 ? 0 : fanModelData.getRealTimeTotal());
+                map.put("realTimeTotalr", size == 0 ? 0 : fanModelData.getRealTimeTotalr());
+                map.put("realTimeTotaly", size == 0 ? 0 : fanModelData.getRealTimeTotaly());
                 arrayList.add(map);
 
             }

+ 7 - 0
neim-biz/src/main/java/com/jiayue/biz/service/impl/StationInfoServiceImpl.java

@@ -102,6 +102,13 @@ public class StationInfoServiceImpl implements StationInfoService {
         this.del(stationInfoDto.getId());
     }
 
+    @Override
+    public StationInfo getOneStationInfoByCode(String stationCode) {
+
+            return mongoTemplate.findOne(new Query(Criteria.where("stationBasicInfo.stationId").is(stationCode)), StationInfo.class);
+
+    }
+
 
     //保存
     public void saveStationInfo(StationInfoDto stationInfoDto) {

+ 8 - 3
neim-biz/src/main/resources/application-dev.yml

@@ -6,14 +6,19 @@ spring:
       max-request-size: 200MB
   data:
     mongodb:
-      uri: mongodb://mongo_6hR2wr:mongo_jXaW8Z@192.168.12.20:19717/neim
+      host: 192.168.12.20
+      port: 19717
+      database: neim
+      username: mongo_6hR2wr
+      password: 'mongo_jXaW8Z'
+      authentication-database: admin
   datasource:
     dynamic:
       primary: mysql #设置默认的数据源或者数据源组,默认值即为master
       datasource:
         mysql:
-          url: jdbc:mysql://192.168.12.20:13306/nerp_db_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
-          username: root
+          url: jdbc:mysql://192.168.12.20:13306/nerp_db_v2?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true&autoReconnectForPools=true&connectTimeout=30000&socketTimeout=60000&rewriteBatchedStatements=true
+          username: mysql_xpxe6j
           password: 'mysql_xpxe6j'
           driver-class-name: com.mysql.cj.jdbc.Driver
           type: com.alibaba.druid.pool.DruidDataSource

TEMPAT SAMPAH
neim-biz/src/main/resources/img/bad-base-signal-full.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/badTa.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/badfengji.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/base-signal-full.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/bg.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/bg1.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengche.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji/fengjiblue.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji/fengjigreen.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji/fengjired.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji/fengjiyellow.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/fengji1.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/guangfu.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/guangfuban.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/guangfujiance.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/heapmap/mean-wind-speed-2022.tiff


TEMPAT SAMPAH
neim-biz/src/main/resources/img/heapmap/mean-wind-speed_rendering.tiff


TEMPAT SAMPAH
neim-biz/src/main/resources/img/heapmap/sunshine-radiation-2022.tiff


TEMPAT SAMPAH
neim-biz/src/main/resources/img/heapmap/sunshine-radiation_rendering.tiff


TEMPAT SAMPAH
neim-biz/src/main/resources/img/pdf.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/pdfBg.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/qixiangzhan.png


TEMPAT SAMPAH
neim-biz/src/main/resources/img/ta.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/80mWs1.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/80mWs2.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/80mWs3.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/guangfu.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/guangfuban.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/huafuStation.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/huafugf.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/huafuguangfu.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/huanjingjianceyi.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/hufugf.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/kaiguan.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/mapimg.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/nibianqi.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/project.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/station.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/sun.png


TEMPAT SAMPAH
neim-biz/src/main/resources/largeScreenImg/tupian.png


+ 1 - 1
neim-ui/package.json

@@ -5,7 +5,7 @@
   "author": "jiayuepowertech",
   "license": "MIT",
   "scripts": {
-    "dev": "vue-cli-service serve",
+    "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
     "build:prod": "vue-cli-service build",
     "build:stage": "vue-cli-service build --mode staging",
     "preview": "node build/index.js --preview",

+ 9 - 0
neim-ui/src/api/biz/dataQuery/electricStation.js

@@ -42,3 +42,12 @@ export function delElectricStation(data) {
     data: data
   })
 }
+
+//上传场站风机坐标
+export function uploadStationFanTowerFile(data) {
+  return request({
+    url: '/dataQuery/electricStation/fantowerFile',
+    method: 'post',
+    data: data
+  })
+}

+ 48 - 1
neim-ui/src/views/dataQuery/electrucStation/index.vue

@@ -142,6 +142,22 @@
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
+        <el-upload
+          :http-request="dataUpload"
+          :before-upload="beforeUpload"
+          class="el-upload-button"
+          action=""
+          ref="upload"
+        >
+          <el-button
+            @click="row=scope.row"
+            slot="trigger"
+            type="text"
+            size="mini"
+            icon="el-icon-upload2"
+          >上传风机坐标
+          </el-button>
+        </el-upload>
       </div>
     </el-dialog>
   </div>
@@ -153,7 +169,8 @@ import {
   listElectricStation,
   addElectricStation,
   updateElectricStation,
-  delElectricStation
+  delElectricStation,
+  uploadStationFanTowerFile
 } from "@/api/biz/dataQuery/electricStation";
 import {listAllDisabled} from "@/api/biz/dataQuery/windTowerStatusInfo";
 import {infoList} from "@/api/biz/dataQuery/weatherStationInfo";
@@ -250,6 +267,36 @@ export default {
     this.getWeatherStationInfo()
   },
   methods: {
+    beforeUpload(file) {
+      const isLt2M = file.size / 1024 / 1024 < 1024 // 这里做文件大小限制
+      if (!isLt2M) {
+        this.$message({
+          message: '上传文件大小不能超过1020M!',
+          type: 'warning'
+        })
+      }
+
+      return isLt2M
+    },
+    dataUpload(item) {
+      this.fullscreenLoading = true
+      const formData = new FormData()
+      formData.append('file', item.file)
+      formData.append("stationId", this.form.stationId)
+      uploadStationFanTowerFile(formData).then((response) => {
+
+        this.fullscreenLoading = false
+        this.open = false
+        console.log(response)
+        if (response && response.code === 200) {
+          this.getList()
+          this.$message.success(response.msg)
+        } else {
+          this.$message.error(response.msg)
+        }
+        this.$refs.upload.clearFiles()
+      })
+    },
     getWeatherStationInfo() {
       infoList().then(res => {
         this.gEquipment = res.data

+ 318 - 91
neim-ui/src/views/largeScreenPage/Subpage/stationInfo.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="page stationInfoPage">
     <div class="timeBox">{{ time }}</div>
-    <div class="kaiguanBox"><img src="../../../../public/largeScreenImg/kaiguan.png" style="width: 30px;height: 30px" @click="pushZaiXian()"/></div>
+    <div class="kaiguanBox"><img src="../../../../public/largeScreenImg/kaiguan.png" style="width: 30px;height: 30px"
+                                 @click="pushZaiXian()"/></div>
     <div class="topTiltle">
       <span class="title">在运风光场站信息</span>
     </div>
@@ -17,52 +18,182 @@
       <div class="rightTextBg">
         <div class="rightBg topBox">
           <div class="rightTiltleTextBg">
-            <div class="rightMainTitle">
+            <div class="rightMainTitle" style="display: flex;justify-content: space-between;width: 100%">
+
               <span class="mainTitle" @click="pushInfo()">{{ station.stationName }}</span>
+              <div style="display: flex;margin-right: 8%;color: #f9ff00;font-size: 16px">
+                <span v-if="station.type === '风'">主风向:</span>
+                <span v-else>天气:</span>{{ wdSum }}
+              </div>
+
             </div>
           </div>
+
           <div class="rightTopContent" v-for="item in dataInfo">
             <div class="branckTitleBg">
-<!--              <span class="fjName">{{item.category}}<span class="number">{{item.fjNum}}</span>台</span>-->
-              <span class="fjModel">{{item.modelType}}<span class="number" style="margin-left: 4%">{{item.modelTotal}}</span>台</span>
-
+              <span class="fjModel">{{ item.modelType }}
+                <span class="number" style="margin-left: 4%">{{ item.modelTotal }}</span>台</span>
             </div>
-            <div class="mainContent">
-              <div class="contentBox" v-if="station.type === '风'">
-                <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>
-                <span class="textBox">平均风速<span class="numberBox" style="font-size: 14px">(m/s)</span></span>
+            <div>
+              <div class="rightMain"  v-if="station.type === '风'">
+                <div class="contentBox">
+                  <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>
+                  <span class="textBox">平均风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>
+                </div>
+                <div class="tabelTextbg">
+                  <div class="tabelText">
+                    <div>最小风速:</div>
+                    <span>{{ item.wsMin.replace(/\.?0+$/, "") }} (m/s)</span>
+                  </div>
+                  <div class="tabelText">
+                    <div>最大风速:</div>
+                    <span>{{ item.wsMax.replace(/\.?0+$/, "") }}(m/s)</span>
+                  </div>
+                </div>
+              </div>
+              <div class="rightMain" v-else>
+                <div class="contentBox">
+                  <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>
+                  <span class="textBox">平均日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>
+                </div>
+                <div class="tabelTextbg">
+                  <div class="tabelText">
+                    <div>最小日照:</div>
+                    <span>{{ item.wsMin.replace(/\.?0+$/, "") }} (W/m²)</span>
+                  </div>
+                  <div class="tabelText">
+                    <div>最大日照:</div>
+                    <span>{{ item.wsMax.replace(/\.?0+$/, "") }}(W/m²)</span>
+                  </div>
+                </div>
+              </div>
+              <div style="width: 100%;display: flex;justify-content: center">
+              <dv-decoration-10 style="width:80%;height:5px;" />
               </div>
-              <div class="contentBox">
-                <span class="numberBox">{{item.generatingCapacity.replace(/\.?0+$/, "")}}</span>
-                <span class="textBox">发电量<span class="numberBox" style="font-size: 14px">(MWh)</span></span>
 
+              <div class="rightMain">
+                <div class="contentBox">
+                  <span class="numberBox">{{ item.generatingCapacityr.replace(/\.?0+$/, "") }}</span>
+                  <span class="textBox">发电量<div class="numberBox" style="font-size: 14px">(MWh)</div></span>
+                </div>
+                <div class="tabelTextbg">
+                  <div class="tabelText">
+                    <div>月发电量:</div>
+                    <span>{{ item.generatingCapacityy.replace(/\.?0+$/, "") }} (MWh)</span>
+                  </div>
+                  <div class="tabelText">
+                    <div>年发电量:</div>
+                    <span>{{ item.generatingCapacity.replace(/\.?0+$/, "") }}(MWh)</span>
+                  </div>
+                </div>
               </div>
-              <div class="contentBox" v-if="station.type === '风'">
-                <span class="numberBox">{{ item.wdSum }}</span>
-                <span class="textBox">主风向</span>
+              <div style="width: 100%;display: flex;justify-content: center">
+                <dv-decoration-10 style="width:80%;height:5px;" />
               </div>
-              <div class="contentBox">
-                <span class="numberBox">{{ item.realTimeTotal.replace(/\.?0+$/, "") }}</span>
-                <span class="textBox">等效小时数<span class="numberBox" style="font-size: 14px">(h)</span></span>
+              <div class="rightMain">
+                <div class="contentBox">
+                  <span class="numberBox">{{ item.realTimeTotalr.replace(/\.?0+$/, "") }}</span>
+                  <span class="textBox">满发小时数<div class="numberBox" style="font-size: 14px">(h)</div></span>
+                </div>
+                <div class="tabelTextbg">
+                  <div class="tabelText">
+                    <div>月累计:</div>
+                    <span>{{ item.realTimeTotaly.replace(/\.?0+$/, "") }} (h)</span>
+                  </div>
+                  <div class="tabelText">
+                    <div>年累计:</div>
+                    <span>{{ item.realTimeTotal.replace(/\.?0+$/, "") }}(h)</span>
+                  </div>
+                </div>
               </div>
             </div>
+
+
+            <!--            -->
+<!--            <div class="mainContent" v-if="station.type === '风'">-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>-->
+<!--                <span class="textBox">平均风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
+<!--              </div>-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsMax.replace(/\.?0+$/, "") }}</span>-->
+<!--                <span class="textBox">最大风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
+<!--              </div>-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsMin }}</span>-->
+<!--                <span class="textBox">最小风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--            <div class="mainContent" v-else>-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>-->
+<!--                <span class="textBox">平均日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
+<!--              </div>-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsMax.replace(/\.?0+$/, "") }}</span>-->
+<!--                <span class="textBox">最大日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
+<!--              </div>-->
+<!--              <div class="contentBox">-->
+<!--                <span class="numberBox">{{ item.wsMin }}</span>-->
+<!--                <span class="textBox">最小日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--            <div style="display: flex;flex-wrap: wrap;justify-content: space-around;">-->
+<!--              <div class="tabelTextbg">-->
+<!--                <div style="width: 100%;text-align: center;margin-bottom: 1%">发电量 (MWh)</div>-->
+<!--                <div class="split-line"></div>-->
+<!--                &lt;!&ndash;              <el-divider></el-divider>&ndash;&gt;-->
+<!--                <div class="tabelText" style="padding-top: 2%;">-->
+<!--                  <div>日累计:</div>-->
+<!--                  <div>{{ item.generatingCapacityr.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--                <div class="tabelText">-->
+<!--                  <div>月累计:</div>-->
+<!--                  <div>{{ item.generatingCapacityy.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--                <div class="tabelText">-->
+<!--                  <div>年累计:</div>-->
+<!--                  <div>{{ item.generatingCapacity.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--              </div>-->
+<!--              <div class="tabelTextbg">-->
+<!--                <div style="width: 100%;text-align: center;margin-bottom: 1%">等效小时数 (h)</div>-->
+<!--                <div class="split-line"></div>-->
+<!--                &lt;!&ndash;              <el-divider></el-divider>&ndash;&gt;-->
+<!--                <div class="tabelText" style="padding-top: 2%;">-->
+<!--                  <div>日累计:</div>-->
+<!--                  <div>{{ item.realTimeTotalr.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--                <div class="tabelText">-->
+<!--                  <div>月累计:</div>-->
+<!--                  <div>{{ item.realTimeTotaly.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--                <div class="tabelText">-->
+<!--                  <div>年累计:</div>-->
+<!--                  <div>{{ item.realTimeTotal.replace(/\.?0+$/, "") }}</div>-->
+<!--                </div>-->
+<!--              </div>-->
+<!--            </div>-->
           </div>
+
+
         </div>
+
       </div>
 
       <div class="mapBtuBg">
         <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>
@@ -110,19 +241,19 @@ import bigeMap3D from "@/views/largeScreenPage/components/3DbigeMap";
 export default {
   name: "stationInfo",
   components: {
-    bigeMap, bigeHeatMap,bigeHeatSunMap,zaiXianBigeMap, bigeMap3D
+    bigeMap, bigeHeatMap, bigeHeatSunMap, zaiXianBigeMap, bigeMap3D
   },
   data() {
     return {
       timer: null,
       time: '',
-      station: {},
-      dataInfo:[
+      station: {stationName: "XXX风电场", type: "风"},
+      dataInfo: [
         // {category:'一期',fjNum:'20',model:'恩德1.3MW机型',avgWs:'4.5',power:'39650',wd:'西南',hour:'1525'},
         // {category:'二期',fjNum:'30',model:'华锐1.5MW机型',avgWs:'4.7',power:'73125',wd:'西',hour:'1625'},
       ],
-      modelT:[],
-      coordinates:[],
+      modelT: [],
+      coordinates: [],
       mapMark: 'mapBtuOne',
       //地图传值
       mapValue: {
@@ -130,10 +261,11 @@ export default {
         center: [],//中心坐标
         allStationInfo: null,//场站坐标
         projectInfo: null,//项目坐标
-        allPointInfo:null,//所有点位信息
+        allPointInfo: null,//所有点位信息
       },
-      allPointInfo:[],
-      dialogVisible:false
+      allPointInfo: [],
+      dialogVisible: false,
+      wdSum: ''
     }
   },
   destroyed() {
@@ -149,56 +281,63 @@ export default {
   },
   methods: {
     /*所有风机、塔、拐点坐标信息*/
-    getPointMap(){
-      if(this.$store.getters.allPointInfo.length>0){
+    getPointMap() {
+      if (this.$store.getters.allPointInfo.length > 0) {
         this.allPointInfo = JSON.parse(this.$store.getters.allPointInfo).info
         this.getInfo()
-      }else {
-        getPointMap().then(res=>{
+      } else {
+        getPointMap().then(res => {
           // console.log(res.data)
           this.allPointInfo = res.data
           this.getInfo()
-          sessionStorage.setItem("allPointInfo", JSON.stringify({info:this.allPointInfo}))
-          this.$store.dispatch('equipmentInfo/allPointInfo', JSON.stringify({info:this.allPointInfo}))
-        }).catch(err=>{
-          console.log('所有点位坐标:'+err)
+          sessionStorage.setItem("allPointInfo", JSON.stringify({info: this.allPointInfo}))
+          this.$store.dispatch('equipmentInfo/allPointInfo', JSON.stringify({info: this.allPointInfo}))
+        }).catch(err => {
+          console.log('所有点位坐标:' + err)
         })
       }
     },
-    getInfo(){
-      stationInfo({stationId:this.station.id}).then(res=>{
-        // console.log(res.data)
+    getInfo() {
+      stationInfo({stationId: this.station.id}).then(res => {
+        console.log(res.data)
         let data = res.data
         this.dataInfo = data.modelT
-        if(data.latitude === undefined ){
+        if (this.dataInfo) {
+          if (this.dataInfo[0] === undefined) {
+            this.wdSum = ''
+          } else {
+            this.wdSum = this.dataInfo[0].wdSum
+          }
+        }
+        if (data.latitude === undefined) {
           this.coordinates = []
-        }else{
-          this.coordinates = [Number(data.latitude),Number(data.longitude)]
+        } else {
+          this.coordinates = [Number(data.latitude), Number(data.longitude)]
         }
 
-        this.mapValue ={
+        this.mapValue = {
           params: new Date(),
           level: 12,//地图层级
           center: this.coordinates,//中心坐标
           allStationInfo: null,//场站坐标
           projectInfo: null,//项目坐标
-          id:this.station.id,
-          allPointInfo:this.allPointInfo,//所有点位信息
+          id: this.station.id,
+          allPointInfo: this.allPointInfo,//所有点位信息
         }
-      }).catch(err=>{
-        this.mapValue ={
+      }).catch(err => {
+        this.mapValue = {
           params: new Date(),
           level: 6,//地图层级
           center: [],//中心坐标
           allStationInfo: null,//场站坐标
           projectInfo: null,//项目坐标
-          id:this.station.id,
-          allPointInfo:null,//所有点位信息
+          id: this.station.id,
+          allPointInfo: null,//所有点位信息
         }
-        if(err.msg === 'Index: 0, Size: 0'){
+        if (err.msg === 'Index: 0, Size: 0') {
           console.log('此场站没有风机与测风塔')
-        }else{
-          console.log('场站信息获取异常:'+err.msg)
+        } else {
+          console.log('场站信息获取异常:', err)
         }
 
       })
@@ -207,12 +346,12 @@ export default {
       this.$router.push({path: "/dataQuery/windTowerStatusInfo"})
     },
     pushInfo() {
-      let station = {stationId:this.station.id,equipmentNo:null}
-      if(this.station.type === '风'){
+      let station = {stationId: this.station.id, equipmentNo: null}
+      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{
+      } else {
         sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
         this.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
         this.$router.push({path: "/homepage/realPvResourcesInfo"})
@@ -225,50 +364,50 @@ export default {
     pushStationResource() {
       this.$router.push({path: "/homepage/stationResources"})
     },
-    pushZaiXian(){
-      if(this.mapMark === 'mapBtuOne'){
+    pushZaiXian() {
+      if (this.mapMark === 'mapBtuOne') {
         let center = this.$refs.childMethod.center
         let level = this.$refs.childMethod.level
-        this.mapValue ={
+        this.mapValue = {
           params: new Date(),
-          level: level === ''?null:level,//地图层级
-          center: center.length === 0?[]:[center.lat,center.lng],//中心坐标
+          level: level === '' ? null : level,//地图层级
+          center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
           allStationInfo: null,//场站坐标
           projectInfo: null,//项目坐标
-          id:this.station.id,
-          allPointInfo:this.allPointInfo,//所有点位信息
+          id: this.station.id,
+          allPointInfo: this.allPointInfo,//所有点位信息
         }
         this.mapMark = 'mapBtu'
       }
     },
-    dialog3DMap(){
+    dialog3DMap() {
       let center = this.$refs.childMethod.center
       let level = this.$refs.childMethod.level
-      this.mapValue ={
+      this.mapValue = {
         params: new Date(),
-        level: level === ''?null:level,//地图层级
-        center: center.length === 0?[]:[center.lat,center.lng],//中心坐标
+        level: level === '' ? null : level,//地图层级
+        center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
         allStationInfo: null,//场站坐标
         projectInfo: null,//项目坐标
-        id:this.station.id,
-        allPointInfo:this.allPointInfo,//所有点位信息
+        id: this.station.id,
+        allPointInfo: this.allPointInfo,//所有点位信息
       }
       this.dialogVisible = true
     },
-    handleClose(){
+    handleClose() {
       this.dialogVisible = false
     },
     clickBtu(id) {
       let center = this.$refs.childMethod.center
       let level = this.$refs.childMethod.level
-      this.mapValue ={
+      this.mapValue = {
         params: new Date(),
-        level: level === ''?null:level,//地图层级
-        center: center.length === 0?[]:[center.lat,center.lng],//中心坐标
+        level: level === '' ? null : level,//地图层级
+        center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
         allStationInfo: null,//场站坐标
         projectInfo: null,//项目坐标
-        id:this.station.id,
-        allPointInfo:this.allPointInfo,//所有点位信息
+        id: this.station.id,
+        allPointInfo: this.allPointInfo,//所有点位信息
       }
       this.mapMark = id
       let clickItem = document.getElementById(id)
@@ -385,9 +524,10 @@ export default {
 }
 
 .rightTextBg {
+  height: calc(90vh);
   position: absolute;
   right: 2%;
-  top: 8%;
+  top: 5%;
   width: 20%;
   display: flex;
   flex-direction: column;
@@ -400,6 +540,21 @@ export default {
   padding: 5%;
 }
 
+.tabelTextbg {
+  width: 80%;
+  height: 80px;
+  background: url(../../../assets/largeScreenImg/resourcesInfo/heightBg.png) 100% no-repeat;
+  background-size: 100% 100%;
+  padding: 5%;
+}
+
+.tabelText {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
 .mapBtuBg {
   position: absolute;
   right: 22%;
@@ -410,7 +565,7 @@ export default {
 
 .rightTiltleTextBg {
   height: 32px;
-  background: url(../../../assets/largeScreenImg/index/rightTiltleTextBg.png) 100% no-repeat;
+  background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/rightTitleBg.png) 100% no-repeat;
   background-size: 100% 100%;
 }
 
@@ -427,29 +582,39 @@ export default {
 .rightTopContent {
   margin-top: 4%;
 }
-.branckTitleBg{
+
+.branckTitleBg {
   background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/branckTitleBg.png) 100% no-repeat;
   background-size: 100% 100%;
   height: 32px;
   display: flex;
   align-items: center;
 }
-.fjName{
-  margin-left: 2%;
+
+.textBox {
+  display: flex;
+  flex-direction: column;
+  align-items: center
 }
-.fjModel{
+
+.fjModel {
   width: 100%;
   margin-left: 2%;
 }
-.mainContent{
+
+.mainContent {
   display: flex;
   flex-wrap: wrap;
   justify-content: center;
 }
+.rightMain{
+  display: flex;
+  align-items: center;
+}
 .contentBox {
-  margin-top: 5%;
-  width: 38%;
-  height: 125px;
+  margin-top: 2%;
+  width: 40%;
+  height: 100px;
   background: url(../../../assets/largeScreenImg/index/liubianxingBorder.png) 100% no-repeat;
   background-size: 100% 100%;
   display: flex;
@@ -457,7 +622,8 @@ export default {
   justify-content: center;
   align-items: center;
 }
-.number{
+
+.number {
   font-weight: 700;
   background-image: linear-gradient(
     rgba(255, 255, 255, 1) 0,
@@ -468,6 +634,7 @@ export default {
   background-clip: text;
   color: transparent;
 }
+
 .numberBox {
   font-size: 24px;
   font-weight: 700;
@@ -516,21 +683,81 @@ export default {
   right: 0;
   bottom: 0;
 }
-.kaiguanBox{
+
+.kaiguanBox {
   cursor: pointer;
   position: absolute;
   left: 22%;
   top: .5%;
 }
-.map3D /deep/ .el-dialog__header, .map3D /deep/ .el-dialog__body  {
+
+.map3D /deep/ .el-dialog__header, .map3D /deep/ .el-dialog__body {
   padding: 0;
 }
+
 .map3D /deep/ .el-dialog__headerbtn {
   z-index: 100;
   top: 10px;
   right: 10px;
 }
+
 .map3D /deep/ .el-dialog__headerbtn .el-dialog__close {
   color: #ffffff;
 }
 </style>
+<style scoped>
+
+.split-line {
+  position: relative;
+  height: 2px; /* 分割线的高度 */
+  background-color: #f0f0f0; /* 分割线的背景色 */
+  overflow: hidden; /* 避免伪元素溢出容器 */
+  border-radius: 10%;
+}
+
+.split-line::before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(45deg, #5ffffa, #7bfafe, #5fcfff); /* 创建渐变效果 */
+  background-size: 300%; /* 渐变区域比容器大,以便创造重复的效果 */
+  animation: slide 5s linear infinite; /* 使用关键帧动画 */
+}
+
+@keyframes slide {
+  0% {
+    background-position: 0 0;
+  }
+  100% {
+    background-position: 300% 0;
+  }
+}
+
+/* 设置滚动条样式 */
+/* 设置scrollbar-thumb之前要设置scrollbar的width和height */
+::-webkit-scrollbar-track {
+  border-radius: 0;
+  background-color: #f2f3f8;
+}
+
+::-webkit-scrollbar-thumb {
+  border-radius: 0;
+  border-radius: 5px;
+  background-image: -webkit-linear-gradient(0deg, rgba(202, 214, 220, 0.5) 0, #737179 100%);
+  -webkit-transition: all .2s;
+  transition: all .2s;
+}
+
+::-webkit-scrollbar-corner {
+  background-color: #f2f3f8;
+}
+
+::-webkit-scrollbar {
+  width: 8px;
+  height: 8px;
+}
+
+</style>

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

@@ -32,7 +32,7 @@ export default {
       immediate: true,
       handler(value) {
         if (value.params !== undefined) {
-          console.log("地形图:" + value)
+          console.log("地形图:" , value)
           this.mapData = value
           this.initBigeMap()
         }