Browse Source

部分功能移植

lizaixun 3 years ago
parent
commit
f3bef5d87b
46 changed files with 5328 additions and 115 deletions
  1. 45 0
      src/assets/css/lossBenchmarking/fiveLossRates.scss
  2. 7 0
      src/assets/css/lossBenchmarking/fiveLossRatesHistogramChart.scss
  3. 7 0
      src/assets/css/lossBenchmarking/fiveLossRatesPieChart.scss
  4. 13 0
      src/assets/css/performanceAnalysis/cutAndSpeed.scss
  5. 13 0
      src/assets/css/performanceAnalysis/cutAndSpeedHistory.scss
  6. 0 0
      src/assets/css/performanceAnalysis/fiveLossRates.scss
  7. 13 0
      src/assets/css/performanceAnalysis/plannedGeneration.scss
  8. 13 0
      src/assets/css/performanceAnalysis/rankingCallThePolice.scss
  9. 10 0
      src/assets/css/performanceAnalysis/rankingCurveDeviationRate.scss
  10. 13 0
      src/assets/css/performanceAnalysis/rankingLoadRate.scss
  11. 13 0
      src/assets/css/performanceAnalysis/rankingUtilization.scss
  12. 13 0
      src/assets/css/performanceAnalysis/singleMachineAnalysis.scss
  13. 13 0
      src/assets/css/performanceAnalysis/singleMachineAnalysisOperation.scss
  14. 16 0
      src/assets/css/performanceAnalysis/singleMachinePower.scss
  15. 420 0
      src/assets/js/lossBenchmarking/fiveLossRates.js
  16. 98 0
      src/assets/js/lossBenchmarking/fiveLossRatesHistogramChart.js
  17. 62 0
      src/assets/js/lossBenchmarking/fiveLossRatesPieChart.js
  18. 118 0
      src/assets/js/performanceAnalysis/cutAndSpeed.js
  19. 102 0
      src/assets/js/performanceAnalysis/cutAndSpeedHistory.js
  20. 12 48
      src/assets/js/performanceAnalysis/gradeEvaluation.js
  21. 224 0
      src/assets/js/performanceAnalysis/plannedGeneration.js
  22. 105 0
      src/assets/js/performanceAnalysis/rankingCallThePolice.js
  23. 187 0
      src/assets/js/performanceAnalysis/rankingCurveDeviationRate.js
  24. 95 0
      src/assets/js/performanceAnalysis/rankingLoadRate.js
  25. 88 0
      src/assets/js/performanceAnalysis/rankingUtilization.js
  26. 115 0
      src/assets/js/performanceAnalysis/singleMachineAnalysis.js
  27. 193 0
      src/assets/js/performanceAnalysis/singleMachineAnalysisOperation.js
  28. 234 0
      src/assets/js/performanceAnalysis/singleMachinePower.js
  29. 40 0
      src/jsonData/menu.json
  30. 3 0
      src/main.js
  31. 44 0
      src/router/lzx.js
  32. 652 0
      src/tools/echartsToolLzx.js
  33. 397 0
      src/views/lossBenchmarking/fiveLossRates.vue
  34. 12 0
      src/views/lossBenchmarking/fiveLossRatesHistogramChart.vue
  35. 16 0
      src/views/lossBenchmarking/fiveLossRatesPieChart.vue
  36. 336 0
      src/views/performanceAnalysis/cutAndSpeed.vue
  37. 180 0
      src/views/performanceAnalysis/cutAndSpeedHistory.vue
  38. 66 67
      src/views/performanceAnalysis/gradeEvaluation.vue
  39. 291 0
      src/views/performanceAnalysis/plannedGeneration.vue
  40. 89 0
      src/views/performanceAnalysis/rankingCallThePolice.vue
  41. 188 0
      src/views/performanceAnalysis/rankingCurveDeviationRate.vue
  42. 126 0
      src/views/performanceAnalysis/rankingLoadRate.vue
  43. 102 0
      src/views/performanceAnalysis/rankingUtilization.vue
  44. 169 0
      src/views/performanceAnalysis/singleMachineAnalysis.vue
  45. 72 0
      src/views/performanceAnalysis/singleMachineAnalysisOperation.vue
  46. 303 0
      src/views/performanceAnalysis/singleMachinePower.vue

+ 45 - 0
src/assets/css/lossBenchmarking/fiveLossRates.scss

@@ -0,0 +1,45 @@
+.box{
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+margin-top: 1%;
+}
+.pieChart{
+margin-top: 2%;
+}
+.histogramChart{
+margin-bottom: 10%;
+}
+#leiDaTu {
+    margin-left: 5%;
+    height: 300px;
+    width: 100%;
+    float: left;
+}
+#leiDaTu2 {
+    margin: 15%;
+    height: 300px;
+    width: 450px;
+    float: left;
+}
+.margin {
+    width: 100%;
+    height: 618px;
+}
+.dialogLeftData {
+    width: 50%;
+    height: 650px;
+    text-align: center;
+    float: left;
+}
+
+.dialogRightData {
+    width: 50%;
+    height: 650px;
+    text-align: center;
+    float: left;
+}

+ 7 - 0
src/assets/css/lossBenchmarking/fiveLossRatesHistogramChart.scss

@@ -0,0 +1,7 @@
+.box{
+    width: 100%;
+	display: flex;
+	justify-content: space-around;
+ 	align-items: center;
+ 	overflow: hidden;
+}

+ 7 - 0
src/assets/css/lossBenchmarking/fiveLossRatesPieChart.scss

@@ -0,0 +1,7 @@
+.box {
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    overflow: hidden;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/cutAndSpeed.scss

@@ -0,0 +1,13 @@
+.box {
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+    align-items: center;
+    overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/cutAndSpeedHistory.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 0 - 0
src/assets/css/performanceAnalysis/fiveLossRates.scss


+ 13 - 0
src/assets/css/performanceAnalysis/plannedGeneration.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/rankingCallThePolice.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 10 - 0
src/assets/css/performanceAnalysis/rankingCurveDeviationRate.scss

@@ -0,0 +1,10 @@
+.box{
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/rankingLoadRate.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/rankingUtilization.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/singleMachineAnalysis.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+  }
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 13 - 0
src/assets/css/performanceAnalysis/singleMachineAnalysisOperation.scss

@@ -0,0 +1,13 @@
+.box{
+    width: 100%;
+    // display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+  }
+.searchBar{
+    margin-top: 1%;
+}
+.box-card{
+    width: 100%;
+}

+ 16 - 0
src/assets/css/performanceAnalysis/singleMachinePower.scss

@@ -0,0 +1,16 @@
+.box{
+    width: 100%;
+    display: flex;
+    justify-content: space-around;
+     align-items: center;
+     overflow: hidden;
+}
+.searchBar{
+    margin-top: 1%;
+}
+#leiDaTu {
+    margin-left: 5%;
+    height: 200px;
+    width: 90%;
+    float: left;
+}

+ 420 - 0
src/assets/js/lossBenchmarking/fiveLossRates.js

@@ -0,0 +1,420 @@
+import FiveLossRatesPieChart from '@views/lossBenchmarking/fiveLossRatesPieChart';
+import FiveLossRatesHistogramChart from '@views/lossBenchmarking/fiveLossRatesHistogramChart.vue';
+export default {
+    data() {
+        return {
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            timedate: [
+                // {beginDate:'2021-01-01'},
+                // {endDate:'2021-01-04'}
+            ],
+            isAsc: 'asc',
+            beginDate: '',
+            endDate: '',
+            gridData: [],
+            multipleSelection: [],
+            sortInOrder: [],
+            sortInOrderTop: [],
+            sortInOrde2: [],
+            getTableData: [],
+            sortInOrderTop2: [],
+            fdcName1: '',
+            fdcName2: '',
+            currentPage2: 1,
+            pagesize: 10,
+            fdcLineData: '',
+            classification: [{
+                id: 'qf',
+                label: '弃风率'
+            }, {
+                id: 'gz',
+                label: '故障损失率'
+            },
+            {
+                id: 'jx',
+                label: '检修损失率'
+            },
+            {
+                id: 'xn',
+                label: '性能损失率'
+            },
+            {
+                id: 'sl',
+                label: '受累损失率'
+            }],
+            options: [{
+                value: 'MHS_FDC',
+                label: '麻黄山风电场'
+            }, {
+                value: 'NSS_FDC',
+                label: '牛首山风电场'
+            },
+            {
+                value: 'SBQ_FDC',
+                label: '石板泉风电场'
+            },
+            {
+                value: 'QS_FDC',
+                label: '青山风电场'
+            },
+            {
+                value: 'XS_FDC',
+                label: '香山风电场'
+            }],
+            value: '',
+            value2: 'gz',
+            wpId: [],
+            wpName: [],
+            updateTime1: '',
+            updateTime: '',
+            orderByColumn: '',
+            dialogTableVisible: false,
+            lineDataOption: [],
+            tableData: [{
+                date: '2016-05-02',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-04',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1517 弄'
+            }, {
+                date: '2016-05-01',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1519 弄'
+            }, {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1516 弄'
+            },
+            {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1516 弄'
+            },
+            {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1516 弄'
+            }]
+
+        }
+    },
+    components: {
+        FiveLossRatesPieChart: FiveLossRatesPieChart,
+        FiveLossRatesHistogramChart: FiveLossRatesHistogramChart
+    },
+    created() {
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options = res.data;
+        })
+        this.FiveLossInformation();
+    },
+    methods: {
+        headStyle() {
+            return "text-align:center"
+        },
+        onSubmit() {
+            console.log("submit!");
+        },
+        handleClick() { },
+        deleteRow(index, rows) {
+            rows.splice(index, 1);
+        },
+        queryApData() {
+            this.FiveLossInformation();
+        },
+        handleEdit(a, b) {
+            this.wpId = [];
+            this.lineDataOption = [];
+            if (this.multipleSelection.length == 2) {
+                for (let i = 0; i < this.multipleSelection.length; i++) {
+                    this.wpId.push(this.multipleSelection[i].wpId)
+                    this.wpName.push(this.multipleSelection[i].wpName)
+                    this.lineDataOption.push({ id: this.multipleSelection[i].wpId, name: this.multipleSelection[i].wpName })
+                }
+                console.log(this.lineDataOption)
+                this.$router.push({
+                    path: '/fiveLossLineTable',
+                    query: {
+                        wpId: this.wpId,
+                        beginDate: this.beginDate,
+                        endDate: this.endDate,
+                        wpName: this.wpName,
+                        select: this.lineDataOption
+                    }
+                })
+            } else {
+                console.log(b)
+                this.lineDataOption.push({ id: b.wpId, name: b.wpName })
+                console.log(this.lineDataOption)
+                this.$router.push({
+                    path: '/fiveLossLineTable',
+                    query: {
+                        wpId: b.wpId,
+                        beginDate: this.beginDate,
+                        endDate: this.endDate,
+                        wpName: b.wpName,
+                        select: this.lineDataOption
+                    }
+                })
+            }
+        },
+        checkwindfarm() {
+            if (this.formInline.windfarm == "") {
+                this.$message.error("请选择风场!");
+                return;
+            }
+        },
+        checkproject() {
+            if (this.formInline.project == "") {
+                this.$message.error("请选择项目!");
+                return;
+            }
+            if (new Date(this.timedate) == null) {
+                this.$message.error("请选择时间");
+                return;
+            }
+        },
+        queryApDataMx() {
+            this.dialogTableVisible = true;
+            this.$nextTick(function () {
+                this.drawPie('leiDaTu')
+            })
+            this.$nextTick(function () {
+                this.drawPie2('leiDaTu2')
+            })
+        },
+        handleSelectionChange(val) {
+            this.sortInOrder = [];
+            this.sortInOrderTop = [];
+            this.getTableData = [];
+            this.sortInOrde2 = [];
+            this.multipleSelection = val;
+            if (this.multipleSelection.length == 2) {
+                this.fdcName1 = this.multipleSelection[0].wpName;
+                this.fdcName2 = this.multipleSelection[1].wpName;
+                this.sortInOrder.push(this.multipleSelection[0].fnlyl, this.multipleSelection[0].xqjsl,
+                    this.multipleSelection[0].ztzhjsl, this.multipleSelection[0].fwjsl, this.multipleSelection[0].slssl,
+                    this.multipleSelection[0].xnssl, this.multipleSelection[0].qfl, this.multipleSelection[0].jxssl,
+                    this.multipleSelection[0].gzssl);
+                this.sortInOrderTop.push(this.multipleSelection[1].fnlyl, this.multipleSelection[1].xqjsl,
+                    this.multipleSelection[1].ztzhjsl, this.multipleSelection[1].fwjsl, this.multipleSelection[1].slssl,
+                    this.multipleSelection[1].xnssl, this.multipleSelection[1].qfl, this.multipleSelection[1].jxssl,
+                    this.multipleSelection[1].gzssl);
+                for (let i = 0; i < this.multipleSelection.length; i++) {
+                    this.sortInOrde2.push({
+                        product: this.multipleSelection[i].wpName, '限电损失电量单位:万KWh': this.multipleSelection[i].xdss,
+                        '故障损失电量单位:万KWh': this.multipleSelection[i].gzss, '检修损失电量单位:万KWh': this.multipleSelection[i].jxssl,
+                        '性能损失电量单位:万KWh': this.multipleSelection[i].xnssl, '受累损失电量单位:万KWh': this.multipleSelection[i].slss
+                    });
+                }
+                this.getTableData.push({ index: '发电量', data1: this.multipleSelection[0].fdl, data2: this.multipleSelection[1].fdl });
+                this.getTableData.push({ index: '故障损失电量', data1: this.multipleSelection[0].gzss, data2: this.multipleSelection[1].gzss });
+                this.getTableData.push({ index: '检修损失电量', data1: this.multipleSelection[0].jxssl, data2: this.multipleSelection[1].jxssl });
+                this.getTableData.push({ index: '性能未达标损失电量', data1: this.multipleSelection[0].xnsslfraction, data2: this.multipleSelection[1].xnsslfraction });
+                this.getTableData.push({ index: '受累损失电量', data1: this.multipleSelection[0].slss, data2: this.multipleSelection[1].slss });
+                this.getTableData.push({ index: '风能利用率', data1: this.multipleSelection[0].fnlyl, data2: this.multipleSelection[1].fnlyl });
+                this.getTableData.push({ index: '故障损失率', data1: this.multipleSelection[0].gzssl, data2: this.multipleSelection[1].gzssl });
+                this.getTableData.push({ index: '检修损失率', data1: this.multipleSelection[0].jxssl, data2: this.multipleSelection[1].jxssl });
+                this.getTableData.push({ index: '弃风率', data1: this.multipleSelection[0].qfl, data2: this.multipleSelection[1].qfl });
+                this.getTableData.push({ index: '性能损失率', data1: this.multipleSelection[0].xnssl, data2: this.multipleSelection[1].xnssl });
+                this.getTableData.push({ index: '受累损失率', data1: this.multipleSelection[0].slssl, data2: this.multipleSelection[1].slssl });
+                this.getTableData.push({ index: '复位及时率', data1: this.multipleSelection[0].fwjsl, data2: this.multipleSelection[1].fwjsl });
+                this.getTableData.push({ index: '消缺及时率', data1: this.multipleSelection[0].xqjsl, data2: this.multipleSelection[1].xqjsl });
+                this.getTableData.push({ index: '状态转换率', data1: this.multipleSelection[0].ztzhjsl, data2: this.multipleSelection[1].ztzhjsl });
+            }
+        },
+        handleCurrentChange(val) {
+            // console.log(`当前页: ${val}`);
+        },
+        handleSizeChange(val) {
+            console.log(`每页 ${val} 条`);
+            this.pagesize = val;
+        },
+        changeTableSort(column) {
+            this.orderByColumn = column.prop;
+            if (column.order == "descending") {
+                this.isAsc = 'desc';
+            } else if (column.order == "ascending") {
+                this.isAsc = "asc";
+            }
+            this.FiveLossInformation();
+        },
+        FiveLossInformation() {
+            let that = this;
+            const nowDate = new Date();
+            const date = {
+                year: nowDate.getFullYear(),
+                month: nowDate.getMonth() + 1,
+                date: nowDate.getDate(),
+            }
+            const newmonth = date.month > 10 ? date.month : '0' + date.month
+            const day = date.date > 10 ? date.date : '0' + date.date
+            const day1 = date.date > 10 ? date.date - 1 : '0' + date.date
+            this.updateTime = date.year + '-' + newmonth + '-' + day
+            this.updateTime1 = date.year + '-' + newmonth + '-' + day1
+            if (this.timedate == '') {
+                this.timedate[0] = this.updateTime1;
+                this.timedate[1] = this.updateTime;
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            } else {
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }
+            var fiveLossData = new URLSearchParams();
+            fiveLossData.append('pageNum', this.currentPage2);
+            fiveLossData.append('pageSize', this.pagesize);
+            fiveLossData.append('orderByColumn', this.orderByColumn);
+            fiveLossData.append('isAsc', this.isAsc);
+            fiveLossData.append('wpId', this.value);
+            fiveLossData.append('beginDate', this.beginDate);
+            fiveLossData.append('endDate', this.endDate);
+            this.API.post('/contrast/benchmarkLossList', fiveLossData).then((res) => {
+                that.gridData = res.data;
+                that.$refs.FiveLossRatesPieChart.getPackageData(that.gridData,that.value2);
+                that.$refs.FiveLossRatesHistogramChart.getPackageData2(that.gridData);
+            })
+        },
+        drawPie() {
+            var charts;
+            if (charts != null && charts != "" && charts != undefined) {
+                charts.dispose();
+            }
+            charts = this.$echarts.init(document.getElementById('leiDaTu'));
+            let option = {
+                title: {
+                    // text: '对标排名分析',
+                    left: 'center'
+                },
+                tooltip: {},
+                // legend: {
+                //     data: ['预算分配(Allocated Budget)', '实际开销(Actual Spending)'],
+                //     left: 'right'
+                // },
+                radar: {
+                    // shape: 'circle',
+                    name: {
+                        textStyle: {
+                            color: '#fff',
+                            backgroundColor: '#999',
+                            borderRadius: 3,
+                            padding: [3, 5]
+                        }
+                    },
+                    indicator: [
+                        { name: '风能利用率', max: 150 },
+                        { name: '消缺及时率', max: 150 },
+                        { name: '状态转换率', max: 150 },
+                        { name: '复位及时率', max: 150 },
+                        { name: '受累损失率', max: 150 },
+                        { name: '性能损失率', max: 150 },
+                        { name: '弃风率', max: 150 },
+                        { name: '检修损失率', max: 150 },
+                        { name: '故障损失率', max: 150 },
+                    ]
+                },
+                series: [{
+                    name: '预算 vs 开销(Budget vs spending)',
+                    type: 'radar',
+                    // areaStyle: {normal: {}},
+                    data: [
+                        {
+                            value: this.sortInOrder,
+                            name: this.fdcName1
+                        },
+                        {
+                            value: this.sortInOrderTop,
+                            name: this.fdcName2
+                        }
+                    ]
+                }]
+            }
+            charts.clear();
+            charts.setOption(option);
+
+        },
+        drawPie2() {
+            var charts2;
+            if (charts2 != null && charts2 != "" && charts2 != undefined) {
+                charts2.dispose();
+            }
+            charts2 = this.$echarts.init(document.getElementById('leiDaTu2'));
+            let option2 = {
+                legend: {
+                    orient: 'vertical',
+                    left: 'right'
+                },
+                tooltip: {},
+                dataset: {
+                    dimensions: ['product', '限电损失电量单位:万KWh', '故障损失电量单位:万KWh', '检修损失电量单位:万KWh', '性能损失电量单位:万KWh', '受累损失电量单位:万KWh'],
+                    source: this.sortInOrde2
+                },
+                xAxis: { type: 'category' },
+                yAxis: {},
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [
+                    {
+                        // barGap:'100%',/*多个并排柱子设置柱子之间的间距*/
+                        type: 'bar',
+                        barWidth: 30,
+                        itemStyle: {
+                            normal: {
+                                color: '#D201D8'
+                            }
+                        }
+                    },
+                    {
+
+                        type: 'bar',
+                        barWidth: 30,
+                        itemStyle: {
+                            normal: {
+                                color: '#FD0100'
+                            }
+                        }
+                    },
+                    {
+
+                        type: 'bar',
+                        barWidth: 30,
+                        itemStyle: {
+                            normal: {
+                                color: '#FF7B16'
+                            }
+                        }
+                    },
+                    {
+
+                        type: 'bar',
+                        barWidth: 30,
+                        itemStyle: {
+                            normal: {
+                                color: '#8085E9'
+                            }
+                        }
+                    },
+                    {
+                        type: 'bar',
+                        barWidth: 30,
+                        itemStyle: {
+                            normal: {
+                                color: '#A6A6A6'
+                            }
+                        }
+                    },
+                ]
+            }
+            charts2.clear();
+            charts2.setOption(option2);
+
+        },
+        toExcel() { }
+    },
+}

