|
@@ -95,67 +95,55 @@
|
|
<div class="chart-card-title">五项损失</div>
|
|
<div class="chart-card-title">五项损失</div>
|
|
<div class="chart-content">
|
|
<div class="chart-content">
|
|
<div class="chart-pie">
|
|
<div class="chart-pie">
|
|
- <pie-chart width="100%" height="100%" :lossPower="dayWindPieData" />
|
|
|
|
|
|
+ <div class="chart-total"></div>
|
|
|
|
+ <!-- <pie-chart width="100%" height="100%" :lossPower="dayWindPieData" /> -->
|
|
|
|
+ <pie-chart width="100%" height="100%" :series="dayWindPieData" />
|
|
</div>
|
|
</div>
|
|
- <!-- <ul class="chart-list">
|
|
|
|
- <li class="state-li state-gz">
|
|
|
|
- <span class="station-state">故障</span>
|
|
|
|
- <span class="station-data"
|
|
|
|
- >{{ companyPowerStationData?.wxsstb?.gzss?.toFixed(2) || 0 }}
|
|
|
|
- <i class="unit">万kWh</i></span
|
|
|
|
- >
|
|
|
|
- </li>
|
|
|
|
- <li class="state-li state-wh">
|
|
|
|
- <span class="station-state">维护</span>
|
|
|
|
- <span class="station-data"
|
|
|
|
- >{{ companyPowerStationData?.wxsstb?.whss?.toFixed(2) || 0 }}
|
|
|
|
- <i class="unit">万kWh</i></span
|
|
|
|
- >
|
|
|
|
- </li>
|
|
|
|
- <li class="state-li state-xd">
|
|
|
|
- <span class="station-state">限电</span>
|
|
|
|
- <span class="station-data"
|
|
|
|
- >{{ companyPowerStationData?.wxsstb?.xdss?.toFixed(2) || 0 }}
|
|
|
|
- <i class="unit">万kWh</i></span
|
|
|
|
- >
|
|
|
|
- </li>
|
|
|
|
- <li class="state-li state-xn">
|
|
|
|
- <span class="station-state">性能</span>
|
|
|
|
- <span class="station-data"
|
|
|
|
- >{{ companyPowerStationData?.wxsstb?.xnss?.toFixed(2) || 0 }}
|
|
|
|
- <i class="unit">万kWh</i></span
|
|
|
|
- >
|
|
|
|
- </li>
|
|
|
|
- <li class="state-li state-sl">
|
|
|
|
- <span class="station-state">受累</span>
|
|
|
|
|
|
+ <ul class="chart-list">
|
|
|
|
+ <li
|
|
|
|
+ v-for="item in dayWindPieData"
|
|
|
|
+ :key="item.name"
|
|
|
|
+ class="state-li"
|
|
|
|
+ :class="item.class"
|
|
|
|
+ >
|
|
|
|
+ <span class="station-state">{{ item?.name }}</span>
|
|
<span class="station-data"
|
|
<span class="station-data"
|
|
- >{{ companyPowerStationData?.wxsstb?.slss?.toFixed(2) || 0 }}
|
|
|
|
- <i class="unit">万kWh</i></span
|
|
|
|
|
|
+ >{{
|
|
|
|
+ item?.value
|
|
|
|
+ ? ((item?.value / wxssTotal) * 100)?.toFixed(2)
|
|
|
|
+ : 0
|
|
|
|
+ }}
|
|
|
|
+ <i class="unit">%</i></span
|
|
>
|
|
>
|
|
</li>
|
|
</li>
|
|
- </ul> -->
|
|
|
|
|
|
+ </ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="chart-card">
|
|
<div class="chart-card">
|
|
<div class="chart-card-title">场站损失(前5)</div>
|
|
<div class="chart-card-title">场站损失(前5)</div>
|
|
<div class="chart-content">
|
|
<div class="chart-content">
|
|
<div class="chart-online">
|
|
<div class="chart-online">
|
|
- <PieStationTop5 width="100%" height="100%" :list="stationTop5" />
|
|
|
|
|
|
+ <div class="chart-total"></div>
|
|
|
|
+ <pie-chart width="100%" height="100%" :series="stationTop5" />
|
|
</div>
|
|
</div>
|
|
- <!-- <ul class="chart-list">
|
|
|
|
|
|
+ <ul class="chart-list">
|
|
<li
|
|
<li
|
|
class="online-li"
|
|
class="online-li"
|
|
v-for="(item, index) in stationTop5"
|
|
v-for="(item, index) in stationTop5"
|
|
- :key="item.id"
|
|
|
|
|
|
+ :key="item.index"
|
|
:class="'online' + index"
|
|
:class="'online' + index"
|
|
>
|
|
>
|
|
<span class="online-name">{{ item?.name }}</span>
|
|
<span class="online-name">{{ item?.name }}</span>
|
|
<div>
|
|
<div>
|
|
- <span class="online-data">{{ item?.value?.toFixed(2) }}</span>
|
|
|
|
- <span class="online-percent">万kWh</span>
|
|
|
|
|
|
+ <span class="online-data">{{
|
|
|
|
+ item?.value
|
|
|
|
+ ? ((item?.value / stationTopTotal) * 100)?.toFixed(2)
|
|
|
|
+ : 0
|
|
|
|
+ }}</span>
|
|
|
|
+ <span class="online-percent">%</span>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</li>
|
|
- </ul> -->
|
|
|
|
|
|
+ </ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -212,19 +200,19 @@
|
|
<div class="form-box">
|
|
<div class="form-box">
|
|
<div
|
|
<div
|
|
class="theme-change"
|
|
class="theme-change"
|
|
- @click="themeChange('operate')"
|
|
|
|
- :class="themeType === 'operate' && 'active-theme'"
|
|
|
|
|
|
+ @click="themeChange('maintenance')"
|
|
|
|
+ :class="themeType === 'maintenance' && 'active-theme'"
|
|
>
|
|
>
|
|
<i class="icon-operate"></i>
|
|
<i class="icon-operate"></i>
|
|
- <span>运营</span>
|
|
|
|
|
|
+ <span>风能利用率</span>
|
|
</div>
|
|
</div>
|
|
<div
|
|
<div
|
|
class="theme-change"
|
|
class="theme-change"
|
|
- @click="themeChange('maintenance')"
|
|
|
|
- :class="themeType === 'maintenance' && 'active-theme'"
|
|
|
|
|
|
+ @click="themeChange('operate')"
|
|
|
|
+ :class="themeType === 'operate' && 'active-theme'"
|
|
>
|
|
>
|
|
<i class="icon-maintenance"></i>
|
|
<i class="icon-maintenance"></i>
|
|
- <span>运维</span>
|
|
|
|
|
|
+ <span>损失明细</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -275,15 +263,11 @@
|
|
<script>
|
|
<script>
|
|
import Card from "./components/card.vue";
|
|
import Card from "./components/card.vue";
|
|
import List from "./components/list.vue";
|
|
import List from "./components/list.vue";
|
|
-import PieChart from "@/components/chart/pie/pie-chart.vue";
|
|
|
|
-import PieStationTop5 from "@/components/chart/pie/pie-station-top5.vue";
|
|
|
|
|
|
+import PieChart from "@/components/chart/pie/dual-pie-chart-econey.vue";
|
|
|
|
+// import PieChart from "@/components/chart/pie/pie-chart.vue";
|
|
|
|
+// import PieStationTop5 from "@/components/chart/pie/pie-station-top5.vue";
|
|
import { homePage } from "@/api/economy-homepage.js";
|
|
import { homePage } from "@/api/economy-homepage.js";
|
|
import { GetOrganization } from "@/api/econ-headerNav.js";
|
|
import { GetOrganization } from "@/api/econ-headerNav.js";
|
|
-import {
|
|
|
|
- GetCompanyPowerStationDatas,
|
|
|
|
- GetRtValuesByTagName,
|
|
|
|
-} from "@api/photovoltaicStation";
|
|
|
|
-import { GetRegionInfo, getPowerstationTypeList } from "@api/home";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
name: "homePageGf", // 公司首页
|
|
name: "homePageGf", // 公司首页
|
|
@@ -291,7 +275,7 @@ export default {
|
|
Card,
|
|
Card,
|
|
List,
|
|
List,
|
|
PieChart,
|
|
PieChart,
|
|
- PieStationTop5,
|
|
|
|
|
|
+ // PieStationTop5,
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
@@ -310,9 +294,9 @@ export default {
|
|
timer: null, // 3秒调一次
|
|
timer: null, // 3秒调一次
|
|
OrganizationLists: null,
|
|
OrganizationLists: null,
|
|
checkNode: [], // 选中区域
|
|
checkNode: [], // 选中区域
|
|
- themeType: "operate", // 主题模式 经营类:operate, 运维类:maintenance
|
|
|
|
|
|
+ themeType: "maintenance", // 主题模式 风能利用率类:maintenance 损失明细类:operate,
|
|
isActive: "card", // 切换卡片或列表
|
|
isActive: "card", // 切换卡片或列表
|
|
- dayWindPieData: {},
|
|
|
|
|
|
+ dayWindPieData: [],
|
|
stationTop5: [],
|
|
stationTop5: [],
|
|
cardData: [],
|
|
cardData: [],
|
|
listData: [],
|
|
listData: [],
|
|
@@ -330,6 +314,8 @@ export default {
|
|
sortCode: "",
|
|
sortCode: "",
|
|
sortType: true,
|
|
sortType: true,
|
|
datetype: "r",
|
|
datetype: "r",
|
|
|
|
+ wxssTotal: 0,
|
|
|
|
+ stationTopTotal: 0,
|
|
};
|
|
};
|
|
},
|
|
},
|
|
|
|
|
|
@@ -357,30 +343,62 @@ export default {
|
|
|
|
|
|
let { data: res } = await homePage({
|
|
let { data: res } = await homePage({
|
|
companyId: this.province.code,
|
|
companyId: this.province.code,
|
|
- type: -1,
|
|
|
|
|
|
+ type: this.typeNode,
|
|
statype: 0,
|
|
statype: 0,
|
|
- datetype: this.datetype || "r",
|
|
|
|
|
|
+ datetype: this.datetype,
|
|
});
|
|
});
|
|
this.companyPowerStationData = res; //所有页面数据
|
|
this.companyPowerStationData = res; //所有页面数据
|
|
this.listData = this.companyPowerStationData?.wxsslb; //列表数据
|
|
this.listData = this.companyPowerStationData?.wxsslb; //列表数据
|
|
this.allListData = this.companyPowerStationData?.wxsslb; //存储备用列表(筛选使用)
|
|
this.allListData = this.companyPowerStationData?.wxsslb; //存储备用列表(筛选使用)
|
|
this.cardData = this.getSortList(this.listData, this.sortCode);
|
|
this.cardData = this.getSortList(this.listData, this.sortCode);
|
|
// 五项损失统计饼图
|
|
// 五项损失统计饼图
|
|
- this.dayWindPieData = {
|
|
|
|
- GZSS: this.companyPowerStationData?.wxsstb?.gzss,
|
|
|
|
- WHSS: this.companyPowerStationData?.wxsstb?.whss,
|
|
|
|
- SLSS: this.companyPowerStationData?.wxsstb?.slss,
|
|
|
|
- XDSS: this.companyPowerStationData?.wxsstb?.xdss,
|
|
|
|
- XNSS: this.companyPowerStationData?.wxsstb?.xnss,
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
|
|
+ // this.dayWindPieData = {
|
|
|
|
+ // GZSS: this.companyPowerStationData?.wxsstb?.gzss,
|
|
|
|
+ // WHSS: this.companyPowerStationData?.wxsstb?.whss,
|
|
|
|
+ // SLSS: this.companyPowerStationData?.wxsstb?.slss,
|
|
|
|
+ // XDSS: this.companyPowerStationData?.wxsstb?.xdss,
|
|
|
|
+ // XNSS: this.companyPowerStationData?.wxsstb?.xnss,
|
|
|
|
+ // };
|
|
|
|
+ this.dayWindPieData = [
|
|
|
|
+ {
|
|
|
|
+ name: "性能损失",
|
|
|
|
+ value: this.companyPowerStationData?.wxsstb?.xnss,
|
|
|
|
+ class: "state-xn",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "故障损失",
|
|
|
|
+ value: this.companyPowerStationData?.wxsstb?.gzss,
|
|
|
|
+ class: "state-gz",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "维护损失",
|
|
|
|
+ value: this.companyPowerStationData?.wxsstb?.whss,
|
|
|
|
+ class: "state-wh",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "限电损失",
|
|
|
|
+ value: this.companyPowerStationData?.wxsstb?.xdss,
|
|
|
|
+ class: "state-xd",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "受累损失",
|
|
|
|
+ value: this.companyPowerStationData?.wxsstb?.slss,
|
|
|
|
+ class: "state-sl",
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ this.wxssTotal = this.dayWindPieData?.reduce((a, b) => {
|
|
|
|
+ return a + b.value * 1;
|
|
|
|
+ }, 0);
|
|
this.stationTop5 = this.companyPowerStationData?.czwxss?.map((item) => {
|
|
this.stationTop5 = this.companyPowerStationData?.czwxss?.map((item) => {
|
|
- return { value: item.wxss, name: item.name };
|
|
|
|
|
|
+ return { name: item.name, value: item.wxss };
|
|
});
|
|
});
|
|
|
|
+ this.stationTopTotal = this.stationTop5?.reduce((a, b) => {
|
|
|
|
+ return a + b.value * 1;
|
|
|
|
+ }, 0);
|
|
},
|
|
},
|
|
// 获取公司列表
|
|
// 获取公司列表
|
|
getOrganizationList() {
|
|
getOrganizationList() {
|
|
- GetOrganization({ type: -1 }).then(({ data }) => {
|
|
|
|
|
|
+ GetOrganization({ type: this.typeNode }).then(({ data }) => {
|
|
this.OrganizationLists = data.filter((item) => item.id != "JS_RGN");
|
|
this.OrganizationLists = data.filter((item) => item.id != "JS_RGN");
|
|
});
|
|
});
|
|
},
|
|
},
|
|
@@ -620,18 +638,18 @@ export default {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
// justify-content: space-around;
|
|
// justify-content: space-around;
|
|
- height: 250px;
|
|
|
|
|
|
+ height: 200px;
|
|
|
|
|
|
.chart-pie {
|
|
.chart-pie {
|
|
position: relative;
|
|
position: relative;
|
|
// flex: 1;
|
|
// flex: 1;
|
|
- width: 100%;
|
|
|
|
|
|
+ width: 52%;
|
|
height: 100%;
|
|
height: 100%;
|
|
|
|
|
|
.chart-total {
|
|
.chart-total {
|
|
position: absolute;
|
|
position: absolute;
|
|
text-align: center;
|
|
text-align: center;
|
|
- z-index: 99;
|
|
|
|
|
|
+ z-index: 0;
|
|
background: url("../../../../assets/img/images/piaBack.png")
|
|
background: url("../../../../assets/img/images/piaBack.png")
|
|
no-repeat;
|
|
no-repeat;
|
|
width: 80px;
|
|
width: 80px;
|
|
@@ -699,8 +717,35 @@ export default {
|
|
}
|
|
}
|
|
|
|
|
|
.chart-online {
|
|
.chart-online {
|
|
- width: 100%;
|
|
|
|
|
|
+ position: relative;
|
|
|
|
+ width: 52%;
|
|
height: 100%;
|
|
height: 100%;
|
|
|
|
+ .chart-total {
|
|
|
|
+ position: absolute;
|
|
|
|
+ text-align: center;
|
|
|
|
+ z-index: 0;
|
|
|
|
+ background: url("../../../../assets/img/images/piaBack.png")
|
|
|
|
+ no-repeat;
|
|
|
|
+ width: 80px;
|
|
|
|
+ height: 80px;
|
|
|
|
+ background-size: cover;
|
|
|
|
+ left: 50%;
|
|
|
|
+ margin-left: -40px;
|
|
|
|
+ top: 50%;
|
|
|
|
+ margin-top: -40px;
|
|
|
|
+
|
|
|
|
+ .chart-num {
|
|
|
|
+ font-family: Bicubik;
|
|
|
|
+ font-size: 22px;
|
|
|
|
+ color: #fff;
|
|
|
|
+ margin-top: 16px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .chart-name {
|
|
|
|
+ color: #b3b3b3;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.chart-list {
|
|
.chart-list {
|
|
@@ -775,6 +820,15 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ .state-xn {
|
|
|
|
+ .station-state:before {
|
|
|
|
+ background: #1986e0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .station-data {
|
|
|
|
+ color: #1986e0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
.state-gz {
|
|
.state-gz {
|
|
.station-state:before {
|
|
.station-state:before {
|
|
background: #ba3237;
|
|
background: #ba3237;
|
|
@@ -786,39 +840,31 @@ export default {
|
|
}
|
|
}
|
|
.state-wh {
|
|
.state-wh {
|
|
.station-state:before {
|
|
.station-state:before {
|
|
- background: #e17e23;
|
|
|
|
|
|
+ background: #e17d24;
|
|
}
|
|
}
|
|
|
|
|
|
.station-data {
|
|
.station-data {
|
|
- color: #e17e23;
|
|
|
|
|
|
+ color: #e17d24;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
.state-xd {
|
|
.state-xd {
|
|
.station-state:before {
|
|
.station-state:before {
|
|
- background: #c531c7;
|
|
|
|
|
|
+ background: #c531cb;
|
|
}
|
|
}
|
|
|
|
|
|
.station-data {
|
|
.station-data {
|
|
- color: #c531c7;
|
|
|
|
|
|
+ color: #c531cb;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .state-xn {
|
|
|
|
- .station-state:before {
|
|
|
|
- background: #05bb4c;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- .station-data {
|
|
|
|
- color: #05bb4c;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
.state-sl {
|
|
.state-sl {
|
|
.station-state:before {
|
|
.station-state:before {
|
|
- background: #fff;
|
|
|
|
|
|
+ background: #a7a7a7;
|
|
}
|
|
}
|
|
|
|
|
|
.station-data {
|
|
.station-data {
|
|
- color: #fff;
|
|
|
|
|
|
+ color: #a7a7a7;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -841,70 +887,70 @@ export default {
|
|
.online-name {
|
|
.online-name {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
- font-size: 17px;
|
|
|
|
|
|
+ font-size: 16px;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- font-family: "AgencyFB-Reg";
|
|
|
|
|
|
+ font-family: Bicubik;
|
|
min-width: 67px;
|
|
min-width: 67px;
|
|
text-align: right;
|
|
text-align: right;
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|
|
color: #a7a7a7;
|
|
color: #a7a7a7;
|
|
- font-size: 19px;
|
|
|
|
|
|
+ font-size: 16px;
|
|
}
|
|
}
|
|
|
|
|
|
.online-percent {
|
|
.online-percent {
|
|
min-width: 55px;
|
|
min-width: 55px;
|
|
- font-size: 14px;
|
|
|
|
- color: #fff;
|
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ color: #b3b3b3;
|
|
text-align: left;
|
|
text-align: left;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
}
|
|
}
|
|
&.online0 {
|
|
&.online0 {
|
|
.online-name:before {
|
|
.online-name:before {
|
|
- background: red;
|
|
|
|
|
|
+ background: #1986e0;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- color: red;
|
|
|
|
|
|
+ color: #1986e0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
&.online1 {
|
|
&.online1 {
|
|
.online-name:before {
|
|
.online-name:before {
|
|
- background: orange;
|
|
|
|
|
|
+ background: #ba3237;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- color: orange;
|
|
|
|
|
|
+ color: #ba3237;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
&.online2 {
|
|
&.online2 {
|
|
.online-name:before {
|
|
.online-name:before {
|
|
- background: yellow;
|
|
|
|
|
|
+ background: #e17d24;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- color: yellow;
|
|
|
|
|
|
+ color: #e17d24;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
&.online3 {
|
|
&.online3 {
|
|
.online-name:before {
|
|
.online-name:before {
|
|
- background: #05bb4c;
|
|
|
|
|
|
+ background: #c531cb;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- color: #05bb4c;
|
|
|
|
|
|
+ color: #c531cb;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
&.online4 {
|
|
&.online4 {
|
|
.online-name:before {
|
|
.online-name:before {
|
|
- background: #1b99ff;
|
|
|
|
|
|
+ background: #a7a7a7;
|
|
}
|
|
}
|
|
|
|
|
|
.online-data {
|
|
.online-data {
|
|
- color: #1b99ff;
|
|
|
|
|
|
+ color: #a7a7a7;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|