Browse Source

光资源分析,逆变器分析接口调试

baiyanting 2 years ago
parent
commit
e71231a19b

+ 1 - 1
.env.development

@@ -1,7 +1,7 @@
 # VUE_APP_BASE_API = http://192.168.11.250:18600
 # VUE_APP_BASE_API = http://192.168.11.250:18600
 # VUE_APP_Economy = http://192.168.11.250:6060
 # VUE_APP_Economy = http://192.168.11.250:6060
 # VUE_APP_BASE_API = http://192.168.1.101:6060
 # VUE_APP_BASE_API = http://192.168.1.101:6060
-VUE_APP_Economy = http://192.168.1.117:6060
+VUE_APP_Economy = http://10.1.110.20:6060
 
 
 # 服务名,调用后台微服务
 # 服务名,调用后台微服务
 VUE_APP_SERVER_NAME = /nem-api
 VUE_APP_SERVER_NAME = /nem-api

+ 23 - 0
src/api/monthlyPerformanceAnalysis.js

@@ -357,3 +357,26 @@ export function getApipowerAnalyse(params) {
     method: "GET",
     method: "GET",
   });
   });
 }
 }
+// ------------------------------------------------------------逆变器分析------------------------------------------------------------------------
+export function getApiInverterAnalyse(params) {
+  return request({
+    baseURL: process.env.VUE_APP_Economy,
+    url: `/economicsOperation/analyse/inverterAnalyse?companys=${params.companys}&type=${params.type}&wpid=${params.wpid}&pageNum=${params.pageNum}&pageSize=${params.pageSize}`,
+    method: "GET",
+  });
+}
+export function getApiInverterAnalyseHistory(params) {
+  return request({
+    baseURL: process.env.VUE_APP_Economy,
+    url: `/economicsOperation/analyse/inverterAnalyseDetails?wtid=${params.wtid}&beginDate=${params.beginDate}&endDate=${params.endDate}&interval=${params.interval}`,
+    method: "GET",
+  });
+}
+// ------------------------------------------------------------光资源分析------------------------------------------------------------------------
+export function getApiLightResourceAnalyse(params) {
+  return request({
+    baseURL: process.env.VUE_APP_Economy,
+    url: `/economy/irradiance?companys=${params.companys}&type=${params.type}&wpids=${params.wpids}&starttime=${params.starttime}&endtime=${params.endtime}&windturbineids=`,
+    method: "GET",
+  });
+}

+ 440 - 0
src/components/chart/line/multiple-lines-chart.vue

@@ -0,0 +1,440 @@
+<template>
+  <div class="chart" :id="id"></div>
+</template>
+
+<script>
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+
+export default {
+  name: "multiple-lines-chart",
+  componentName: "multiple-lines-chart",
+  props: {
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "13.889vh",
+    },
+    // 数据
+    list: {
+      type: Array,
+      default: () => [
+        {
+          title: "日发电量",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "2",
+              value: 2,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "4",
+              value: 4,
+            },
+            {
+              text: "5",
+              value: 6,
+            },
+            {
+              text: "6",
+              value: 2,
+            },
+            {
+              text: "7",
+              value: 3,
+            },
+            {
+              text: "8",
+              value: 8,
+            },
+            {
+              text: "9",
+              value: 3,
+            },
+            {
+              text: "10",
+              value: 2,
+            },
+            {
+              text: "11",
+              value: 5,
+            },
+            {
+              text: "12",
+              value: 8,
+            },
+            {
+              text: "13",
+              value: 3,
+            },
+            {
+              text: "14",
+              value: 9,
+            },
+            {
+              text: "15",
+              value: 3,
+            },
+            {
+              text: "16",
+              value: 2,
+            },
+            {
+              text: "17",
+              value: 1,
+            },
+            {
+              text: "18",
+              value: 3,
+            },
+            {
+              text: "19",
+              value: 4,
+            },
+            {
+              text: "20",
+              value: 9,
+            },
+            {
+              text: "21",
+              value: 2,
+            },
+            {
+              text: "22",
+              value: 1,
+            },
+            {
+              text: "23",
+              value: 2,
+            },
+            {
+              text: "24",
+              value: 3,
+            },
+            {
+              text: "25",
+              value: 3,
+            },
+            {
+              text: "26",
+              value: 4,
+            },
+            {
+              text: "27",
+              value: 9,
+            },
+            {
+              text: "28",
+              value: 7,
+            },
+            {
+              text: "29",
+              value: 4,
+            },
+            {
+              text: "30",
+              value: 1,
+            },
+            {
+              text: "31",
+              value: 2,
+            },
+          ],
+        },
+        {
+          title: "上网电量",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "2",
+              value: 2,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "4",
+              value: 3,
+            },
+          ],
+        },
+        {
+          title: "购网电量",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+          ],
+        },
+      ],
+    },
+    // 单位
+    units: {
+      type: Array,
+      default: () => [],
+    },
+    showLegend: {
+      type: Boolean,
+      default: false,
+    },
+    hoverType: {
+      type: String,
+      default: "item",
+    },
+    interval: {
+      type: Number,
+      default: 4,
+    },
+  },
+  data() {
+    return {
+      id: "",
+      chart: null,
+      color: [
+        "#1C99FF",
+        "#4b55ae",
+        "#fa8c16",
+        "#f8de5b",
+        "#1a93cf",
+        "#c531c7",
+        "#bd3338",
+        "#05bb4c",
+        "#4b55ae",
+        "#fa8c16",
+        "#f8de5b",
+        "#1a93cf",
+        "#c531c7",
+        "#bd3338",
+      ],
+    };
+  },
+  computed: {
+    legend() {
+      return this.list.map((t) => {
+        return t.title;
+      });
+    },
+    xdata() {
+      if (this.list.length > 0)
+        return this.list[0].value.map((t) => {
+          return t.time;
+        });
+      return [];
+    },
+    series() {
+      let result = [];
+
+      this.list.forEach((value, index) => {
+        result.push({
+          name: value.name,
+          type: "line",
+          smooth: true,
+          showSymbol: false,
+          zlevel: index,
+          lineStyle: {
+            normal: {
+              // color: index != 0 ? partten.getColor("gray") : this.color[index],
+              color: this.color[index],
+              width: 1,
+            },
+            emphasis: {
+              color: this.color[index],
+            },
+          },
+
+          tooltip: {
+            show: true,
+            position: [10, 10],
+          },
+          yAxisIndex: value.yAxisIndex,
+          data: value.value.map((t) => {
+            return t.value;
+          }),
+        });
+      });
+      return result;
+    },
+    yAxis() {
+      let result = [];
+      this.units.forEach((value, index) => {
+        result.push({
+          type: "value",
+          name: value,
+          nameTextStyle: {
+            color: "#fff",
+          },
+          axisLabel: {
+            formatter: "{value}",
+            fontSize: util.vh(14),
+            color: "#B3B3B3",
+          },
+          axisLine: {
+            show: false,
+          },
+          //分格线
+          splitLine: {
+            show: index == 0,
+            lineStyle: {
+              color: partten.getColor("gray"),
+              type: "dashed",
+            },
+          },
+        });
+      });
+      return result;
+    },
+  },
+  methods: {
+    hexToRgba(hex, opacity) {
+      let rgbaColor = "";
+      let reg = /^#[\da-f]{6}$/i;
+      if (reg.test(hex)) {
+        rgbaColor = `rgba(${parseInt("0x" + hex.slice(1, 3))},${parseInt(
+          "0x" + hex.slice(3, 5)
+        )},${parseInt("0x" + hex.slice(5, 7))},${opacity})`;
+      }
+      return rgbaColor;
+    },
+    resize() {},
+    initChart() {
+      let chart = echarts.init(this.$el);
+      let option = {
+        color: this.color,
+        tooltip: {
+          trigger: "axis",
+          // axisPointer:
+          //     this.hoverType != "item"
+          //         ? {
+          //           type: "cross",
+          //         }
+          //         : {},
+          // backgroundColor: "rgba(0,0,0,0.4)",
+          // borderColor: partten.getColor("gray"),
+          // textStyle: {
+          //   fontSize: util.vh(16),
+          //   color: "#B3B3B3",
+          // },
+        },
+        legend: {
+          show: this.showLegend,
+          data: this.legend,
+          right: 56,
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: partten.getColor("gray"),
+          textStyle: {
+            color: "#B3B3B3",
+            fontSize: 12,
+          },
+        },
+        dataZoom: [
+          {
+            type: "slider",
+            bottom: 23,
+            height: 20,
+            left: 50,
+            right: 50,
+            handleSize: "90%",
+            start: 0,
+            end: 100,
+            handleColor: "#555B66",
+            borderColor: "#545454",
+            backgroundColor: "rgba(0, 70, 199, 0.2)",
+            fillerColor: "#343A46",
+            textStyle: { color: "#B3B3B3" },
+            labelFormatter: (value) => {
+              if (value) {
+                return this.xdata[value];
+              }
+            },
+          },
+        ],
+        grid: {
+          top: 32,
+          left: 20,
+          right: 20,
+          bottom: 52,
+          containLabel: true,
+        },
+        xAxis: [
+          {
+            // name:"(m/s)",
+            type: "category",
+            nameTextStyle: {
+              color: "#B3B3B3",
+            },
+            boundaryGap: false,
+            axisLabel: {
+              formatter: "{value}",
+              fontSize: util.vh(14),
+              textStyle: {
+                color: "#B3B3B3",
+              },
+            },
+            axisLine: {
+              show: false,
+            },
+            data: this.xdata,
+          },
+        ],
+        yAxis: this.yAxis,
+        series: this.series,
+      };
+      chart.clear();
+      chart && option && chart.setOption(option);
+      this.resize = function () {
+        chart.resize();
+      };
+      window.addEventListener("resize", this.resize);
+      chart.resize();
+    },
+  },
+  created() {
+    this.$nextTick(() => {
+      this.id = "pie-chart-" + util.newGUID();
+    });
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.$el.style.width = this.width;
+      this.$el.style.height = this.height;
+      this.initChart();
+    });
+  },
+  updated() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted() {
+    window.removeEventListener("resize", this.resize);
+  },
+};
+</script>
+
+<style lang="less">
+.chart {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+}
+</style>

