This commit is contained in:
GGJ
2025-01-09 19:02:44 +08:00
commit 92e7a7a5eb
2943 changed files with 1152283 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,230 @@
<template>
<div style="padding: 0.5%">
<el-row :gutter="10" style="margin-bottom: 10px">
<el-col :span="18.5">
<timepicker
@querfromdata="querfromdata"
:interval="interval"
></timepicker>
</el-col>
<el-col :span="5.5" style="float: right">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="通讯状态:">
<el-tag style="background: #339966; color: #fff" size="mini"
>正常</el-tag
>
<el-tag style="background: #cc0000; color: #fff" size="mini"
>中断</el-tag
>
</el-form-item>
<el-form-item label="数据完整性:">
<el-tag
style="background: #339966; color: #fff; width: 33px"
size="mini"
>&nbsp;&nbsp;&nbsp;&nbsp;</el-tag
>
</el-form-item>
<el-form-item label=">=90%">
<el-tag
style="background: #ffcc33; color: #fff; width: 33px"
size="mini"
>&nbsp;&nbsp;&nbsp;&nbsp;</el-tag
>
</el-form-item>
<el-form-item label="60%~90%">
<el-tag
style="background: #cc0000; color: #fff; width: 33px"
size="mini"
>&nbsp;&nbsp;&nbsp;&nbsp;</el-tag
>
</el-form-item>
<el-form-item label=">60%"> </el-form-item>
</el-form>
</el-col>
<el-table
stripe
:data="tableData"
border
v-loading="loading"
:style="'width: 100%;height:' + tableheight + 'px'"
:height="tableheight + 'px'"
row-key="id"
id="rebateSetTable"
default-expand-all
highlight-current-row
:header-cell-style="{
height: '25px',
top: '0px',
padding: '0px',
}"
:row-style="{ height: '25px' }"
:cell-style="{ padding: '0px' }"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column prop="name" label="拓扑"></el-table-column>
<el-table-column prop="comFlag" label="通讯状态" align="center">
<template slot-scope="scope">
<el-tag
v-if="scope.row.comFlag == 1"
style="color: #fff; background: #339966"
>正常</el-tag
>
<el-tag
v-if="scope.row.comFlag == 0"
style="color: #fff; background: #cc0000"
>中断</el-tag
>
<span v-if="scope.row.comFlag == null"></span>
</template>
</el-table-column>
<el-table-column prop="integrity" label="数据完整性(%)" align="center">
<template slot-scope="scope">
<el-tag
v-if="
scope.row.integrity >= 90 &&
scope.row.integrity !== 3.14159 &&
scope.row.integrity !== -1
"
style="background: #339966; color: #fff"
>{{ scope.row.integrity }}</el-tag
>
<el-tag
v-if="
scope.row.integrity < 60 &&
scope.row.integrity !== 3.14159 &&
scope.row.integrity !== -1
"
style="background: #cc0000; color: #fff"
>{{ scope.row.integrity }}</el-tag
>
<el-tag
v-if="
scope.row.integrity < 90 &&
scope.row.integrity >= 60 &&
scope.row.integrity !== 3.14159 &&
scope.row.integrity !== -1
"
style="background: #ffcc33; color: #fff"
>{{ scope.row.integrity }}</el-tag
>
<el-tag
v-if="scope.row.integrity === 3.14159"
style="background: #ccc; color: #fff"
>暂无数据</el-tag
>
<span
v-if="scope.row.integrity === -1"
style="background: #ccc; color: #fff"
></span>
</template>
</el-table-column>
</el-table>
</el-row>
</div>
</template>
<script>
import { getheight } from "@/assets/commjs/common";
import api from "@/api/energy/sysconfig";
import timepicker from "../../components/TimePicker/index4";
export default {
data() {
return {
device: 1,
multipleSelection: [],
tableheight: undefined,
loading: true,
tableData: [],
formData: {},
tablename: "tab1",
treenode: "",
interval: 4,
formInline: {
user: "",
region: "",
},
};
},
components: {
timepicker,
},
created() {},
mounted() {
this.device = window.devicePixelRatio;
this.tableheight = window.sessionStorage.getItem('appheight') - 65
// if (this.device == 1) {
// this.tableheight = getheight() * 2.22;
// }
// if (this.device == 1.25) {
// this.tableheight = getheight() * 2.22;
// }
// if (this.device == 1.5) {
// this.tableheight = getheight() * 1.93;
// }
},
methods: {
handleSelectionChange(val) {
console.log(val);
this.multipleSelection = val;
},
//时间格式转化
dateFormat(dateData1, dateData2) {
var timearr = [];
var date = new Date(dateData1);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
var h = date.getHours();
h = h < 10 ? "0" + h : h;
var f = date.getMinutes();
f = f < 10 ? "0" + f : f;
var s = date.getSeconds();
s = s < 10 ? "0" + s : s;
this.formData.startTime = y + "-" + m + "-" + d;
timearr.push(this.formData.startTime);
var date = new Date(dateData2);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
var h = date.getHours();
h = h < 10 ? "0" + h : h;
var f = date.getMinutes();
f = f < 10 ? "0" + f : f;
var s = date.getSeconds();
s = s < 10 ? "0" + s : s;
this.formData.endTime = y + "-" + m + "-" + d;
timearr.push(this.formData.endTime);
return timearr;
},
querfromdata(data, timehbValue, interval) {
this.interval = interval;
this.loading = true;
this.dateFormat(data[0], data[1]);
// this.time = this.formData.searchBeginTime+'至'+this.formData.searchEndTime
this.dataShuju();
},
dataShuju() {
api.getIntegrityTree(this.formData).then((res) => {
if (res.code === "A0000") {
// this.tableData = res.data
res.data.forEach((element) => {
element.children.forEach((m) => {
m.children.forEach((n) => {
n.integrity = -1;
});
});
});
this.tableData = res.data;
this.loading = false;
}
});
},
},
};
</script>
<style lang="less" scoped>
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,945 @@
<template>
<div style="padding: 0.5%">
<el-row :gutter="10">
<el-col :span="24">
<el-form :inline="true" :model="ruleForm" class="demo-form-inline" style='margin-left: 15px'>
<el-form-item label="统计指标:">
<el-select
v-model="formData.tagType"
placeholder="请选择"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="负荷类型:">
<el-select
v-model="value2"
multiple
collapse-tags
placeholder="请选择"
>
<el-option
v-for="item in options2"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="值类型:">
<el-select
v-model="formData.valType"
placeholder="请选择"
>
<el-option
v-for="item in options1"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="统计类型:">
<el-select
v-model="formData.statisticType"
placeholder="请选择"
>
<el-option
v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<!-- <el-button type="primary" style="float:right" @click="Indexstrategy">指标策略</el-button>
<el-button type="primary" style="float:right;margin-right:1%" @click="loadtype">负荷策略</el-button> -->
</el-col>
<el-col :span="24">
<timepicker
v-if="falg"
@querfromdata="querfromdata"
:type="2"
:interval="interval"
:tablename="tablename"
:thb="true"
></timepicker>
</el-col>
<el-col :span="24">
<div
id="electrih"
:style="
'background:;width:100%;height:' + (tableheight-50) + 'px;'
"
></div>
<div
v-if="radio3 == '累计'"
id="electri2"
:style="
'background:;width:100%;height:' + (tableheight-50) + 'px;'
"
></div>
</el-col>
</el-row>
<!--指标策略-->
<el-dialog
:close-on-click-modal="false"
title="指标策略"
:visible.sync="dialogVisible"
width="20%"
:before-close="handleClose"
>
<span class="spantext">请勾选需要参与统计的指标:</span>
<div class="border">
<el-checkbox-group v-model="checkList" style="padding: 2%">
<el-checkbox label="三相有功功率" class="check"></el-checkbox>
<el-checkbox label="三相无功功率" class="check"></el-checkbox>
<el-checkbox label="三相净有功电能" class="check"></el-checkbox>
<el-checkbox label="电流总有效值" class="check"> </el-checkbox>
<el-checkbox label="电压基波幅值" class="check"></el-checkbox>
<el-checkbox label="电流基波幅值" class="check"></el-checkbox>
<el-checkbox label="总有有功功率" class="check"></el-checkbox>
</el-checkbox-group>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"
> </el-button
>
</span>
</el-dialog>
<!--负荷策略-->
<el-dialog
:close-on-click-modal="false"
title="电度策略"
:visible.sync="dialogVisible2"
width="30%"
:before-close="handleClose"
>
<span class="spantext">负荷设备树:</span>
<el-row class="border2">
<el-col :span="10">
<el-tree
:data="treedata"
:props="defaultProps"
default-expand-all
style="height: 30vh; overflow-y: auto"
:highlight-current="true"
@node-click="handleNodeClick"
></el-tree>
</el-col>
<el-col :span="14">
<el-form
ref="form"
:model="form"
label-width="80px"
style="margin-top: 20%"
>
<el-form-item label="负荷名称">
<el-input
v-model="form.name"
placeholder="请输入负荷名称"
style="width: 86%"
></el-input>
</el-form-item>
<el-form-item label="负荷终端">
<el-select v-model="form.region" placeholder="请选择负荷终端">
<el-option label="2号楼217宿舍" value="shanghai"></el-option>
<el-option label="号楼218宿舍" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item style="margin-left: 10%">
<el-button type="primary">删除</el-button>
<el-button type="primary">新增</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible2 = false"> </el-button>
<el-button type="primary" @click="dialogVisible2 = false"
> </el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import ElInputGroup from "@/components/ElInputGroup/el-input-group.vue";
import { dicData } from "../../../assets/commjs/dictypeData";
import { getappheight, getheight } from "../../../assets/commjs/common";
import api from "@/api/energy/sysconfig";
import timepicker from "../../components/TimePicker/index4";
import echarts from "echarts";
export default {
components: {
timepicker,
},
data() {
return {
falg: false,
tablename: "tab2",
dialogVisible: false,
dialogVisible2: false,
formData: {
startTime: "",
endTime: "",
startTimeBi: "",
endTimeBi: "",
statisticType: 0,
tagType: "",
loadType: [],
valType: "",
},
interval: 4,
//统计指标
//统计指标
value: 0,
options: [
{ value: 0, label: "净有功电能" },
{ value: 1, label: "三相无功功率" },
],
value1: 0,
options1: [
{ value: 0, label: "增量" },
{ value: 1, label: "峰" },
{ value: 2, label: "平" },
{ value: 3, label: "谷" },
],
value3: 0,
options3: [
{ value: 0, label: "电度" },
{ value: 1, label: "电费" },
],
value2: [],
options2: [
{ value: 0, label: "空调负荷" },
{ value: 1, label: "办公负荷" },
{ value: 2, label: "厨房负荷" },
{ value: 3, label: "宿舍负荷" },
{ value: 4, label: "光伏发电" },
{ value: 5, label: "进线" },
{ value: 6, label: "总负荷" },
],
tableData: [],
checkList: [],
device: 1,
tableheight: undefined,
treedata: [
{
id: 0,
label: "空调负荷",
children: [
{
id: 1,
label: "1层1号监测点",
},
{
id: 2,
label: "1层2号监测点",
},
],
},
{
label: "办公负荷",
id: 11,
children: [
{
id: 12,
label: "1号楼电梯",
},
{
id: 13,
label: "1号楼照明",
},
],
},
{
label: "厨房负荷",
id: 3,
children: [
{
id: 31,
label: "厨房",
},
{
id: 32,
label: "保安室",
},
],
},
],
defaultProps: {
children: "children",
label: "label",
},
form: {
name: "",
region: "",
},
name: "kWh",
name1: "",
text: "环比",
//subtext:'增量值',
legend: [],
xdata: [],
ydata1: [],
ydata2: [],
ping: "",
time: "",
periodBeginTime: "",
periodEndTime: "",
timehuanbiValue: [],
t: false,
};
},
created() {
this.getTarget();
},
mounted() {
// this.tableheight = getheight();
// this.device = window.devicePixelRatio;
// if (this.device == 1) {
// this.tableheight = this.tableheight * 2.25;
// }
// if (this.device == 1.25) {
// this.tableheight = this.tableheight * 1.8;
// }
// if (this.device == 1.5) {
// this.tableheight = this.tableheight * 1.93;
// }
this.tableheight = window.sessionStorage.getItem('appheight') - 120
this.$nextTick(() => {
this.electritypeEcharts1();
});
},
methods: {
//获取指标数据
getTarget() {
var p = {
statisticalName: "电度统计",
};
api.getEleStatisticalTree(p).then((res) => {
if (res.code == "A0000") {
this.options = res.data.binds;
this.formData.tagType = this.options[0].id;
}
this.getDetail();
});
},
//获取负荷类型
getDetail() {
api.getEleLoadSetDetail().then((res) => {
if (res.code == "A0000") {
var data = res.data;
var arr = [];
var arrId = [];
for (var i = 0; i < data.length; i++) {
var p = {
name: data[i].loadName,
id: data[i].loadId,
};
arrId.push(data[i].loadId);
arr.push(p);
}
this.value2 = arrId;
this.options2 = arr;
}
this.RateDetail();
});
},
//字典获取数据
RateDetail() {
var code = "Rate_Type";
this.options1 = dicData(code, []);
this.options1.push({ id: "", name: "全部", label: "全部" });
this.formData.valType = this.options1[0].id;
this.falg = true;
},
//指标策略触发事件
Indexstrategy() {
this.dialogVisible = true;
},
//树节点触发事件
handleNodeClick(data) {
console.log(data);
},
//负荷策略触发事件
loadtype() {
this.dialogVisible2 = true;
},
//关闭事件
handleClose() {
this.dialogVisible = false;
this.dialogVisible2 = false;
},
//切换事件
checkbox(val) {
this.radio3 = val;
if (val == "增量") {
this.$nextTick(() => {
this.electritypeEcharts1();
});
} else {
this.$nextTick(() => {
this.electritypeEcharts2();
});
}
},
//时间格式化
dateFormat(dateData1, dateData2) {
var timearr = [];
var date = new Date(dateData1);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
var h = date.getHours();
h = h < 10 ? "0" + h : h;
var f = date.getMinutes();
f = f < 10 ? "0" + f : f;
var s = date.getSeconds();
s = s < 10 ? "0" + s : s;
this.formData.searchBeginTime = y + "-" + m + "-" + d;
timearr.push(this.formData.startTime);
var date = new Date(dateData2);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
var h = date.getHours();
h = h < 10 ? "0" + h : h;
var f = date.getMinutes();
f = f < 10 ? "0" + f : f;
var s = date.getSeconds();
s = s < 10 ? "0" + s : s;
this.formData.searchEndTime = y + "-" + m + "-" + d;
timearr.push(this.formData.endTime);
return timearr;
},
querfromdata(data, timehbValue, interval) {
this.interval = interval;
this.timeValue = data;
console.log("日期" + this.timeValue);
this.timehuanbiValue = timehbValue;
console.log("环比" + this.timehuanbiValue);
this.periodBeginTime = this.timehuanbiValue[0];
this.periodEndTime = this.timehuanbiValue[1];
console.log("开始" + this.periodBeginTime);
console.log("结束" + this.periodEndTime);
this.ping = this.periodBeginTime + "至" + this.periodEndTime;
this.dateFormat(this.timeValue[0], this.timeValue[1]);
this.time =
this.formData.searchBeginTime + "至" + this.formData.searchEndTime;
var arr = [];
var startTime = this.timeValue[0];
var year1 = parseInt(startTime.substring(0, 4));
// var month = parseInt(startTime.substring(5, 7))
// arr.push(year1+'年'+month+'月')
var startTimeb = this.periodBeginTime;
var year2 = parseInt(startTimeb.substring(0, 4));
// var month = parseInt(startTimeb.substring(5, 7))
// arr.push(year2+'年'+month+'月')
arr.push(this.time);
arr.push(this.ping);
this.legend = arr;
for (var i = 0; i < this.options.length; i++) {
if (this.formData.tagType == this.options[i].id) {
this.name1 = this.options[i].name;
}
}
var data = {
startTime: this.timeValue[0],
endTime: this.timeValue[1],
startTimeBi: this.periodBeginTime,
endTimeBi: this.periodEndTime,
tagType: this.formData.tagType,
statisticType: this.formData.statisticType,
loadType: this.value2,
valType: this.formData.valType,
};
api.getElectStatistic(data).then((res) => {
if (res.code == "A0000") {
var data = res.data;
var xdata = [];
var ydata1 = [];
var ydata2 = [];
for (var i = 0; i < data.length; i++) {
if (
data[i].afterNum == data[i].beforeNum &&
data[i].afterNum !== 0 &&
data[i].beforeNum !== 0
) {
this.t = true;
ydata1.push(data[i].beforeNum.toFixed(2));
xdata.push(data[i].loadName);
} else {
this.t = false;
xdata.push(data[i].loadName);
if (data[i].afterNum == 3.14159) {
data[i].afterNum = 0.5;
}
if (data[i].beforeNum == 3.14159) {
data[i].beforeNum = 0.5;
}
ydata2.push(data[i].afterNum.toFixed(2));
ydata1.push(data[i].beforeNum.toFixed(2));
}
}
this.xdata = xdata;
this.ydata1 = ydata1;
this.ydata2 = ydata2;
if (this.formData.statisticType == 0) {
this.name = "kWh";
} else {
this.name = "元";
}
if (this.text === "环比" && year1 > year2 && !this.t) {
this.text = "同比";
this.electritypeEcharts1();
} else if (this.text === "环比" && year1 === year2 && !this.t) {
this.text = "环比";
this.electritypeEcharts1();
} else {
if (this.t) {
this.text = "";
this.electritypeEcharts1();
} else {
this.text = "环比";
this.electritypeEcharts1();
}
}
}
});
// if(d !==''){
// this.text='同比'
// this.subtext='空调负荷'
// this.xdata=['最大值','最小值','平均值']
// this.ydata1=[89,35,45],
// this.ydata2=[97.89,56.78,35,6]
// this.loadtypeEcharts()
// }
},
electritypeEcharts1() {
let echarts = require("echarts");
var myChart1 = echarts.init(document.getElementById("electrih"));
// var xData=['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12', '2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04']
// var yData=[50, 75, 84, 65, 90, 56, 68,89, 67, 95, 69, 96,75, 58, 85, 65]
var option1 = {
title: {
text: this.text,
// subtext:this.subtext ,
left: "center",
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "cross",
crossStyle: {
color: "#999",
},
},
formatter: function (params) {
var tips = "";
tips +=
'<span style="font-weight:bold;color:#0099CC">' +
params[0].name +
"</span></br/>";
for (var i = 0; i < params.length; i++) {
if (params[i].value == 0.5) {
tips += params[i].seriesName + ":暂无数据<br/>";
} else {
tips +=
params[i].seriesName +
':<span style="font-weight:bold;color:#996600">' +
params[i].value +
"</span><br/>";
}
}
return tips;
},
},
grid: {
left: "2%",
right: "4%",
bottom: "2%",
top: "10%",
containLabel: true,
},
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
// magicType: { show: true, type: ['line', 'bar'] },
//restore: { show: true },
saveAsImage: { show: true },
},
},
legend: {
// orient: 'vertical',
data: [
{ name: this.legend[0], itemStyle: { color: "#FF9900" } },
{ name: this.legend[1], itemStyle: { color: "#0099CC" } },
],
left: "left",
// itemStyle: {
// color:['#00CC33','#0099CC']
// }
},
xAxis: [
{
type: "category",
data: this.xdata,
axisPointer: {
type: "shadow",
},
},
],
yAxis: [
{
type: "value",
name: this.name1,
splitLine: {
show: true,
lineStyle: {
type: "dashed",
color: "#55b9b4",
},
},
//min: 0,
// max: 100,
//interval: 10,
axisLabel: {
formatter: "{value}" + this.name,
},
},
],
series: [
{
name: this.legend[1],
barMaxWidth: 45,
type: "bar",
// tooltip: {
// valueFormatter: function (value) {
// return value + 'kWh';
// }
// },
data: this.ydata2,
itemStyle: {
normal: {
color: function (params) {
if (params.value == 0.5) {
return new echarts.graphic.LinearGradient(
0,
1,
0,
0,
[
{
offset: 1,
color: "#999999",
},
],
false
);
} else {
return new echarts.graphic.LinearGradient(
0,
1,
0,
0,
[
{
offset: 1,
color: "#0099CC",
},
],
false
);
}
},
},
},
label: {
show: true,
position: "top",
// distance: 10,
// color: '#fff'
},
},
{
name: this.legend[0],
barMaxWidth: 45,
type: "bar",
// tooltip: {
// valueFormatter: function (value) {
// return value + 'kWh';
// }
// },
data: this.ydata1,
itemStyle: {
normal: {
color: function (params) {
if (params.value == 0.5) {
return new echarts.graphic.LinearGradient(
0,
1,
0,
0,
[
{
offset: 1,
color: "#999999",
},
],
false
);
} else {
return new echarts.graphic.LinearGradient(
0,
1,
0,
0,
[
{
offset: 1,
color: "#FF9900",
},
],
false
);
}
},
},
},
label: {
show: true,
position: "top",
// distance: 10,
// color: '#fff'
},
},
],
};
myChart1.clear();
option1 && myChart1.setOption(option1, true)
window.echartsArr.push(myChart1);
},
electritypeEcharts2() {
let echarts = require("echarts");
var myChart = echarts.init(document.getElementById("electri2"));
var xData = [
"2021-01-01",
"2021-01-02",
"2021-01-03",
"2021-01-04",
"2021-01-05",
"2021-01-06",
"2021-01-07",
"2021-01-08",
"2021-01-09",
"2021-01-10",
"2021-01-11",
"2021-01-12",
"2021-02-01",
"2021-02-02",
"2021-02-03",
"2021-02-04",
];
var yData = [
50, 75, 84, 65, 90, 56, 68, 89, 67, 95, 69, 96, 75, 58, 85, 65,
];
var option = {
title: {
text: "",
},
tooltip: {
trigger: "axis",
},
grid: {
left: "2%",
right: "4%",
bottom: "6%",
top: "10%",
containLabel: true,
},
legend: {},
toolbox: {
show: true,
feature: {
dataZoom: {
yAxisIndex: "none",
},
//dataView: { readOnly: false },
magicType: { type: ["line", "bar"] },
//restore: {},
saveAsImage: {},
},
},
xAxis: {
type: "category",
boundaryGap: false,
data: [
"2022-03-11 11:15",
"11:30",
"11:45",
"12:00",
"12:15",
"12:30",
"12:45",
],
},
yAxis: {
type: "value",
axisLabel: {
formatter: "{value} kW-h",
},
},
series: [
{
name: "空调负荷",
type: "line",
data: [30, 61, 94, 125, 157, 189, 228],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
{
name: "办公负荷",
type: "line",
data: [16, 27, 40, 51, 63, 75, 84],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
{
name: "厨房负荷",
type: "line",
data: [6, 14, 21, 30, 38, 48, 57],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
{
name: "宿舍负荷",
type: "line",
data: [3, 5, 9, 15, 18, 21, 24],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
{
name: "光伏发电",
type: "line",
data: [43, 85, 129, 175, 218, 261, 304],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
{
name: "进线",
type: "line",
data: [63, 125, 189, 255, 318, 381, 444],
markPoint: {
data: [
{ type: "max", name: "Max" },
{ type: "min", name: "Min" },
],
},
},
],
};
var app = {
currentIndex: -1,
};
setInterval(function () {
var dataLen = option.series[0].data.length;
// 取消之前高亮的图形
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
app.currentIndex = (app.currentIndex + 1) % dataLen;
//console.log(app.currentIndex);
// 高亮当前图形
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
// 显示 tooltip
myChart.dispatchAction({
type: "showTip",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
}, 1000);
myChart.clear();
myChart.setOption(option)
window.echartsArr.push(myChart);
},
},
};
</script>
<style lang='scss' scoped>
.spantext {
font-size: 14px;
font-weight: bold;
}
.border {
border: 1px solid rgb(15, 15, 15);
height: 30vh;
width: 100%;
margin: 0 auto;
}
.check {
margin-top: 2%;
margin-left: 25%;
}
.border2 {
border: 1px solid rgb(15, 15, 15);
}
::v-deep .el-tree {
color: rgb(1, 15, 27);
font-weight: bold;
// background: rgba(87, 122, 133, 0.39);
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,190 @@
<template>
<div style="padding: 0.5%">
<el-row :gutter="10" style="margin-bottom: 10px">
<el-col :span="18.5">
<timepicker
@querfromdata="querfromdata"
:interval="interval"
:treenode="treenode"
:tablename="tablename"
></timepicker>
</el-col>
<el-col :span="5.5" style="float: right">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="通讯状态:">
<el-tag style="color: #fff; background: #396" size="mini">正常</el-tag>
<el-tag style="color: #fff; background: #c00" size="mini">中断</el-tag>
</el-form-item>
<el-form-item label="终端在线率:">
<el-tag style="width: 33px; color: #fff; background: #396" size="mini">
&nbsp;&nbsp;&nbsp;&nbsp;
</el-tag>
</el-form-item>
<el-form-item label=">=90%">
<el-tag style="width: 33px; color: #fff; background: #fc3" size="mini">
&nbsp;&nbsp;&nbsp;&nbsp;
</el-tag>
</el-form-item>
<el-form-item label="60%~90%">
<el-tag style="width: 33px; color: #fff; background: #c00" size="mini">
&nbsp;&nbsp;&nbsp;&nbsp;
</el-tag>
</el-form-item>
<el-form-item label=">60%"></el-form-item>
</el-form>
</el-col>
<el-table
stripe
:data="tableData"
border
v-loading="loading"
:style="'width: 100%;height:' + tableheight + 'px'"
:height="tableheight + 'px'"
row-key="id"
id="rebateSetTable"
default-expand-all
highlight-current-row
:header-cell-style="{
//background:'#5E95E8',
//color:'#FFFFFF',
height: '25px',
top: '0px',
padding: '0px'
}"
:row-style="{ height: '25px' }"
:cell-style="{ padding: '0px' }"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column prop="name" label="拓扑"></el-table-column>
<!-- <el-table-column prop="info" label="工程信息" align="center">
<template slot-scope="scope">
<span v-if="scope.row.info==null">/</span>
<span v-if="scope.row.info !==null">{{scope.row.info}}</span>
</template>
</el-table-column> -->
<el-table-column prop="comFlag" label="通讯状态" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.comFlag == 1" style="color: #fff; background: #396">正常</el-tag>
<el-tag v-if="scope.row.comFlag == 0" style="color: #fff; background: #c00">中断</el-tag>
<span v-if="scope.row.comFlag == 2">/</span>
</template>
</el-table-column>
<el-table-column prop="integrity" label="终端在线率(%)" align="center">
<template slot-scope="scope">
<el-tag
v-if="scope.row.integrity >= 90 && scope.row.integrity !== 3.14159"
style="color: #fff; background: #396"
>
{{ scope.row.integrity }}
</el-tag>
<el-tag
v-if="scope.row.integrity < 60 && scope.row.integrity !== 3.14159"
style="color: #fff; background: #c00"
>
{{ scope.row.integrity }}
</el-tag>
<el-tag
v-if="
scope.row.integrity < 90 && scope.row.integrity >= 60 && scope.row.integrity !== 3.14159
"
style="color: #fff; background: #fc3"
>
{{ scope.row.integrity }}
</el-tag>
<el-tag v-if="scope.row.integrity === 3.14159" style="color: #fff; background: #ccc">
暂无数据
</el-tag>
</template>
</el-table-column>
</el-table>
</el-row>
</div>
</template>
<script>
import { getheight } from '@/assets/commjs/common'
import api from '@/api/energy/sysconfig'
import timepicker from '../../components/TimePicker/index4'
export default {
data() {
return {
device: 1,
loading: true,
tableheight: undefined,
tableData: [],
tablename: 'tab1',
treenode: '',
interval: 4,
formData: {},
formInline: {
user: '',
region: ''
}
}
},
components: {
timepicker
},
created() {},
mounted() {
this.device = window.devicePixelRatio
this.tableheight = window.sessionStorage.getItem('appheight') - 65
},
methods: {
//时间格式转化
dateFormat(dateData1, dateData2) {
var timearr = []
var date = new Date(dateData1)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var f = date.getMinutes()
f = f < 10 ? '0' + f : f
var s = date.getSeconds()
s = s < 10 ? '0' + s : s
this.formData.startTime = y + '-' + m + '-' + d
timearr.push(this.formData.startTime)
var date = new Date(dateData2)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var f = date.getMinutes()
f = f < 10 ? '0' + f : f
var s = date.getSeconds()
s = s < 10 ? '0' + s : s
this.formData.endTime = y + '-' + m + '-' + d
timearr.push(this.formData.endTime)
return timearr
},
querfromdata(data, timehbValue, interval) {
this.interval = interval
this.loading = true
this.timeValue = data
console.log('日期' + this.timeValue)
this.timehuanbiValue = timehbValue
console.log('环比' + this.timehuanbiValue)
this.periodBeginTime = this.timehuanbiValue[0]
this.periodEndTime = this.timehuanbiValue[1]
console.log('开始' + this.periodBeginTime)
console.log('结束' + this.periodEndTime)
this.ping = this.periodBeginTime + '至' + this.periodEndTime
this.dateFormat(this.timeValue[0], this.timeValue[1])
// this.time = this.formData.searchBeginTime+'至'+this.formData.searchEndTime
api.getOnlineRateTree(this.formData).then(res => {
if (res.code === 'A0000') {
this.tableData = res.data
this.loading = false
}
})
}
}
}
</script>
<style scoped></style>

View File

@@ -0,0 +1,23 @@
<template>
<div>
光伏分析
</div>
</template>
<script>
export default {
data(){
return {
}
},
created(){
},
mounted(){
},
methods:{
}
}
</script>