|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: your name
|
|
|
* @Date: 2024-05-27 09:25:45
|
|
|
- * @LastEditTime: 2025-01-03 12:11:11
|
|
|
+ * @LastEditTime: 2025-01-10 15:30:25
|
|
|
* @LastEditors: bogon
|
|
|
* @Description: In User Settings Edit
|
|
|
* @FilePath: /performance-test/src/views/performance/assetssDetail.vue
|
|
@@ -60,7 +60,7 @@
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="(item, indAns) in analysisTypeList"
|
|
|
- :key="item.analysisTypeCode + indAns"
|
|
|
+ :key="item.analysisTypeCode + indAns + 'analysisTypeList'"
|
|
|
:label="item.analysisTypeName"
|
|
|
:value="item.analysisTypeCode"
|
|
|
></el-option>
|
|
@@ -119,73 +119,123 @@
|
|
|
<el-table-column prop="engine_name" label="风机名称"> </el-table-column>
|
|
|
<el-table-column prop="yaw_error1" label="误差值"> </el-table-column>
|
|
|
</el-table>
|
|
|
- <el-table
|
|
|
+ <template
|
|
|
v-else-if="formInfo.analysisTypeCode === 'production_indicator'"
|
|
|
- :data="productionIndicatorCsvData"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- align="center"
|
|
|
>
|
|
|
- <el-table-column prop="EPActualTotal" label="实发电量">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="TurbinePowerRate" label="风机能量利用率">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="EPLostStopPercent" label="停机损失百分比">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="EPLostBadPercent" label="欠发损失百分比">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="EPLostPerformPercent"
|
|
|
- label="功率曲线未达标损失百分比"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="EPLostLimitPercent" label="限电损失百分比">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="TurbineRunRate" label="风机可利用率">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="mean_width" label="功率水平平均宽度">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="variance_width" label="功率水平方差">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="WindSpeedAvr" label="平均风速">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="Thi" label="利用小时"> </el-table-column>
|
|
|
- <el-table-column prop="Ws" label="功率曲线一致性系数">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- v-if="
|
|
|
- formInfo.fieldEngineCode !== '' && formInfo.fieldEngineCode !== null
|
|
|
- "
|
|
|
- prop="Qp"
|
|
|
- label="风场总发电量"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- v-if="
|
|
|
- formInfo.fieldEngineCode !== '' && formInfo.fieldEngineCode !== null
|
|
|
- "
|
|
|
- prop="Thc"
|
|
|
- label="风场等效利用小时"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- v-if="
|
|
|
- formInfo.fieldEngineCode !== '' && formInfo.fieldEngineCode !== null
|
|
|
- "
|
|
|
- prop="Rdr"
|
|
|
- label="风场弃风率"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- v-if="
|
|
|
- formInfo.fieldEngineCode !== '' && formInfo.fieldEngineCode !== null
|
|
|
- "
|
|
|
- prop="Qdr"
|
|
|
- label="风场弃风电量"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
-
|
|
|
+ <div>
|
|
|
+ <template v-for="itemCsv in productionIndicatorCsvData">
|
|
|
+ <el-table
|
|
|
+ v-if="Object.keys(itemCsv.data[0]).length > 4"
|
|
|
+ :data="itemCsv.data"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column prop="EPActualTotal" label="实发电量">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="TurbinePowerRate" label="风机能量利用率">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="EPLostStopPercent" label="停机损失百分比">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="EPLostBadPercent" label="欠发损失百分比">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="EPLostPerformPercent"
|
|
|
+ label="功率曲线未达标损失百分比"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="EPLostLimitPercent" label="限电损失百分比">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="TurbineRunRate" label="风机可利用率">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="mean_width" label="功率水平平均宽度">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="variance_width" label="功率水平方差">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="WindSpeedAvr" label="平均风速">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="Thi" label="利用小时"> </el-table-column>
|
|
|
+ <el-table-column prop="Ws" label="功率曲线一致性系数">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-table
|
|
|
+ v-else
|
|
|
+ :data="itemCsv.data"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column prop="Qp" label="风场总发电量">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="Thc" label="风场等效利用小时">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="Rdr" label="风场弃风率"> </el-table-column>
|
|
|
+ <el-table-column prop="Qdr" label="风场弃风电量">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="formInfo.analysisTypeCode === 'fault'">
|
|
|
+ <div>
|
|
|
+ <template v-for="itemCsv in zongFaultCsvData">
|
|
|
+ <el-table
|
|
|
+ :data="filteredData(itemCsv)"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column prop="fault_detail" label="故障类型">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="count" sortable label="故障次数(次)">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="fault_time_sum"
|
|
|
+ sortable
|
|
|
+ label="故障时长(秒)"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="right">
|
|
|
+ <template slot="header" slot-scope="scope">
|
|
|
+ <el-input
|
|
|
+ v-model="search"
|
|
|
+ size="mini"
|
|
|
+ placeholder="输入故障类型关键字搜索"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ <template v-for="itemCsv in fenFaultCsvData">
|
|
|
+ <el-table
|
|
|
+ :data="filteredFenData(itemCsv)"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column prop="wind_turbine_name" label="风机名称">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="count" sortable label="故障次数(次)">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="fault_time"
|
|
|
+ sortable
|
|
|
+ label="故障时长(秒)"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="right">
|
|
|
+ <template slot="header" slot-scope="scope">
|
|
|
+ <el-input
|
|
|
+ v-model="searchFen"
|
|
|
+ size="mini"
|
|
|
+ placeholder="输入风机名称关键字搜索"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<!-- 需要在这里添加三个分析类型排版布局 ,分析详情中 -->
|
|
|
<div v-else>
|
|
|
<el-card class="box-card analysisType" v-if="generalFiles.length > 0">
|
|
@@ -324,7 +374,15 @@
|
|
|
v-if="graphFilesData[0] !== null && graphFilesData.length !== 0"
|
|
|
>
|
|
|
<template v-for="(powerCurveDom, ind) in graphFilesData">
|
|
|
- <el-col :span="12">
|
|
|
+ <el-col
|
|
|
+ :span="12"
|
|
|
+ v-if="
|
|
|
+ powerCurveDom &&
|
|
|
+ formInfo.fieldEngineCode ===
|
|
|
+ powerCurveDom.chartsData.formInfoFieldEngineCode &&
|
|
|
+ powerCurveDom.powerCurveTableData.length > 0
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="left">
|
|
|
<!-- <el-button
|
|
|
@click="
|
|
@@ -360,7 +418,12 @@
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<el-col
|
|
|
- v-if="formInfo.analysisTypeCode === 'power_curve'"
|
|
|
+ v-if="
|
|
|
+ powerCurveDom &&
|
|
|
+ formInfo.fieldEngineCode ===
|
|
|
+ powerCurveDom.chartsData.formInfoFieldEngineCode &&
|
|
|
+ powerCurveDom.powerCurveTableData.length > 0
|
|
|
+ "
|
|
|
:span="12"
|
|
|
>
|
|
|
<div class="right">
|
|
@@ -371,6 +434,7 @@
|
|
|
></PlotlyCharts>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
+ <el-empty v-else description="该机组暂无分图"></el-empty>
|
|
|
</template>
|
|
|
</template>
|
|
|
<template v-if="powerHtmlFenData.length > 0">
|
|
@@ -491,6 +555,8 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ search: "",
|
|
|
+ searchFen: "",
|
|
|
loadings: [],
|
|
|
loading: false,
|
|
|
fileCheckResult: null,
|
|
@@ -517,12 +583,47 @@ export default {
|
|
|
graphFilesData: [],
|
|
|
powerHtmlZongData: [],
|
|
|
powerHtmlFenData: [],
|
|
|
+ zongFaultCsvHeader: [],
|
|
|
+ zongFaultCsvData: [],
|
|
|
+ fenFaultCsvHeader: [],
|
|
|
+ fenFaultCsvData: [],
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
//获取分析 分析类型、机组编号 列表
|
|
|
this.getWindCodeList();
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ // 根据搜索关键字过滤数据
|
|
|
+ filteredData() {
|
|
|
+ return (itemCsv) => {
|
|
|
+ // 如果有搜索关键词,则过滤数据
|
|
|
+ if (this.search) {
|
|
|
+ return itemCsv.data.filter((item) => {
|
|
|
+ return item.fault_detail
|
|
|
+ .toLowerCase()
|
|
|
+ .includes(this.search.toLowerCase());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 没有搜索关键词时返回所有数据
|
|
|
+ return itemCsv.data;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ filteredFenData() {
|
|
|
+ return (itemCsv) => {
|
|
|
+ // 如果有搜索关键词,则过滤数据
|
|
|
+ if (this.searchFen) {
|
|
|
+ return itemCsv.data.filter((item) => {
|
|
|
+ return item.wind_turbine_name
|
|
|
+ .toLowerCase()
|
|
|
+ .includes(this.searchFen.toLowerCase());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 没有搜索关键词时返回所有数据
|
|
|
+ return itemCsv.data;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.initializeLoading();
|
|
|
// this.chartsTypeConfig();
|
|
@@ -734,13 +835,28 @@ export default {
|
|
|
response.data[0]?.generalFiles &&
|
|
|
response.data[0]?.generalFiles[0]?.fileAddr
|
|
|
) {
|
|
|
- const fileUrl = response.data[0]?.generalFiles[0]?.fileAddr;
|
|
|
if (this.formInfo.analysisTypeCode === "yaw_error") {
|
|
|
+ const fileUrl = response.data[0]?.generalFiles[0]?.fileAddr;
|
|
|
this.fetchCsvData("yaw_error", fileUrl);
|
|
|
} else if (
|
|
|
this.formInfo.analysisTypeCode === "production_indicator"
|
|
|
) {
|
|
|
- this.fetchCsvData("production_indicator", fileUrl);
|
|
|
+ response.data[0].generalFiles.map((item) => {
|
|
|
+ if (item.fileAddr) {
|
|
|
+ this.productionIndicatorCsvHeader = [];
|
|
|
+ this.productionIndicatorCsvData = [];
|
|
|
+ this.fetchCsvData("production_indicator", item.fileAddr);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else if (this.formInfo.analysisTypeCode === "fault") {
|
|
|
+ //总图处理
|
|
|
+ response.data[0].generalFiles.map((item) => {
|
|
|
+ if (item.fileAddr) {
|
|
|
+ this.productionIndicatorCsvHeader = [];
|
|
|
+ this.productionIndicatorCsvData = [];
|
|
|
+ this.fetchCsvData("fault", item.fileAddr);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -917,17 +1033,32 @@ export default {
|
|
|
(row) => Object.keys(row).length
|
|
|
); // 过滤空行
|
|
|
} else if (analysisType === "production_indicator") {
|
|
|
- this.productionIndicatorCsvHeader = Object.keys(
|
|
|
- result.data[0]
|
|
|
- );
|
|
|
- this.productionIndicatorCsvData = result.data.filter(
|
|
|
- (row) => Object.keys(row).length
|
|
|
- ); // 过滤空行
|
|
|
- console.log(
|
|
|
- this.productionIndicatorCsvHeader,
|
|
|
- result.data,
|
|
|
- "result.data"
|
|
|
+ this.productionIndicatorCsvHeader.push(
|
|
|
+ Object.keys(result.data[0])
|
|
|
);
|
|
|
+ this.productionIndicatorCsvData.push({
|
|
|
+ data: result.data
|
|
|
+ .filter((row) => Object.keys(row).length)
|
|
|
+ .slice(0, result.data.length - 1),
|
|
|
+ }); // 过滤空行
|
|
|
+ } else if (analysisType === "fault") {
|
|
|
+ if (Object.keys(result.data[0]).includes("fault_detail")) {
|
|
|
+ //总图故障统计展示
|
|
|
+ this.zongFaultCsvHeader.push(Object.keys(result.data[0]));
|
|
|
+ this.zongFaultCsvData.push({
|
|
|
+ data: result.data
|
|
|
+ .filter((row) => Object.keys(row).length)
|
|
|
+ .slice(0, result.data.length - 1),
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //分机型故障统计处理
|
|
|
+ this.fenFaultCsvHeader.push(Object.keys(result.data[0]));
|
|
|
+ this.fenFaultCsvData.push({
|
|
|
+ data: result.data
|
|
|
+ .filter((row) => Object.keys(row).length)
|
|
|
+ .slice(0, result.data.length - 1),
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
error: (error) => {
|