yanDuLargeScreen/src/views/index.vue

2050 lines
51 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="home">
<div class="left">
<div class="one" style="height: 405px">
<div class="cartitle">
<div class="titleFont">盐都区供电公司概况</div></div>
<div class="content">
<div class="line">
<div class="total">
<div class="pic">
<img src="@/assets/images/rouer.png" alt="" />
</div>
<div class="num">
<span style="font-size: 45px; font-weight: 600;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
background-image: linear-gradient(to bottom, rgb(189,255,231), rgb(86,244,254));"
>304</span>
<span style="font-size: 18px;">配电路线</span>
</div>
</div>
<div class="info">
<div class="lists">
<div class="title">电缆化率</div>
<div class="number">43.6%</div>
</div>
<div class="lists">
<div class="title">配电站开关</div>
<div class="number">169</div>
</div>
<div class="lists">
<div class="title">配电室</div>
<div class="number">579</div>
</div>
<div class="lists">
<div class="title">户外环网柜</div>
<div class="number">1440</div>
</div>
</div>
</div>
<div class="line">
<div class="total">
<div class="pic">
<img src="@/assets/images/routerLong.png" alt="" />
</div>
<div class="num">
<span style="font-size: 45px; font-weight: 600;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
background-image: linear-gradient(to bottom, rgb(189,255,231), rgb(86,244,254));
">4128</span>
<span style="font-size: 18px">路线长度</span>
</div>
</div>
<div class="info">
<div class="lists">
<div class="title">架空路线</div>
<div class="number">2328</div>
</div>
<div class="lists">
<div class="title">架空绝缘导线</div>
<div class="number">2012.6</div>
</div>
<div class="lists">
<div class="title">架空绝缘化率</div>
<div class="number">86.45%</div>
</div>
<div class="lists">
<div class="title">电缆路线</div>
<div class="number">1800</div>
</div>
</div>
</div>
</div>
</div>
<div class="two" style="height: 570px">
<div class="cartitle">
<div class="titleFont">
全市本周配网故障次数
</div>
</div>
<div class="table user_skills">
<el-table
:data="tableData"
style="width: 100%; height: 100%"
:header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }"
>
<el-table-column label="" align="center" width="20">
<template slot-scope="scop">
{{ scop.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="bz" label="班组" width="80" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="gzxl" label="故障路线" width="80" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="gzyy" label="故障原因" width="80" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="chcg" label="重合成功" width="60">
<template slot-scope="scope">
<div style="color:#ffbc3a">
{{ scope.row.chcg}}
</div>
</template>
</el-table-column>
<el-table-column prop="chbc" label="重合不成" width="80">
<template slot-scope="scope">
<div style="color:#ffbc3a">
{{ scope.row.chbc}}
</div>
</template>
</el-table-column>
<el-table-column prop="wchz" label="无重合闸" width="60">
<template slot-scope="scope">
<div style="color:#2793ff">
{{ scope.row.wchz}}
</div>
</template>
</el-table-column>
<el-table-column prop="jiedi" label="接地" width="60">
<template slot-scope="scope">
<div style="color:#794af8">
{{ scope.row.jiedi}}
</div>
</template>
</el-table-column>
<el-table-column prop="heji" label="合计" width="60">
<template slot-scope="scope">
<div style="color:#ee8316">
{{ scope.row.heji}}
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<div class="middle">
<div class="one" style="height: 635px; width: 100%">
<iframe src="/unityWeb/index.html" style="height: 100%; width: 100%;border: none"
ref="iframe"></iframe>
<div class="unityBtn">
<div
class="btn"
:class="{ btnAct: btnActive == index }"
v-for="(item, index) in btnArr"
:key="index"
@click="handleUnity(index,item)"
>
{{ item }}
</div>
</div>
<div class="unityIcon">
<div class="unityIconGround" v-for="(item,index) in iconGround" :key="index">
<img :src="item.icon"/>
<div style="color:#ffffff">{{item.name}}</div>
</div>
</div>
<div class="unityEnlargeBtn">
<div class="content" v-for="(item,index) in btnEnlarge" :key="index" @click="enlargeBtn(index)">
<img :src="item.icon" style="margin:7px"/>
</div>
</div>
<div class="unitySelect">
<div class="unitySuosou">
<img src="../assets/images/sousuo.png" style="margin-top: 16px;"/>
</div>
<el-select v-model="value" clearable placeholder="请选择线路" >
<el-option
v-for="(item,index) in options"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="detailed">
<div class="two" style="height: 350px; width: 780px;display: flex;flex-direction: column;align-items: center;">
<div class="cartitle">
<div class="titleFont">
本周路线故障跳闸明细
</div>
</div>
<div class="detailedOneList">
<div>
单位
</div>
<!-- <div>
工区
</div>
<div>
三新
</div>
<div>
盐都
</div>
<div>
滨海
</div>
<div>
大丰
</div>
<div>
东台
</div>
<div>
阜宁
</div>
<div>
建湖
</div>
<div>
射阳
</div>
<div>
响水
</div> -->
</div>
<div id="detailedOne" style="height:90%"></div>
</div>
<div class="three" style="height: 350px; width: 780px">
<div class="cartitle">
<div class="titleFont">
本年度路线故障调查明细</div>
</div>
<div id="detailedFour"></div>
</div>
</div>
</div>
<div class="right">
<div class="one" style="height: 310px">
<div class="cartitle">
<div style="width: 82%;display: flex;justify-content: space-between;align-items: center;">
<div class="titleFont">
盐都配变停运管理情况
</div>
<div class="dateSelect">
<div style="text-indent: 15px;" @click="handleDate(index)" :class="addColor(index)" v-for="(item,index) in dateList" :key="index">
{{item}}
</div>
</div>
</div>
</div>
<div class="top">
<div class="topContent" v-for="(item,index) in topContent" :key="index">
<div style="color:#ffffff">{{item.name}}</div>
<div style="color:rgb(86,254,226);font-size:22px">{{item.count}}</div>
</div>
</div>
<div style="height:90%" id="detailedFive"></div>
</div>
<div class="two" style="height: 340px">
<div class="cartitle">
<div class="titleFont">
盐都供电质量统计
</div>
</div>
<div id="detailedTwo"></div>
</div>
<div class="three" style="height: 310px">
<div class="cartitle">
<div class="titleFont">
工单统计
</div>
</div>
<div id="detailedThree"></div>
</div>
</div>
<div class="realTimeAlarm" v-show="realTimeAlarmShow">
<div class="content">
<img src="../assets/images/baojing.png"/>
<div>都政线XXX环网柜间隔3发生局部放电故障</div>
</div>
</div>
<div class="alarmInformation" v-show="alarmInformationShow">
<div class="top">
<div class="title">报警详情信息</div>
<div class="close">
<img
@click="handleClose"
src="@/assets/images/close.png"
style="cursor: pointer"
/>
</div>
</div>
<div class="content">
<div class="table user_skills">
<el-table
:data="alarmInformationData"
style="width: 100%; height: 100%"
:header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }"
stripe
>
<el-table-column label="序号" align="center" >
<template slot-scope="scop">
{{ scop.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="name" label="报警信息" align="center" >
</el-table-column>
<el-table-column prop="date" label="发生时间" align="center" >
</el-table-column>
</el-table>
</div>
</div>
</div>
<!-- <div style="height:20px;width:20px" class="icon">
<img src="../assets/images/btnFangDa.png"/>
</div> -->
<div class="componentShow" v-if="modelOthers">
<keep-alive>
<component
:is="componentShow"
:ringMainUnit="device"
></component>
</keep-alive>
</div>
</div>
</template>
<script>
import { getCompanyInfo,getLine,getBanzugz,getGdtj,getDwbzgz,getGdsgdzl,getPbtyqk} from "../api/index.js";
import ringMainUnit from "./HomePop/ringMainUnit.vue"
export default {
name: "home",
components: {
ringMainUnit,//环网柜弹窗
},
data() {
return {
dataGzList:[], //年故障数组
dateList: ['周','月'],
acolor: true,//是否展示颜色
currentIndex : -1,
alarmInformationData:[
{
name:'告警信息',
date:'2022'
}],
alarmInformationShow: false, //报警详情信息弹窗
realTimeAlarmShow: false,//实时报警弹窗
modelOthers: false,
componentShow: "",
CompanyInfo: {},
tableData: [],
btnArr: ["总览", "环网柜", "分支箱", "箱变", "开闭所", "热力图"],
btnActive: 0,
iconGround:[
{
icon: require("@/assets/images/huanwanggui.png"),
name: "环网柜"
},
{
icon: require("@/assets/images/fenzhixiang.png"),
name: "分支箱"
},
{
icon: require("@/assets/images/xiangbian.png"),
name: "箱变"
},
{
icon: require("@/assets/images/kaibisuo.png"),
name: "开闭所"
},
],
btnEnlarge:[
{
icon: require("@/assets/images/btnTiShi.png"),
},{
icon: require("@/assets/images/btnFangDa.png"),
}
],
options: [
{
value:'',
label:''
}
],
value: '',
topContent:[
{
name:'配变数量',
count:''
},
{
name:'重复停运台次',
count:''
},
{
name:'配变重复停运率',
count:''
},
],
device:''
};
},
mounted() {
// 盐都区供电公司概况
getCompanyInfo().then((res) => {
this.CompanyInfo = res.data.data;
});
// 查询总线路
getLine(
{action:'all'}
).then((res)=>{
if (res.data != '') {
this.options = Object.keys(res.data.data).map((item,index)=>{
return {value:res.data.data[index].line_code,label:res.data.data[index].line_name}
})
}
})
//周查询班组
getBanzugz(
{
action: 'week'
}
).then((res)=>{
for (let i = 0; i < res.data.data.length; i++) {
this.tableData.push(res.data.data[i])
}
})
//工单统计
getGdtj().then((res)=>{
let dataList = res.data.data
this.detailedThree(dataList);
})
//年度查询班组
getBanzugz(
{
action: 'year'
}
).then((res)=>{
this.dataGzList=res.data.data
this.detailedFour(this.dataGzList);
})
//本周故障
getDwbzgz().then((res)=>{
let dataBzgz = []
dataBzgz = res.data.data;
this.detailedOne(dataBzgz);
})
//供电质量统计
getGdsgdzl().then((res)=>{
let dataGdzl = []
dataGdzl = res.data.data
this.detailedTwo(dataGdzl);
})
//配变停运
getPbtyqk({
action:"week"
}).then((res)=>{
let dataPbty = [];
dataPbty = res.data.data
console.log(dataPbty,'dataPbty');
this.detailedFive(dataPbty);
let dataPb = [];
let dataCf = [];
let dataCfl = [];
for (let i = 0; i < dataPbty.length; i++) {
dataPb.push(dataPbty[i].pbsl);
dataCf.push(dataPbty[i].cftytc);
dataCfl.push(dataPbty[i].pbcftyl)
}
this.topContent[0].count = dataPb.reduce((x, y) => x + y)
this.topContent[1].count = dataCf.reduce((x, y) => x + y)
this.topContent[2].count = dataCfl.reduce((x, y) => x + y) + '%'
})
this.handleDate(0);
let that = this;
window.addEventListener('message', function (e) {
var res = e.data;
if (res.val != null) {
that.modelOthers = true
that.componentShow = 'ringMainUnit'
that.device = res.val
}
})
},
methods: {
//调用unity方法
handleUnity(index,item) {
this.btnActive = index;
this.$refs.iframe.contentWindow.handleChange(item)
},
//选择线路
selectLine(value){
getLine(
{
action:'query',
line_code:value
}
).then((res)=>{
if (res.data.data != 0) {
this.$refs.iframe.contentWindow.handleChangeLine(res.data.data.line_name)
}
})
},
detailedOne(dataBzgz) {
let dataList = [];
let newArr = [20,20, 20, 20,20, 20, 20,20,20,20];
let dataDw = []
for (let i = 0; i < dataBzgz.length; i++) {
dataList.push(dataBzgz[i].gzcs);
dataDw.push(dataBzgz[i].dw)
}
var myChart = this.$echarts.init(document.getElementById("detailedOne"));
var option = {
tooltip: {
show:true,
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
grid: {
top:'18%',
left: "5%",
right: "3%",
bottom: "8%",
containLabel: true,
},
xAxis: [
{
type: "category",
data: dataDw,
axisTick: {
show:false,
alignWithLabel: true,
},
axisLabel:{
color:'#ffffff',
interval: 0,
},
axisLine: {
show: false, //隐藏X轴轴线
lineStyle: {
color: "#01FCE3",
},
},
},
],
yAxis: [
{
name:'故障次数',
type: "value",
data:[0,2,4,6,8,10],
nameTextStyle:{
color:'#ffffff',
// padding:[25,0,0,0]
},
axisLabel:{
color:'#ffffff'
},
splitLine:{
show:true,
lineStyle: {
type: 'solid',
// color: 'rgba(66, 192, 255, .3)',
color: 'rgba(102,102,102,0.6)',
width: 1
// color: 'red'
},
},
splitArea: {
show: false
}
},
],
series: [
{
type:'bar',
barWidth:22,
itemStyle:{
normal:{
label:{
fontSize: 14,
formatter(params){
for (let i = 0; i < dataList.length; i++) {
if (params.dataIndex == i) {
return dataDw[i] + '\n' + '\n' + dataList[i]
}
}
},
show:true,
position:'top',
color:'#ffffff'
},
color:"none",
}
},
silent:true,
barGap:'-100%',
data: newArr
},
{
name: "Direct",
type: "bar",
barWidth:22,
itemStyle:{
color: new this.$echarts.graphic.LinearGradient(
0, 1, 0, 0,
[
{offset: 0, color: 'rgba(23,74,100,0.6)'},
{offset: 1, color: 'rgb(86,254,226)'}
]
)
},
data: dataList,
label: {
show: false,
position: 'top',
fontStyle:'normal',
fontWeight:'normal',
color:'#ffffff',
},
// z: -1,
// //不同系列的柱间距离,为百分比,如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。
// barGap: '-100%',
},
],
};
myChart.setOption(option);
},
detailedTwo(dataGdzl){
let gdsList = [];
let xlcczList = [];
let pbcczList = [];
let ddyList = [];
for (let i = 0; i < dataGdzl.length; i++) {
gdsList.push(dataGdzl[i].gds)
xlcczList.push(dataGdzl[i].xlccz)
pbcczList.push(dataGdzl[i].pbccz)
ddyList.push(dataGdzl[i].ddy)
}
let that = this;
var myChart = this.$echarts.init(document.getElementById("detailedTwo"));
var option = {
tooltip : {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
grid: {
left: "4%",
right: "4%",
bottom: "10%",
containLabel: true,
},
legend: {
icon:'rect',
right:25,
data: ["线路重超载", "配变重超载", "低电压"],
textStyle: {
color: "#fff",
fontSize: 16,
},
},
xAxis: {
type: "category",
data: gdsList,
axisLine: {
// 改变x轴颜色
lineStyle: {
color: "none",
},
},
axisLabel: {
// 改变x轴字体颜色和大小
interval:0,
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
splitLine: {
show: false,
lineStyle: {
color: ["#315070"],
width: 1,
type: "solid",
},
},
},
yAxis: {
type: "value",
axisLine: {
// 改变y轴颜色
show: false,
lineStyle: {
color: "none",
},
},
axisLabel: {
// 改变y轴字体颜色和大小
//formatter: '{value} m³ ', // 给y轴添加单位
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: ["#315070"],
width: 1,
type: "solid",
},
},
},
series: [
{
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 7,
markPoint: {
symbol: "circle",
},
name: "线路重超载",
data: xlcczList,
itemStyle: {
normal: {
color: "#3D7EEB",
borderColor: "#3D7EEB",
borderWidth: 2,
},
},
lineStyle: {
normal: {
width: 2,
color: "#327BFA",
shadowColor: "#327BFA",
shadowBlur: 10,
},
},
areaStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.5,
color: "rgba(61,126,235,0.5)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(61,126,235,0)", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
},
{
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 7,
markPoint: {
symbol: "circle",
},
data: pbcczList,
name: "配变重超载",
itemStyle: {
normal: {
color: "#17D8A1",
borderColor: "#17D8A1",
borderWidth: 2,
},
},
lineStyle: {
normal: {
width: 2,
color: "#17D8A1",
shadowColor: "#17D8A1",
shadowBlur: 10,
},
},
areaStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.5,
color: "rgba(23,216,161,0.5)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(23,216,161,0)", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
},
{
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 7,
markPoint: {
symbol: "circle",
},
data: ddyList,
name: "低电压",
itemStyle: {
normal: {
color: "#F4C907",
borderColor: "#F4C907",
borderWidth: 2,
},
},
lineStyle: {
normal: {
width: 2,
color: "#F4C907",
shadowColor: "#F4C907",
shadowBlur: 10,
},
},
areaStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.5,
color: "rgba(106,117,79,1)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(106,117,79,0)", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
},
],
};
myChart.setOption(option);
},
detailedThree(dataList){
var equipment = [dataList.yjlts,dataList.yjlyj];
var colorList = ["#0090ff","#06d3c4","#66b0ed","#7cb79d"]
var dataList = [{
value: dataList.pftd,
name: "频繁停电",
},
{
value: dataList.dctd,
name: "多次停电",
},
{
value: dataList.clsjc,
name: "处理时间长",
},
{
value: dataList.mspc,
name: "民事赔偿",
},]
var myChart = this.$echarts.init(document.getElementById("detailedThree"));
var option = {
borderColor:'none',
tooltip: {
formatter: function (param) {
if (param.data.type == null) {
return param.data.name + ":" + param.value + "个";
} else {
return param.data.name + ":" + param.value + "个";
}
},
},
legend: {
icon:'pin',
top: 15,
data: [
{
name:'频繁停电'
},
{
name:'多次停电'
},
{
name:'处理时间长'
},
{
name:'民事赔偿'
}
],
formatter: (name)=> {
let total = 0
let target
let value = dataList.filter(x=>x.name==name)[0].value
for (let i = 0, l = dataList.length; i < l; i++) {
total += dataList[i].value
if (dataList[i].name == name) {
target = dataList[i].value
}
}
let arr = [
name + ' '
+ value
]
return arr.join('\n')
},
textStyle: {
color:'#ffffff'
}
},
series: [
{
name: "整体分类",
type: "pie",
radius: [0, "40%"],
label: {
position: "inner",
show:false
},
itemStyle: {
normal: {
borderColor: "none",
borderWidth: 2,
color: function (params) {
return colorList[params.dataIndex];
},
},
},
selectedMode: "single",
data: dataList,
},
{
name: "招标方式",
type: "pie",
radius: ["50%", "55%"],
itemStyle: {
normal: {
color: function (params) {
return colorList[params.dataIndex];
},
},
},
label: {
normal: {
formatter: function (params) {
if (params.value != 0)
return params.data.name + ":" + params.data.type + "个";
else return "";
},
color:"#ffffff",
show: true,
},
},
data: [
{
value: equipment[0],
name: "运检类投诉",
type: equipment[0],
},
{
value: equipment[1],
name: "运检类意见",
type: equipment[1],
},
],
},
],
};
myChart.setOption(option);
},
detailedFour(dataList){
let yearBzData = []
let yearChcg = []
let yearChbc = []
let yearWchz = []
let yearJieDi = []
for (let i = 0; i < dataList.length; i++) {
yearBzData.push(dataList[i].bz)
yearChcg.push(dataList[i].chcg)
yearChbc.push(dataList[i].chbc)
yearWchz.push(dataList[i].wchz)
yearJieDi.push(dataList[i].jiedi)
}
let that = this
var myChart = this.$echarts.init(document.getElementById("detailedFour"));
var option = {
tooltip: {
axisPointer: {
type: "shadow",
textStyle: {
color: "#fff",
},
},
},
grid: {
borderWidth: 0,
top: 30,
bottom: 40,
left: '6%',
right: '6%',
textStyle: {
color: "#fff",
},
},
legend: {
icon: "rect",
right: "4%",
textStyle: {
color: "#ffffff",
},
data: ["重合成功", "重合不成", "无重合闸","接地"],
},
calculable: true,
xAxis: [
{
type: "category",
trigger: "axis",
axisLine: {
show:false,
lineStyle: {
color: "#fff",
},
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
splitArea: {
show: false,
},
axisLabel: {
interval: 0,
},
data: yearBzData,
},
],
yAxis: [
{
type: "value",
splitLine: {
show: true,
lineStyle:{
color:"rgb(83,83,83)"
}
},
axisLine: {
lineStyle: {
color: "#fff",
},
},
axisTick: {
show: false,
},
axisLabel: {
interval: 0,
},
splitArea: {
show: false,
},
},
],
series: [
{
name: "重合成功",
type: "bar",
stack: "Total1",
barMaxWidth: 15,
barGap: "10%",
label:{
show:true
},
itemStyle: {
normal: {
color: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(194,190,190,1)",
},
{
offset: 1,
color: "rgba(194,190,190,0)",
},
]),
borderColor: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(194,190,190,1)",
},
{
offset: 1,
color: "rgba(194,190,190,0)",
},
]),
},
},
data: yearChcg,
},
{
name: "重合不成",
type: "bar",
barMaxWidth: 15,
stack: "Total1",
label:{
show:true
},
itemStyle: {
normal: {
color: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(86,254,226,1)",
},
{
offset: 1,
color: "rgba(86,254,226,0)",
},
]),
borderColor: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(86,254,226,1)",
},
{
offset: 1,
color: "rgba(86,254,226,0)",
},
]),
},
},
data: yearChbc,
},
{
name: "无重合闸",
type: "bar",
barMaxWidth: 15,
stack: "Total1",
label:{
show:true
},
itemStyle: {
normal: {
color: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(237,125,49,1)",
},
{
offset: 1,
color: "rgba(237,125,49,0)",
},
]),
borderColor: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(237,125,49,1)",
},
{
offset: 1,
color: "rgba(237,125,49,0)",
},
]),
barBorderRadius: 0,
},
},
data: yearWchz,
},
{
name: "接地",
type: "bar",
barMaxWidth: 15,
stack: "Total1",
label:{
show:true
},
itemStyle: {
normal: {
color: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(35,160,247,1)",
},
{
offset: 1,
color: "rgba(35,160,247,0)",
},
]),
borderColor: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(35,160,247,1)",
},
{
offset: 1,
color: "rgba(35,160,247,0)",
},
]),
barBorderRadius: 0,
},
},
data: yearJieDi,
},
],
};
myChart.setOption(option);
},
detailedFive(dataPbty){
let dataListx = [];
let dataPb = [];
let dataGz = [];
let dataCf = [];
for (let i = 0; i < dataPbty.length; i++) {
dataListx.push(dataPbty[i].gds);
dataGz.push(dataPbty[i].gztytc);
dataPb.push(dataPbty[i].pbsl);
dataCf.push(dataPbty[i].cftytc);
}
let that = this;
var myChart = this.$echarts.init(document.getElementById("detailedFive"));
var option = {
grid: {
top: "15%",
bottom: "35%", //也可设置left和right设置距离来控制图表的大小
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
label: {
show: true,
},
},
},
legend: {
data: ["配变数量", "故障停运","重复停运"],
top: "0%",
// icon:'roundRect',
// itemHeight:2, // 粗细
textStyle: {
color: "#ffffff",
},
},
xAxis: {
data: dataListx,
axisLine: {
show: false, //隐藏X轴轴线
lineStyle: {
color: "#01FCE3",
},
},
axisTick: {
show: false, //隐藏X轴刻度
},
axisLabel: {
show: true,
interval:0,
textStyle: {
color: "#ffffff", //X轴文字颜色
},
},
},
yAxis: [
{
type: "value",
name: "配变数量",
nameTextStyle: {
color: "#ffffff",
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
color: "#FFFFFF",
},
},
axisLabel: {
show: true,
interval:0,
textStyle: {
color: "#ffffff",
},
},
},
{
type: "value",
name: "停运台次",
nameTextStyle: {
color: "#ffffff",
},
position: "right",
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
// formatter: "{value} %", //右侧Y轴文字显示
textStyle: {
color: "#ffffff",
},
},
},
{
type: "value",
gridIndex: 0,
min: 50,
max: 100,
splitNumber: 8,
splitLine: {
show: false,
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
splitArea: {
show: true,
areaStyle: {
color: ["rgba(250,250,250,0.0)", "rgba(250,250,250,0.05)"],
},
},
},
],
series: [
{
name: "故障停运",
type: "line",
yAxisIndex: 1, //使用的 y 轴的 index在单个图表实例中存在多个 y轴的时候有用
smooth: false, //平滑曲线显示
showAllSymbol: true, //显示所有图形。
symbol: "circle", //标记的图形为实心圆
symbolSize: 1, //标记的大小
itemStyle: {
//折线拐点标志的样式
color: "rgb(237,125,49)",
},
lineStyle: {
color: "rgb(237,125,49)",
},
// areaStyle: {
// show:false,
// color: "rgba(5,140,255, 0.2)",
// },
data: dataGz,
},
{
name: "重复停运",
type: "line",
yAxisIndex: 1, //使用的 y 轴的 index在单个图表实例中存在多个 y轴的时候有用
smooth: false, //平滑曲线显示
showAllSymbol: true, //显示所有图形。
symbol: "circle", //标记的图形为实心圆
symbolSize: 1, //标记的大小
itemStyle: {
//折线拐点标志的样式
show:false,
color: "#058cff",
},
lineStyle: {
show:false,
color: "#058cff",
},
// areaStyle: {
// show:false,
// color: "rgba(5,140,255, 0.2)",
// },
data: dataCf,
},
{
name: "配变数量",
type: "bar",
barWidth: 15,
itemStyle: {
normal: {
color: new that.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(86,254,226,1)",
},
{
offset: 1,
color: "rgba(86,254,226,0)",
},
]),
},
},
data: dataPb,
},
],
};
myChart.setOption(option);
},
//报警详情信息弹窗
enlargeBtn(index){
if (index == 0) {
this.alarmInformationShow = true;
this.realTimeAlarmShow = false;
}else if (index == 1) {
this.$refs.iframe.contentWindow.fullscreen(1);
}
},
handleClose(){
this.alarmInformationShow = false
},
handleDate(index){
this.currentIndex = index
if (index == 0) {
//周配变停运
getPbtyqk({
action:"week"
}).then((res)=>{
let dataPbty = [];
dataPbty = res.data.data
this.detailedFive(dataPbty);
let dataPb = [];
let dataCf = [];
for (let i = 0; i < dataPbty.length; i++) {
dataPb.push(dataPbty[i].pbsl);
dataCf.push(dataPbty[i].cftytc);
}
this.topContent[0].count = dataPb.reduce((x, y) => x + y)
this.topContent[1].count = dataCf.reduce((x, y) => x + y)
})
}else if (index == 1) {
//月配变停运
getPbtyqk({
action:"month"
}).then((res)=>{
let dataPbty = [];
dataPbty = res.data.data
this.detailedFive(dataPbty);
let dataPb = [];
let dataCf = [];
for (let i = 0; i < dataPbty.length; i++) {
dataPb.push(dataPbty[i].pbsl);
dataCf.push(dataPbty[i].cftytc);
}
this.topContent[0].count = dataPb.reduce((x, y) => x + y)
this.topContent[1].count = dataCf.reduce((x, y) => x + y)
})
}
},
addColor(index){
if(this.currentIndex == index) {
return {active : this.acolor}
}
}
},
watch: {
//监听内容
value(newVal,oldVal) {
console.log(newVal,oldVal,"value发生了变化");
if (newVal != oldVal && newVal != '') {
this.selectLine(newVal)
}else if(newVal == ''){
console.log(this.value,"value");
this.value = ''
let item = '总览'
this.handleUnity(0,item)
}
}
}
};
</script>
<style lang="less" scoped>
.user_skills {
/deep/ .el-table {
background-color: transparent !important;
}
/deep/ .el-table th {
background-color: transparent !important;
}
/deep/ .el-table__header {
height: 48px;
background: url("../assets/images/tableBg.png") no-repeat;
}
/deep/ .el-table__header th {
border: none;
padding: 0;
height: 48px;
.cell {
height: 100%;
display: flex;
align-items: center;
}
&.el-table__cell.is-leaf {
border: none !important;
}
}
/deep/ .el-table tr {
background-color: transparent !important;
}
/deep/ .el-table--enable-row-transition .el-table__body td,
.el-table .cell {
background-color: transparent !important;
border: none;
color: #ffffff;
}
/deep/ .el-table__body td .cell {
white-space: nowrap !important;
// word-break: break-all;
}
/deep/ .el-table th.el-table__cell>.cell{
color: rgb(86,254,226);
}
&::before {
//去除底部白线
left: 0;
bottom: 0;
width: 100%;
height: 0px;
}
}
.home {
width: 100%;
height: 100%;
padding: 15px 28px;
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
box-sizing: border-box;
.left {
width: 604px;
height: 100%;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
& > div {
width: 100%;
background: url("../assets/images/homeCard.png") no-repeat;
background-size: 100% 100%;
.cartitle {
height: 52px;
width: 100%;
background: url("../assets/images/carTitle.png") no-repeat;
font-size: 21px;
font-weight: 600;
color: #ffffff;
line-height: 52px;
text-align: left;
text-indent: 26px;
}
.content {
padding: 24px 31px 0 31px;
box-sizing: border-box;
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
.line {
width: 262px;
display: flex;
flex-flow: column nowrap;
.total {
display: flex;
flex-flow: row nowrap;
justify-content: space-around;
margin-bottom: 20px;
.num {
display: flex;
flex-flow: column nowrap;
justify-content: center;
align-items: center;
color: #ffffff;
}
}
.info {
display: flex;
flex-flow: column nowrap;
.lists {
width: 100%;
height: 32px;
background: url("../assets/images/cardSquare.png") no-repeat;
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: center;
background-size: 100% 100%;
margin-bottom: 12px;
padding: 0 10px 0 0;
box-sizing: border-box;
& > div {
font-size: 18px;
color: #ffffff;
}
.number{
color: rgb(86,254,226);
}
}
}
}
}
.table {
width: 100%;
padding: 20px 14px 0 14px;
box-sizing: border-box;
height: calc(100% - 52px);
}
}
}
.middle {
width: 1590px;
height: 100%;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
.one {
background: url("../assets/images/ditu.png") no-repeat;
background-size: 100% 100%;
position: relative;
.unityBtn {
position: absolute;
top: 40px;
left: 40px;
width: 94px;
.btn {
width: 100%;
height: 38px;
color: rgb(28, 95, 98);
font-size: 18px;
line-height: 38px;
background: url("../assets/images/btnAct.png") no-repeat;
margin-bottom: 10px;
}
.btnAct {
color: #ffffff;
background: url("../assets/images/unityBtn.png") no-repeat;
}
}
.unityIcon{
background: url("../assets/images/iconCard.png") no-repeat;
background-size: 100% 100%;
width: 110px;
height: 168px;
position: absolute;
right: 40px;
bottom: 80px;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
flex-direction: column;
justify-content: space-around;
align-items: center;
.unityIconGround{
width: 80%;
display: flex;
justify-content: space-between;
align-items: center;
}
};
.unityEnlargeBtn{
width: 100px;
display: flex;
justify-content: space-around;
position: absolute;
right: 40px;
top: 40px;
.content{
width:38px;
height: 36px;
background: url("../assets/images/btnkuang.png") no-repeat !important;
background-size: 100% 100% !important;
}
};
.unitySelect{
position: absolute;
left: 40px;
width: 222px;
bottom: 40px;
display: flex;
align-items: center;
.unitySuosou{
width: 57px;
height: 53px;
background: url("../assets/images/sousuoKuang.png") no-repeat ;
background-size: 100% 100%;
}
};
}
.two{
.detailedOneList{
display: flex;
flex-direction: row;
justify-content: flex-start;
height: 10%;
align-items: center;
color:#ffffff;
background: url("../assets/images/tableBg.png") no-repeat;
background-size: 100% 100%;
width:92%;
z-index: 1;
position: relative;
}
}
.detailed {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
& > div {
background: url("../assets/images/detailedCard.png") no-repeat;
background-size: 100% 100%;
.cartitle {
height: 52px;
width: 100%;
background: url("../assets/images/detailed.png") no-repeat;
font-size: 21px;
font-weight: 600;
color: #ffffff;
line-height: 52px;
text-align: left;
text-indent: 26px;
}
}
}
#detailedOne{
width: 100%;
height: calc(100% - 0px) !important;
z-index: 2;
margin-top: -3%;
};
#detailedFour{
width: 100%;
height: calc(100% - 52px);
}
}
.right {
width: 604px;
height: 100%;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
& > div {
width: 100%;
background: url("../assets/images/homeCard.png") no-repeat;
background-size: 100% 100%;
.cartitle {
height: 52px;
width: 100%;
background: url("../assets/images/carTitle.png") no-repeat;
font-size: 21px;
font-weight: 600;
color: #ffffff;
line-height: 52px;
text-align: left;
text-indent: 26px;
}
};
.one{
.top{
width: 100%;
height: 10%;
display: flex;
justify-content: space-around;
flex-direction: row;
align-items: center;
.topContent{
width: 30%;
display: flex;
justify-content: flex-start;
align-items: center;
white-space: nowrap;
}
}
}
#detailedThree{
width: 100%;
height: calc(100% - 52px);
};
#detailedTwo{
width: 100%;
height: calc(100% - 52px);
};
#detailedFive{
width: 100%;
height: calc(100% - 52px);
};
};
.titleFont{
color: transparent ;
-webkit-background-clip: text;
background-clip: text ;
background-image: linear-gradient(to bottom, rgb(255,255,255), rgb(123,247,245))
}
//弹窗样式
.componentShow{
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 111;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.8);
}
.realTimeAlarm{
width: 517px;
height: 136px;
position: fixed;
left: 0;
right: 0;
margin:0 auto;
top: 40%;
background: url('../assets/images/realTimeAlarmKuang.png') no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
justify-content: center;
.content{
color: #ffffff;
width: 75%;
display: flex;
align-items: center;
justify-content: space-evenly;
margin-top: 4%;
}
}
.alarmInformation{
width: 517px;
height: 304px;
position: fixed;
left: 0;
right: 0;
margin:0 auto;
top: 28%;
background: url('../assets/images/baojingxinxiKuang.png') no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
padding: 10px 13px;
.top{
height: 10%;
width: 91%;
display: flex;
align-content: flex-start;
justify-content: space-between;
.title{
font-size: 20px;
font-weight: 900;
color: transparent ;
-webkit-background-clip: text;
background-clip: text ;
background-image: linear-gradient(to bottom, rgb(255,255,255), rgb(86,244,254))
}
}
.content{
height: 85%;
width: 100%;
.user_skills {
/deep/ .el-table {
background-color: transparent !important;
}
/deep/ .el-table th {
background-color: transparent !important;
}
/deep/ .el-table__header {
height: 48px;
background: url("../assets/images/tableBg.png") no-repeat;
background-size: 100% 100%;
}
/deep/ .el-table__header th {
border: none;
padding: 0;
height: 40px;
.cell {
height: 100%;
display: flex;
align-items: center;
justify-content: space-around
}
&.el-table__cell.is-leaf {
border: none !important;
}
}
/deep/ .el-table tr {
background-color: transparent !important;
}
/deep/ .el-table--enable-row-transition .el-table__body td,
.el-table .cell {
background-color: transparent !important;
border: none;
color: #ffffff;
}
/deep/ .el-table__body td .cell {
white-space: nowrap !important;
// word-break: break-all;
}
/deep/ .el-table th.el-table__cell>.cell{
color: #FFFFFF;
}
/deep/.el-table .el-table__cell{
padding: 3px 0
}
&::before {
//去除底部白线
left: 0;
bottom: 0;
width: 100%;
height: 0px;
}
.el-table::before{
background-color: transparent;
}
::v-deep .el-table .el-table__body tr.el-table__row td{
background: rgba(79, 218, 255, 0.1) !important;
}
::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td{
background: rgba(79, 218, 255, 0.06) !important;
}
}
}
}
.dateSelect{
display: flex;
font-size:12px;
background: url("../assets/images/dateKuang.png") no-repeat;
background-size: 100% 100%;
height: 25px;
width: 61px;
align-items: center;
}
.active{
width: 32px;
height: 25px;
color: rgb(78,230,207);
background: url("../assets/images/dateAction.png") no-repeat;
background-size: 100% 100%;
line-height: 26px;
}
}
.icon{
position: absolute;
bottom: 0;
right: 0;
}
</style>
<style lang="less">
.el-select{
margin-left: -44px;
.el-input__inner{
background:url("../assets/images/selectCard.png") no-repeat;
background-size: 100% 100%;
border: none;
padding-left: 58px;
}
.el-input__prefix, .el-input__suffix {
position: absolute;
top: 0;
-webkit-transition: all .3s;
height: 100%;
text-align: center;
margin-right: 17px;
}
.el-input__inner::-webkit-input-placeholder{
color: rgb(78,230,207) // 初始化的文字颜色
}
.el-input__inner{
color: rgb(78,230,207);
}
}
.el-select-dropdown{
background-color: rgba(14,30,46,0.5) !important;
border: 1px solid rgba(45,143,148,0.5) !important ;
.el-select-dropdown__item{
color: rgb(78,230,207) !important;
}
.el-select-dropdown__item.hover, .el-select-dropdown__item:hover {
background-color: rgb(18,54,87) !important;
}
}
/**
表格有滚动效果但是不显示滚动条
*/
.table ::-webkit-scrollbar{
display:none;
}
</style>