+ 98 - 0
src/assets/js/lossBenchmarking/fiveLossRatesHistogramChart.js

@@ -0,0 +1,98 @@
+import * as echarts from "echarts";
+export default {
+    data(){
+        return {
+            getChartData:[]
+        }
+    },
+    components:{
+
+    },
+    methods:{
+        getPackageData2(gridData){
+            this.getChartData = [];
+            for(let i=0;i<gridData.length;i++){
+                this.getChartData.push({product:gridData[i].wpName,'限电损失电量单位:万KWh':gridData[i].xdss,
+                '故障损失电量单位:万KWh':gridData[i].gzss,'检修损失电量单位:万KWh':gridData[i].jxssl,
+                '性能损失电量单位:万KWh':gridData[i].xnssl,'受累损失电量单位:万KWh':gridData[i].slss})
+            }
+            this.getChartDataImport();
+        },
+        getChartDataImport(){
+            var charts =echarts.init(document.getElementById("chartHistogram"));
+            let option = {
+            title: {
+                text: '损失电量分析',
+                left: 'center'
+            },
+            legend: {
+                orient: 'vertical',
+                left: 'right'
+            },
+            tooltip: {},
+            dataset: {
+                 dimensions: ['product', '限电损失电量单位:万KWh', '故障损失电量单位:万KWh', '检修损失电量单位:万KWh', '性能损失电量单位:万KWh', '受累损失电量单位:万KWh'],
+                 source: this.getChartData
+            },
+            xAxis: {type: 'category'},
+            yAxis: {},
+            // Declare several bar series, each will be mapped
+            // to a column of dataset.source by default.
+            series: [
+                {
+                    // barGap:'100%',/*多个并排柱子设置柱子之间的间距*/
+                    type: 'bar',
+                    barWidth : 30,
+                    itemStyle:{
+                        normal:{
+                            color:'#D201D8'
+                        }
+                    }
+                },
+                {
+                    
+                    type: 'bar',
+                    barWidth : 30,
+                    itemStyle:{
+                        normal:{
+                            color:'#FD0100'
+                        }
+                    }
+                },
+                {
+                    
+                    type: 'bar',
+                    barWidth : 30,
+                    itemStyle:{
+                        normal:{
+                            color:'#FF7B16'
+                        }
+                    }
+                },
+                {
+                    
+                    type: 'bar',
+                    barWidth : 30,
+                    itemStyle:{
+                        normal:{
+                            color:'#8085E9'
+                        }
+                    }
+                },
+                {
+                    
+                    type: 'bar',
+                    barWidth : 30,
+                    itemStyle:{
+                        normal:{
+                            color:'#A6A6A6'
+                        }
+                    }
+                },
+                
+            ]
+        };
+        charts.setOption(option);
+        }
+    },
+}

+ 62 - 0
src/assets/js/lossBenchmarking/fiveLossRatesPieChart.js

@@ -0,0 +1,62 @@
+export default {
+  data() {
+    return {
+      getChartDataValue: [],
+      getChartDataValue2: [],
+      chartsAName2: "",
+    };
+  },
+  methods: {
+    getPackageData(gridData, value2) {
+      this.getChartDataValue = [];
+      this.getChartDataValue2 = [];
+      console.log(value2);
+      for (let i = 0; i < gridData.length; i++) {
+        this.getChartDataValue.push({
+          value: gridData[i].fdl,
+          name: gridData[i].wpName,
+        });
+        if (value2 == "gz") {
+          this.chartsAName2 = "故障损失占比";
+          this.getChartDataValue2.push({
+            value: gridData[i].gzss,
+            name: gridData[i].wpName,
+          });
+        } else if (value2 == "xn") {
+          this.chartsAName2 = "性能损失占比";
+          this.getChartDataValue2.push({
+            value: gridData[i].qfss,
+            name: gridData[i].wpName,
+          });
+        } else if (value2 == "qf") {
+          this.chartsAName2 = "弃风率占比";
+          this.getChartDataValue2.push({
+            value: gridData[i].qfl,
+            name: gridData[i].wpName,
+          });
+        } else if (value2 == "jx") {
+          this.chartsAName2 = "检修损失占比";
+          this.getChartDataValue2.push({
+            value: gridData[i].whss,
+            name: gridData[i].wpName,
+          });
+        } else if (value2 == "sl") {
+          this.chartsAName2 = "受累损失占比";
+          this.getChartDataValue2.push({
+            value: gridData[i].slss,
+            name: gridData[i].wpName,
+          });
+        }
+      }
+      
+      this.getChartDataImport();
+      
+    },
+    getChartDataImport() {
+      // console.log(this.getChartDataValue)
+      this.ECLZX.getFiveLossSectorLeft("chartPie",this.getChartDataValue);
+      this.ECLZX.getFiveLossSectorRight("chartPieRight",this.chartsAName2,this.getChartDataValue2);
+      
+    },
+  },
+};

+ 118 - 0
src/assets/js/performanceAnalysis/cutAndSpeed.js

@@ -0,0 +1,118 @@
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data() {
+        return {
+            //element ui表单组件自带数据 
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            //时间,初始数据为昨日时间
+            time: '',
+            //分页起始页
+            currentPage2: 1,
+             //每页显示数据个数
+            pagesize: 10,
+            //切入切出风速表格数据
+            gridData: [],
+            //风场选择器
+            options: [],
+            //所需排序值
+            orderByColumn: '',
+            //排序,默认为升序asc
+            isAsc: '',
+            value: 'MHS_FDC',
+            //表格对应的风场id,点击历史按钮会将wtid数据传入历史页面
+            wtid: '',
+            //结束日期,默认为今日日期,点击历史按钮会将endDate数据传入历史页面
+            endDate: '',
+            //日期昨天
+            updateTime: '',
+        }
+    },
+
+    created() {
+        //获取风场信息数据
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options = res.data;
+        })
+         //获取昨日日期时间
+        var newData = new Date();
+        this.updateTime = this.BASE.getBzDate(newData.getTime(), -1);
+        //获取今日日期时间
+        this.endDate = this.BASE.getBzDate(newData.getTime(), 0);
+        this.callAndSpeedData(); 
+               
+        },
+    methods: {
+        //点击查询按钮调用查询方法
+        queryApData() {
+            this.callAndSpeedData();
+        },
+        //点击历史按钮触发点击事件,b值为点击历史获取当前行的数据
+        handleEdit(a, b) {
+            this.wtId = b.windturbineid;
+            console.log(this.wtId)
+            //跳转方法并传入数据
+            this.$router.push({
+                path: '/cutAndSpeedHistory',
+                query: {
+                    //风场
+                    wpId: this.value,
+                    //风机
+                    wtId: this.wtId,
+                    //开始时间
+                    beginDate: this.time,
+                    //结束时间
+                    endDate: this.endDate,
+                }
+            })
+        },
+        //表格字体居中
+        headStyle() {
+            return "text-align:center"
+        },
+        //排序方法
+        changeTableSort(column) {
+            //排序方法 column.prop为点击要排序列的数据,将需要排序的值赋给orderByColumn
+            this.orderByColumn = column.prop;
+            //如果column.order为descending(点击排序上箭头),则为降序,若为ascending(点击排序下箭头),则为升序,并将值赋给isAsc
+            if (column.order == "descending") {
+                this.isAsc = 'desc';
+            } else if (column.order == "ascending") {
+                this.isAsc = "asc";
+            }
+            this.callAndSpeedData();
+        },
+        //获取切入切出风速方法
+        callAndSpeedData() {
+            //判断time是否有值,若没有选择时间,则为昨日日期时间
+            if (this.time == '') {
+                this.time = this.updateTime
+            }
+            console.log(this.time)
+            var callAndSpeedData = new URLSearchParams();
+            //页数
+            callAndSpeedData.append('pageNum', this.currentPage2);
+            //页面数据个数
+            callAndSpeedData.append('pageSize', this.pagesize);
+            //需要排序的参数
+            callAndSpeedData.append('orderByColumn', this.orderByColumn);
+            //升序还是降序
+            callAndSpeedData.append('isAsc', this.isAsc);
+            //风场id
+            callAndSpeedData.append('wpId', this.value);
+            //日期
+            callAndSpeedData.append('recorddate', this.time);
+            this.API.post('/outputspeed/outputSpeedlist', callAndSpeedData).then((res) => {
+                this.gridData = res.data;
+                console.log(this.gridData);
+            })
+        },
+        //导出excel方法
+        toExcel() {
+            excelHelper.exportExcel("callthepolicetable", "负荷率排行榜", ".xls", true);
+        },
+    }
+}

+ 102 - 0
src/assets/js/performanceAnalysis/cutAndSpeedHistory.js

@@ -0,0 +1,102 @@
+// import {formatDate} from '../../utils/fomatDate';
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data() {
+      return {
+        formInline: {
+        windfarm: "",
+        project: "",
+        line: "",
+        },
+        time: '2021-01-01',
+        timedate: [
+            
+        ],
+        currentPage2: 1,
+	      pagesize: 10,
+        gridData:[],
+        gridDataChart:[],
+        charFreData:[],
+        charNameData:[],
+        options: [],
+        options2: [],
+        orderByColumn:'',
+        isAsc: '',
+        value: '',
+        value2:'',
+        wtid:'',
+        endDate:'',
+      }
+    },
+    created(){
+        this.callAndSpeedData();
+    },
+    methods:{
+        queryApData() {
+            this.callAndSpeedData();
+        },
+        headStyle() {
+          return "text-align:center"
+        },
+        changeTableSort(column){
+          this.orderByColumn = column.prop;
+          if(column.order == "descending"){
+            this.isAsc = 'desc';
+          }else if(column.order == "ascending"){
+            this.isAsc = "asc";
+          }
+          this.callAndSpeedData();
+        },
+        callAndSpeedData(){
+            this.API.get('/powercompare/windfarmAjax').then((res) => {
+                this.options = res.data;
+            })
+            // this.value = this.$route.query.wpId;
+            if(this.value == ''){
+                this.value = this.$route.query.wpId;
+                this.API.get('/powercompare/windturbineAjax?wpId=' + this.value).then((res) => {
+                    this.options2 = res.data;
+                })
+            }else{
+               this.API.get('/powercompare/windturbineAjax?wpId=' + this.value).then((res) => {
+                    this.options2 = res.data;
+                }) 
+            }
+            var callAndSpeedData = new URLSearchParams();
+            callAndSpeedData.append('pageNum',this.currentPage2);
+		    callAndSpeedData.append('pageSize',this.pagesize);
+            callAndSpeedData.append('orderByColumn',this.orderByColumn);
+            callAndSpeedData.append('isAsc',this.isAsc);
+            if(this.value == ''){
+                this.value = this.$route.query.wpId;
+                callAndSpeedData.append('wpId',this.value);
+            }else{
+                callAndSpeedData.append('wpId',this.value);
+            }
+		  	if(this.value2 == ''){
+                this.value2 = this.$route.query.wtId;
+                callAndSpeedData.append('wtId',this.value2);
+            }else{
+                callAndSpeedData.append('wtId',this.value2);
+            }
+            if(this.timedate == ''){
+                this.timedate[0] = this.$route.query.beginDate;
+                this.timedate[1] = this.$route.query.endDate;
+                callAndSpeedData.append('beginDate',this.timedate[0]);
+                callAndSpeedData.append('endDate',this.timedate[1]);
+            }else{
+                callAndSpeedData.append('beginDate',this.timedate[0]);
+                callAndSpeedData.append('endDate',this.timedate[1]);
+            }
+            this.API.post('/outputspeed/outputspeedhistorylist',callAndSpeedData).then((res) => {
+                this.gridData = res.data
+            })
+        },
+        goReturn(){
+            this.$router.push('/cutAndSpeed')
+          },
+        toExcel(){
+            excelHelper.exportExcel("callthepolicetable","负荷率排行榜",".xls",true);
+        },
+    }
+}

+ 12 - 48
src/assets/js/performanceAnalysis/gradeEvaluation.js

@@ -1,5 +1,5 @@
 // import excelHelper from "@/utils/excelHelper";