+ 518 - 0
src/components/chart/scatter/simple-scatter.vue

@@ -0,0 +1,518 @@
+<template>
+  <div class="chart" :id="id"></div>
+</template>
+
+<script>
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+
+export default {
+  props: {
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "350px",
+    },
+    // 传入数据
+    data: {
+      type: Array,
+      default: () => [
+       
+        {
+          title: "女",
+          value: [
+            [174.0, 65.6],
+            [175.3, 71.8],
+            [193.5, 80.7],
+            [186.5, 72.6],
+            [187.2, 78.8],
+            [181.5, 74.8],
+            [184.0, 86.4],
+            [184.5, 78.4],
+            [175.0, 62.0],
+            [184.0, 81.6],
+            [180.0, 76.6],
+            [177.8, 83.6],
+            [192.0, 90.0],
+            [176.0, 74.6],
+            [174.0, 71.0],
+            [184.0, 79.6],
+            [192.7, 93.8],
+            [171.5, 70.0],
+            [173.0, 72.4],
+            [176.0, 85.9],
+            [176.0, 78.8],
+            [180.5, 77.8],
+            [172.7, 66.2],
+            [176.0, 86.4],
+            [173.5, 81.8],
+            [178.0, 89.6],
+            [180.3, 82.8],
+            [180.3, 76.4],
+            [164.5, 63.2],
+            [173.0, 60.9],
+            [183.5, 74.8],
+            [175.5, 70.0],
+            [188.0, 72.4],
+            [189.2, 84.1],
+            [172.8, 69.1],
+            [170.0, 59.5],
+            [182.0, 67.2],
+            [170.0, 61.3],
+            [177.8, 68.6],
+            [184.2, 80.1],
+            [186.7, 87.8],
+            [171.4, 84.7],
+            [172.7, 73.4],
+            [175.3, 72.1],
+            [180.3, 82.6],
+            [182.9, 88.7],
+            [188.0, 84.1],
+            [177.2, 94.1],
+            [172.1, 74.9],
+            [167.0, 59.1],
+            [169.5, 75.6],
+            [174.0, 86.2],
+            [172.7, 75.3],
+            [182.2, 87.1],
+            [164.1, 55.2],
+            [163.0, 57.0],
+            [171.5, 61.4],
+            [184.2, 76.8],
+            [174.0, 86.8],
+            [174.0, 72.2],
+            [177.0, 71.6],
+            [186.0, 84.8],
+            [167.0, 68.2],
+            [171.8, 66.1],
+            [182.0, 72.0],
+            [167.0, 64.6],
+            [177.8, 74.8],
+            [164.5, 70.0],
+            [192.0, 101.6],
+            [175.5, 63.2],
+            [171.2, 79.1],
+            [181.6, 78.9],
+            [167.4, 67.7],
+            [181.1, 66.0],
+            [177.0, 68.2],
+            [174.5, 63.9],
+            [177.5, 72.0],
+            [170.5, 56.8],
+            [182.4, 74.5],
+            [197.1, 90.9],
+            [180.1, 93.0],
+            [175.5, 80.9],
+            [180.6, 72.7],
+            [184.4, 68.0],
+            [175.5, 70.9],
+            [180.6, 72.5],
+            [177.0, 72.5],
+            [177.1, 83.4],
+            [181.6, 75.5],
+            [176.5, 73.0],
+            [175.0, 70.2],
+            [174.0, 73.4],
+            [165.1, 70.5],
+            [177.0, 68.9],
+            [192.0, 102.3],
+            [176.5, 68.4],
+            [169.4, 65.9],
+            [182.1, 75.7],
+            [179.8, 84.5],
+            [175.3, 87.7],
+            [184.9, 86.4],
+            [177.3, 73.2],
+            [167.4, 53.9],
+            [178.1, 72.0],
+            [168.9, 55.5],
+            [157.2, 58.4],
+            [180.3, 83.2],
+            [170.2, 72.7],
+            [177.8, 64.1],
+            [172.7, 72.3],
+            [165.1, 65.0],
+            [186.7, 86.4],
+            [165.1, 65.0],
+            [174.0, 88.6],
+            [175.3, 84.1],
+            [185.4, 66.8],
+            [177.8, 75.5],
+            [180.3, 93.2],
+            [180.3, 82.7],
+            [177.8, 58.0],
+            [177.8, 79.5],
+            [177.8, 78.6],
+            [177.8, 71.8],
+            [177.8, 116.4],
+            [163.8, 72.2],
+            [188.0, 83.6],
+            [198.1, 85.5],
+            [175.3, 90.9],
+            [166.4, 85.9],
+            [190.5, 89.1],
+            [166.4, 75.0],
+            [177.8, 77.7],
+            [179.7, 86.4],
+            [172.7, 90.9],
+            [190.5, 73.6],
+            [185.4, 76.4],
+            [168.9, 69.1],
+            [167.6, 84.5],
+            [175.3, 64.5],
+            [170.2, 69.1],
+            [190.5, 108.6],
+            [177.8, 86.4],
+            [190.5, 80.9],
+            [177.8, 87.7],
+            [184.2, 94.5],
+            [176.5, 80.2],
+            [177.8, 72.0],
+            [180.3, 71.4],
+            [171.4, 72.7],
+            [172.7, 84.1],
+            [172.7, 76.8],
+            [177.8, 63.6],
+            [177.8, 80.9],
+            [182.9, 80.9],
+            [170.2, 85.5],
+            [167.6, 68.6],
+            [175.3, 67.7],
+            [165.1, 66.4],
+            [185.4, 102.3],
+            [181.6, 70.5],
+            [172.7, 95.9],
+            [190.5, 84.1],
+            [179.1, 87.3],
+            [175.3, 71.8],
+            [170.2, 65.9],
+            [193.0, 95.9],
+            [171.4, 91.4],
+            [177.8, 81.8],
+            [177.8, 96.8],
+            [167.6, 69.1],
+            [167.6, 82.7],
+            [180.3, 75.5],
+            [182.9, 79.5],
+            [176.5, 73.6],
+            [186.7, 91.8],
+            [188.0, 84.1],
+            [188.0, 85.9],
+            [177.8, 81.8],
+            [174.0, 82.5],
+            [177.8, 80.5],
+            [171.4, 70.0],
+            [185.4, 81.8],
+            [185.4, 84.1],
+            [188.0, 90.5],
+            [188.0, 91.4],
+            [182.9, 89.1],
+            [176.5, 85.0],
+            [175.3, 69.1],
+            [175.3, 73.6],
+            [188.0, 80.5],
+            [188.0, 82.7],
+            [175.3, 86.4],
+            [170.5, 67.7],
+            [179.1, 92.7],
+            [177.8, 93.6],
+            [175.3, 70.9],
+            [182.9, 75.0],
+            [170.8, 93.2],
+            [188.0, 93.2],
+            [180.3, 77.7],
+            [177.8, 61.4],
+            [185.4, 94.1],
+            [168.9, 75.0],
+            [185.4, 83.6],
+            [180.3, 85.5],
+            [174.0, 73.9],
+            [167.6, 66.8],
+            [182.9, 87.3],
+            [160.0, 72.3],
+            [180.3, 88.6],
+            [167.6, 75.5],
+            [186.7, 101.4],
+            [175.3, 91.1],
+            [175.3, 67.3],
+            [175.9, 77.7],
+            [175.3, 81.8],
+            [179.1, 75.5],
+            [181.6, 84.5],
+            [177.8, 76.6],
+            [182.9, 85.0],
+            [177.8, 102.5],
+            [184.2, 77.3],
+            [179.1, 71.8],
+            [176.5, 87.9],
+            [188.0, 94.3],
+            [174.0, 70.9],
+            [167.6, 64.5],
+            [170.2, 77.3],
+            [167.6, 72.3],
+            [188.0, 87.3],
+            [174.0, 80.0],
+            [176.5, 82.3],
+            [180.3, 73.6],
+            [167.6, 74.1],
+            [188.0, 85.9],
+            [180.3, 73.2],
+            [167.6, 76.3],
+            [183.0, 65.9],
+            [183.0, 90.9],
+            [179.1, 89.1],
+            [170.2, 62.3],
+            [177.8, 82.7],
+            [179.1, 79.1],
+            [190.5, 98.2],
+            [177.8, 84.1],
+            [180.3, 83.2],
+            [180.3, 83.2],
+          ],
+        },
+      ],
+    },
+    xTitle: {
+      type: String,
+      default: "x轴标题",
+    },
+    yTitle: {
+      type: String,
+      default: "Y轴标题",
+    },
+    showLegend: {
+      type: Boolean,
+      default: true,
+    },
+  },
+  data () {
+    return {
+      id: "",
+      chart: null,
+      color: ["#05bb4c", "#f8de5b", "#4b55ae", "#fa8c16"],
+    };
+  },
+  computed: {
+    series () {
+      let result = [];
+      this.data.forEach((element, index) => {
+        result.push({
+          name: element.title,
+          type: "scatter",
+          emphasis: {
+            focus: "series",
+          },
+          data: element.value,
+        });
+      });
+      return result;
+    },
+    legend() {
+      if (this.data && this.data.length > 0)
+        return this.data.map((t) => {
+          return t.title;
+        });
+
+      return [];
+    },
+  },
+  methods: {
+    resize() {},
+    initChart() {
+      let that = this;
+      const chart = echarts.init(this.$el);
+
+      let option = {
+        color: this.color,
+        grid: {
+          top: 40,
+          left: 40,
+          right: 40,
+          bottom: 24,
+          containLabel: true,
+        },
+        tooltip: {
+          trigger: "item",
+          showDelay: 0,
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            fontSize: util.vh(16),
+            color: "#fff",
+          },
+          formatter: function(params) {
+            if (params.componentType == "markLine") {
+              return params.name + "<br />" + params.value;
+            }
+
+            var msg = params.seriesName + "<br />";
+            msg += params.marker + that.xTitle + ":" + params.value[0] + "<br />";
+            msg += params.marker + that.yTitle + ":" + params.value[1] + "<br />";
+            return msg;
+          },
+          axisPointer: {
+            show: true,
+            type: "cross",
+            lineStyle: {
+              type: "dashed",
+              width: 1,
+            },
+          },
+        },
+        legend: {
+          show: this.showLegend,
+          data: this.legend,
+          right: "40",
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: partten.getColor("gray"),
+          textStyle: {
+            color: partten.getColor("grayl"),
+            fontSize: 12,
+          },
+        },
+        xAxis: [
+          {
+            nameGap: -13,
+            name: this.xTitle,
+            type: "value",
+            scale: true,
+            axisLabel: {
+              formatter: "{value}",
+            },
+            splitLine: {
+              show: false,
+            },
+          },
+        ],
+        // xAxis: {
+        //     show: true,    // 是否显示 x 轴
+        //     position: 'top',    // x 轴的位置('top','bottom') 
+        //     name: "ceshia",
+        //     type: 'value',    // 坐标轴类型
+        //     // nameRotate: 90,    // 坐标轴名字旋转,角度值
+        //     inverse: false,    // 是否是反向坐标轴
+        //     boundaryGap: ['50%', '50%'],    // 坐标轴两边留白策略
+        //     // splitNumber: 5,    // 坐标轴的分割段数(预估值)
+        //     // axisLine: {
+        //     //     show: true,    // 是否显示坐标轴轴线
+        //     //     symbol: ['none', 'arrow'],     // 轴线两端箭头,两个值,none表示没有箭头,arrow表示有箭头
+        //     //     symbolSize: [10, 15],     // 轴线两端箭头大小,数值一表示宽度,数值二表示高度
+        //     //     lineStyle: {
+        //     //         color: '#333',    // 坐标轴线线的颜色
+        //     //         width: '5',    // 坐标轴线线宽
+        //     //         type: 'solid',     // 坐标轴线线的类型('solid',实线类型;'dashed',虚线类型;'dotted',点状类型)
+        //     //     },
+        //     // },
+        //     // axisTick: {
+        //     //     show: true,    // 是否显示坐标轴刻度
+        //     //     inside: true,     // 坐标轴刻度是否朝内,默认朝外
+        //     //     length: 5,    // 坐标轴刻度的长度
+        //     //     lineStyle: {
+        //     //         color: '#FFF',     // 刻度线的颜色
+        //     //         width: 10,    // 坐标轴刻度线宽
+        //     //         type: 'solid',     // 坐标轴线线的类型('solid',实线类型;'dashed',虚线类型;'dotted',点状类型)
+        //     //     },
+        //     // },
+        //     // axisLabel: {
+        //     //     show: true,     // 是否显示刻度标签
+        //     //     interval: '0',    // 坐标轴刻度标签的显示间隔,在类目轴中有效.0显示所有
+        //     //     inside: true,    // 刻度标签是否朝内,默认朝外
+        //     //     rotate: 90,    // 刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠;旋转的角度从 -90 度到 90 度
+        //     //     margin: 10,    // 刻度标签与轴线之间的距离
+        //     //     // formatter 刻度标签的内容格式器,支持字符串模板和回调函数两种形式
+        //     //     color: '#FFF',     // 刻度标签文字的颜色
+        //     //     fontStyle: 'normal',    // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体) 
+        //     //     fontWeight: 'normal',    // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
+        //     //     fontSize: '20',    // 文字字体大小
+        //     //     align: 'left',     // 文字水平对齐方式,默认自动('left','center','right')
+        //     //     verticalAlign: 'left',    // 文字垂直对齐方式,默认自动('top','middle','bottom'
+        //     //     lineHeight: '50',    // 行高 )
+        //     //     backgroundColor: 'red',    // 文字块背景色,例:'#123234', 'red', 'rgba(0,23,11,0.3)'
+        //     // },
+        //     // splitLine: {
+        //     //     show: true,    // 是否显示分隔线。默认数值轴显示,类目轴不显示
+        //     //     interval: '0',    // 坐标轴刻度标签的显示间隔,在类目轴中有效.0显示所有
+        //     //     color: ['#ccc'],    // 分隔线颜色,可以设置成单个颜色,也可以设置成颜色数组,分隔线会按数组中颜色的顺序依次循环设置颜色
+        //     //     width: 3,    // 分隔线线宽
+        //     //     type: 'solid',     // 坐标轴线线的类型('solid',实线类型;'dashed',虚线类型;'dotted',点状类型)
+        //     // },
+        //     // splitArea: {
+        //     //     show: true,    // 是否显示分隔区域
+        //     //     interval: '0',    // 坐标轴刻度标签的显示间隔,在类目轴中有效.0显示所有
+        //     //     areaStyle: {
+        //     //         color: ['rgba(250,250,250,0.3)','rgba(200,200,200,0.3)'],    // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色
+        //     //         opacity: 1,    // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形
+        //     //     },
+        //     // },
+        //     // data: {
+        //     //     textStyle: {
+        //     //         color: '#FFF',     // 文字的颜色
+        //     //         fontStyle: 'normal',    // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体) 
+        //     //         fontWeight: 'normal',    // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
+        //     //         fontSize: '20',    // 文字字体大小
+        //     //         align: 'left',     // 文字水平对齐方式,默认自动('left','center','right')
+        //     //         verticalAlign: 'left',    // 文字垂直对齐方式,默认自动('top','middle','bottom'
+        //     //         lineHeight: '50',    // 行高 )
+        //     //         backgroundColor: 'red',    // 文字块背景色,例:'#123234', 'red', 'rgba(0,23,11,0.3)'
+        //     //     },
+        //     // },
+        // },
+        yAxis: [
+          {
+            type: "value",
+            name: this.yTitle,
+            scale: true,
+            axisLabel: {
+              formatter: "{value}",
+            },
+            splitLine: {
+              show: false,
+            },
+          },
+        ],
+        series: this.series,
+      };
+
+      chart.clear();
+      chart.setOption(option);
+
+      this.resize = function () {
+        chart.resize();
+      };
+
+      window.addEventListener("resize", this.resize);
+    },
+  },
+  created () {
+    this.id = "pie-chart-" + util.newGUID();
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.$el.style.width = this.width;
+      this.$el.style.height = this.height;
+      this.initChart();
+    });
+  },
+  updated () {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted () {
+    window.removeEventListener("resize", this.resize);
+  },
+};
+</script>
+
+<style lang="less">
+.chart {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+}
+</style>