-
+import * as echarts from "echarts";
 export default {
   data() {
     return {
@@ -65,7 +65,7 @@ export default {
       //排序,默认为升序asc
       isAsc: "asc",
       //获取日信息分页数据
-      total: "",
+      total: 0,
       //获取月信息分页数据
       totalMonth: "",
       //获取年信息分页数据
@@ -77,7 +77,6 @@ export default {
   created() {
     //获取风场信息数据
     this.API.get("/powercompare/windfarmAjax").then((res) => {
-      console.log(res)
       this.options = res.data;
     });
     //获取昨日日期时间
@@ -88,6 +87,7 @@ export default {
     this.gradeByDaygData();
     this.gamonthlistByPage();
     this.gayearlistByPage();
+    
   },
   methods: {
     headStyle() {
@@ -436,7 +436,6 @@ export default {
       }
       page.append("recorddate", this.value1);
       this.API.post("/benchmarking/gadaylistByPage", page).then((res) => {
-        console.log(res);
         //gridData日表格数据
         that.gridData = res.data.list;
         //total日分页数据
@@ -452,7 +451,6 @@ export default {
       pagemonth.append("wpId", this.value);
       if (this.yearvalue == "") {
         this.yearvalue = this.updateTime.substring(0, 4);
-        // console.log(this.yearvalue);
       }
       //年份
       pagemonth.append("year", this.yearvalue);
@@ -514,7 +512,6 @@ export default {
           this.multipleSelection[1].id
         )
         .then((res) => {
-          console.log(res);
           var arr1 = [];
           var name = [];
           res.data.gaid1.forEach(function (item) {
@@ -528,7 +525,6 @@ export default {
             });
           });
           that.radarChartName = name;
-          console.log(that.radarChartName)
           //将target雷达图显示容量加入数组中。
           var target = {
             max: 15,
@@ -556,49 +552,17 @@ export default {
     },
     //风机日信息等级评估管理Echart图
     drawPie() {
-      var charts;
-      if (charts != null && charts != "" && charts != undefined) {
-        charts.dispose();
-      }
-      charts = this.$echarts.init(document.getElementById("leiDaTu"));
-      let option = {
-        tooltip: {},
-        legend: {
-          x: "center", //可设定图例在左、右、居中
-          y: "bottom",
-          data: [this.radatChartWindturbineid1, this.radatChartWindturbineid2],
+      this.ECLZX.getGradeEvaluationChartData("leiDaTu",
+      [
+        {
+          value: this.radarChartData1,
+          name: this.radatChartWindturbineid1,
         },
-        radar: {
-          name: {
-            textStyle: {
-              color: "#fff",//字体颜色
-              backgroundColor: "#999",//图例颜色
-              borderRadius: 3,
-              padding: [3, 5],//距离
-            },
-          },
-          indicator: this.radarChartName,
+        {
+          value: this.radarChartData2,
+          name: this.radatChartWindturbineid2,
         },
-        series: [
-          {
-            name: "预算 vs 开销(Budget vs spending)",
-            type: "radar",
-            // areaStyle: {normal: {}},
-            data: [
-              {
-                value: this.radarChartData1,
-                name: this.radatChartWindturbineid1,
-              },
-              {
-                value: this.radarChartData2,
-                name: this.radatChartWindturbineid2,
-              },
-            ],
-          },
-        ],
-      };
-      charts.clear();
-      charts.setOption(option);
+      ],this.radarChartName,[this.radatChartWindturbineid1, this.radatChartWindturbineid2]);
     },
     //风机月信息等级评估管理Echart图
     drawPie2() {

+ 224 - 0
src/assets/js/performanceAnalysis/plannedGeneration.js

@@ -0,0 +1,224 @@
+// import excelHelper from "@/utils/excelHelper";
+import * as echarts from "echarts";
+export default {
+    data() {
+      return {
+        formInline: {
+        windfarm: "",
+        project: "",
+        line: "",
+        },
+        timeyear:'',
+        currentPage2: 1,
+	    pagesize: 10,
+        gridData:[],
+        gridDataChart:[],
+        charFreData:[],
+        charNameData:[],
+        options: [],
+        options2: [],
+        options3: [],
+        orderByColumn:'',
+        isAsc: '',
+        value: '',
+        value2:'',
+        value3:'',
+        value4:'',
+        dialogFormVisible: false,
+        dialogFormVisible2: false,
+        form: {
+          gc01: '',
+          gc02: '',
+          gc03: '',
+          gc04: '',
+          gc05: '',
+          gc06: '',
+          gc07: '',
+          gc08: '',
+          gc09: '',
+          gc10: '',
+          gc11: '',
+          gc12: '',
+          generatingcapacity: '',
+        },
+        form2: {
+          gc01: '',
+          gc02: '',
+          gc03: '',
+          gc04: '',
+          gc05: '',
+          gc06: '',
+          gc07: '',
+          gc08: '',
+          gc09: '',
+          gc10: '',
+          gc11: '',
+          gc12: '',
+          generatingcapacity: '',
+        },
+        formLabelWidth: '200px',
+        fcdialog:'',
+        fc:'',
+        xm:'',
+        nf:'',
+        modifyid:'',
+        modifyprojectid:'',
+        updateTime:'',
+      }
+    },
+   
+    created(){
+        this.API.get('/powercompare/windfarmAllAjax').then((res) => {
+            this.options = res.data;
+        })
+        const nowDate = new Date();
+		const date = {
+			year: nowDate.getFullYear(),
+			month: nowDate.getMonth() + 1,
+			date: nowDate.getDate(),
+		}
+		const newmonth = date.month>10?date.month:'0'+date.month
+		const day = date.date>10?date.date - 1:'0'+date.date
+		this.updateTime = date.year + '-' + newmonth + '-' + day
+        this.callAndSpeedData();
+    },
+    methods:{
+        queryApData() {
+            this.callAndSpeedData();
+        },
+        handleEdit(a,b){
+          this.wtId = b.windturbineid;
+          console.log(this.wtId)
+          this.$router.push({
+          path:'/cutAndSpeedHistory',
+          query:{
+            wpId:this.value,
+            wtId:this.wtId,
+            beginDate:this.time,
+            endDate:this.endDate,
+          }
+        })
+        },
+        tableDatawindturbineName(val){
+          this.dialogFormVisible2 = true;
+          this.fanData = val;
+          console.log(this.fanData)
+          var modifyData = new URLSearchParams();
+          modifyData.append('projectid',this.fanData.projectid);
+          modifyData.append('year',this.fanData.year);
+          this.API.post('/projectplan/getSingleProjectPlan',modifyData).then((res) => {
+                this.modifyid = res.data.id;
+                this.modifyprojectid = res.data.projectid;
+                this.fc = res.data.windpowerName;
+                this.xm = res.data.projectName;
+                this.nf = res.data.year;
+                this.form2.gc01 = res.data.gc01;
+                this.form2.gc02 = res.data.gc02;
+                this.form2.gc03 = res.data.gc03;
+                this.form2.gc04 = res.data.gc04;
+                this.form2.gc05 = res.data.gc05;
+                this.form2.gc06 = res.data.gc06;
+                this.form2.gc07 = res.data.gc07;
+                this.form2.gc08 = res.data.gc08;
+                this.form2.gc09 = res.data.gc09;
+                this.form2.gc10 = res.data.gc10;
+                this.form2.gc11 = res.data.gc11;
+                this.form2.gc12 = res.data.gc12;
+                this.form2.generatingcapacity = res.data.generatingcapacity;
+            })
+        },
+        saveData(){
+            var addSaveData = new URLSearchParams();
+            addSaveData.append('id',this.modifyid);
+            addSaveData.append('projectid',this.modifyprojectid);
+            addSaveData.append('generatingcapacity',this.form2.generatingcapacity);
+            addSaveData.append('year',this.nf);
+            addSaveData.append('gc01',this.form2.gc01);
+            addSaveData.append('gc02',this.form2.gc02);
+            addSaveData.append('gc03',this.form2.gc03);
+            addSaveData.append('gc04',this.form2.gc04);
+            addSaveData.append('gc05',this.form2.gc05);
+            addSaveData.append('gc06',this.form2.gc06);
+            addSaveData.append('gc07',this.form2.gc07);
+            addSaveData.append('gc08',this.form2.gc08);
+            addSaveData.append('gc09',this.form2.gc09);
+            addSaveData.append('gc10',this.form2.gc10);
+            addSaveData.append('gc11',this.form2.gc11);
+            addSaveData.append('gc12',this.form2.gc12);
+            this.API.post('/projectplan/saveData',addSaveData).then((res) => {
+                console.log(res.data)
+            })
+            this.dialogFormVisible2 = false;
+        },
+        headStyle() {
+          return "text-align:center"
+        },
+        changeTableSort(column){
+          this.orderByColumn = column.prop;
+          if(column.order == "descending"){
+            this.isAsc = 'desc';
+          }else if(column.order == "ascending"){
+            this.isAsc = "asc";
+          }
+          this.callAndSpeedData();
+        },
+        projectData(){
+            this.API.get('/powercompare/projectAjax?wpIds=' + this.value).then((res) =>{
+                this.options2 = res.data;
+            })
+        },
+        projectData2(){
+            this.API.get('/powercompare/projectAjax?wpIds=' + this.value3).then((res) =>{
+                this.options3 = res.data;
+            })
+        },
+        callAndSpeedData(){
+            var plannedGenerationData = new URLSearchParams();
+		  	plannedGenerationData.append('wpId',this.value);
+		    plannedGenerationData.append('pjId',this.value2);
+            if(this.timeyear == ''){
+                this.timeyear = this.updateTime.substring(0,4);
+            }
+            plannedGenerationData.append('year',this.timeyear);
+            this.API.post('/projectplan/getProjectPlanVo',plannedGenerationData).then((res) => {
+                this.gridData = res.data
+                console.log(this.gridData)
+            })
+        },
+        modifyData(){
+            
+
+        },
+        addSaveData(){
+            console.log(this.value3)
+            var addSaveData = new URLSearchParams();
+            addSaveData.append('id',this.value3);
+            addSaveData.append('projectid',this.value4);
+            addSaveData.append('generatingcapacity',this.form.generatingcapacity);
+            addSaveData.append('year',this.timeyear);
+            addSaveData.append('gc01',this.form.gc01);
+            addSaveData.append('gc02',this.form.gc02);
+            addSaveData.append('gc03',this.form.gc03);
+            addSaveData.append('gc04',this.form.gc04);
+            addSaveData.append('gc05',this.form.gc05);
+            addSaveData.append('gc06',this.form.gc06);
+            addSaveData.append('gc07',this.form.gc07);
+            addSaveData.append('gc08',this.form.gc08);
+            addSaveData.append('gc09',this.form.gc09);
+            addSaveData.append('gc10',this.form.gc10);
+            addSaveData.append('gc11',this.form.gc11);
+            addSaveData.append('gc12',this.form.gc12);
+            this.API.post('/projectplan/saveData',addSaveData).then((res) => {
+                console.log(res.data)
+            })
+            this.dialogFormVisible = false;
+        },
+        // modifyData(a,b,c){
+        //     this.dialogFormVisible2 = true;
+        //     console.log(a,b,c)
+        // },
+        toExcel(){
+            excelHelper.exportExcel("callthepolicetable","负荷率排行榜",".xls",true);
+        },
+    }
+}

+ 105 - 0
src/assets/js/performanceAnalysis/rankingCallThePolice.js

@@ -0,0 +1,105 @@
+// import excelHelper from "@/utils/excelHelper";
+import * as echarts from "echarts";
+export default {
+    data() {
+      return {
+        formInline: {
+        windfarm: "",
+        project: "",
+        line: "",
+        },
+        timedate: [],
+        currentPage2: 1,
+		pagesize: 10,
+        gridData:[],
+        gridDataChart:[],
+        charFreData:[],
+        charNameData:[],
+        options: [{
+          id: '1',
+          name: '按报警统计'
+        }, {
+          id: '2',
+          name: '按报警分类统计'
+        }, {
+          id: '3',
+          name: '按厂家统计'
+        }],
+        orderByColumn:'',
+        isAsc: '',
+        value: '1',
+        updateTime:'',
+        updateTime1:'',
+      }
+    },
+   
+    created(){
+        this.callThePolicRateData();
+        
+    },
+    methods:{
+        queryApData() {
+            this.callThePolicRateData();
+            this.$nextTick(function() {
+			    this.getChartDataImport('chartHistogram')
+		    })
+        },
+        
+        headStyle() {
+			return "text-align:center"
+		},
+        
+        changeTableSort(column){
+			this.orderByColumn = column.prop;
+			if(column.order == "descending"){
+				this.isAsc = 'desc';
+			}else if(column.order == "ascending"){
+				this.isAsc = "asc";
+			}
+			this.callThePolicRateData();
+		},
+        callThePolicRateData(){
+            this.charFreData = [];
+            this.charNameData = [];
+            var newData = new Date();
+            this.updateTime = this.BASE.getBzDate(newData.getTime(), 0);
+            this.updateTime1 = this.BASE.getBzDate(newData.getTime(), -1);
+            if(this.timedate == ''){
+                this.timedate[0] = this.updateTime1;
+                this.timedate[1] = this.updateTime;
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }else{
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }
+            var callThePolicRateData = new URLSearchParams();
+            callThePolicRateData.append('pageNum',this.currentPage2);
+			callThePolicRateData.append('pageSize',this.pagesize);
+            callThePolicRateData.append('orderByColumn',this.orderByColumn);
+            callThePolicRateData.append('isAsc',this.isAsc);
+			callThePolicRateData.append('type',this.value);
+			callThePolicRateData.append('beginDate',this.beginDate);
+            callThePolicRateData.append('endDate',this.endDate);
+            this.API.post('/leaderboard/querywarningStatistical',callThePolicRateData).then((res) => {
+                this.gridData = res.data;
+                this.gridDataChart = res.data;
+                for(let i=0;i<this.gridDataChart.length;i++){
+                    this.charFreData.push(this.gridDataChart[i].frequencyday);
+                    this.charNameData.push(this.gridDataChart[i].name);
+                }
+                this.$nextTick(function() {
+			        this.getChartDataImport('chartHistogram')
+		        })
+            })
+            
+        },
+        toExcel(){
+            excelHelper.exportExcel("callthepolicetable","负荷率排行榜",".xls",true);
+        },
+        getChartDataImport(){
+            this.ECLZX.getcallThePoliceChart("chartHistogram",
+            this.charNameData,this.charFreData);
+        }
+    }
+}

+ 187 - 0
src/assets/js/performanceAnalysis/rankingCurveDeviationRate.js

@@ -0,0 +1,187 @@
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data(){
+        return {
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            activeName: 'first',
+            information:'first',
+            value:'MHS_FDC',
+            value2:'',
+            options: [],
+            time:'',
+            timemonth:'',
+            month:'',
+            timeyear:'',
+            year:'',
+            title:'月曲线偏差率排行榜',
+            daymonth:'',
+            dayyear:'',
+            currentPage2: 1,
+		    pagesize: 10,
+            orderByColumn:'',
+            isAsc: '',
+            type:'1',
+            gridData:[],
+            dialogFormVisible:false,
+            fanData:[],
+            ChartData:[],
+            dayChartData:[],
+            Xdata:[],
+            sjdata:[],
+            bzdata:[],
+            eldialogtitle:'',
+
+            
+        }
+    },
+    created(){
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options = res.data;
+        })
+        this.DeviceRatData();
+    },
+    methods:{
+        queryApData() {
+             this.DeviceRatData();
+        },
+        headStyle() {
+			return "text-align:center"
+		},
+        handleClick(tab) {
+            this.information = tab.name;
+            this.DeviceRatData();
+        },
+        clickCopy(e) {
+             this.type = e;
+        },
+        tableDatawindturbineName(val) {
+            if(this.type == "1"){
+                this.dialogFormVisible = false;
+            }else{
+          this.dialogFormVisible = true;
+          this.Xdata = [];
+          this.sjdata = [];
+          this.bzdata = [];
+          this.fanData = val;
+          var deviceRateChartData = new URLSearchParams();
+          if(this.information == 'first'){
+            this.eldialogtitle = '月曲线偏差率排行';
+            deviceRateChartData.append('type',this.type);
+            deviceRateChartData.append('wtId',this.fanData.windturbineid);
+            this.timeyear = this.year.toString();
+            deviceRateChartData.append('year',this.timeyear);  
+            this.timemonth = this.month.toString();
+            if(this.timemonth.substring(6,7) < 10){
+                this.timemonth = this.timemonth.substring(6,7);
+            }else{
+                this.timemonth = this.timemonth.substring(5,7)
+            }      
+            deviceRateChartData.append('month',this.timemonth);
+            this.API.post('/leaderboard/curveMonthchatAjax',deviceRateChartData).then((res) =>{
+                this.ChartData = res.data.datas;
+                for(let i = 0; i<this.ChartData.length ; i++){
+                    this.Xdata.push(this.ChartData[i].value1);
+                    this.sjdata.push(this.ChartData[i].value2);
+                    this.bzdata.push(this.ChartData[i].value3);
+                }
+                this.$nextTick(function() {
+                    this.drawPie('leiDaTu')
+                })
+            })
+          }else if(this.information == 'second'){
+            this.eldialogtitle = '日曲线偏差率排行';
+            deviceRateChartData.append('type',this.type);
+            deviceRateChartData.append('wtId',this.fanData.windturbineid);
+            deviceRateChartData.append('recorddate',this.time);
+            this.API.post('/leaderboard/getCurvechatAjax',deviceRateChartData).then((res) =>{
+                this.ChartData = res.data.datas;
+                for(let i = 0; i<this.ChartData.length ; i++){
+                    this.Xdata.push(this.ChartData[i].value1);
+                    this.sjdata.push(this.ChartData[i].value2);
+                    this.bzdata.push(this.ChartData[i].value3);
+                }
+                this.$nextTick(function() {
+                    this.drawPie('leiDaTu')
+                })
+            })
+           }
+            }
+        },
+        changeTableSort(column){
+			this.orderByColumn = column.prop;
+			if(column.order == "descending"){
+				this.isAsc = 'desc';
+			}else if(column.order == "ascending"){
+				this.isAsc = "asc";
+			}
+			this.DeviceRatData();
+		},
+        DeviceRatData(){
+            this.gridData = [];
+            var deviceRatData = new URLSearchParams();
+            if(this.information == 'first'){
+                var newData = new Date();
+                this.updateTime = this.BASE.getBzDate(newData.getTime(), 0);
+                this.title = '月曲线偏差率排行榜';
+                deviceRatData.append('pageNum',this.currentPage2);
+                deviceRatData.append('pageSize',this.pagesize);
+                deviceRatData.append('orderByColumn',this.orderByColumn);
+                deviceRatData.append('isAsc',this.isAsc);
+                deviceRatData.append('wpId',this.value); 
+                if(this.year == ''){
+                    this.year = this.updateTime;
+                    this.year = this.year.slice(0,4);
+                }else{
+                    this.year = this.year.toString();          
+                    
+                }  
+                deviceRatData.append('year',this.year);
+                if(this.month == ''){
+                    this.month = this.updateTime;
+                    if(this.month.substring(5,7) < 10 ){
+                        this.timemonth = this.month.substring(6,7);
+                    }else{
+                        this.timemonth = this.month.substring(5,7);
+                    }
+                }else{
+                    if(this.month.substring(5,7) < 10){
+                        this.timemonth = this.month.substring(6,7);
+                    }else{
+                        this.timemonth = this.month.substring(5,7)
+                    }
+                }
+                deviceRatData.append('month',this.timemonth);
+                this.API.post("/leaderboard/curvefittingmonthmainList",deviceRatData).then((res) => {
+                    this.gridData = res.data;
+                })
+            }else if(this.information == 'second'){
+                this.title = '日曲线偏差率排行榜';
+                deviceRatData.append('pageNum',this.currentPage2);
+                deviceRatData.append('pageSize',this.pagesize);
+                deviceRatData.append('orderByColumn',this.orderByColumn);
+                deviceRatData.append('isAsc',this.isAsc);
+                deviceRatData.append('wpId',this.value);
+                var newData = new Date();
+                this.updateTime = this.BASE.getBzDate(newData.getTime(), 0);
+                if(this.time == ''){
+                    this.time = this.updateTime;
+                }
+                deviceRatData.append('recorddate',this.time);
+                this.API.post("/leaderboard/curvefittingmainList",deviceRatData).then((res) =>{
+                    this.gridData = res.data;
+                })
+            }
+        },
+        drawPie() {
+				this.ECLZX.getCurveDeviationRate("leiDaTu",
+                ['实际功率(kw)', '保证功率(kw)'],this.Xdata,this.sjdata,this.bzdata);
+		},
+        toExcel(){
+            excelHelper.exportExcel("devicerattable","负荷率排行榜",".xls",true);
+        }
+    }
+}

+ 95 - 0
src/assets/js/performanceAnalysis/rankingLoadRate.js

@@ -0,0 +1,95 @@
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data() {
+        return {
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            timedate: [],
+            currentPage2: 1,
+            pagesize: 10,
+            gridData: [],
+            options: [{
+                value: 'fc',
+                label: '风场'
+            }, {
+                value: 'gf',
+                label: '光伏'
+            }],
+            options2: [],
+            orderByColumn: '',
+            isAsc: '',
+            value: '风场',
+            value2: 'MHS_FDC',
+            updateTime: '',
+            updateTime1: '',
+        }
+    },
+    filters: {
+        rounding(value) {
+            return value.toFixed(2)
+        }
+    },
+    created() {
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options2 = res.data;
+        })
+        this.loadRateData();
+    },
+    methods: {
+        queryApData() {
+            this.loadRateData();
+        },
+
+        headStyle() {
+            return "text-align:center"
+        },
+        formatDatebeginDate(time) {
+            let dateks = new Date(time.beginDate);
+            return this.BASE.getBzDate(dateks, 0);
+        },
+        formatDateendDate(time) {
+            let datejz = new Date(time.endDate);
+            return this.BASE.getBzDate(datejz, 0);
+        },
+        changeTableSort(column) {
+            this.orderByColumn = column.prop;
+            if (column.order == "descending") {
+                this.isAsc = 'desc';
+            } else if (column.order == "ascending") {
+                this.isAsc = "asc";
+            }
+            this.loadRateData();
+        },
+        loadRateData() {
+            var newData = new Date();
+            this.updateTime = this.BASE.getBzDate(newData.getTime(), 0);
+            this.updateTime1 = this.BASE.getBzDate(newData.getTime(), -1);
+            if (this.timedate == '') {
+                this.timedate[0] = this.updateTime1;
+                this.timedate[1] = this.updateTime;
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            } else {
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }
+            var loadRateData = new URLSearchParams();
+            loadRateData.append('pageNum', this.currentPage2);
+            loadRateData.append('pageSize', this.pagesize);
+            loadRateData.append('orderByColumn', this.orderByColumn);
+            loadRateData.append('isAsc', this.isAsc);
+            loadRateData.append('wpId', this.value2);
+            loadRateData.append('beginDate', this.beginDate);
+            loadRateData.append('endDate', this.endDate);
+            this.API.post('/leaderboard/loadfactortoplist', loadRateData).then((res) => {
+                this.gridData = res.data;
+            })
+        },
+        toExcel() {
+            excelHelper.exportExcel("loadratetable", "曲线偏差率排行榜", ".xls", true);
+        }
+    }
+}

+ 88 - 0
src/assets/js/performanceAnalysis/rankingUtilization.js

@@ -0,0 +1,88 @@
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data() {
+      return {
+        formInline: {
+        windfarm: "",
+        project: "",
+        line: "",
+        },
+        timedate: [],
+        currentPage2: 1,
+		pagesize: 10,
+        gridData:[],
+        options: [{
+          value: '0',
+          label: '风场'
+        }, {
+          value: '1',
+          label: '项目'
+        },{
+          value: '2',
+          label: '线路'
+        },{
+          value: '3',
+          label: '风机'
+        }],
+        options2: [],
+        orderByColumn:'',
+        isAsc: '',
+        value: '0',
+        value2: ''
+      }
+    },
+    created(){
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options2 = res.data;
+        })
+        this.UtilizationRateData();
+    },
+    methods:{
+        queryApData() {
+            this.UtilizationRateData();
+        },
+        
+        headStyle() {
+			return "text-align:center"
+		},
+        
+        changeTableSort(column){
+			this.orderByColumn = column.prop;
+			if(column.order == "descending"){
+				this.isAsc = 'desc';
+			}else if(column.order == "ascending"){
+				this.isAsc = "asc";
+			}
+			this.UtilizationRateData();
+		},
+        UtilizationRateData(){
+            var newData = new Date();
+            this.updateTime = this.BASE.getBzDate(newData.getTime(), 0);
+            this.updateTime1 = this.BASE.getBzDate(newData.getTime(), -1);
+            if(this.timedate == ''){
+                this.timedate[0] = this.updateTime1;
+                this.timedate[1] = this.updateTime;
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }else{
+                this.beginDate = this.timedate[0];
+                this.endDate = this.timedate[1];
+            }
+            var utilizationRateData = new URLSearchParams();
+            utilizationRateData.append('pageNum',this.currentPage2);
+			utilizationRateData.append('pageSize',this.pagesize);
+            utilizationRateData.append('orderByColumn',this.orderByColumn);
+            utilizationRateData.append('isAsc',this.isAsc);
+			utilizationRateData.append('wpId',this.value2);
+			utilizationRateData.append('beginDate',this.beginDate);
+            utilizationRateData.append('endDate',this.endDate);
+            utilizationRateData.append('type',this.value);
+            this.API.post('/leaderboard/utilizationList',utilizationRateData).then((res) => {
+                this.gridData = res.data;
+            })
+        },
+        toExcel(){
+            excelHelper.exportExcel("loadratetable","曲线偏差率排行榜",".xls",true);
+        }
+    }
+}

+ 115 - 0
src/assets/js/performanceAnalysis/singleMachineAnalysis.js

@@ -0,0 +1,115 @@
+// import excelHelper from "@/utils/excelHelper";
+import * as echarts from "echarts";
+export default {
+    data() {
+      return {
+        formInline: {
+        windfarm: "",
+        project: "",
+        line: "",
+        },
+        month:'',
+        year:'',
+        timeyear:'',
+        timemonth:'',
+        currentPage2: 1,
+	      pagesize: 10,
+        gridData:[],
+        gridDataChart:[],
+        charFreData:[],
+        charNameData:[],
+        options: [],
+        options2: [],
+        orderByColumn:'',
+        isAsc: '',
+        value: 'MHS_FDC',
+        value2:'',
+        fanData:'',
+        title:'',
+        updateTime:'',
+      }
+    },
+   
+    created(){
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options = res.data;
+        })
+        this.callAndSpeedData();
+    },
+    methods:{
+        queryApData() {
+            this.callAndSpeedData();
+        },
+        headStyle() {
+          return "text-align:center,background-color:red"
+        },
+        tableDatawindturbineName(val){
+          this.fanData = val;
+          console.log(this.fanData)
+          this.timemonth = this.month.toString(); 
+          this.timeyear = this.year.toString();
+          this.timemonth = this.timemonth.slice(5,7);
+          this.$router.push({
+            path:'/singleMachineAnalysisOperation',
+            query:{
+              data:this.fanData,
+              timeyear: this.year,
+              timemonth: this.timemonth
+            }
+          })
+        },
+        changeTableSort(column){
+          this.orderByColumn = column.prop;
+          if(column.order == "descending"){
+            this.isAsc = 'desc';
+          }else if(column.order == "ascending"){
+            this.isAsc = "asc";
+          }
+          this.callAndSpeedData();
+        },
+        projectData(){
+            this.API.get('/powercompare/projectAjax?wpIds=' + this.value).then((res) =>{
+                this.options2 = res.data;
+            })
+        },
+        callAndSpeedData(){
+            const nowDate = new Date();
+            const date = {
+                year: nowDate.getFullYear(),
+                month: nowDate.getMonth() + 1,
+                date: nowDate.getDate(),
+            }
+            const newmonth = date.month>10?date.month:'0'+date.month
+            const day = date.date>10?date.date - 1:'0'+date.date
+            this.updateTime = date.year + '-' + newmonth + '-' + day
+            if(this.month == ''){
+              this.month = this.updateTime;
+              this.timemonth = this.month.slice(5,7);
+            }else{
+              this.month = this.month.toString(); 
+              this.timemonth = this.month.slice(5,7);
+            }
+            if(this.year == ''){
+              this.year = this.updateTime;
+              this.year = this.year.slice(0,4);
+            }else{
+              this.year = this.year.toString();
+            }
+            var performanceAnalysis = new URLSearchParams();
+            performanceAnalysis.append('pageNum',this.currentPage2);
+		      	performanceAnalysis.append('pageSize',this.pagesize);
+            performanceAnalysis.append('orderByColumn',this.orderByColumn);
+            performanceAnalysis.append('isAsc',this.isAsc);
+		  	    performanceAnalysis.append('wpId',this.value);
+            performanceAnalysis.append('year',this.year);
+            performanceAnalysis.append('month',this.timemonth);
+            this.API.post('/singleanalysis/singleanalysisMain',performanceAnalysis).then((res) => {
+                this.gridData = res.data;
+                this.title = this.gridData[0].windPowerStationName + this.timeyear + '年' + this.timemonth + '月单台机组运行指标性能分析';
+            })
+        },
+        toExcel(){
+            excelHelper.exportExcel("callthepolicetable","负荷率排行榜",".xls",true);
+        },
+    }
+}

+ 193 - 0
src/assets/js/performanceAnalysis/singleMachineAnalysisOperation.js

@@ -0,0 +1,193 @@
+// import {formatDate} from '../../utils/fomatDate';
+export default {
+    data() {
+        return {
+            pdfTitle: '因子评价报告',
+            pdfSelector: '单机性能分析',
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            title: '',
+            year: '',
+            month: '',
+            getData: [],
+            tableDataAll: [],
+            text1: '',
+            sbxxs: '',
+            tbsbxxs: '',
+            tbsbklly: '',
+            sbklly: '',
+            dxkyxs: '',
+            tbdxkyxs: '',
+            jfpl: '',
+            tbjfpl: '',
+            gltxyzx: '',
+            tbglyzxxs: '',
+            text2: '',
+            fdlChart: '',
+            wsChart: '',
+            date: [],
+            date2: [],
+            date3: [],
+            xdData: [],
+            xnwdbData: [],
+            jxssData: [],
+            gzssData: [],
+            fdldata: [],
+            fsdata: [],
+            jdChart: [],
+            jfData: [],
+            djData: [],
+            slssData: [],
+            tableData: [{
+                date: '2016-05-02',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-04',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1517 弄'
+            }, {
+                date: '2016-05-01',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1519 弄'
+            }, {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1516 弄'
+            }]
+
+        }
+    },
+    filters: {
+        //方法一: yyyy-MM-dd hh:mm
+
+    },
+    created() {
+        this.performance();
+        this.$nextTick(function () {
+            this.getChartDataImport('chartHistogram')
+        })
+    },
+    methods: {
+        headStyle() {
+            return "text-align:center"
+        },
+        changeTableSort(column) {
+            this.orderByColumn = column.prop;
+            if (column.order == "descending") {
+                this.isAsc = 'desc';
+            } else if (column.order == "ascending") {
+                this.isAsc = "asc";
+            }
+            this.performance();
+        },
+        performance() {
+            this.tableDataAll = [];
+            this.getData = this.$route.query.data;
+            this.year = this.$route.query.timeyear;
+            this.month = this.$route.query.timemonth;
+            this.title = this.getData.windturbineName + this.year + '年' + this.month + '月运行指标性能分析';
+            var performance = new URLSearchParams();
+            performance.append('wtId', this.getData.windturbineid);
+            performance.append('year', this.year);
+            performance.append('month', this.month);
+            this.API.post('/singleanalysis/singleanalysisSub', performance).then((res) => {
+                console.log(res)
+                this.tableData = res.data;
+                this.tableDataAll.push({ name: '实际发电量(万千瓦时)', byz: this.tableData.byzb.fdl, qntq: this.tableData.tqzb.fdl, tbzzl: this.tableData.tbzb.fdl, hb: this.tableData.hqzb.fdl, hq: this.tableData.hbzb.fdl });
+                this.tableDataAll.push({ name: '理论发电量(万千瓦时)', byz: this.tableData.byzb.llfdl, qntq: this.tableData.tqzb.llfdl, tbzzl: this.tableData.tbzb.llfdl, hb: this.tableData.hqzb.llfdl, hq: this.tableData.hbzb.llfdl });
+                this.tableDataAll.push({ name: '设备利用小时(小时)', byz: this.tableData.byzb.lyxs, qntq: this.tableData.tqzb.lyxs, tbzzl: this.tableData.tbzb.lyxs, hb: this.tableData.hqzb.lyxs, hq: this.tableData.hbzb.lyxs });
+                this.tableDataAll.push({ name: '设备利用率(%)', byz: this.tableData.byzb.sbklyl, qntq: this.tableData.tqzb.sbklyl, tbzzl: this.tableData.tbzb.sbklyl, hb: this.tableData.hqzb.sbklyl, hq: this.tableData.hbzb.sbklyl });
+                this.tableDataAll.push({ name: '等效可用系数(%)', byz: this.tableData.byzb.dxklyxs, qntq: this.tableData.tqzb.dxklyxs, tbzzl: this.tableData.tbzb.dxklyxs, hb: this.tableData.hqzb.dxklyxs, hq: this.tableData.hbzb.dxklyxs });
+                this.tableDataAll.push({ name: '平均风速(m/s)', byz: this.tableData.byzb.fs, qntq: this.tableData.tqzb.fs, tbzzl: this.tableData.tbzb.fs, hb: this.tableData.hqzb.fs, hq: this.tableData.hbzb.fs });
+                this.tableDataAll.push({ name: '小风切入风速(m/s)', byz: this.tableData.byzb.xfqr, qntq: this.tableData.tqzb.xfqr, tbzzl: this.tableData.tbzb.xfqr, hb: this.tableData.hqzb.xfqr, hq: this.tableData.hbzb.xfqr });
+                this.tableDataAll.push({ name: '小风切入合格率(%)', byz: this.tableData.byzb.xfqrhgl, qntq: this.tableData.tqzb.xfqrhgl, tbzzl: this.tableData.tbzb.xfqrhgl, hb: this.tableData.hqzb.xfqrhgl, hq: this.tableData.hbzb.xfqrhgl });
+                this.tableDataAll.push({ name: '有效风时数(小时)', byz: this.tableData.byzb.yxfss, qntq: this.tableData.tqzb.yxfss, tbzzl: this.tableData.tbzb.yxfss, hb: this.tableData.hqzb.yxfss, hq: this.tableData.hbzb.yxfss });
+                this.tableDataAll.push({ name: '故障损失电量(万千瓦时)', byz: this.tableData.byzb.gzss, qntq: this.tableData.tqzb.gzss, tbzzl: this.tableData.tbzb.gzss, hb: this.tableData.hqzb.gzss, hq: this.tableData.hbzb.gzss });
+                this.tableDataAll.push({ name: '调度限电损失电量(万千瓦时)', byz: this.tableData.byzb.xdss, qntq: this.tableData.tqzb.xdss, tbzzl: this.tableData.tbzb.xdss, hb: this.tableData.hqzb.xdss, hq: this.tableData.hbzb.xdss });
+                this.tableDataAll.push({ name: '计划检修损失电量(万千瓦时)', byz: this.tableData.byzb.jxss, qntq: this.tableData.tqzb.jxss, tbzzl: this.tableData.tbzb.jxss, hb: this.tableData.hqzb.jxss, hq: this.tableData.hbzb.jxss });
+                this.tableDataAll.push({ name: '性能未达标损失电量(万千瓦时)', byz: this.tableData.byzb.xnss, qntq: this.tableData.tqzb.xnss, tbzzl: this.tableData.tbzb.xnss, hb: this.tableData.hqzb.xnss, hq: this.tableData.hbzb.xnss });
+                this.tableDataAll.push({ name: '故障停运时间(小时)', byz: this.tableData.byzb.gzxs, qntq: this.tableData.tqzb.gzxs, tbzzl: this.tableData.tbzb.gzxs, hb: this.tableData.hqzb.gzxs, hq: this.tableData.hbzb.gzxs });
+                this.tableDataAll.push({ name: '检修停运时间(小时)', byz: this.tableData.byzb.jxxs, qntq: this.tableData.tqzb.jxxs, tbzzl: this.tableData.tbzb.jxxs, hb: this.tableData.hqzb.jxxs, hq: this.tableData.hbzb.jxxs });
+                this.tableDataAll.push({ name: '并网时间(小时)', byz: this.tableData.byzb.rlxs, qntq: this.tableData.tqzb.rlxs, tbzzl: this.tableData.tbzb.rlxs, hb: this.tableData.hqzb.rlxs, hq: this.tableData.hbzb.rlxs });
+                this.tableDataAll.push({ name: '待机时间(小时)', byz: this.tableData.byzb.tjxs, qntq: this.tableData.tqzb.tjxs, tbzzl: this.tableData.tbzb.tjxs, hb: this.tableData.hqzb.tjxs, hq: this.tableData.hbzb.tjxs });
+                this.tableDataAll.push({ name: '通讯中断时间(小时)', byz: this.tableData.byzb.zdxs, qntq: this.tableData.tqzb.zdxs, tbzzl: this.tableData.tbzb.zdxs, hb: this.tableData.hqzb.zdxs, hq: this.tableData.hbzb.zdxs });
+                this.tableDataAll.push({ name: '功率特性一致性系数(%)', byz: this.tableData.byzb.glyzxxs, qntq: this.tableData.tqzb.glyzxxs, tbzzl: this.tableData.tbzb.glyzxxs, hb: this.tableData.hqzb.glyzxxs, hq: this.tableData.hbzb.glyzxxs });
+                this.tableDataAll.push({ name: '静风频率(%)', byz: this.tableData.byzb.jfpl, qntq: this.tableData.tqzb.jfpl, tbzzl: this.tableData.tbzb.jfpl, hb: this.tableData.hqzb.jfpl, hq: this.tableData.hbzb.jfpl });
+                this.text1 = this.tableData.byzb.windturbineName;
+                this.sbxxs = this.tableData.byzb.lyxs;
+                this.tbsbxxs = this.tableData.tqzb.lyxs;
+                this.sbklly = this.tableData.byzb.sbklyl;
+                this.tbsbklly = this.tableData.tqzb.sbklyl;
+                this.dxkyxs = this.tableData.byzb.dxklyxs;
+                this.tbdxkyxs = this.tableData.tqzb.dxklyxs;
+                this.jfpl = this.tableData.byzb.jfpl;
+                this.tbjfpl = this.tableData.tqzb.jfpl;
+                this.gltxyzx = this.tableData.byzb.glyzxxs;
+                this.tbglyzxxs = this.tableData.tqzb.glyzxxs;
+                this.text2 = this.tableData.byzb.windturbineName + this.year + '年' + this.month + '月平均风速' + this.tableData.byzb.fs + 'm/s、同比' +
+                    this.tableData.tqzb.fs + 'm/s,有效风时数' + this.tableData.byzb.yxfss + '小时、同比' + this.tableData.tqzb.yxfss + '小时,实际发电电量' +
+                    this.tableData.byzb.fdl + '万kwh、同比' + this.tableData.tqzb.fdl + '万kwh,同比增长率' + this.tableData.tbzb.fdl + '%,各项损失电量累计' +
+                    this.tableData.byzb.xnss + '万kwh、同比' + this.tableData.tqzb.xnss + '万kwh,同比增长率' + this.tableData.tbzb.xnss + '%,理论发电量' +
+                    this.tableData.byzb.llfdl + '万kwh、实际发电量与理论发电量相差' + this.tableData.tbzb.llfdl + '万kwh';
+            })
+            this.API.post('/singleanalysis/singleanalysisChart', performance).then((res) => {
+                this.fdlChart = res.data.ff;
+                for (let i = 0; i < this.fdlChart.length; i++) {
+                    let date = this.BASE.getBzDate(new Date(this.fdlChart[i].recorddate),0);
+                    this.date.push(date);
+                    this.fdldata.push(this.fdlChart[i].fdl);
+                    this.fsdata.push(this.fdlChart[i].fs);
+                    this.$nextTick(function () {
+                        this.getChartDataImport('chartHistogram')
+                    })
+                }
+                this.wsChart = res.data.ws;
+                console.log(this.wsChart)
+                for (let i = 0; i < this.wsChart.length; i++) {
+                    let wsdate = this.BASE.getBzDate(new Date(this.wsChart[i].recorddate),0);
+                    this.date2.push(wsdate);
+                    this.xdData.push(this.wsChart[i].xdss);
+                    this.xnwdbData.push(this.wsChart[i].xnss);
+                    this.jxssData.push(this.wsChart[i].jxss);
+                    this.gzssData.push(this.wsChart[i].gzss);
+                    this.slssData.push(this.wsChart[i].slss);
+                    this.$nextTick(function () {
+                        this.getLossChartDataImport('losschartHistogram')
+                    })
+                }
+                this.jdChart = res.data.jd;
+                // console.log(this.jdChart)
+                for (let i = 0; i < this.jdChart.length; i++) {
+                    let jddata = this.BASE.getBzDate(new Date(this.jdChart[i].recorddate),0);
+                    this.date3.push(jddata);
+                    this.jfData.push(this.jdChart[i].jfpl);
+                    this.djData.push(this.jdChart[i].tjxs);
+                    this.$nextTick(function () {
+                        this.getWindChartDataImport('windchartHistogram')
+                    })
+                }
+            })
+
+        },
+        getChartDataImport() {
+            this.ECLZX.getSingleMachineAnalysisOperationChart("chartHistogram",
+            this.fdldata,['发电量(万千瓦时)', '风速(m/s)'],this.date,this.fsdata);
+        },
+        getLossChartDataImport() {
+            this.ECLZX.getSingleMachineAnalysisOperationChart2("losschartHistogram",
+            ['限电损失电量(万千瓦时)', '性能未达标损失电量(万千瓦时)', '检修损失电量(万千瓦时)', '故障损失电量(万千瓦时)', '受累损失电量(万千瓦时)'],
+            this.date2,this.xdData,this.xnwdbData,this.jxssData,this.gzssData,this.slssData);
+        },
+        getWindChartDataImport() {
+            this.ECLZX.getSingleMachineAnalysisOperationChart3("windchartHistogram",
+            ['静风频率(小时)', '待机时间(小时)'],this.date3,this.jfData,this.djData);
+        },
+        goReturn() {
+            this.$router.push('/singleMachineAnalysis')
+        },
+    }
+}

+ 234 - 0
src/assets/js/performanceAnalysis/singleMachinePower.js

@@ -0,0 +1,234 @@
+// import excelHelper from "@/utils/excelHelper";
+export default {
+    data() {
+        return {
+            formInline: {
+                windfarm: "",
+                project: "",
+                line: "",
+            },
+            activeName: 'first',
+            information: 'first',
+            value: 'MHS_FDC',
+            value2: 'MG01_01',
+            options: [],
+            options2: [],
+            month: '',
+            time: '',
+            timemonth: '',
+            timeyear: '',
+            updateTime: '',
+            title: '月曲线偏差率排行榜',
+            daymonth: '',
+            dayyear: '',
+            currentPage2: 1,
+            pagesize: 10,
+            orderByColumn: '',
+            isAsc: '',
+            gridData: [],
+            gridDataChart: [],
+            gridDataChartX: [],
+            gridDataChartYsjnh: [],
+            gridDataChartYzynh: [],
+            gridDataChartYbzgl: [],
+            switchtableall: true,
+            switchtableday: false,
+            switchtablemonth: false,
+            total: 0,
+        }
+    },
+    created() {
+        var newData = new Date();
+        this.updateTime = this.BASE.getBzDate(newData.getTime(), -1);
+        this.API.get('/powercompare/windfarmAjax').then((res) => {
+            this.options = res.data;
+        })
+        this.API.get('/powercompare/windturbineAjax?wpId=' + this.value).then((res) => {
+            this.options2 = res.data;
+        })
+        this.singleMachinePower();
+    },
+    methods: {
+        queryApData() {
+            this.singleMachinePower();
+        },
+        handleSizeChange(val) {
+            console.log(`每页 ${val} 条`);
+            this.pagesize = val;
+            this.singleMachinePower();
+        },
+        handleCurrentChange(val) {
+            // console.log(`当前页: ${val}`);
+            this.singleMachinePower();
+        },
+        headStyle() {
+            return "text-align:center"
+        },
+        handleClick(tab) {
+            // console.log(tab.name)
+            this.information = tab.name;
+            this.singleMachinePower();
+        },
+        changeTableSort(column) {
+            this.orderByColumn = column.prop;
+            if (column.order == "descending") {
+                this.isAsc = 'desc';
+            } else if (column.order == "ascending") {
+                this.isAsc = "asc";
+            }
+            this.singleMachinePower();
+        },
+        singleMachinePower() {
+            this.gridDataChart = [];
+            this.gridDataChartX = [];
+            this.gridDataChartYsjnh = [];
+            this.gridDataChartYzynh = [];
+            this.gridDataChartYbzgl = [];
+
+            var singleMachinePowerData = new URLSearchParams();
+            var singleMachinePowerDataChart = new URLSearchParams();
+            if (this.information == 'first') {
+                this.title = '单机总功率信息列表';
+                this.switchtableall = true;
+                this.switchtableday = false;
+                this.switchtablemonth = false;
+                singleMachinePowerData.append('pageNum', this.currentPage2);
+                singleMachinePowerData.append('pageSize', this.pagesize);
+                singleMachinePowerData.append('orderByColumn', this.orderByColumn);
+                singleMachinePowerData.append('isAsc', this.isAsc);
+                singleMachinePowerData.append('wtId', this.value2);
+                this.API.post("/powersaturation/powersaturationamonutlist", singleMachinePowerData).then((res) => {
+                    this.gridData = res.data.list;
+                    this.total = res.data.total;
+                })
+                singleMachinePowerDataChart.append('wtId', this.value2);
+                this.API.post("/powersaturation/powersaturationamonutchart", singleMachinePowerDataChart).then((res) => {
+                    this.gridDataChart = res.data;
+                    for (let i = 0; i < this.gridDataChart.length; i++) {
+                        this.gridDataChartX.push(this.gridDataChart[i].value1);
+                        this.gridDataChartYsjnh.push(this.gridDataChart[i].value2);
+                        this.gridDataChartYzynh.push(this.gridDataChart[i].value3);
+                        this.gridDataChartYbzgl.push(this.gridDataChart[i].value4);
+                    }
+                    this.$nextTick(function () {
+                        this.drawPie('leiDaTu')
+                    })
+                })
+            } else if (this.information == 'second') {
+                this.title = '单机月功率信息列表';
+                this.switchtableall = false;
+                this.switchtableday = true;
+                this.switchtablemonth = false;
+                singleMachinePowerData.append('pageNum', this.currentPage2);
+                singleMachinePowerData.append('pageSize', this.pagesize);
+                singleMachinePowerData.append('orderByColumn', this.orderByColumn);
+                singleMachinePowerData.append('isAsc', this.isAsc);
+                singleMachinePowerData.append('wtId', this.value2);
+                if (this.timeyear == '') {
+                    this.timeyear = this.updateTime;
+                    this.timeyear = this.timeyear.slice(0, 4);
+                } else {
+                    this.timeyear = this.timeyear.toString();
+
+                }
+                singleMachinePowerData.append('year', this.timeyear);
+                if (this.month == '') {
+                    this.month = this.updateTime;
+                    if (this.month.substring(5, 7) < 10) {
+                        this.timemonth = this.month.substring(6, 7);
+                    } else {
+                        this.timemonth = this.month.substring(5, 7);
+                    }
+                } else {
+                    this.timemonth = this.month.toString();
+                    if (this.timemonth.substring(5, 7) < 10) {
+                        this.timemonth = this.timemonth.substring(6, 7);
+                    } else {
+                        this.timemonth = this.timemonth.substring(5, 7)
+                    }
+                }
+                console.log(this.timemonth)
+                singleMachinePowerData.append('month', this.timemonth);
+                this.API.post("/powersaturation/powersaturationmonthlist", singleMachinePowerData).then((res) => {
+                    this.gridData = res.data.list;
+                    this.total = res.data.total;
+                })
+                singleMachinePowerDataChart.append('wtId', this.value2);
+                singleMachinePowerDataChart.append('year', this.timeyear);
+                singleMachinePowerDataChart.append('month', this.timemonth);
+                this.API.post("/powersaturation/powersaturationmonthchart", singleMachinePowerDataChart).then((res) => {
+                    this.gridDataChart = res.data;
+                    for (let i = 0; i < this.gridDataChart.length; i++) {
+                        this.gridDataChartX.push(this.gridDataChart[i].value1);
+                        this.gridDataChartYsjnh.push(this.gridDataChart[i].value2);
+                        this.gridDataChartYzynh.push(this.gridDataChart[i].value3);
+                        this.gridDataChartYbzgl.push(this.gridDataChart[i].value4);
+                    }
+                    console.log(this.gridDataChart)
+                    this.$nextTick(function () {
+                        this.drawPie('leiDaTu')
+                    })
+                })
+            } else if (this.information == 'cord') {
+                this.title = '单机日功率信息列表';
+                this.switchtableall = false;
+                this.switchtableday = false;
+                this.switchtablemonth = true;
+                if (this.time == '') {
+                    this.time = this.updateTime;
+                }
+                singleMachinePowerData.append('pageNum', this.currentPage2);
+                singleMachinePowerData.append('pageSize', this.pagesize);
+                singleMachinePowerData.append('orderByColumn', this.orderByColumn);
+                singleMachinePowerData.append('isAsc', this.isAsc);
+                singleMachinePowerData.append('wtId', this.value2);
+                singleMachinePowerData.append('recorddate', this.time);
+                this.API.post("/powersaturation/powersaturationlist", singleMachinePowerData).then((res) => {
+                    this.gridData = res.data.list;
+                    this.total = res.data.total;
+                })
+                singleMachinePowerDataChart.append('wtId', this.value2);
+                singleMachinePowerDataChart.append('recorddate', this.time);
+                this.API.post("/powersaturation/powersaturationchart", singleMachinePowerDataChart).then((res) => {
+                    this.gridDataChart = res.data;
+                    for (let i = 0; i < this.gridDataChart.length; i++) {
+                        this.gridDataChartX.push(this.gridDataChart[i].value1);
+                        this.gridDataChartYsjnh.push(this.gridDataChart[i].value2);
+                        this.gridDataChartYzynh.push(this.gridDataChart[i].value3);
+                        this.gridDataChartYbzgl.push(this.gridDataChart[i].value4);
+                    }
+                    this.$nextTick(function () {
+                        this.drawPie('leiDaTu')
+                    })
+                })
+            }
+        },
+        toExcel() {
+            excelHelper.exportExcel("singlemachinepower", "负荷率排行榜", ".xls", true);
+        },
+        drawPie() {
+            this.ECLZX.getSingleMachineSaturationChart("leiDaTu",this.gridDataChartX,
+            [
+                {
+                  name: '实际拟合功率',
+                  type: 'line',
+                  stack: '总量',
+                  data: this.gridDataChartYsjnh
+                },
+                {
+                  name: '最优拟合功率',
+                  type: 'line',
+                  stack: '总量',
+                  data: this.gridDataChartYzynh
+                },
+                {
+                  name: '保证功率',
+                  type: 'line',
+                  stack: '总量',
+                  data: this.gridDataChartYbzgl
+                },
+              ],['实际拟合功率', '最优拟合功率', '保证功率']);
+
+        },
+    }
+}

+ 40 - 0
src/jsonData/menu.json

@@ -77,6 +77,26 @@
           "children": []
         },
         {
+          "name": "切入切出风速整合",
+          "url": "/cutAndSpeed",
+          "children": []
+        },
+        {
+          "name": "单机饱和度",
+          "url": "/singleMachinePower",
+          "children": []
+        },
+        {
+          "name": "计划发电量",
+          "url": "/plannedGeneration",
+          "children": []
+        },
+        {
+          "name": "单机性能分析",
+          "url": "/singleMachineAnalysis",
+          "children": []
+        },
+        {
           "name": "性能分析",
           "url": "/a",
           "children": [
@@ -119,6 +139,26 @@
                   "name": "损失率排行",
                   "url": "/percentageLossrRank",
                   "children": []
+                },
+                {
+                  "name": "负荷率排行榜",
+                  "url": "/rankingLoadRate",
+                  "children": []
+                },
+                {
+                  "name": "报警排行榜",
+                  "url": "/rankingCallThePolice",
+                  "children": []
+                },
+                {
+                  "name": "利用率排行榜",
+                  "url": "/rankingUtilization",
+                  "children": []
+                },
+                {
+                  "name": "曲线偏差率排行榜",
+                  "url": "/rankingCurveDeviationRate",
+                  "children": []
                 }
               ]
             }

+ 3 - 0
src/main.js

@@ -22,6 +22,9 @@ Vue.prototype.ECZM = ECzm;
 import echartsTool from "@tools/echartsTool"; // Echarts 工具类 - ylf
 Vue.prototype.ET = echartsTool;
 
+import EClzx from "@tools/echartsToolLzx"; // echarts处理
+Vue.prototype.ECLZX = EClzx;
+
 // import formCheck from "@tools/formCheck"; // 表单的处理
 // Vue.prototype.FC = formCheck;
 

+ 44 - 0
src/router/lzx.js

@@ -3,4 +3,48 @@ export default [
     path:'/gradeEvaluation',
     component: r => require.ensure([], () => r(require('@views/performanceAnalysis/gradeEvaluation')), 'performanceAnalysis')
   },
+  { // 切入切出风速整合
+    path:'/cutAndSpeed',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/cutAndSpeed')), 'performanceAnalysis')
+  },
+  { // 切入切出风速整合
+    path:'/cutAndSpeedHistory',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/cutAndSpeedHistory')), 'performanceAnalysis')
+  },
+  { // 单机饱和度
+    path:'/singleMachinePower',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/singleMachinePower')), 'performanceAnalysis')
+  },
+  { // 计划发电量
+    path:'/plannedGeneration',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/plannedGeneration')), 'performanceAnalysis')
+  },
+  { // 单机性能分析
+    path:'/singleMachineAnalysis',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/singleMachineAnalysis')), 'performanceAnalysis')
+  },
+  { // 单机性能分析
+    path:'/singleMachineAnalysisOperation',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/singleMachineAnalysisOperation')), 'performanceAnalysis')
+  },
+  { // 负荷率排行榜
+    path:'/rankingLoadRate',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/rankingLoadRate')), 'performanceAnalysis')
+  },
+  { // 报警排行榜
+    path:'/rankingCallThePolice',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/rankingCallThePolice')), 'performanceAnalysis')
+  },
+  { // 利用率排行榜
+    path:'/rankingUtilization',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/rankingUtilization')), 'performanceAnalysis')
+  },
+  { // 曲线偏差率排行榜
+    path:'/rankingCurveDeviationRate',
+    component: r => require.ensure([], () => r(require('@views/performanceAnalysis/rankingCurveDeviationRate')), 'performanceAnalysis')
+  },
+  { // 五项损失率
+    path:'/fiveLossRates',
+    component: r => require.ensure([], () => r(require('@views/lossBenchmarking/fiveLossRates')), 'lossBenchmarking')
+  },
 ]

+ 652 - 0
src/tools/echartsToolLzx.js

@@ -0,0 +1,652 @@
+// import EC from 'echarts'
+import * as EC from 'echarts';
+const color = ["#00FFF0", "#014EB5", "#A800FF", "#e82edb", "#B5454C", "#443bff", "#e8cb25", "#3dffb0", "#e8a425", "#ff7aab", "#e84b1e", "#552ce2", "#ffae21", "#e8861e", "#d441ff", "#35e8e4", "#9c7aff", "#e86fd8", "#ffee38"];
+
+/*
+ *  柱状图(非堆叠柱状图)
+ *  id: 元素ID
+ *  data 数据
+ * [
+          {
+            name: "限电损失电量(单位:万kwh)",
+            type: "bar",
+            data: this.histogram.xdss,
+          },
+          {
+            name: "故障损失电量(单位:万kwh)",
+            type: "bar",
+            data: this.histogram.gzss,
+          },
+          ,
+          {
+            name: "检修损失电量(单位:万kwh)",
+            type: "bar",
+            data: this.histogram.jxss,
+          },
+          {
+            name: "性能损失电量(单位:万kwh)",
+            type: "bar",
+            data: this.histogram.xnss,
+          },
+          {
+            name: "受累损失电量(单位:万kwh)",
+            type: "bar",
+            data: this.histogram.slss,
+          },
+        ]
+ *  xdata :  横坐标数据
+ * */
+export function getGradeEvaluationChartData(id, data, indicator, legenddata) {
+  if (data === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    tooltip: {},
+    legend: {
+      x: "center", //可设定图例在左、右、居中
+      y: "bottom",
+      data: legenddata,
+    },
+    radar: {
+      name: {
+        textStyle: {
+          color: "#fff",//字体颜色
+          backgroundColor: "#999",//图例颜色
+          borderRadius: 3,
+          padding: [3, 5],//距离
+        },
+      },
+      indicator: indicator,
+    },
+    series: [
+      {
+        name: "预算 vs 开销(Budget vs spending)",
+        type: "radar",
+        // areaStyle: {normal: {}},
+        data: data
+      },
+    ],
+  };
+  myChart.setOption(option, true);
+}
+
+export function getSingleMachineSaturationChart(id, gridDataChartX, data, legend) {
+  if (data === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    title: {
+      left: 'center',
+      text: '功率曲线'
+    },
+    tooltip: {
+      trigger: 'axis'
+    },
+    legend: {
+      data: legend,
+      x: 'right',
+
+    },
+    grid: {
+      left: '3%',
+      right: '4%',
+      bottom: '1%',
+      containLabel: true
+    },
+    xAxis: {
+      type: 'category',
+      boundaryGap: false,
+      data: gridDataChartX
+    },
+    yAxis: {
+      type: 'value',
+      name: '功率(KW)',
+      nameLocation: 'center',
+      nameTextStyle: {
+        padding: [0, 0, 30, 0]    // 四个数字分别为上右下左与原位置距离
+      },
+      max: 2000,
+      axisLabel: {
+        formatter: function (value) {
+          var texts = [];
+          if (value < 1000) {
+            value = value / 1000;
+            texts.push(value + 'k');
+          }
+          if (value >= 1000) {
+            value = value / 1000;
+            texts.push(value + 'k');
+          }
+          return texts;
+        }
+      },
+    },
+    series: data
+  }
+  myChart.setOption(option, true);
+}
+
+export function getSingleMachineAnalysisOperationChart(id, fdldata, legend, date, fsdata,) {
+  if (fdldata === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (fsdata === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    tooltip: {
+      trigger: 'axis',
+      axisPointer: {
+        type: 'cross',
+        crossStyle: {
+          color: '#999'
+        }
+      }
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'center',
+      bottom: 'bottom',
+      data: legend
+    },
+    xAxis: [
+      {
+        type: 'category',
+        data: date,
+        axisPointer: {
+          type: 'shadow'
+        },
+        splitLine: {
+          show: true,
+        }
+      }
+    ],
+    yAxis: [
+      {
+        type: 'value',
+        // name: '发电量',
+        min: 0,
+        max: 30000,
+        interval: 30000,
+        axisLabel: {
+          formatter: '{value} kwh'
+        },
+      },
+      {
+        type: 'value',
+        // name: '风速',
+        min: 0,
+        max: 15,
+        interval: 5,
+        axisLabel: {
+          formatter: '{value} .00'
+        }
+      }
+    ],
+    series: [
+      {
+        name: '发电量(万千瓦时)',
+        type: 'bar',
+        itemStyle: {
+          normal: {
+            color: '#0000D3'
+          }
+        },
+        data: fdldata
+      },
+      {
+        name: '风速(m/s)',
+        type: 'line',
+        yAxisIndex: 1,
+        itemStyle: {
+          normal: {
+            color: '#C248C2',
+            lineStyle: {
+              color: '#C248C2'
+            }
+          }
+        },
+        data: fsdata
+      }
+    ]
+  };
+  myChart.setOption(option, true);
+}
+
+export function getSingleMachineAnalysisOperationChart2(id, legend, date, xdData, xnwdbData, jxssData, gzssData, slssData) {
+  if (xdData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (xnwdbData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (jxssData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (gzssData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (slssData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    tooltip: {
+      trigger: 'axis',
+      axisPointer: {
+        type: 'cross',
+        crossStyle: {
+          color: '#999'
+        }
+      }
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'center',
+      bottom: 'bottom',
+      data: legend
+    },
+    xAxis: [
+      {
+        type: 'category',
+        data: date,
+        axisPointer: {
+          type: 'shadow'
+        },
+        splitLine: {
+          show: true,
+        },
+
+      }
+    ],
+    yAxis: [
+      {
+        type: 'value'
+      }
+    ],
+    series: [
+      {
+        name: '限电损失电量(万千瓦时)',
+        type: 'bar',
+        stack: 'vistors',
+        label: {
+          show: false
+        },
+        emphasis: {
+          focus: 'series'
+        },
+        itemStyle: {
+          normal: {
+            color: '#99CCFF'
+          }
+        },
+        data: xdData
+      },
+      {
+        name: '性能未达标损失电量(万千瓦时)',
+        type: 'bar',
+        stack: 'vistors',
+        label: {
+          show: false
+        },
+        emphasis: {
+          focus: 'series'
+        },
+        itemStyle: {
+          normal: {
+            color: '#FF00FF'
+          }
+        },
+        data: xnwdbData
+      },
+      {
+        name: '检修损失电量(万千瓦时)',
+        type: 'bar',
+        stack: 'vistors',
+        label: {
+          show: false
+        },
+        emphasis: {
+          focus: 'series'
+        },
+        itemStyle: {
+          normal: {
+            color: '#FFCC00'
+          }
+        },
+        data: jxssData
+      },
+      {
+        name: '故障损失电量(万千瓦时)',
+        type: 'bar',
+        stack: 'vistors',
+        label: {
+          show: false
+        },
+        emphasis: {
+          focus: 'series'
+        },
+        itemStyle: {
+          normal: {
+            color: '#800080'
+          }
+        },
+        data: gzssData
+      },
+      {
+        name: '受累损失电量(万千瓦时)',
+        type: 'bar',
+        stack: 'vistors',
+        label: {
+          show: false
+        },
+        emphasis: {
+          focus: 'series'
+        },
+        itemStyle: {
+          normal: {
+            color: '#A6A6A6'
+          }
+        },
+        data: slssData
+      },
+    ]
+  };
+  myChart.setOption(option, true);
+}
+
+export function getSingleMachineAnalysisOperationChart3(id, legend, date, jfData, djData,) {
+  if (jfData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (djData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    tooltip: {
+      trigger: 'axis'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'center',
+      bottom: 'bottom',
+      data: legend
+    },
+    xAxis: {
+      type: 'category',
+      boundaryGap: false,
+      axisPointer: {
+        type: 'shadow'
+      },
+      splitLine: {
+        show: true,
+      },
+      data: date
+    },
+    yAxis: {
+      type: 'value',
+      axisLabel: {
+        formatter: '{value} .00'
+      }
+    },
+    series: [
+      {
+        name: '静风频率(小时)',
+        type: 'line',
+        stack: '总量',
+        data: jfData,
+        itemStyle: {
+          normal: {
+            color: '#F64A4A',
+            lineStyle: {
+              color: '#F64A4A'
+            }
+          }
+        },
+      },
+      {
+        name: '待机时间(小时)',
+        type: 'line',
+        stack: '总量',
+        data: djData,
+        itemStyle: {
+          normal: {
+            color: '#4343F8',
+            lineStyle: {
+              color: '#4343F8'
+            }
+          }
+        },
+      }
+    ]
+  };
+  myChart.setOption(option, true);
+}
+
+export function getcallThePoliceChart(id, charNameData, charFreData) {
+  if (charNameData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (charFreData === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    title: {
+      text: '报警数据统计分析',
+      left: 'center'
+    },
+    xAxis: {
+      type: 'category',
+      data: charNameData,
+      axisLabel: {
+        interval: 0,
+      }
+
+    },
+    yAxis: {
+      type: 'value'
+    },
+    series: [{
+      data: charFreData,
+      type: 'bar'
+    }]
+  };
+  myChart.setOption(option, true);
+}
+
+// 
+export function getCurveDeviationRate(id, legend, Xdata, sjdata, bzdata) {
+  if (Xdata === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (sjdata === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (bzdata === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    tooltip: {
+      trigger: 'axis',
+      axisPointer: {
+        type: 'cross',
+        crossStyle: {
+          color: '#999'
+        }
+      }
+    },
+    title: {
+      text: '曲线偏差率排行',
+      left: 'center'
+    },
+    tooltip: {
+      trigger: 'axis'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'center',
+      bottom: 'bottom',
+      data: legend
+    },
+    // grid: {
+    //     left: '3%',
+    //     right: '4%',
+    //     bottom: '3%',
+    //     containLabel: true
+    // },
+    xAxis: {
+      type: 'category',
+      // boundaryGap: false,
+      axisPointer: {
+        type: 'shadow'
+      },
+      // splitLine: {
+      //      show: true,
+      // },
+      data: Xdata
+    },
+    yAxis: {
+      type: 'value'
+    },
+    series: [
+      {
+        name: '实际功率(kw)',
+        type: 'line',
+        stack: '总量',
+        data: sjdata
+      },
+      {
+        name: '保证功率(kw)',
+        type: 'line',
+        stack: '总量',
+        data: bzdata,
+        itemStyle: {
+          normal: {
+            color: '#000000'
+          }
+        },
+      },
+    ]
+  }
+  myChart.setOption(option, true);
+}
+
+//五项损失圆形图左
+export function getFiveLossSectorLeft(id, getChartDataValue) {
+  if (getChartDataValue === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    title: {
+      text: '发电量占比',
+      left: 'center'
+    },
+    color: ['#90ED7D', '#F7A35C', '#7CB5EC', '#434348', '#8085E9'],
+    tooltip: {
+      trigger: 'item'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'left',
+    },
+    series: [
+      {
+        type: 'pie',
+        radius: '50%',
+        data: getChartDataValue,
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        }
+      }
+    ]
+  };
+  myChart.setOption(option, true);
+}
+
+
+//五项损失圆形图右
+export function getFiveLossSectorRight(id, chartsAName2, getChartDataValue2) {
+  if (chartsAName2 === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  if (getChartDataValue2 === undefined) {
+    message.error("没有找到报表数据,请检查!");
+    return;
+  }
+  var myChart = EC.init(document.getElementById(id));
+  let option = {
+    title: {
+      text: chartsAName2,
+      left: "center",
+    },
+    color: ["#90ED7D", "#F7A35C", "#7CB5EC", "#434348", "#8085E9"],
+    tooltip: {
+      trigger: "item",
+    },
+    legend: {
+      orient: "vertical",
+      left: "left",
+    },
+    series: [
+      {
+        type: "pie",
+        radius: "50%",
+        data: getChartDataValue2,
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: "rgba(0, 0, 0, 0.5)",
+          },
+        },
+      },
+    ],
+  };
+  myChart.setOption(option, true);
+}
+
+
+
+
+
+export default {
+  getGradeEvaluationChartData,
+  getSingleMachineSaturationChart,
+  getSingleMachineAnalysisOperationChart,
+  getSingleMachineAnalysisOperationChart2,
+  getSingleMachineAnalysisOperationChart3,
+  getcallThePoliceChart,
+  getCurveDeviationRate,
+  getFiveLossSectorLeft,
+  getFiveLossSectorRight,
+  color,
+}

+ 397 - 0
src/views/lossBenchmarking/fiveLossRates.vue

@@ -0,0 +1,397 @@
+<template>
+<div class="box">
+  <div class="searchBar">
+    <el-form :inline="true" :model="formInline" class="demo-form-inline">
+          <el-row :gutter="1">
+            <el-form-item label="风场">
+              <el-select v-model="value"  multiple placeholder="请选择">
+              <el-option
+                v-for="item in options"
+                :key="item.name"
+                :label="item.name"
+                :value="item.id">
+              </el-option>
+            </el-select>
+            </el-form-item>
+            <el-form-item label="分类">
+              <el-select v-model="value2"  
+              @change="queryApData()" placeholder="请选择">
+              <el-option
+                v-for="item in classification"
+                :key="item.label"
+                :label="item.label"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            </el-form-item>
+            <!-- <el-form-item label="项目">
+              <el-input
+                v-model="formInline.project"
+                id="project"
+                placeholder="项目"
+                @focus="checkwindfarm"
+              ></el-input>
+            </el-form-item>
+
+            <el-form-item label="线路">
+              <el-input
+                v-model="formInline.line"
+                id="line"
+                placeholder="线路"
+                @focus="checkproject"
+              ></el-input>
+            </el-form-item> -->
+
+            <el-form-item label="选择时间:">
+              <el-date-picker
+                v-model="timedate"
+                value-format="yyyy-MM-dd"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button type="primary" @click="queryApData" :plain="true"
+                >查询</el-button
+              >
+            </el-form-item>
+
+            <el-form-item >
+              <el-button type="primary" @click="queryApDataMx"
+                >对标分析</el-button
+              >
+            </el-form-item>
+
+            <el-form-item>
+              <el-button type="primary" @click="toExcel">导出</el-button>
+            </el-form-item>
+          </el-row>
+        </el-form>
+        <el-table
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @selection-change="handleSelectionChange"
+            @sort-change="changeTableSort"
+            style="width:100%"  v-if="value2=='xn'">
+            <el-table-column label="损失率对标列表">
+            <el-table-column
+              type="index"
+              width="30">
+            </el-table-column>
+            <el-table-column
+              type="selection"
+              width=45>
+            </el-table-column>
+            <el-table-column
+              prop="wpName"
+              label="风机"
+              width="300">
+            </el-table-column>
+             <el-table-column
+             :sortable="'custom'"
+              prop="qfssnum"
+              label="性能损失电量排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="qfss"
+              label="性能损失电量"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xnsslnum"
+              label="性能损失率排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xnssl"
+              label="性能损失率(%)"
+               width="300">
+            </el-table-column>
+            <el-table-column
+              prop="address"
+              label="操作"
+               width="300">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">详情</el-button>
+               </template>
+            </el-table-column>
+          </el-table-column>
+       </el-table>
+       <el-table
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @selection-change="handleSelectionChange"
+            @sort-change="changeTableSort"
+            style="width:100%"  v-if="value2=='qf'">
+            <el-table-column label="损失率对标列表">
+            <el-table-column
+              type="index"
+              width="30">
+            </el-table-column>
+            <el-table-column
+              type="selection"
+              width=45>
+            </el-table-column>
+            <el-table-column
+              prop="wpName"
+              label="风机"
+              width="300">
+            </el-table-column>
+             <el-table-column
+             :sortable="'custom'"
+              prop="qfl"
+              label="弃风率"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="qflnum"
+              label="弃风率排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xdssnum"
+              label="限电损失电量排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xdss"
+              label="限电损失电量"
+               width="300">
+            </el-table-column>
+            <el-table-column
+              prop="address"
+              label="操作"
+               width="300">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">详情</el-button>
+               </template>
+            </el-table-column>  
+            </el-table-column>        
+       </el-table>
+       <el-table
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @selection-change="handleSelectionChange"
+            @sort-change="changeTableSort"
+            style="width:100%;"  v-if="value2=='gz'">
+            <el-table-column label="损失率对标列表">
+            <el-table-column
+              type="index"
+              width="30">
+            </el-table-column>
+            <el-table-column
+              type="selection"
+              width=45>
+            </el-table-column>
+            <el-table-column
+              prop="wpName"
+              label="风机"
+              width="300">
+            </el-table-column>
+             <el-table-column
+             :sortable="'custom'"
+              prop="gzssnum"
+              label="故障损失电量排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="gzss"
+              label="故障损失电量"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="gzsslnum"
+              label="故障损失率排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="gzssl"
+              label="故障损失率(%)"
+               width="300">
+            </el-table-column>
+            <el-table-column
+              prop="address"
+              label="操作"
+               width="300">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">详情</el-button>
+               </template>
+            </el-table-column>
+          </el-table-column>
+       </el-table>
+       <el-table
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @selection-change="handleSelectionChange"
+            @sort-change="changeTableSort"
+            style="width:100%"  v-if="value2=='jx'">
+            <el-table-column label="损失率对标列表">
+            <el-table-column
+              type="index"
+              width="30">
+            </el-table-column>
+            <el-table-column
+              type="selection"
+              width=45>
+            </el-table-column>
+            <el-table-column
+              prop="wpName"
+              label="风机"
+              width="300">
+            </el-table-column>
+             <el-table-column
+             :sortable="'custom'"
+              prop="whssnum"
+              label="检修损失电量排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="whss"
+              label="检修损失电量"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="jxsslnum"
+              label="检修损失率排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="jxssl"
+              label="检修损失率(%)"
+               width="300">
+            </el-table-column>
+            <el-table-column
+              prop="address"
+              label="操作"
+               width="300">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">详情</el-button>
+               </template>
+            </el-table-column>
+          </el-table-column>
+       </el-table>
+       <el-table
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @selection-change="handleSelectionChange"
+            @sort-change="changeTableSort"
+            style="width:100%"  v-if="value2=='sl'">
+            <el-table-column label="损失率对标列表">
+            <el-table-column
+              type="index"
+              width="30">
+            </el-table-column>
+            <el-table-column
+              type="selection"
+              width=45>
+            </el-table-column>
+            <el-table-column
+              prop="wpName"
+              label="风机"
+              width="300">
+            </el-table-column>
+             <el-table-column
+             :sortable="'custom'"
+              prop="slssnum"
+              label="受累损失电量排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="slss"
+              label="受累损失电量"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="slsslnum"
+              label="受累损失率排名"
+               width="300">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="fwjsl"
+              label="受累损失率(%)"
+               width="300">
+            </el-table-column>
+            <el-table-column
+              prop="address"
+              label="操作"
+               width="300">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">详情</el-button>
+               </template>
+            </el-table-column>
+          </el-table-column>
+       </el-table>
+       	<el-dialog class="el-dialog_body" width="60%" title="对标信息分析" :visible.sync="dialogTableVisible" append-to-body>
+							<div class="margin">
+								<div class="dialogLeftData">
+									<div id="leiDaTu" class="echart"></div>
+                  <div id="leiDaTu2" class="echart"></div>
+								</div>
+								<div class="dialogRightData">
+									<el-table :data="getTableData" height="618"
+									:row-style="{ height: '10px' }"
+									border :header-cell-style="headStyle" :cell-style="{ textAlign: 'center',padding:'7px' }" 
+									 style="width: 100%;font-size: 10px;">
+											<el-table-column prop="index" label="指标">
+											</el-table-column>
+											<el-table-column prop="data1" :label=fdcName1>
+											</el-table-column>
+											<el-table-column prop="data2" :label=fdcName2>
+											</el-table-column>
+									</el-table>
+								</div>
+							</div>
+						</el-dialog>
+       <!-- <div style="text-align: center;">
+					<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage2"
+					 :page-sizes="[10, 50, 100, 1000]"
+					 :page-size="pagesize" layout="sizes, prev, pager, next" :total="1000">
+					</el-pagination>
+				</div> -->
+       <div class="pieChart">
+         <FiveLossRatesPieChart ref="FiveLossRatesPieChart"></FiveLossRatesPieChart>
+      </div>
+      <div class="histogramChart">
+         <FiveLossRatesHistogramChart ref="FiveLossRatesHistogramChart"></FiveLossRatesHistogramChart>
+      </div>
+    </div> 
+</div>
+</template>
+<script>
+    import fiveLossRates from "@assets/js/lossBenchmarking/fiveLossRates";
+    export default fiveLossRates;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/lossBenchmarking/fiveLossRates.scss";
+</style>

+ 12 - 0
src/views/lossBenchmarking/fiveLossRatesHistogramChart.vue

@@ -0,0 +1,12 @@
+<template>
+    <div class="box">
+        <div id="chartHistogram" style="width: 90%; height: 300px; margin: auto"></div>
+    </div>
+</template>
+<script>
+    import fiveLossRatesHistogramChart from "@assets/js/lossBenchmarking/fiveLossRatesHistogramChart";
+    export default fiveLossRatesHistogramChart;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/lossBenchmarking/fiveLossRatesHistogramChart.scss";
+</style>

+ 16 - 0
src/views/lossBenchmarking/fiveLossRatesPieChart.vue

@@ -0,0 +1,16 @@
+<template>
+  <div class="box">
+    <div id="chartPie" style="width: 800px; height: 400px; margin: auto"></div>
+    <div
+      id="chartPieRight"
+      style="width: 800px; height: 400px; margin: auto"
+    ></div>
+  </div>
+</template>
+<script>
+    import fiveLossRatesPieChart from "@assets/js/lossBenchmarking/fiveLossRatesPieChart";
+    export default fiveLossRatesPieChart;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/lossBenchmarking/fiveLossRatesPieChart.scss";
+</style>

+ 336 - 0
src/views/performanceAnalysis/cutAndSpeed.vue

@@ -0,0 +1,336 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                    <span>查询条件</span>
+                </div> -->
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="风场:">
+                <el-select v-model="value"  placeholder="请选择">
+                <el-option
+                    v-for="item in options"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="日期:">
+                        <el-date-picker
+                        value-format="yyyy-MM-dd"
+                        v-model="time"
+                        type="date"
+                        placeholder="选择日期">
+                        </el-date-picker>
+                </el-form-item>
+
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="callthepolicetable"
+            :data="gridData"
+            style="width: 100%"
+            border
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            >
+            <!-- <el-table-column label="切入切出风速整合"> -->
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.windturbineid || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="inputsmallratio"
+              label="总小风切入"
+              width="150">
+            <template slot-scope="{row}">
+                {{ row.inputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="inputbigratio"
+              label="总大风切入"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.inputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="outputsmallratio"
+              label="总小风切出"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.outputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="outputbigmaxratio"
+              label="总大风切出"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.outputbigmaxratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayinputsmall"
+              label="日小风切入"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.dayinputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayinputsmallratio"
+              label="日小风切入合格"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.dayinputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayoutputsmall"
+              label="日小风切出"
+               width="150">
+            <template slot-scope="{row}">
+                {{ row.dayoutputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayoutputsmallratio"
+              label="日小风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.dayoutputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayinputbig"
+              label="日大风切入"
+               width="150">
+                <template slot-scope="{row}">
+                {{ row.dayinputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayinputbigratio"
+              label="日大风切入合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.dayinputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayoutputbig"
+              label="日大风切出"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.dayoutputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayoutputbigratio"
+              label="日大风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.dayoutputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthinputsmall"
+              label="月小风切入"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthinputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthinputsmallratio"
+              label="月小风切入合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthinputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthinputbig"
+              label="月大风切入"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthinputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthinputbigratio"
+              label="月大风切入合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthinputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthoutputsmall"
+              label="月小风切出"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthoutputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthoutputsmallratio"
+              label="月小风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthoutputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthoutputbig"
+              label="月大风切出"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthoutputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthoutputbigratio"
+              label="月大风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.monthoutputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearinputsmall"
+              label="年小风切入"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearinputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearinputsmallratio"
+              label="年小风切入合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearinputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearinputbig"
+              label="年大风切入"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearinputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearinputbigratio"
+              label="年大风切入合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearinputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearoutputsmall"
+              label="年小风切出"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearoutputsmall || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearoutputsmallratio"
+              label="年小风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearoutputsmallratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearoutputbig"
+              label="年大风切出"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearoutputbig || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yearoutputbigratio"
+              label="年大风切出合格"
+               width="150">
+               <template slot-scope="{row}">
+                {{ row.yearoutputbigratio || '0' }}
+            </template>
+            </el-table-column>
+            <el-table-column
+              fixed="right"
+              label="操作"
+               width="100">
+               <template slot-scope="scope">
+                  <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">历史</el-button>
+               </template>
+            </el-table-column>  
+            <!-- </el-table-column>         -->
+       </el-table>
+       </div>
+    </div>
+</template>
+<script>
+  import cutAndSpeed from "@assets/js/performanceAnalysis/cutAndSpeed";
+  export default cutAndSpeed;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/cutAndSpeed.scss";
+</style>

+ 180 - 0
src/views/performanceAnalysis/cutAndSpeedHistory.vue

@@ -0,0 +1,180 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                    <span>查询条件</span>
+                </div> -->
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="风场:">
+                <el-select v-model="value"  placeholder="请选择" @change="queryApData">
+                <el-option
+                    v-for="item in options"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="风机:">
+                <el-select v-model="value2"  
+                 placeholder="请选择">
+                <el-option
+                    v-for="item in options2"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id"
+                >
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="选择时间:">
+                <el-date-picker
+                    v-model="timedate"
+                    value-format="yyyy-MM-dd"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    format="yyyy-MM-dd"
+                >
+                </el-date-picker>
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+                <el-form-item>
+                  <el-button type="primary" @click="goReturn">返回</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="callthepolicetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center',}" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:1%">
+            <el-table-column label="切入切出风速整合历史">
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="150">
+            </el-table-column>
+            <el-table-column
+            prop="recorddate"
+              label="日期"
+               width="150">
+            <!-- <template slot-scope="scope">
+                {{scope.row.recorddate  | formatDate}}
+            </template> -->
+            </el-table-column>
+            <el-table-column
+              prop="inputsmallratio"
+              label="总小风切入"
+              width="150">
+            </el-table-column>
+            <el-table-column
+              prop="inputbigratio"
+              label="总大风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="outputsmallratio"
+              label="总小风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="outputbigmaxratio"
+              label="总大风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="dayinputsmall"
+              label="日小风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="dayoutputsmall"
+              label="日小风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="dayinputbig"
+              label="日大风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="dayoutputbig"
+              label="日大风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="monthinputsmall"
+              label="月小风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="monthinputbig"
+              label="月大风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="monthoutputsmall"
+              label="月小风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="monthoutputbig"
+              label="月大风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="yearinputsmall"
+              label="年小风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="yearinputbig"
+              label="年大风切入"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="yearoutputsmall"
+              label="年小风切出"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="yearoutputbig"
+              label="年大风切出"
+               width="150">
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <div style="margin-top:1%"> 
+       <div id="chartHistogram" style="width: 100%; height: 250px; margin: auto"></div>
+       </div>
+       </div>
+    </div>
+</template>
+<script>
+  import cutAndSpeedHistory from "@assets/js/performanceAnalysis/cutAndSpeedHistory";
+  export default cutAndSpeedHistory;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/cutAndSpeedHistory.scss";
+</style>

+ 66 - 67
src/views/performanceAnalysis/gradeEvaluation.vue

@@ -369,7 +369,7 @@
           :header-cell-style="headStyle"
           @sort-change="changeTableSort"
           :cell-style="{ textAlign: 'center' }"
-          style="font-size: 10px"
+          style="width: 100%"
         >
           <el-table-column label="等级评定日信息查看">
             <el-table-column type="selection" width="40"> </el-table-column>
@@ -377,140 +377,140 @@
               :sortable="'custom'"
               prop="windturbineid"
               label="风机"
-              width="80"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="level"
               label="等级"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="rank"
               label="排名"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfdl"
               label="发电量"
-              width="85"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayllfdl"
               label="理论电量"
-              width="95"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfs"
               label="风速"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygl"
               label="功率"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygzssdl"
               label="故障损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxdssdl"
               label="限电损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daywhssdl"
               label="维护损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxnssdl"
               label="性能损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayslssdl"
               label="受累损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daylyxs"
               label="利用小时数"
-              width="110"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daynhyd"
               label="拟合优度"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daysbklyl"
               label="设备可利用率"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daydxkyxs"
               label="等效可用系数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayyxfss"
               label="有效风时数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxfqr"
               label="切入风速"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayjfpl"
               label="静风频率"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayglyzxxs"
               label="功率一致性系数"
-              width="130"
+              width="150"
             >
             </el-table-column>
           </el-table-column>
@@ -537,7 +537,7 @@
           :header-cell-style="headStyle"
           @sort-change="changeTableSort"
           :cell-style="{ textAlign: 'center' }"
-          style="font-size: 10px"
+          style="width: 100%"
         >
           <el-table-column label="等级评定月信息查看">
             <el-table-column type="selection" width="40"> </el-table-column>
@@ -545,140 +545,140 @@
               :sortable="'custom'"
               prop="windturbineid"
               label="风机"
-              width="80"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="level"
               label="等级"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="rank"
               label="排名"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfdl"
               label="发电量"
-              width="85"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayllfdl"
               label="理论电量"
-              width="95"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfs"
               label="风速"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygl"
               label="功率"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygzssdl"
               label="故障损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxdssdl"
               label="限电损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daywhssdl"
               label="维护损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxnssdl"
               label="性能损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayslssdl"
               label="受累损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daylyxs"
               label="利用小时数"
-              width="110"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daynhyd"
               label="拟合优度"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daysbklyl"
               label="设备可利用率"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daydxkyxs"
               label="等效可用系数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayyxfss"
               label="有效风时数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxfqr"
               label="切入风速"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayjfpl"
               label="静风频率"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayglyzxxs"
               label="功率一致性系数"
-              width="130"
+              width="150"
             >
             </el-table-column>
           </el-table-column>
@@ -705,149 +705,148 @@
           :header-cell-style="headStyle"
           @sort-change="changeTableSort"
           :cell-style="{ textAlign: 'center' }"
-          style="font-size: 10px"
+          style="width: 100%"
         >
           <el-table-column label="等级评定年信息查看">
             <el-table-column type="selection" width="40"> </el-table-column>
-            <el-table-column type="selection" width="40"> </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="windturbineid"
               label="风机"
-              width="80"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="level"
               label="等级"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="rank"
               label="排名"
-              width="70"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfdl"
               label="发电量"
-              width="85"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayllfdl"
               label="理论电量"
-              width="95"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayfs"
               label="风速"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygl"
               label="功率"
-              width="83"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daygzssdl"
               label="故障损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxdssdl"
               label="限电损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daywhssdl"
               label="维护损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxnssdl"
               label="性能损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayslssdl"
               label="受累损失"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daylyxs"
               label="利用小时数"
-              width="110"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daynhyd"
               label="拟合优度"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daysbklyl"
               label="设备可利用率"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="daydxkyxs"
               label="等效可用系数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayyxfss"
               label="有效风时数"
-              width="120"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayxfqr"
               label="切入风速"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayjfpl"
               label="静风频率"
-              width="100"
+              width="150"
             >
             </el-table-column>
             <el-table-column
               :sortable="'custom'"
               prop="dayglyzxxs"
               label="功率一致性系数"
-              width="130"
+              width="150"
             >
             </el-table-column>
           </el-table-column>
@@ -871,10 +870,10 @@
 
 
 <script>
-  import gradeEvaluation from "@assets/js/performanceAnalysis/gradeEvaluation";
-  export default gradeEvaluation;
+import gradeEvaluation from "@assets/js/performanceAnalysis/gradeEvaluation";
+export default gradeEvaluation;
 </script>
 
 <style lang="scss" scoped>
- @import "@assets/css/performanceAnalysis/gradeEvaluation.scss";
+@import "@assets/css/performanceAnalysis/gradeEvaluation.scss";
 </style>

+ 291 - 0
src/views/performanceAnalysis/plannedGeneration.vue

@@ -0,0 +1,291 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="风场:">
+                <el-select v-model="value"  placeholder="请选择" @change="projectData">
+                <el-option
+                    v-for="item in options"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="项目:">
+                <el-select v-model="value2"  placeholder="请选择">
+                <el-option
+                    v-for="item in options2"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="年份:">
+                        <el-date-picker
+                        value-format="yyyy"
+                        v-model="timeyear"
+                        type="year"
+                        placeholder="选择年"
+                        format="yyyy"
+                        >
+                        </el-date-picker>
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="dialogFormVisible = true" :plain="true"
+                    >新增</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="callthepolicetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @row-click="tableDatawindturbineName"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:1%;cursor: pointer;">
+            <el-table-column label="计划发电量列表">
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="projectName"
+              label="名称"
+               width="150"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="year"
+              label="年"
+              width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc01"
+              label="1月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc02"
+              label="2月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc03"
+              label="3月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc04"
+              label="4月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc05"
+              label="5月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc06"
+              label="6月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc07"
+              label="7月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc08"
+              label="8月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc09"
+              label="9月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc10"
+              label="10月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc11"
+              label="11月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="gc12"
+              label="12月"
+               width="150">
+            </el-table-column>
+            <el-table-column
+              prop="generatingcapacity"
+              label="合计"
+               width="150">
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <el-dialog title="新增信息" :visible.sync="dialogFormVisible">
+            <el-form :model="form">
+                <el-form :inline="true" :model="formInline" class="demo-form-inline" style="margin-left:3.5%">
+                <el-form-item label="风场:" >
+                    <el-select v-model="value3"  placeholder="请选择" @change="projectData2">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="项目:" >
+                    <el-select v-model="value4"  placeholder="请选择">
+                    <el-option
+                        v-for="item in options3"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="年份:" >
+                        <el-date-picker
+                        v-model="timeyear"
+                        type="year"
+                        placeholder="选择年"
+                        >
+                        </el-date-picker>
+                </el-form-item>
+                </el-form>
+                <el-form-item label="1月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc01" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="2月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc02" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="3月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc03" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="4月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc04" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="5月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc05" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="6月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc06" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="7月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc07" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="8月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc08" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="9月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc09" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="10月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc10" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="11月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc11" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="12月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.gc12" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="全年计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form.generatingcapacity" autocomplete="off"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="dialogFormVisible = false">取 消</el-button>
+                <el-button type="primary" @click="addSaveData()">保存</el-button>
+            </div>
+        </el-dialog>
+        <el-dialog title="修改信息" :visible.sync="dialogFormVisible2">
+            <el-form :model="form2">
+                <el-form :inline="true" :model="formInline" class="demo-form-inline" style="margin-left:3.5%">
+                <el-form-item label="风场:" >
+                    {{fc}}
+                </el-form-item>
+                <el-form-item label="项目:" >
+                    {{xm}}
+                </el-form-item>
+                 <el-form-item label="年份:" >
+                    {{nf}}
+                </el-form-item>
+                </el-form>
+                <el-form-item label="1月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc01" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="2月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc02" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="3月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc03" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="4月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc04" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="5月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc05" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="6月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc06" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="7月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc07" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="8月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc08" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="9月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc09" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="10月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc10" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="11月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc11" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="12月份计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.gc12" autocomplete="off"></el-input>
+                </el-form-item>
+                <el-form-item label="全年计划发电量(万kWh)" :label-width="formLabelWidth">
+                    <el-input v-model="form2.generatingcapacity" autocomplete="off"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="dialogFormVisible2 = false">取 消</el-button>
+                <el-button type="primary" @click="saveData()">保存</el-button>
+            </div>
+        </el-dialog>
+       </div>
+    </div>
+</template>
+<script>
+    import plannedGeneration from "@assets/js/performanceAnalysis/plannedGeneration";
+    export default plannedGeneration;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/plannedGeneration.scss";
+</style>

+ 89 - 0
src/views/performanceAnalysis/rankingCallThePolice.vue

@@ -0,0 +1,89 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                    <span>查询条件</span>
+                </div> -->
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="维度">
+                <el-select v-model="value"  placeholder="请选择">
+                <el-option
+                    v-for="item in options"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="选择时间:">
+                <el-date-picker
+                    v-model="timedate"
+                    value-format="yyyy-MM-dd"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    format="yyyy-MM-dd"
+                >
+                </el-date-picker>
+                </el-form-item>
+
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="callthepolicetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center',padding:'1px' }" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="font-size: 10px;margin-top:1%">
+            <el-table-column label="报警信息统计排行">
+            <!-- <el-table-column
+              type="index"
+              width="40">
+            </el-table-column> -->
+            <el-table-column
+              type="index"
+              label="序号"
+               width="605">
+            </el-table-column>
+            <el-table-column
+              prop="name"
+              label="名称"
+              width="605">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="frequencyday"
+              label="频率(次)"
+               width="605">
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <div style="margin-top:1%"> 
+       <div id="chartHistogram" style="width: 100%; height: 250px; margin: auto"></div>
+       </div>
+       </div>
+    </div>
+</template>
+<script>
+    import rankingCallThePolice from "@assets/js/performanceAnalysis/rankingCallThePolice";
+    export default rankingCallThePolice;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/rankingCallThePolice.scss";
+</style>

+ 188 - 0
src/views/performanceAnalysis/rankingCurveDeviationRate.vue

@@ -0,0 +1,188 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-tabs v-model="activeName" @tab-click="handleClick" type="card">
+                <el-tab-pane label="月曲线偏差率排行榜" name="first" :key="'first'">
+                    <el-card class="box-card">
+                    <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                        <span>查询条件</span>
+                    </div> -->
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                <el-row :gutter="1">
+                    <el-form-item label="查询条件">
+                    </el-form-item>
+                    <el-form-item label="风场">
+                    <el-select v-model="value"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="年份:">
+                        <el-date-picker
+                        value-format="yyyy"
+                        v-model="year"
+                        type="year"
+                        placeholder="选择年"
+                        format="yyyy"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item label="月份:">
+                        <el-date-picker
+                        value-format="yyyy-MM"
+                        v-model="month"
+                        type="month"
+                        placeholder="选择月"
+                        format="yyyy-MM">
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="queryApData" :plain="true"
+                        >查询</el-button
+                    >
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="toExcel()">导出</el-button>
+                    </el-form-item>
+                </el-row>
+                </el-form>
+                </el-card>
+            </el-tab-pane>
+            <el-tab-pane label="日曲线偏差率排行榜" name="second" :key="'second'">
+                <el-card class="box-card">
+                    <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                        <span>查询条件</span>
+                    </div> -->
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                <el-row :gutter="1">
+                    <el-form-item label="查询条件"></el-form-item>
+                    <el-form-item label="风场">
+                    <el-select v-model="value"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="选择时间:">
+                        <el-date-picker
+                        value-format="yyyy-MM-dd"
+                        v-model="time"
+                        type="date"
+                        placeholder="选择日期">
+                        </el-date-picker>
+                    </el-form-item>
+
+                    <el-form-item>
+                    <el-button type="primary" @click="queryApData" :plain="true"
+                        >查询</el-button
+                    >
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="toExcel()">导出</el-button>
+                    </el-form-item>
+                </el-row>
+                </el-form>
+                </el-card>
+            </el-tab-pane>
+        </el-tabs>
+        <el-table
+            id="devicerattable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center',padding:'1px' }" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            @row-click="tableDatawindturbineName"
+            style="font-size: 10px;margin-top:1%;cursor: pointer;">
+            <el-table-column :label=title>
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="260">
+               <template slot-scope="scope" > 
+                  <div @click="clickCopy('1')" :style="{color:'#000000'}">{{scope.row.windturbineid}}</div>
+              </template> 
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="monthdeviationrate"
+              label="实际/保证(%)"
+              width="260">
+              <template slot-scope="scope" > 
+                  <div @click="clickCopy('sjbz')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template> 
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="standarddeviationrate"   
+              label="实际/量优(%)"
+              width="260">
+              <template slot-scope="scope" > 
+                  <div @click="clickCopy('sjzy')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template> 
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yeardeviationrate"
+              label="实际/保证(%)"
+              width="260">
+              <template slot-scope="scope" > 
+                  <div @click="clickCopy('zybz')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="deviationrate1"
+              label="环比"
+               width="260">
+               <template slot-scope="scope" > 
+                  <div @click="clickCopy('hb')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="deviationrate2"
+              label="同比"
+               width="260">
+               <template slot-scope="scope" > 
+                  <div @click="clickCopy('tb')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="deviationrate3"
+              label="比标杆风机"
+               width="260">
+               <template slot-scope="scope" > 
+                  <div @click="clickCopy('bg')" :style="{color:'#000000'}">{{scope.row.monthdeviationrate}}</div>
+              </template>
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <el-dialog :title="eldialogtitle" :visible.sync="dialogFormVisible">
+           <div style="width:100%;height:400px">
+            <div id="leiDaTu" class="echart" style="width:100%;height:350px"></div>
+           </div>
+        </el-dialog>
+        </div>
+    </div>
+</template>
+<script>
+    import rankingCurveDeviationRate from "@assets/js/performanceAnalysis/rankingCurveDeviationRate";
+    export default rankingCurveDeviationRate;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/rankingCurveDeviationRate.scss";
+</style>

+ 126 - 0
src/views/performanceAnalysis/rankingLoadRate.vue

@@ -0,0 +1,126 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <!-- <div slot="header" class="clearfix" style="font-size:15px">
+                    <span>查询条件</span>
+                </div> -->
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="类型">
+                <el-select v-model="value"  placeholder="请选择">
+                <el-option
+                    v-for="item in options"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="风场">
+                <el-select v-model="value2"  
+                @change="queryApData()" placeholder="请选择">
+                <el-option
+                    v-for="item in options2"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id"
+                >
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="选择时间:">
+                <el-date-picker
+                    v-model="timedate"
+                    value-format="yyyy-MM-dd"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    format="yyyy-MM-dd"
+                >
+                </el-date-picker>
+                </el-form-item>
+
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="loadratetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:1%">
+            <el-table-column label="负荷率排行榜">
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windfarm"
+              label="风场"
+               >
+            </el-table-column>
+            <el-table-column
+              prop="windturbine"
+              label="风机"
+              >
+            </el-table-column>
+            <el-table-column
+            :formatter="formatDatebeginDate"
+              label="起始日期"
+               >
+            </el-table-column>
+            <el-table-column
+            :formatter="formatDateendDate"
+              label="截至日期"
+               >
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="speed"
+              label="平均风速"
+               >
+            <template slot-scope="scope">
+              <span>{{scope.row.speed | rounding}}</span>
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="power"
+              label="平均功率"
+               >
+            <template slot-scope="scope">
+              <span>{{scope.row.power | rounding}}</span>
+            </template>
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="generatingCapacity"
+              label="平均效率"
+               >
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+        </div>
+    </div>
+</template>
+<script>
+    import rankingLoadRate from "@assets/js/performanceAnalysis/rankingLoadRate";
+    export default rankingLoadRate;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/rankingLoadRate.scss";
+</style>

+ 102 - 0
src/views/performanceAnalysis/rankingUtilization.vue

@@ -0,0 +1,102 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="类型">
+                <el-select v-model="value"  placeholder="请选择">
+                <el-option
+                    v-for="item in options"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="风场">
+                <el-select v-model="value2"  
+                 placeholder="请选择">
+                <el-option
+                    v-for="item in options2"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id"
+                >
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="选择时间:">
+                <el-date-picker
+                    v-model="timedate"
+                    value-format="yyyy-MM-dd"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    format="yyyy-MM-dd"
+                >
+                </el-date-picker>
+                </el-form-item>
+
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >查询</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <el-table
+            id="loadratetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:1%">
+            <el-table-column label="利用率排行榜">
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="名称"
+               width="460">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="daydl2"
+              label="实际发电量(万KW)"
+               width="460">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="daylldl"
+              label="理论发电量(万KW)"
+               width="460">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dayspeed"
+              label="风能利用率(%)"
+               width="460">
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+        </div>
+    </div>
+</template>
+<script>
+    import rankingUtilization from "@assets/js/performanceAnalysis/rankingUtilization";
+    export default rankingUtilization;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/rankingUtilization.scss";
+</style>

+ 169 - 0
src/views/performanceAnalysis/singleMachineAnalysis.vue

@@ -0,0 +1,169 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-card class="box-card">
+                <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-row :gutter="1">
+                <el-form-item label="查询条件">
+                </el-form-item>
+                <el-form-item label="风场:">
+                <el-select v-model="value"  placeholder="请选择" @change="projectData">
+                <el-option
+                    v-for="item in options"
+                    :key="item.name"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+                </el-select>
+                </el-form-item>
+                <el-form-item label="年份:">
+                        <el-date-picker
+                        value-format="yyyy"
+                        v-model="year"
+                        type="year"
+                        placeholder="选择年"
+                        format="yyyy"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item label="月份:">
+                        <el-date-picker
+                        value-format="yyyy-MM"
+                        v-model="month"
+                        type="month"
+                        placeholder="选择月"
+                        format="yyyy-MM">
+                        </el-date-picker>
+                    </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="queryApData" :plain="true"
+                    >计算</el-button
+                >
+                </el-form-item>
+                <el-form-item>
+                <el-button type="primary" @click="toExcel()">导出</el-button>
+                </el-form-item>
+            </el-row>
+            </el-form>
+            </el-card>
+            <div style="font-size:30px;text-align:center;margin-top:1%">{{title}}</div>
+            <el-table
+            id="callthepolicetable"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center'}" 
+            :header-cell-style="{ textAlign:'center',background:'#F5F7FA'}"
+            @sort-change="changeTableSort"
+            @row-click="tableDatawindturbineName"
+            border
+            style="width:100%;margin-top:1%;cursor: pointer;">
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineName"
+              label="机组编号"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="fdl"
+              label="实际发电量(万千瓦时)"
+              width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="llfdl"
+              label="理论发电量(万千瓦时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="sbklyl"
+              label="设备利用小时数(小时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="sbklyl"
+              label="设备可利用率(%)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="dxklyxs"
+              label="等效可用系数(%)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="fs"
+              label="平均风速(m/s)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xfqr"
+              label="小风切入风速(m/s)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="yxxs"
+              label="有效风时数(小时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="gzss"
+              label="故障损失电量(万千瓦时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xdss"
+              label="调度限电损失电量(万千瓦时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="jxss"
+              label="计划检修损失电量(万千瓦时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="xnss"
+              label="性能未达标损失电量(万千瓦时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="gzxs"
+              label="故障停用时间(小时)"
+               width="250">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="glyzxxs"
+              label="机组功率一致性系数(%)"
+               width="250">
+            </el-table-column>
+            <!-- <el-table-column
+            :sortable="'custom'"
+              prop="jfpl"
+              label="静风频率"
+               width="100">
+            </el-table-column>         -->
+       </el-table>
+       </div>
+    </div>
+</template>
+<script>
+    import singleMachineAnalysis from "@assets/js/performanceAnalysis/singleMachineAnalysis";
+    export default singleMachineAnalysis;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/singleMachineAnalysis.scss";
+</style>

+ 72 - 0
src/views/performanceAnalysis/singleMachineAnalysisOperation.vue

@@ -0,0 +1,72 @@
+<template>
+    <div class="box" id="pdfDom">
+        <div class="searchBar">
+            <el-form :inline="true" :model="formInline" class="demo-form-inline">
+          <el-row :gutter="1">
+            <el-form-item>
+              <el-button style="margin-left:20%" type="primary" @click="goReturn">返回</el-button>
+            </el-form-item>
+            <!-- <el-form-item>
+              <el-button style="margin-left:20%" type="primary" v-on:click="getPdf('单机性能分析')">导出pdf</el-button>
+            </el-form-item> -->
+          </el-row>
+        </el-form>
+            <div style="font-size:30px;text-align:center;margin-top:1%">{{title}}</div>
+            <el-table
+                id="callthepolicetable"
+                :row-style="{ height: '10px' }" 
+                :cell-style="{ textAlign: 'center'}" 
+                :header-cell-style="{ textAlign:'center',background:'#F5F7FA'}"
+                @sort-change="changeTableSort"
+                :data="tableDataAll"
+                align="center"
+                border
+                style="width: 100%;margin-top:2%;">
+                <el-table-column
+                prop="name"
+                label="指标名称"
+                >
+                </el-table-column>
+                <el-table-column
+                prop="byz"
+                label="本月值"
+                >
+                </el-table-column>
+                <el-table-column
+                prop="qntq"
+                label="去年同期"
+                >
+                </el-table-column>
+                <el-table-column
+                prop="tbzzl"
+                label="同比增长率(%)"
+                >
+                </el-table-column>
+                <el-table-column
+                prop="hb"
+                label="环比"
+                >
+                </el-table-column>
+                <el-table-column
+                prop="hq"
+                label="环比增减值(%)"
+                >
+                </el-table-column>
+            </el-table>
+            <div style="width:80%;margin-top:1%;margin-left:7%">本月{{text1}}设备小时数{{sbxxs}}小时、同比{{tbsbxxs}}小时,设备可利用率{{sbklly}}%、同比{{tbsbklly}}%,等效可用系数{{dxkyxs}}%、同比{{tbdxkyxs}}%,静风频率达到{{jfpl}}%、同比{{tbjfpl}}%,机组功率特性一致性系数达到{{gltxyzx}}%、同比{{tbglyzxxs}}%。</div>
+            <div style="width:80%;margin-top:1%;margin-left:7%">{{text2}}</div>
+            <div id="chartHistogram" style="width: 100%; height: 400px;"></div>
+            <div id="losschartHistogram" style="width: 100%; height: 400px;"></div>
+            <div id="windchartHistogram" style="width: 100%; height: 400px;"></div>
+            <div style="width: 100%; height: 300px; margin: auto"></div>
+
+        </div>
+    </div>
+</template>
+<script>
+    import singleMachineAnalysisOperation from "@assets/js/performanceAnalysis/singleMachineAnalysisOperation";
+    export default singleMachineAnalysisOperation;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/singleMachineAnalysisOperation.scss";
+</style>

+ 303 - 0
src/views/performanceAnalysis/singleMachinePower.vue

@@ -0,0 +1,303 @@
+<template>
+    <div class="box">
+        <div class="searchBar">
+            <el-tabs v-model="activeName" @tab-click="handleClick" type="card">
+                <el-tab-pane label="总功率情况" name="first" :key="'first'">
+                    <el-card class="box-card">
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline" style="height:30px">
+                <el-row :gutter="1">
+                    <el-form-item label="查询条件:">
+                    </el-form-item>
+                    <el-form-item label="风电电场:">
+                    <el-select v-model="value"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="风机:">
+                    <el-select v-model="value2"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options2"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="queryApData" :plain="true"
+                        >查询</el-button
+                    >
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="toExcel()">导出</el-button>
+                    </el-form-item>
+                </el-row>
+                </el-form>
+                </el-card>
+            </el-tab-pane>
+            <el-tab-pane label="月功率情况" name="second" :key="'second'">
+                <el-card class="box-card">
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline" style="height:30px">
+                <el-row :gutter="1">
+                    <el-form-item label="查询条件:">
+                    </el-form-item>
+                    <el-form-item label="风场">
+                    <el-select v-model="value"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="风机:">
+                    <el-select v-model="value2"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options2"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="年份:">
+                        <el-date-picker
+                        value-format="yyyy"
+                        v-model="timeyear"
+                        type="year"
+                        placeholder="选择年"
+                        format="yyyy"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item label="月份:">
+                        <el-date-picker
+                        value-format="yyyy-MM"
+                        v-model="month"
+                        type="month"
+                        placeholder="选择月"
+                        format="yyyy-MM"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+
+                    <el-form-item>
+                    <el-button type="primary" @click="queryApData" :plain="true"
+                        >查询</el-button
+                    >
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="toExcel()">导出</el-button>
+                    </el-form-item>
+                </el-row>
+                </el-form>
+                </el-card>
+            </el-tab-pane>
+            <el-tab-pane label="日功率情况" name="cord" :key="'cord'">
+                <el-card class="box-card">
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline" style="height:30px">
+                <el-row :gutter="1">
+                    <el-form-item label="查询条件:">
+                    </el-form-item>
+                    <el-form-item label="风场">
+                    <el-select v-model="value"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="风机:">
+                    <el-select v-model="value2"  
+                    @change="queryApData()" placeholder="请选择">
+                    <el-option
+                        v-for="item in options2"
+                        :key="item.name"
+                        :label="item.name"
+                        :value="item.id"
+                    >
+                    </el-option>
+                    </el-select>
+                    </el-form-item>
+                    <el-form-item label="选择时间:">
+                        <el-date-picker
+                        value-format="yyyy-MM-dd"
+                        v-model="time"
+                        type="date"
+                        placeholder="选择日期"
+                        format="yyyy-MM-dd">
+                        </el-date-picker>
+                    </el-form-item>
+
+                    <el-form-item>
+                    <el-button type="primary" @click="queryApData" :plain="true"
+                        >查询</el-button
+                    >
+                    </el-form-item>
+                    <el-form-item>
+                    <el-button type="primary" @click="toExcel()">导出</el-button>
+                    </el-form-item>
+                </el-row>
+                </el-form>
+                </el-card>
+            </el-tab-pane>
+        </el-tabs>
+        <el-table v-if="switchtableall"
+            id="singlemachinepower"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center' }" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:0.5%">
+            <el-table-column :label=title>
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="460">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="speed"
+              label="风速"
+              width="460">
+            </el-table-column>
+            <el-table-column
+              prop="actualpower"   
+              label="实际拟合功率"
+              width="460">
+            </el-table-column>
+            <el-table-column
+              prop="optimalpower"
+              label="最优拟合功率"
+              width="460">
+            </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <el-table v-if="switchtableday"
+            id="singlemachinepower"
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center' }" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:0.5%">
+            <el-table-column :label=title>
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="370">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="speed"
+              label="风速"
+              width="370">
+            </el-table-column>
+            <el-table-column
+              prop="actualpower"   
+              label="实际拟合功率"
+              width="370">
+            </el-table-column>
+            <el-table-column
+              prop="optimalpower"
+              label="最优拟合功率"
+              width="370">
+            </el-table-column>
+            <el-table-column
+                    prop="address"
+                    label="操作"
+                    width="370">
+                    <template slot-scope="scope">
+                        <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">修改</el-button>
+                    </template>
+                </el-table-column>
+            </el-table-column>        
+       </el-table>
+          <el-table v-if="switchtablemonth"
+            id="singlemachinepower" 
+            :data="gridData"
+            :row-style="{ height: '10px' }" 
+            :cell-style="{ textAlign: 'center' }" 
+            :header-cell-style="headStyle"
+            @sort-change="changeTableSort"
+            style="width:100%;margin-top:0.5%">
+            <el-table-column :label=title>
+            <el-table-column
+              type="index"
+              width="40">
+            </el-table-column>
+            <el-table-column
+              prop="windturbineid"
+              label="风机"
+               width="370">
+            </el-table-column>
+            <el-table-column
+            :sortable="'custom'"
+              prop="speed"
+              label="风速"
+              width="370">
+            </el-table-column>
+            <el-table-column
+              prop="actualpower"   
+              label="实际拟合功率"
+              width="370">
+            </el-table-column>
+            <el-table-column
+              prop="optimalpower"
+              label="最优拟合功率"
+              width="370">
+            </el-table-column>
+            <el-table-column
+                    prop="address"
+                    label="操作"
+                    width="370">
+                    <template slot-scope="scope">
+                        <el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">修改</el-button>
+                    </template>
+                </el-table-column>
+            </el-table-column>        
+       </el-table>
+       <div style="text-align: center;">
+			<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage2"
+				:page-sizes="[10, 50, 100, 1000]"
+				:page-size="pagesize" layout="total,sizes, prev, pager, next" :total="total">
+			</el-pagination>
+		</div>
+        <div id="leiDaTu" class="echart"></div>
+        </div>
+    </div>
+</template>
+<script>
+    import singleMachinePower from "@assets/js/performanceAnalysis/singleMachinePower";
+    export default singleMachinePower;
+</script>
+<style lang="scss" scoped>
+    @import "@assets/css/performanceAnalysis/singleMachinePower.scss";
+</style>