+ 24 - 0
src/router/index.js

@@ -756,6 +756,30 @@ export const asyncRoutes = [
             },
             },
           },
           },
           {
           {
+            path: "inverterAnalyse",
+            component: () =>
+              import(
+                "@/views/layout/economicsOperation/analyse/inverterAnalyse"
+              ),
+            name: "inverterAnalyse",
+            meta: {
+              title: "逆变器分析",
+              icon: "",
+            },
+          },
+          {
+            path: "lightResourceAnalyse",
+            component: () =>
+              import(
+                "@/views/layout/economicsOperation/analyse/lightResourceAnalyse"
+              ),
+            name: "lightResourceAnalyse",
+            meta: {
+              title: "光资源分析",
+              icon: "",
+            },
+          },
+          {
             path: "monthlyAnalysis",
             path: "monthlyAnalysis",
             component: () =>
             component: () =>
               import(
               import(

+ 149 - 0
src/views/layout/economicsOperation/analyse/inverterAnalyse/components/historyDetail.vue

@@ -0,0 +1,149 @@
+<template>
+  <div class="body-wrapper">
+    <div class="form-wrapper">
+      <div class="date-wrapper">
+        开始时间
+        <div class="date-timer">
+          <el-date-picker
+            v-model="starttime"
+            type="datetime"
+            size="mini"
+            placeholder="选择日期"
+            format="YYYY-MM-DD HH:mm:ss"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="date-wrapper">
+        结束时间
+        <div class="date-timer">
+          <el-date-picker
+            v-model="endtime"
+            size="mini"
+            type="datetime"
+            placeholder="选择日期"
+            format="YYYY-MM-DD HH:mm:ss"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="date-wrapper">
+        时间间隔(秒)
+        <div class="date-timer">
+          <el-input-number
+            v-model="numgap"
+            :precision="0"
+            size="mini"
+          ></el-input-number>
+        </div>
+      </div>
+      <el-button
+        style="margin-left: 15px"
+        round
+        size="mini"
+        class="searchBtn"
+        @click="searchChartData"
+        >查询
+      </el-button>
+    </div>
+    <div class="chart-wrapper">
+      <simpleScatter width="100%" height="100%" :list="lineData" />
+    </div>
+  </div>
+</template>
+<script>
+import dayjs from "dayjs";
+import { getApiInverterAnalyseHistory } from "@/api/monthlyPerformanceAnalysis.js";
+import simpleScatter from "@/components/chart/scatter/simple-scatter.vue";
+export default {
+  name: "inverterDialog", //逆变器散点图
+  components: { simpleScatter },
+  props: {},
+  data() {
+    return {
+      starttime: "",
+      endtime: "",
+      numgap: 900,
+      hisInverterVal: "",
+      title: "",
+      lineData: [],
+    };
+  },
+  created() {},
+  methods: {
+    init(row) {
+      this.hisInverterVal = row.inverterId;
+      this.title = row.inverterName;
+      this.searchChartData();
+    },
+    async searchChartData() {
+      let params = {
+        wtid: this.hisInverterVal,
+        beginDate: this.starttime,
+        endDate: this.endtime,
+        interval: this.numgap,
+      };
+      const { data } = await getApiInverterAnalyseHistory(params);
+      this.lineData = [
+        {
+          title: this.title,
+          value: data.map((item) => [
+            item.inputVoltage.toFixed(2),
+            item.conversionRate.toFixed(2),
+          ]),
+        },
+      ];
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+::v-deep .body-wrapper {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  .form-wrapper {
+    display: flex;
+    align-items: center;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #b3b3b3;
+    margin-left: 10px;
+    margin-bottom: 10px;
+    .date-wrapper {
+      display: flex;
+      align-items: center;
+      margin-right: 15px;
+      .date-timer {
+        margin-left: 10px;
+        .el-input .el-input__inner {
+          font-size: 13px;
+          color: #b3b3b3;
+        }
+        .el-input-number {
+          .el-input-number__decrease,
+          .el-input-number__increase {
+            height: 28px;
+            top: 0;
+          }
+        }
+      }
+    }
+    .searchBtn {
+      background-color: rgba(0, 70, 199, 0.2);
+      border: 1px solid #3b4c6c;
+      color: #b3b3b3;
+      font-size: 14px;
+
+      &:hover {
+        background-color: rgba(0, 70, 199, 0.5);
+        color: #ffffff;
+      }
+    }
+  }
+  .chart-wrapper {
+    height: calc(100% - 40px);
+  }
+}
+</style>

+ 713 - 0
src/views/layout/economicsOperation/analyse/inverterAnalyse/index.vue

@@ -0,0 +1,713 @@
+<template>
+  <div class="powerLinefitting">
+    <div class="powerLinefitting_topAll">
+      <div class="powerLinefitting_top">
+        <div class="form-wrapper">
+          <div class="select-wrapper">
+            <el-select
+              size="mini"
+              v-model="tabEvent"
+              placeholder="请选择"
+              @change="changeBtn"
+            >
+              <el-option
+                v-for="item in tabOptions"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <el-select
+              size="mini"
+              v-model="companyVal"
+              placeholder="请选择"
+              @change="changeCompan"
+            >
+              <el-option
+                v-for="item in companyOptions"
+                :key="item.id"
+                :label="item.aname"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <el-select
+              size="mini"
+              v-model="stationVal"
+              placeholder="请选择"
+              clearable
+              @change="changeStation"
+            >
+              <el-option
+                v-for="item in stationOptions"
+                :key="item.id"
+                :label="item.aname"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="but">
+          <el-button round size="mini" class="buttons" @click="getTableData"
+            >查询</el-button
+          >
+          <el-button round size="mini" class="buttons" @click="downXlsxFn"
+            >导出</el-button
+          >
+        </div>
+      </div>
+    </div>
+    <div style="background: rgba(0, 0, 0, 0.4)">
+      <div class="powerLinefitting_title clearfix">
+        <div class="leftContent floatLeft"><span>逆变器分析</span></div>
+        <div class="rightContent floatRight"></div>
+      </div>
+
+      <div class="powerLinefitting_Table">
+        <el-table
+          :data="stationAnalyseData"
+          stripe
+          size="mini"
+          height="75vh"
+          ref="fitting_table"
+          style="width: 100%"
+        >
+          <el-table-column
+            v-for="(item, index) in tableHeader"
+            :key="index"
+            sortable
+            :prop="item.code"
+            :label="item.title"
+            align="center"
+          >
+            <template #default="scope" v-if="item.title === '操作'">
+              <span class="historyBtn" @click="handleRowClick(scope.row)"
+                >历史</span
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+          <el-pagination
+            @current-change="handleCurrentChange"
+            :current-page="page.currentPage"
+            :page-size="page.pagesize"
+            layout="total, prev, pager, next, jumper"
+            :total="page.total"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+    <el-dialog
+      class="dialogs"
+      width="85%"
+      top="8vh"
+      v-model="dialogCurveVisible"
+      :show-close="true"
+    >
+      <template #title>
+        <div class="dialog-title">
+          <img
+            class="dialog-title-img"
+            src="@/assets/img/images/dialog-title.png"
+          />
+          <div class="title">{{ dialogTitle }}</div>
+          <!--                    <i class="el-icon-full-screen"  @click="c"></i>-->
+        </div>
+      </template>
+      <div class="dialog-body" style="height: 65vh; width: 100%">
+        <HistoryDetail ref="inverterDetail" />
+        <img
+          class="dialog-img"
+          style="bottom: 65px"
+          src="@/assets/img/images/dialog.png"
+        />
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getApiInverterAnalyse,
+  getApiInverterAnalyseHistory,
+} from "@/api/monthlyPerformanceAnalysis";
+import simpleScatter from "@/components/chart/scatter/simple-scatter.vue";
+import { GetOrganization, GetStationByCompany } from "@/api/headerNav.js";
+import utils from "@/utils/downXlsx";
+import dayjs from "dayjs";
+import HistoryDetail from "./components/historyDetail.vue";
+export default {
+  name: "inverterAnalyse", //逆变器分析
+  data() {
+    return {
+      companyVal: "",
+      companyOptions: [],
+      stationVal: "",
+      stationOptions: [],
+      starTime: "",
+      endTime: "",
+      stationAnalyseData: [
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0002_EQ",
+          inverterName: "2号逆变器",
+          inputPower: 500.2662048339844,
+          outputPower: 0.0,
+          inputVoltage: 500.2662048339844,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0031_EQ",
+          inverterName: "31号逆变器",
+          inputPower: 783.1702880859375,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0048_EQ",
+          inverterName: "48号逆变器",
+          inputPower: 481.5349426269531,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0006_EQ",
+          inverterName: "6号逆变器",
+          inputPower: 711.6322021484375,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0029_EQ",
+          inverterName: "29号逆变器",
+          inputPower: 749.9651489257812,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0054_EQ",
+          inverterName: "54号逆变器",
+          inputPower: 866.0036010742188,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0025_EQ",
+          inverterName: "25号逆变器",
+          inputPower: 634.5596313476562,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0050_EQ",
+          inverterName: "50号逆变器",
+          inputPower: 711.2235107421875,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0015_EQ",
+          inverterName: "15号逆变器",
+          inputPower: 574.1805419921875,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0038_EQ",
+          inverterName: "38号逆变器",
+          inputPower: 866.0036010742188,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0019_EQ",
+          inverterName: "19号逆变器",
+          inputPower: 839.8558959960938,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0041_EQ",
+          inverterName: "41号逆变器",
+          inputPower: 425.5791931152344,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0034_EQ",
+          inverterName: "34号逆变器",
+          inputPower: 550.10986328125,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0009_EQ",
+          inverterName: "9号逆变器",
+          inputPower: 476.3232421875,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0022_EQ",
+          inverterName: "22号逆变器",
+          inputPower: 1076.310791015625,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0001_EQ",
+          inverterName: "1号逆变器",
+          inputPower: 441.71435546875,
+          outputPower: 0.0,
+          inputVoltage: 441.71435546875,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0005_EQ",
+          inverterName: "5号逆变器",
+          inputPower: 363.60186767578125,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0030_EQ",
+          inverterName: "30号逆变器",
+          inputPower: 700.1009521484375,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0026_EQ",
+          inverterName: "26号逆变器",
+          inputPower: 617.9081420898438,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+        {
+          inverterId: "JS_JBGS_JBCN_G_IN_0051_EQ",
+          inverterName: "51号逆变器",
+          inputPower: 768.8181762695312,
+          outputPower: 0.0,
+          inputVoltage: 0.0,
+          conversionRate: 0.0,
+        },
+      ],
+      stationLineData: [],
+      tableHeader: [
+        { title: "逆变器", code: "inverterName" },
+        { title: "输入功率", code: "inputPower" },
+        { title: "输出功率", code: "outputPower" },
+        { title: "输入电压", code: "inputVoltage" },
+        { title: "转换率", code: "conversionRate" },
+        { title: "操作" },
+      ],
+      tabEvent: -2,
+      tabOptions: [{ id: -2, name: "光伏" }],
+      page: {
+        pagesize: 20,
+        currentPage: 1,
+        total: 0,
+      },
+      dialogCurveVisible: false,
+      dialogTitle: "",
+      dialogFull: false,
+      inverter: {},
+    };
+  },
+  components: { HistoryDetail },
+  created() {
+    this.starttime = dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss");
+    this.endtime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+    this.getCompanyData();
+  },
+  methods: {
+    //切换风电光伏
+    changeBtn() {},
+    // 获取公司列表
+    async getCompanyData() {
+      this.companyOptions = [];
+      const datas = await GetOrganization({ type: this.tabEvent });
+      this.companyOptions = datas.data;
+      this.companyVal = datas.data[0]?.id;
+      this.getStationData(this.companyVal);
+    },
+    // 获取场站列表
+    async getStationData() {
+      this.stationOptions = [];
+      let params = {
+        type: this.tabEvent,
+        companyids: this.companyVal,
+      };
+      const datas = await GetStationByCompany(params);
+      this.stationOptions = datas.data;
+      this.stationVal = datas.data[0].id;
+      this.getTableData();
+    },
+    //切换公司
+    changeCompan(val) {
+      this.companyVal = val;
+      this.getStationData();
+    },
+    //切换场站
+    changeStation(val) {
+      this.stationVal = val;
+      this.getTableData();
+    },
+    async getTableData() {
+      let params = {
+        wpid: this.stationVal,
+        type: this.tabEvent,
+        companys: this.companyVal,
+        pageSize: this.page.pagesize,
+        pageNum: this.page.currentPage,
+      };
+      const { data } = await getApiInverterAnalyse(params);
+      this.stationAnalyseData = data.records.map((item) => {
+        return {
+          ...item,
+          inputPower: item.inputPower ? item.inputPower.toFixed(2) : 0,
+          outputPower: item.outputPower ? item.outputPower.toFixed(2) : 0,
+          inputVoltage: item.inputVoltage ? item.inputVoltage.toFixed(2) : 0,
+          conversionRate: item.conversionRate
+            ? item.conversionRate.toFixed(2)
+            : 0,
+        };
+      });
+      this.page.total = data.total;
+    },
+    handleCurrentChange(val) {
+      this.page.currentPage = val;
+      this.getTableData();
+    },
+    handleRowClick(row) {
+      this.dialogCurveVisible = true;
+      this.dialogTitle = "历史数据查询";
+      this.$nextTick(() => {
+        this.$refs.inverterDetail.starttime = dayjs()
+          .startOf("day")
+          .format("YYYY-MM-DD HH:mm:ss");
+        this.$refs.inverterDetail.endtime = dayjs().format(
+          "YYYY-MM-DD HH:mm:ss"
+        );
+        this.$refs.inverterDetail.init(row);
+      });
+    },
+    downXlsxFn() {
+      let header = [];
+      this.tableHeader.forEach((it) => {
+        header.push(it.title);
+      });
+      utils.exportExcel(this.$refs["fitting_table"].$el, header, "逆变器分析");
+    },
+  },
+};
+</script>
+
+<style lang="less">
+.powerLinefitting {
+  padding: 0 23px;
+  .powerLinefitting_topAll {
+    display: flex;
+    justify-content: space-between;
+    .powerLinefitting_top {
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      margin-top: 10px;
+      margin-bottom: 10px;
+      .form-wrapper {
+        display: flex;
+        align-items: center;
+        .select-wrapper {
+          display: flex;
+          align-items: center;
+          .el-select {
+            width: 155px;
+            .el-input .el-input__inner {
+              width: 150px;
+            }
+          }
+        }
+        .date-wrapper {
+          display: flex;
+          align-items: center;
+          font-size: 14px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #b3b3b3;
+          margin-left: 10px;
+          .date-item-wrapper {
+            display: flex;
+            align-items: center;
+            margin-right: 15px;
+            .date-item-date {
+              margin-left: 10px;
+              .el-input .el-input__inner {
+                font-size: 13px;
+                color: #b3b3b3;
+              }
+            }
+          }
+        }
+      }
+      .station {
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #b3b3b3;
+        margin-right: 25px;
+      }
+      .search-input {
+        margin-left: 10px;
+        .el-input__inner {
+          width: 175px;
+        }
+        .el-input__suffix {
+          right: -50px;
+        }
+      }
+
+      .but {
+        display: flex;
+        flex-direction: row;
+        align-content: center;
+        .buttons:nth-child(1) {
+          background: rgba(0, 70, 199, 0.6);
+          border: 1px solid #1f51ae;
+          border-radius: 13px;
+          color: #fff;
+          &:hover {
+            background: rgba(14, 90, 229, 0.9);
+            border-radius: 13px;
+            color: #fff;
+          }
+        }
+        .buttons:nth-child(2) {
+          background: rgba(67, 81, 107, 0.3);
+          border: 1px solid #3b4c6c;
+          border-radius: 13px;
+          font-size: 14px;
+          color: #b3b3b3;
+        }
+      }
+    }
+    .selections {
+      display: flex;
+      margin-top: 10px;
+      position: relative;
+      right: 120px;
+      .selections_btn {
+        flex: 0 0 55px;
+        text-align: center;
+        height: 33px;
+        line-height: 33px;
+        margin-right: 8px;
+        color: #fff;
+        font-size: 1.296vh;
+        background: fade(#606769, 20);
+        border: 1px solid fade(#606769, 20);
+        border-radius: 20px;
+        &:hover,
+        &.active {
+          background: fade(#0046c7, 80);
+          border: 1px solid #0046c7;
+          color: #b9b9b9;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .powerLinefitting_title {
+    padding-left: 10px;
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      line-height: 41px;
+      background: url("../../../../../assets/imgs/title_left_bg.png");
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ffffff;
+        margin-left: 25px;
+      }
+    }
+    .floatLeft {
+      float: left;
+    }
+    .floatRight {
+      float: right;
+    }
+    .rightContent {
+      width: 212px;
+      height: 28px;
+      margin-top: 13px;
+      background: url("../../../../../assets/imgs/title_right_bg.png");
+    }
+  }
+  .clearfix::after {
+    content: "";
+    clear: both;
+    height: 0;
+    line-height: 0;
+    visibility: hidden;
+    display: block;
+  }
+  .clearfix {
+    zoom: 1;
+  }
+
+  .powerLinefitting_Table {
+    .historyBtn {
+      cursor: pointer;
+      color: #1c99ff;
+      padding: 3px 10px;
+    }
+    margin: 0 5px 5px 5px;
+    padding-bottom: 10px;
+    .pagination-wrapper {
+      display: flex;
+      justify-content: flex-end;
+      padding-right: 20px;
+      .el-pagination {
+        display: flex;
+        align-items: center;
+        .btn-prev,
+        .btn-next,
+        .btn-quickprev,
+        .btn-quicknext,
+        .el-pager,
+        .number {
+          background: rgba(58, 63, 75, 0.4);
+          color: #fff;
+          border-radius: 2px;
+        }
+
+        .el-pager .active {
+          background: #083c94;
+          color: #fff;
+          border-radius: 2px;
+        }
+
+        .el-pagination__total,
+        .el-pagination__jump {
+          color: #fff;
+          .el-input__inner {
+            background: rgba(58, 63, 75, 0.2);
+            border: 1px solid #3e4349;
+            color: #fff;
+            border-radius: 2px;
+          }
+        }
+      }
+    }
+    .el-table--mini {
+      margin: 5px;
+      .el-table__header-wrapper {
+        tr {
+          background: rgba(83, 89, 104, 0.3) !important;
+          th {
+            vertical-align: top !important;
+          }
+          .cell {
+            color: #b3b3b3;
+            font-family: MicrosoftYaHei;
+            font-size: 14px;
+          }
+        }
+      }
+      .el-table__body-wrapper {
+        tr {
+          &:nth-child(2n) {
+            background: rgba(83, 89, 104, 0.05) !important;
+          }
+          .cell {
+            color: #d8d8d9;
+            font-family: ArialMT;
+            font-size: 13px;
+            height: 25px !important;
+          }
+        }
+      }
+    }
+  }
+  ::v-deep .body-wrapper {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    .form-wrapper {
+      display: flex;
+      align-items: center;
+      font-size: 14px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #b3b3b3;
+      margin-left: 10px;
+      margin-bottom: 10px;
+      .date-wrapper {
+        display: flex;
+        align-items: center;
+        margin-right: 15px;
+        .date-timer {
+          margin-left: 10px;
+          .el-input .el-input__inner {
+            font-size: 13px;
+            color: #b3b3b3;
+          }
+          .el-input-number {
+            .el-input-number__decrease,
+            .el-input-number__increase {
+              height: 28px;
+              top: 0;
+            }
+          }
+        }
+      }
+      .searchBtn {
+        background-color: rgba(0, 70, 199, 0.2);
+        border: 1px solid #3b4c6c;
+        color: #b3b3b3;
+        font-size: 14px;
+
+        &:hover {
+          background-color: rgba(0, 70, 199, 0.5);
+          color: #ffffff;
+        }
+      }
+    }
+    .chart-wrapper {
+      height: calc(100% - 40px);
+    }
+  }
+
+  .el-picker__popper .el-date-range-picker__header .el-picker-panel__icon-btn {
+    color: #fff;
+  }
+  .el-picker__popper .el-date-table .in-range div {
+    background: #43516b;
+  }
+}
+</style>

+ 602 - 0
src/views/layout/economicsOperation/analyse/lightResourceAnalyse/index.vue

@@ -0,0 +1,602 @@
+<template>
+  <div class="powerLinefitting">
+    <div class="powerLinefitting_topAll">
+      <div class="powerLinefitting_top">
+        <div class="form-wrapper">
+          <div class="select-wrapper">
+            <el-select
+                size="mini"
+                v-model="tabEvent"
+                placeholder="请选择"
+                @change="changeBtn"
+            >
+              <el-option
+                  v-for="item in tabOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <el-select
+                size="mini"
+                v-model="companyVal"
+                placeholder="请选择"
+                @change="changeCompan"
+            >
+              <el-option
+                  v-for="item in companyOptions"
+                  :key="item.id"
+                  :label="item.aname"
+                  :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <el-select
+                size="mini"
+                v-model="stationVal"
+                placeholder="请选择"
+                clearable
+                multiple
+                collapse-tags
+                @change="changeStation"
+            >
+              <el-option
+                  v-for="item in stationOptions"
+                  :key="item.id"
+                  :label="item.aname"
+                  :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+          <div class="date-wrapper">
+            <div class="date-item-wrapper">
+              开始时间
+              <div class="date-item-date">
+                <el-date-picker
+                    size="mini"
+                    v-model="starTime"
+                    type="datetime"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    placeholder="选择时间"
+                >
+                </el-date-picker>
+              </div>
+            </div>
+            <div class="date-item-wrapper">
+              结束时间
+              <div class="date-item-date">
+                <el-date-picker
+                    size="mini"
+                    v-model="endTime"
+                    type="datetime"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    placeholder="选择时间"
+                >
+                </el-date-picker>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="but">
+          <el-button round size="mini" class="buttons" @click="getTableData"
+          >查询</el-button
+          >
+          <el-button round size="mini" class="buttons" @click="downXlsxFn"
+          >导出</el-button
+          >
+        </div>
+      </div>
+    </div>
+    <div style="background: rgba(0, 0, 0, 0.4)">
+      <div class="powerLinefitting_title clearfix">
+        <div class="leftContent floatLeft"><span>光资源分析</span></div>
+        <div class="rightContent floatRight"></div>
+      </div>
+      <div class="powerLinefitting_Table">
+        <el-table
+            :data="tableData"
+            stripe
+            size="mini"
+            height="48vh"
+            ref="fitting_table"
+            style="width: 100%"
+        >
+          <el-table-column
+              v-for="(item, index) in tableHeader"
+              :key="index"
+              sortable
+              :prop="item.code"
+              :label="item.title"
+              align="center"
+          >
+          </el-table-column>
+        </el-table>
+        <!--    <div class="pagination-wrapper">
+          <el-pagination
+            @current-change="handleCurrentChange"
+            :current-page="page.currentPage"
+            :page-size="page.pagesize"
+            layout="total, prev, pager, next, jumper"
+            :total="page.total"
+          >
+          </el-pagination>
+        </div>
+           <multipleLinesChart
+          height="100%"
+          width="100%"
+          :list="linesData"
+          :units="['W/m²']"
+        />
+        -->
+      </div>
+      <div class="powerLinefitting_Echarts">
+        <div class="chart-name">
+          <div class="point left bottom"></div>
+          <div class="point right bottom"></div>
+          <span>光资源分析曲线</span>
+        </div>
+        <div class="fittingEchartSty">
+          <multipleLinesChart
+              height="100%"
+              width="100%"
+              :list="linesData"
+              :units="['W/m²']"
+          />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getApiLightResourceAnalyse } from "@/api/monthlyPerformanceAnalysis";
+
+import { GetOrganization, GetStationByCompany } from "@/api/headerNav.js";
+import utils from "@/utils/downXlsx";
+import dayjs from "dayjs";
+import multipleLinesChart from "@/components/chart/line/multiple-lines-chart.vue";
+export default {
+  name: "lightResourceAnalyse", //光资源分析
+  data() {
+    return {
+      companyVal: "",
+      companyOptions: [],
+      stationVal: [],
+      stationOptions: [],
+      starTime: "",
+      endTime: "",
+      stationAnalyseData: [],
+      stationLineData: [],
+      tableHeader: [
+        { title: "逆变器", code: "name" },
+        { title: "最大值", code: "maxs" },
+        { title: "最小值", code: "mins" },
+        { title: "平均值", code: "aves" },
+      ],
+      tabEvent: -2,
+      tabOptions: [{ id: -2, name: "光伏" }],
+      page: {
+        pagesize: 20,
+        currentPage: 1,
+        total: 0,
+      },
+      linesData: [{ name: "", yAxisIndex: 0, value: [] }],
+    };
+  },
+  components: { multipleLinesChart },
+  created() {
+    this.starTime = dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss");
+    this.endTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+    this.getCompanyData();
+  },
+  methods: {
+    //切换风电光伏
+    changeBtn() {},
+    // 获取公司列表
+    async getCompanyData() {
+      this.companyOptions = [];
+      const datas = await GetOrganization({ type: this.tabEvent });
+      this.companyOptions = datas.data;
+      this.companyVal = datas.data[0]?.id;
+      this.getStationData(this.companyVal);
+    },
+    // 获取场站列表
+    async getStationData() {
+      this.stationOptions = [];
+      let params = {
+        type: this.tabEvent,
+        companyids: this.companyVal,
+      };
+      const datas = await GetStationByCompany(params);
+      this.stationOptions = datas.data;
+      this.stationVal = [datas.data[0].id, datas.data[1].id, datas.data[2].id];
+      this.getTableData();
+    },
+    //切换公司
+    changeCompan(val) {
+      this.companyVal = val;
+      this.getStationData();
+    },
+    //切换场站
+    changeStation(val) {
+      this.stationVal = val;
+      this.getTableData();
+    },
+    async getTableData() {
+      let params = {
+        wpids: this.stationVal.join(","),
+        type: this.tabEvent,
+        companys: this.companyVal,
+        starttime: this.starTime,
+        endtime: this.endTime,
+      };
+      const { data } = await getApiLightResourceAnalyse(params);
+      this.tableData = data.value;
+      this.linesData = [
+        {
+          name: "辐照度",
+          yAxisIndex: 0,
+          value: data.list.map((item) => {
+            return {
+              ...item,
+              value: item.pjgzd,
+              time: dayjs(item.time).format("YYYY-MM-DD HH:mm:ss"),
+            };
+          }),
+        },
+      ];
+    },
+    handleCurrentChange(val) {
+      this.page.currentPage = val;
+      this.getTableData();
+    },
+    downXlsxFn() {
+      let header = [];
+      this.tableHeader.forEach((it) => {
+        header.push(it.title);
+      });
+      utils.exportExcel(this.$refs["fitting_table"].$el, header, "光资源分析");
+    },
+  },
+};
+</script>
+
+<style lang="less">
+.powerLinefitting {
+  padding: 0 23px;
+  .powerLinefitting_topAll {
+    display: flex;
+    justify-content: space-between;
+    .powerLinefitting_top {
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      margin-top: 10px;
+      margin-bottom: 10px;
+      .form-wrapper {
+        display: flex;
+        align-items: center;
+        .select-wrapper {
+          display: flex;
+          align-items: center;
+          .el-select {
+            width: 155px;
+            .el-input .el-input__inner {
+              width: 150px;
+            }
+          }
+        }
+        .date-wrapper {
+          display: flex;
+          align-items: center;
+          font-size: 14px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #b3b3b3;
+          margin-left: 10px;
+          .date-item-wrapper {
+            display: flex;
+            align-items: center;
+            margin-right: 15px;
+            .date-item-date {
+              margin-left: 10px;
+              .el-input .el-input__inner {
+                font-size: 13px;
+                color: #b3b3b3;
+              }
+            }
+          }
+        }
+      }
+      .station {
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #b3b3b3;
+        margin-right: 25px;
+      }
+      .search-input {
+        margin-left: 10px;
+        .el-input__inner {
+          width: 175px;
+        }
+        .el-input__suffix {
+          right: -50px;
+        }
+      }
+
+      .but {
+        display: flex;
+        flex-direction: row;
+        align-content: center;
+        .buttons:nth-child(1) {
+          background: rgba(0, 70, 199, 0.6);
+          border: 1px solid #1f51ae;
+          border-radius: 13px;
+          color: #fff;
+          &:hover {
+            background: rgba(14, 90, 229, 0.9);
+            border-radius: 13px;
+            color: #fff;
+          }
+        }
+        .buttons:nth-child(2) {
+          background: rgba(67, 81, 107, 0.3);
+          border: 1px solid #3b4c6c;
+          border-radius: 13px;
+          font-size: 14px;
+          color: #b3b3b3;
+        }
+      }
+    }
+    .selections {
+      display: flex;
+      margin-top: 10px;
+      position: relative;
+      right: 120px;
+      .selections_btn {
+        flex: 0 0 55px;
+        text-align: center;
+        height: 33px;
+        line-height: 33px;
+        margin-right: 8px;
+        color: #fff;
+        font-size: 1.296vh;
+        background: fade(#606769, 20);
+        border: 1px solid fade(#606769, 20);
+        border-radius: 20px;
+        &:hover,
+        &.active {
+          background: fade(#0046c7, 80);
+          border: 1px solid #0046c7;
+          color: #b9b9b9;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .powerLinefitting_title {
+    padding-left: 10px;
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      line-height: 41px;
+      background: url("../../../../../assets/imgs/title_left_bg.png");
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ffffff;
+        margin-left: 25px;
+      }
+    }
+    .floatLeft {
+      float: left;
+    }
+    .floatRight {
+      float: right;
+    }
+    .rightContent {
+      width: 212px;
+      height: 28px;
+      margin-top: 13px;
+      background: url("../../../../../assets/imgs/title_right_bg.png");
+    }
+  }
+  .clearfix::after {
+    content: "";
+    clear: both;
+    height: 0;
+    line-height: 0;
+    visibility: hidden;
+    display: block;
+  }
+  .clearfix {
+    zoom: 1;
+  }
+
+  .powerLinefitting_Table {
+    margin: 0 5px 5px 5px;
+    padding-bottom: 10px;
+    .pagination-wrapper {
+      display: flex;
+      justify-content: flex-end;
+      padding-right: 20px;
+      .el-pagination {
+        display: flex;
+        align-items: center;
+        .btn-prev,
+        .btn-next,
+        .btn-quickprev,
+        .btn-quicknext,
+        .el-pager,
+        .number {
+          background: rgba(58, 63, 75, 0.4);
+          color: #fff;
+          border-radius: 2px;
+        }
+
+        .el-pager .active {
+          background: #083c94;
+          color: #fff;
+          border-radius: 2px;
+        }
+
+        .el-pagination__total,
+        .el-pagination__jump {
+          color: #fff;
+          .el-input__inner {
+            background: rgba(58, 63, 75, 0.2);
+            border: 1px solid #3e4349;
+            color: #fff;
+            border-radius: 2px;
+          }
+        }
+      }
+    }
+    .el-table--mini {
+      margin: 5px;
+      .el-table__header-wrapper {
+        tr {
+          background: rgba(83, 89, 104, 0.3) !important;
+          th {
+            vertical-align: top !important;
+          }
+          .cell {
+            color: #b3b3b3;
+            font-family: MicrosoftYaHei;
+            font-size: 14px;
+          }
+        }
+      }
+      .el-table__body-wrapper {
+        tr {
+          &:nth-child(2n) {
+            background: rgba(83, 89, 104, 0.05) !important;
+          }
+          .cell {
+            color: #d8d8d9;
+            font-family: ArialMT;
+            font-size: 13px;
+            height: 25px !important;
+          }
+        }
+      }
+    }
+    .historyBtn {
+      background: #43516b;
+      border-radius: 15px;
+      margin-top: 5px;
+      border: 1px solid #43516b;
+      span {
+        color: #fff;
+      }
+    }
+  }
+
+  .powerLinefitting_Echarts {
+    margin-top: 10px;
+    width: 100%;
+    background: rgba(0, 0, 0, 0.45);
+    position: relative;
+    height: 39px;
+    // border-bottom: 1px solid rgba(153, 153, 153, 0.5);
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #ffffff;
+    .chart-name {
+      display: flex;
+      align-items: center;
+      padding-left: 20px;
+      position: relative;
+      height: 39px;
+      width: 98%;
+      margin-left: 1%;
+      border-bottom: 1px solid rgba(153, 153, 153, 0.5);
+      font-size: 16px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #ffffff;
+      .point {
+        width: 6px;
+        height: 1px;
+        background-color: #ffffff;
+        position: absolute;
+
+        &.left {
+          left: 0;
+        }
+
+        &.right {
+          right: 0;
+        }
+
+        &.top {
+          top: -1px;
+        }
+
+        &.bottom {
+          bottom: -1px;
+        }
+      }
+    }
+    .fittingEchartSty {
+      width: 100%;
+      height: 280px;
+      background: rgba(0, 0, 0, 0.45);
+    }
+  }
+
+  .point {
+    width: 6px;
+    height: 1px;
+    background-color: #ffffff;
+    position: absolute;
+
+    &.left {
+      left: 0;
+    }
+
+    &.right {
+      right: 0;
+    }
+
+    &.top {
+      top: -1px;
+    }
+
+    &.bottom {
+      bottom: -1px;
+    }
+  }
+  .el-overlay {
+    .el-overlay-dialog {
+      overflow-y: hidden !important;
+      .powerLinefittinghistoryModel {
+        margin-top: 0 !important;
+        .el-dialog__body {
+          padding-top: 10px;
+        }
+      }
+      .contrastModal {
+        .el-dialog__body {
+          padding-top: 10px;
+        }
+      }
+    }
+  }
+
+  .el-picker__popper .el-date-range-picker__header .el-picker-panel__icon-btn {
+    color: #fff;
+  }
+  .el-picker__popper .el-date-table .in-range div {
+    background: #43516b;
+  }
+}
+</style>

+ 1 - 9
src/views/layout/economicsOperation/analyse/standAloneAnalyse/historyDetail.vue

@@ -389,13 +389,5 @@ export default {
     }
     }
   }
   }
 }
 }
-.historyBtn {
-  background: #43516b;
-  border-radius: 15px;
-  margin-top: 5px;
-  border: 1px solid #43516b;
-  span {
-    color: #fff;
-  }
-}
+
 </style>
 </style>

+ 1 - 9
src/views/layout/economicsOperation/analyse/standAloneAnalyse/historyDetailFd.vue

@@ -452,13 +452,5 @@ export default {
     }
     }
   }
   }
 }
 }
-.historyBtn {
-  background: #43516b;
-  border-radius: 15px;
-  margin-top: 5px;
-  border: 1px solid #43516b;
-  span {
-    color: #fff;
-  }
-}
+
 </style>
 </style>

+ 9 - 9
src/views/layout/economicsOperation/analyse/standAloneAnalyse/index.vue

@@ -182,19 +182,19 @@ export default {
       tableHeaderGf: [
       tableHeaderGf: [
         { title: "逆变器", code: "wtname" },
         { title: "逆变器", code: "wtname" },
         { title: "型号", code: "model" },
         { title: "型号", code: "model" },
-        { title: "日系统效率", code: "rxtxl" },
-        { title: "日拟合优度(%)", code: "rlsl" },
-        { title: "日辐照(W/m²)", code: "rzhxl" },
+        { title: "日排行榜", code: "rxtxl" },
+        { title: "日拟合优度", code: "rlsl" },
+        { title: "日转换率", code: "rzhxl" },
         // { title: "日离散率", code: "rlsl" },
         // { title: "日离散率", code: "rlsl" },
         // { title: "日转换效率", code: "rzhxl" },
         // { title: "日转换效率", code: "rzhxl" },
-        { title: "月系统效率", code: "yxtxl" },
-        { title: "月拟合优度(%)", code: "ylsl" },
-        { title: "月辐照(W/m²)", code: "yzhxl" },
+        { title: "月排行榜", code: "yxtxl" },
+        { title: "月拟合优度", code: "ylsl" },
+        { title: "月转换率", code: "yzhxl" },
         // { title: "月离散率", code: "ylsl" },
         // { title: "月离散率", code: "ylsl" },
         // { title: "月转换效率", code: "yzhxl" },
         // { title: "月转换效率", code: "yzhxl" },
-        { title: "年系统效率", code: "nxtxl" },
-        { title: "年拟合优度(%)", code: "nlsl" },
-        { title: "年辐照(W/m²)", code: "nzhxl" },
+        { title: "年排行榜", code: "nxtxl" },
+        { title: "年拟合优度", code: "nlsl" },
+        { title: "年转换率", code: "nzhxl" },
         // { title: "年离散率", code: "nlsl" },
         // { title: "年离散率", code: "nlsl" },
         // { title: "年转换效率", code: "nzhxl" },
         // { title: "年转换效率", code: "nzhxl" },
         { title: "操作" },
         { title: "操作" },

+ 6 - 6
src/views/layout/economicsOperation/analyse/standAloneAnalyse/indexFd.vue

@@ -183,14 +183,14 @@ export default {
         { title: "风机", code: "wtcode" },
         { title: "风机", code: "wtcode" },
         { title: "型号", code: "modelId" },
         { title: "型号", code: "modelId" },
         { title: "日排行榜", code: "dayTop" },
         { title: "日排行榜", code: "dayTop" },
-        { title: "日拟合优度(%)", code: "dayGoodness" },
-        { title: "日风速(m/s)", code: "daySpeed" },
+        { title: "日拟合优度", code: "dayGoodness" },
+        { title: "日平均风速", code: "daySpeed" },
         { title: "月排行榜", code: "monthTop" },
         { title: "月排行榜", code: "monthTop" },
-        { title: "月拟合优度(%)", code: "monthGoodness" },
-        { title: "月风速(m/s)", code: "monthSpeed" },
+        { title: "月拟合优度", code: "monthGoodness" },
+        { title: "月平均风速", code: "monthSpeed" },
         { title: "年排行榜", code: "yearTop" },
         { title: "年排行榜", code: "yearTop" },
-        { title: "年拟合优度(%)", code: "yearGoodness" },
-        { title: "年风速(m/s)", code: "yearSpeed" },
+        { title: "年拟合优度", code: "yearGoodness" },
+        { title: "年平均风速", code: "yearSpeed" },
         { title: "操作" },
         { title: "操作" },
       ],
       ],
       page: {
       page: {

+ 102 - 55
src/views/layout/economicsOperation/benchmarkingManagement/valueBenchmarking/index.vue

@@ -4,20 +4,32 @@
       <div class="station">
       <div class="station">
         开始日期
         开始日期
         <div class="search-input">
         <div class="search-input">
-          <el-date-picker v-model="starTime" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
-            popper-class="date-select">
+          <el-date-picker
+            v-model="starTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
           </el-date-picker>
           </el-date-picker>
         </div>
         </div>
       </div>
       </div>
       <div class="station">
       <div class="station">
         结束日期
         结束日期
         <div class="search-input">
         <div class="search-input">
-          <el-date-picker v-model="endTime" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
-            popper-class="date-select">
+          <el-date-picker
+            v-model="endTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
           </el-date-picker>
           </el-date-picker>
         </div>
         </div>
       </div>
       </div>
-      <el-button round size="mini" class="searchColor" @click="getTableDate">搜索</el-button>
+      <el-button round size="mini" class="searchColor" @click="getTableData"
+        >搜索</el-button
+      >
       <!-- <el-button round size="mini">导出</el-button> -->
       <!-- <el-button round size="mini">导出</el-button> -->
     </div>
     </div>
     <div class="data-bodys">
     <div class="data-bodys">
@@ -26,22 +38,70 @@
         <div class="rightContent right"></div>
         <div class="rightContent right"></div>
       </div>
       </div>
       <div class="economicTable">
       <div class="economicTable">
-				<!-- theoreticalgeneratity 理论发电量
+        <!-- theoreticalgeneratity 理论发电量
 				generatity  发电量
 				generatity  发电量
 				faultLoss 故障损失率
 				faultLoss 故障损失率
 				mainLoss 维护损失率
 				mainLoss 维护损失率
 				performanceLoss 性能损失
 				performanceLoss 性能损失
 				rationingLoss 限电损失
 				rationingLoss 限电损失
 				involvesloss 受累损失 -->
 				involvesloss 受累损失 -->
-        <el-table :data="tableData" style="width: 100%" size="mini" stripe height="85vh">
-          <el-table-column align="center" prop="dutyName" label="值班员" width="200" sortable></el-table-column>
-          <el-table-column align="center" prop="theoreticalGeneratity" label="理论发电量" sortable></el-table-column>
-          <el-table-column align="center" prop="generatity" label="发电量" sortable></el-table-column>
-          <el-table-column align="center" prop="faultLoss" label="故障损失" sortable></el-table-column>
-          <el-table-column align="center" prop="mainLoss" label="维护损失" sortable></el-table-column>
-          <el-table-column align="center" prop="performanceLoss" label="性能损失" sortable></el-table-column>
-          <el-table-column align="center" prop="rationingLoss" label="限电损失" sortable></el-table-column>
-          <el-table-column align="center" prop="involvesLoss" label="受累损失" sortable></el-table-column>
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          stripe
+          height="85vh"
+        >
+          <el-table-column
+            align="center"
+            prop="dutyName"
+            label="班值"
+            width="200"
+            sortable
+          ></el-table-column>
+
+          <el-table-column
+            align="center"
+            prop="theoreticalGeneratity"
+            label="理论发电量"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="generatity"
+            label="发电量"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="faultLoss"
+            label="故障损失"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="mainLoss"
+            label="维护损失"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="performanceLoss"
+            label="性能损失"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="rationingLoss"
+            label="限电损失"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="involvesLoss"
+            label="受累损失"
+            sortable
+          ></el-table-column>
         </el-table>
         </el-table>
       </div>
       </div>
     </div>
     </div>
@@ -50,54 +110,43 @@
 
 
 <script>
 <script>
 import dayjs from "dayjs";
 import dayjs from "dayjs";
-import { zjdb } from '@/api/performance'
+import { zjdb } from "@/api/performance";
 export default {
 export default {
-  name: 'curveAnalyse',
-  components: {
-  },
+  name: "valueBenchmarking",
+  components: {},
   data() {
   data() {
     return {
     return {
-      starTime: '',
-      endTime: '',
+      starTime: "",
+      endTime: "",
       company: "",
       company: "",
       companyOptions: [],
       companyOptions: [],
       tableData: [],
       tableData: [],
-    }
+    };
   },
   },
   watch: {},
   watch: {},
   filters: {},
   filters: {},
   computed: {},
   computed: {},
   created() {
   created() {
-    let date = new Date();
-    date.setDate(1);
-    let month = parseInt(date.getMonth() + 1);
-    let day = date.getDate();
-    if (month < 10) {
-      month = '0' + month;
-    }
-    if (day < 10) {
-      day = '0' + day;
-    }
-    this.starTime = date.getFullYear() + '-' + month + '-' + day;
-    this.endTime = dayjs(new Date().getTime()).format("YYYY-MM-DD");
-    this.initialization()
+    this.starTime = dayjs().startOf("month").format("YYYY-MM-DD");
+    this.endTime = dayjs().format("YYYY-MM-DD");
+    this.initialization();
   },
   },
   methods: {
   methods: {
     initialization() {
     initialization() {
-      this.getTableDate()
+      this.getTableData();
     },
     },
-    getTableDate(){
+    getTableData() {
       zjdb({
       zjdb({
         beginDate: this.starTime,
         beginDate: this.starTime,
         endDate: this.endTime,
         endDate: this.endTime,
-      }).then(res =>{
-        if(res){
-          this.tableData = res.data
+      }).then((res) => {
+        if (res) {
+          this.tableData = res.data;
         }
         }
-      })
-    }
+      });
+    },
   },
   },
-  mounted() { },
+  mounted() {},
   // beforeDestroy() { },
   // beforeDestroy() { },
 };
 };
 </script>
 </script>
@@ -117,7 +166,7 @@ export default {
     font-size: 14px;
     font-size: 14px;
     font-family: Microsoft YaHei;
     font-family: Microsoft YaHei;
     font-weight: 400;
     font-weight: 400;
-    color: #B3B3B3;
+    color: #b3b3b3;
     margin-left: 10px;
     margin-left: 10px;
   }
   }
 
 
@@ -134,12 +183,12 @@ export default {
 
 
   .buttons {
   .buttons {
     background-color: rgba(0, 70, 199, 0.2);
     background-color: rgba(0, 70, 199, 0.2);
-    border: 1px solid #3B4C6C;
-    color: #B3B3B3;
+    border: 1px solid #3b4c6c;
+    color: #b3b3b3;
     font-size: 14px;
     font-size: 14px;
 
 
     &:hover {
     &:hover {
-      background-color: rgba(0, 70, 199, .5);
+      background-color: rgba(0, 70, 199, 0.5);
       color: #ffffff;
       color: #ffffff;
     }
     }
   }
   }
@@ -157,7 +206,8 @@ export default {
   padding: 0 20px;
   padding: 0 20px;
   box-sizing: border-box;
   box-sizing: border-box;
 
 
-  .economicTable {}
+  .economicTable {
+  }
 
 
   .line {
   .line {
     padding-bottom: 5px;
     padding-bottom: 5px;
@@ -171,7 +221,7 @@ export default {
         font-size: 16px;
         font-size: 16px;
         font-family: Microsoft YaHei;
         font-family: Microsoft YaHei;
         font-weight: 400;
         font-weight: 400;
-        color: #FFFFFF;
+        color: #ffffff;
         margin-left: 25px;
         margin-left: 25px;
       }
       }
     }
     }
@@ -183,8 +233,6 @@ export default {
       background: url("../../../../../assets/imgs/title_right_bg.png");
       background: url("../../../../../assets/imgs/title_right_bg.png");
     }
     }
   }
   }
-
-
 }
 }
 
 
 .clearfix::after {
 .clearfix::after {
@@ -210,14 +258,13 @@ export default {
 
 
 .searchColor {
 .searchColor {
   background-color: rgba(0, 70, 199, 0.2);
   background-color: rgba(0, 70, 199, 0.2);
-  border: 1px solid #3B4C6C;
-  color: #B3B3B3;
+  border: 1px solid #3b4c6c;
+  color: #b3b3b3;
   font-size: 14px;
   font-size: 14px;
 
 
   &:hover {
   &:hover {
-    background-color: rgba(0, 70, 199, .5);
+    background-color: rgba(0, 70, 199, 0.5);
     color: #ffffff;
     color: #ffffff;
   }
   }
 }
 }
 </style>
 </style>
-

+ 1 - 1
src/views/layout/economicsOperation/companyHomepage/index.vue

@@ -259,7 +259,7 @@
       </div>-->
       </div>-->
     </div>
     </div>
     <div class="photovoltaic-data">
     <div class="photovoltaic-data">
-      <Card :dataSource="cardData" :typeStr="typeNode" :theme="themeType" />
+      <Card :dataSource="cardData" :typeStr="typeNode" :theme="themeType" :isStation="true"/>
       <!-- <Card
       <!-- <Card
         v-if="isActive === 'card'"
         v-if="isActive === 'card'"
         :dataSource="cardData"
         :dataSource="cardData"

+ 6 - 1
src/views/layout/economicsOperation/companyHomepage/indexGf.vue

@@ -259,7 +259,12 @@
       </div>-->
       </div>-->
     </div>
     </div>
     <div class="photovoltaic-data">
     <div class="photovoltaic-data">
-      <Card :dataSource="cardData" :typeStr="typeNode" :theme="themeType" />
+      <Card
+        :dataSource="cardData"
+        :typeStr="typeNode"
+        :theme="themeType"
+        :isStation="true"
+      />
       <!-- <Card
       <!-- <Card
         v-if="isActive === 'card'"
         v-if="isActive === 'card'"
         :dataSource="cardData"
         :dataSource="cardData"

+ 16 - 7
src/views/layout/economicsOperation/homePage/components/card.vue

@@ -21,14 +21,24 @@
                 "
                 "
               />
               />
             </div> -->
             </div> -->
-            <!--            <img :src="item.image ? item.image : !isStation ? require('@assets/img/images/level-one_company.png') : require('@assets/img/images/level-two_power-plant.png')" class="card-img" @click="jumpLevelTwo(item)">-->
+            <!-- <img
+              :src="
+                item.image
+                  ? item.image
+                  : !isStation
+                  ? require('@assets/img/images/level-one_company.png')
+                  : require('@assets/img/images/level-two_power-plant.png')
+              "
+              class="card-img"
+              @click="jumpLevelTwo(item)"
+            /> -->
             <img
             <img
               :src="
               :src="
                 item?.image
                 item?.image
                   ? item?.image
                   ? item?.image
-                  : item?.orgType != 'STA'
-                  ? require('@assets/img/images/level-one_company.png')
-                  : require('@assets/img/images/level-two_power-plant.png')
+                  : isStation
+                  ? require('@assets/img/images/level-two_power-plant.png')
+                  : require('@assets/img/images/level-one_company.png')
               "
               "
               class="card-img"
               class="card-img"
               @click="jumpLevelTwo(item)"
               @click="jumpLevelTwo(item)"
@@ -131,8 +141,7 @@
                   <div class="data-prop">理论发电量</div>
                   <div class="data-prop">理论发电量</div>
                   <div class="data-num">
                   <div class="data-num">
                     <div>
                     <div>
-                      <span>{{ item?.llfdl?.toFixed(2) || 0 }}</span
-                      >万kWh
+                      <span>{{ item?.llfdl?.toFixed(2) || 0 }}</span> 万kWh
                     </div>
                     </div>
                   </div>
                   </div>
                 </li>
                 </li>
@@ -503,7 +512,6 @@ export default {
             .data-num {
             .data-num {
               span {
               span {
                 display: inline-block;
                 display: inline-block;
-                min-width: 50px;
                 color: rgb(27, 147, 244);
                 color: rgb(27, 147, 244);
               }
               }
             }
             }
@@ -587,6 +595,7 @@ export default {
               span {
               span {
                 display: inline-block;
                 display: inline-block;
                 min-width: 50px;
                 min-width: 50px;
+                text-align: right;
                 color: rgb(27, 147, 244);
                 color: rgb(27, 147, 244);
               }
               }
             }
             }

+ 20 - 10
src/views/layout/economicsOperation/index.vue

@@ -91,11 +91,11 @@ export default {
             //   icon: '',
             //   icon: '',
             //   path: '/economicsOperation/benchmarkingManagement/standAloneBenchmarking'
             //   path: '/economicsOperation/benchmarkingManagement/standAloneBenchmarking'
             // },
             // },
-            // {
-            //   titleName: '值际对标',
-            //   icon: '',
-            //   path: '/economicsOperation/benchmarkingManagement/standAloneBenchmarking'
-            // }
+            {
+              titleName: "值际对标",
+              icon: "",
+              path: "/economicsOperation/benchmarkingManagement/valueBenchmarking",
+            },
           ],
           ],
         },
         },
         {
         {
@@ -141,15 +141,25 @@ export default {
               path: "/economicsOperation/analyse/stationAnalyse",
               path: "/economicsOperation/analyse/stationAnalyse",
             },
             },
             {
             {
+              titleName: "逆变器分析",
+              icon: "",
+              path: "/economicsOperation/analyse/inverterAnalyse",
+            },
+            {
               titleName: "性能等级评估",
               titleName: "性能等级评估",
               icon: "icon-fjfx",
               icon: "icon-fjfx",
               path: "/economicsOperation/performanceAnalyse/performanceAssess",
               path: "/economicsOperation/performanceAnalyse/performanceAssess",
             },
             },
-            // {
-            //   titleName: "单机月度分析",
-            //   icon: "",
-            //   path: "/economicsOperation/analyse/monthlyAnalysis",
-            // },
+            {
+              titleName: "单机月度分析",
+              icon: "",
+              path: "/economicsOperation/analyse/monthlyAnalysis",
+            },
+            {
+              titleName: "光资源分析",
+              icon: "",
+              path: "/economicsOperation/analyse/lightResourceAnalyse",
+            },
           ],
           ],
         },
         },
         {
         {