factory_web/src/views/bigScreen/index_enp_blue.vue

1454 lines
35 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="dashboard" style="height: 100%">
<el-container style="height: 100%">
<el-header style="height: 8vh">
<div class="headerImg">
<img
src="img/enp_blue/header_enp.png"
style="width: 100%; height: 100%"
/>
<div class="sysName">
{{ this.$TOOL.data.get("BASE_INFO").base.base_name }}
</div>
</div>
<div style="position: absolute; top: 0.7vh; height: 6vh">
<div
style="
display: flex;
padding-top: 1vh;
margin-left: 1vw;
"
>
<div :class="bindClass(0)" @click="menuClick(0)">
<div class="menuItem">首页</div>
</div>
<div :class="bindClass(1)">
<div class="menuItem">
<el-dropdown
class="dropdown"
trigger="click"
@command="handleClick"
>
<span class="el-dropdown-link">
有组织排放管理
</span>
<template #dropdown>
<el-dropdown-menu class="enpMenu">
<el-dropdown-item command="paikou"
>排放口清单</el-dropdown-item
>
<el-dropdown-item command="cems"
>CEMS监测清单</el-dropdown-item
>
<el-dropdown-item command="cems2"
>CEMS监测预警</el-dropdown-item
>
<el-dropdown-item
command="cemsExport"
>CEMS报表导出</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
<div :class="bindClass(2)">
<div class="menuItem">
<el-dropdown
class="dropdown"
trigger="click"
@command="handleClick2"
>
<span class="el-dropdown-link">
无组织排放管理
</span>
<template #dropdown>
<el-dropdown-menu class="enpMenu">
<el-dropdown-item
command="pollutant"
>污染源清单</el-dropdown-item
>
<el-dropdown-item
command="pollutant2"
>污染源监测</el-dropdown-item
>
<el-dropdown-item command="smartg"
>智能治理</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
</div>
</div>
<div
style="
position: absolute;
top: 0.7vh;
right: 8px;
height: 6vh;
"
>
<div
style="
display: flex;
padding-top: 1vh;
padding-right: 1vw;
justify-content: flex-end;
"
>
<div :class="bindClass(3)">
<div class="menuItem">
<el-dropdown
class="dropdown"
trigger="click"
@command="handleClick3"
>
<span class="el-dropdown-link">
清洁运输
</span>
<template #dropdown>
<el-dropdown-menu class="enpMenu">
<el-dropdown-item
command="transport"
>厂外运输</el-dropdown-item
>
<el-dropdown-item
command="innerClean"
>厂内清洁</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
<div :class="bindClass(4)" @click="menuClick(4)">
<div class="menuItem">
<el-dropdown
class="dropdown"
trigger="click"
@command="handleClick4"
>
<span class="el-dropdown-link">
环境质量
</span>
<template #dropdown>
<el-dropdown-menu class="enpMenu">
<el-dropdown-item
command="envirmonitor"
>环境监测清单</el-dropdown-item
>
<el-dropdown-item
command="envirqualmonitor"
>环境质量监测</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
<div :class="bindClass(5)" @click="menuClick(5)">
<!-- <div class="menuItem">台账管理</div> -->
<div class="menuItem">
<el-dropdown
class="dropdown"
trigger="click"
@command="handleClick5"
>
<span class="el-dropdown-link">
台账管理
</span>
<template #dropdown>
<el-dropdown-menu class="enpMenu">
<el-dropdown-item command="eqments"
>设备清单</el-dropdown-item
>
<el-dropdown-item
command="alarmrecord"
>报警记录
</el-dropdown-item>
<el-dropdown-item command=""
>综合查询
</el-dropdown-item>
<el-dropdown-item command="video"
>视屏墙
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
<div class="wraning_icon"></div>
<div class="user_icon" @click="backSystem"></div>
</div>
</div>
</el-header>
<el-main style="padding: 0">
<div v-show="activeIndex == 0" class="model" style="">
<Cesium ref="cesiumDiv" :activeIndex="activeIndex" />
</div>
<!-- 左侧列表数据 -->
<div
v-show="activeIndex == 0"
class="left_other animate__animated animate__backInLeft"
>
<!-- 有组织排放实时监测清单CEMS -->
<div class="panel panel1">
<div class="blockTitle">
<div class="blockTitleText">
主要排放口实时监测清单
</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
<div>
<scScrollTavle
v-if="table1Visible"
:tableHeight="containerHeight"
:rowData="lineData"
:titleData="liData1"
:refValue="refValue1"
class="bigScreenTable"
:noIndex="noIndex"
></scScrollTavle>
<!-- <div class="tableHear" style="padding: 0 1vh;">
<div style="flex:1;height:1vh"></div>
<div style="flex:5;margin: 0 1vh;">设备名称</div>
<div style="flex:2">颗粒物</div>
<div style="flex:2">SO₂</div>
<div style="flex:2">NOx</div>
</div>
<div class="rowItem">
<div class="rowindex">1</div>
<div class="rowname">设备名称</div>
<div class="rownum">
<span v-if="cemsData.envdata && cemsData.envdata.dust_zs !== null">{{ cemsData.envdata.dust_zs }}</span>
<span v-else>-</span>
</div>
<div class="rownum">
<span v-if="cemsData.envdata && cemsData.envdata.so2_zs !== null">{{ cemsData.envdata.so2_zs
}}</span>
<span v-else>-</span>
</div>
<div class="rownum">
<span v-if="cemsData.envdata && cemsData.envdata.nox_zs !== null">{{ cemsData.envdata.nox_zs }}</span>
<span v-else>-</span>
</div>
</div> -->
</div>
</div>
<!-- 接入设备数量总览 -->
<div class="panel panel2">
<div class="blockTitle">
<div class="blockTitleText">接入设备数量总览</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
<div style="display: flex; padding: 1vh 1vw">
<div style="width: 50%; height: 100%">
<div class="eqItem">
<img
class="eqImg"
src="img/enp_blue/eq_s.svg"
/>
<div class="eqText">
<div class="eqName">生产设备</div>
<div class="eqNumWrap">
<span class="eqNum">{{
eqNumData.sc
}}</span
>台
</div>
</div>
</div>
<div class="eqItem">
<img
class="eqImg"
src="img/enp_blue/eq_v.svg"
/>
<div class="eqText">
<div class="eqName">监测设备</div>
<div class="eqNumWrap">
<span class="eqNum">{{
eqNumData.jc
}}</span
>台
</div>
</div>
</div>
</div>
<div style="width: 50%; height: 100%">
<div class="eqItem">
<img
class="eqImg"
src="img/enp_blue/eq_z.svg"
/>
<div class="eqText">
<div class="eqName">治理设备</div>
<div class="eqNumWrap">
<span class="eqNum">{{
eqNumData.zl
}}</span
>台
</div>
</div>
</div>
<div class="eqItem">
<img
class="eqImg"
src="img/enp_blue/eq_c.svg"
/>
<div class="eqText">
<div class="eqName">监控设备</div>
<div class="eqNumWrap">
<span class="eqNum">{{
eqNumData.jk
}}</span
>台
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 无组织排放实时监测清单 TSP-->
<div class="panel panel1">
<div class="blockTitle">
<div class="blockTitleText">无组织实时监测清单</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
<div>
<scScrollTavle
v-if="table2Visible"
:tableHeight="containerHeight"
:rowData="lineData2"
:titleData="liData2"
:refValue="refValue2"
class="bigScreenTable"
:noIndex="noIndex"
></scScrollTavle>
</div>
</div>
</div>
<!-- 右侧数据 -->
<div
v-show="activeIndex == 0"
class="right_other animate__animated animate__backInRight"
>
<!-- 空气微站实时监测清单 -->
<div class="panel panel1">
<div class="blockTitle">
<div class="blockTitleText">
空气微站实时监测清单
</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
<scScrollTavle
v-if="table3Visible"
:tableHeight="containerHeight"
:rowData="lineData3"
:titleData="liData3"
:refValue="refValue3"
class="bigScreenTable"
:noIndex="noIndex"
></scScrollTavle>
<!-- <div>
<div class="tableHear"
style="margin:1vh 0;height:2.6vh;line-height:2.6vh;display:flex;padding:1vh;font-size:1.2vh">
<div style="flex:2">监测设备名称</div>
<div style="flex:1">PM10(μg/m³)</div>
<div style="flex:1">PM2.5(μg/m³)</div>
</div>
<div class="tableBody">
<div v-for="item in wData" :key="item">
<div class="badyItem">
<div style="flex:2">
<img src="img/enp_blue/listImg.png"
style="width:2vh;height:2vh;margin:1.2vh 1vh;vertical-align:middle">
<span>{{ item.name }}</span>
</div>
<span style="flex:1" v-if="item.envdata">{{ item.envdata.pm10 }}</span>
<span style="flex:1" v-if="item.envdata">{{ item.envdata.pm25 }}</span>
</div>
</div>
</div>
</div> -->
</div>
<!-- 今日车辆统计数据 -->
<div class="panel panel2">
<div class="blockTitle">
<div class="blockTitleText">今日车辆统计数据</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
<div style="display: flex">
<div class="chart" id="pieChart"></div>
<div
style="
flex-shrink: 1;
width: 100px;
align-self: center;
display: flex;
flex-direction: column;
"
>
<div
class="todyCarItem"
v-for="item in pieData"
:key="item"
>
<span style="color: #d5d5d5">{{
item.name
}}</span>
<span
style="
font-size: 35px;
color: #00f6ff;
font-weight: bold;
display: inline-block;
text-align: center;
"
>{{ item.value }}</span
>
</div>
</div>
</div>
</div>
<!-- 环卫车作业情况 -->
<div class="panel panel1">
<div class="blockTitle">
<div class="blockTitleText">环卫车作业情况</div>
<img
class="blockTitleImg"
src="img/enp_blue/block_title.png"
/>
</div>
</div>
</div>
<!-- 左右两条边框线 -->
<!-- <div v-show="activeIndex == 0" class="left_border"></div> -->
<!-- <div v-show="activeIndex == 0" class="right_border"></div> -->
<!-- 设备分类 -->
<!-- <div v-show="activeIndex == 0" class="btns_enp">
<div class="btns" :class="bindBtnClass(10)" @click="equipmentTypeChange(10)">生产设备</div>
<div class="btns" :class="bindBtnClass(30)" @click="equipmentTypeChange(30)">治理设备</div>
<div class="btns" :class="bindBtnClass(40)" @click="equipmentTypeChange(40)">监测设备</div>
<div class="btns" :class="bindBtnClass(50)" @click="equipmentTypeChange(50)">监控设备</div>
</div> -->
<!-- 底部背景图片 -->
<div v-show="activeIndex == 0" class="bottom_enp"></div>
<div v-if="activeIndex != 0" class="container">
<el-drawer
v-model="elDrawer"
:modal="false"
:close-on-click-modal="false"
size="95%"
:with-header="false"
direction="ltr"
:show-close="false"
id="enpElDrawer"
>
<!-- <div class="sysName">智能环保一体化管控平台</div> -->
<org-dialog
v-if="activeDrawerName == 'paikou'"
@close="closeDialog"
></org-dialog>
<cems-drawer
v-else-if="activeDrawerName == 'cems'"
@close="closeDialog"
></cems-drawer>
<cems2-drawer
v-else-if="activeDrawerName == 'cems2'"
@close="closeDialog"
></cems2-drawer>
<cems-export
v-else-if="activeDrawerName == 'cemsExport'"
@close="closeDialog"
></cems-export>
<pollutant
v-else-if="activeDrawerName == 'pollutant'"
@close="closeDialog"
></pollutant>
<!-- 运输清洁 -->
<transport
v-else-if="activeDrawerName == 'transport'"
@close="closeDialog"
></transport>
<innerclean
v-else-if="activeDrawerName == 'innerClean'"
@close="closeDialog"
></innerclean>
<!-- 环保管理 -->
<envirqualmonitor
v-else-if="activeDrawerName == 'envirqualmonitor'"
@close="closeDialog"
>
</envirqualmonitor>
<envirmonitor
v-else-if="activeDrawerName == 'envirmonitor'"
@close="closeDialog"
></envirmonitor>
<pollutecalendar
v-else-if="activeDrawerName == 'pollutecalendar'"
@close="closeDialog"
></pollutecalendar>
<!-- 台账管理 -->
<eqments
v-else-if="activeDrawerName == 'eqments'"
@close="closeDialog"
></eqments>
<alarmrecord
v-else-if="activeDrawerName == 'alarmrecord'"
@close="closeDialog"
></alarmrecord>
<pollutant2
v-else-if="activeDrawerName == 'pollutant2'"
@close="closeDialog"
></pollutant2>
<smartg
v-else-if="activeDrawerName == 'smartg'"
@close="closeDialog"
></smartg>
<videowall
v-else-if="activeDrawerName == 'video'"
@close="closeDialog"
></videowall>
</el-drawer>
</div>
</el-main>
</el-container>
</div>
</template>
<script>
import * as echarts from "echarts";
import Cesium from "./cesiumtest.vue";
import orgDialog from "./enpComponents/orgwryList";
import cemsDrawer from "./enpComponents/cems.vue";
import cems2Drawer from "./enpComponents/cems2.vue";
import cemsExport from "./enpComponents/cemsExport.vue";
import pollutant from "./enpComponents/pollutant.vue";
import innerclean from "./enpComponents/innerclean.vue";
import transport from "./enpComponents/transport.vue";
import envirqualmonitor from "./enpComponents/envirqualmonitor.vue";
import envirmonitor from "./enpComponents/envirmonitor.vue";
import pollutecalendar from "./enpComponents/pollutecalendar.vue";
import eqments from "./enpComponents/eqments.vue"; //台账
import alarmrecord from "./enpComponents/alarmrecord.vue";
import pollutant2 from "./enpComponents/pollutant2.vue";
import smartg from "./enpComponents/smartg.vue";
import videowall from "./enpComponents/video.vue";
import scScrollTavle from "@/components/scScrollTable.vue";
// import 'babylonjs-loaders';
import "animate.css";
export default {
components: {
Cesium,
orgDialog,
cemsDrawer,
cems2Drawer,
cemsExport,
pollutant,
innerclean,
transport,
envirqualmonitor,
envirmonitor,
pollutecalendar,
eqments,
alarmrecord,
pollutant2,
smartg,
videowall,
scScrollTavle,
},
data() {
return {
config: {
dark: this.$TOOL.data.get("APP_DARK") || false,
},
elDrawer: true,
isCollapse: false,
nowDay: 1,
initialAlpha: -Math.PI / 0.89,
initialBeta: Math.PI / 3.3,
initialRadius: 18,
initialTarget: null,
scene: null,
myui: null,
is_mainviewpoint: false,
resizeTimeout: null,
engine: null,
loadedPercent: 0,
showKgcet: true,
currentLightMesh: null,
// activeBtns: 10,
activeDrawerName: "",
activeIndex: 0,
activeSection: 2,
activeSectionName: "回转窑",
updateTime: "2023-08-17 16:00:00",
pieOption: {
title: {
text: "",
subtext: "",
left: "center",
},
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b}: {c} ({d}%)",
},
legend: {
// orient: 'vertical',
center: true,
bottom: 1,
data: ["新能源", "其他"],
},
backgroundColor: "rgba(255,255,255,0)",
color: [
"rgb(3,195,198)",
"rgb(155,248,249)",
"rgb(110,181,249)",
"rgb(205,248,248)",
],
grid: {
left: "3%",
top: "3%",
containLabel: true,
},
series: {
name: "今日车辆数量统计",
type: "pie",
radius: [25, 45],
center: ["50%", "50%"],
emphasis: {
focus: "series",
label: {
show: true,
fontSize: 10,
fontWeight: "bold",
},
},
label: {
show: false,
position: "center",
},
labelLine: {
show: false,
},
data: [
{ value: 2, name: "新能源" },
{ value: 6, name: "其他" },
],
},
},
pieData: [
{ value: 2, name: "新能源" },
{ value: 6, name: "其他" },
],
containerHeight: 100,
refValue1: "moocBox1",
table1Visible: true,
lineData: [],
liData1: ["设备名称", "颗粒物", "SO₂", "NOx"],
refValue2: "moocBox2",
table2Visible: true,
lineData2: [],
liData2: ["设备名称", "TSP测量值"],
refValue3: "moocBox3",
table3Visible: true,
lineData3: [],
liData3: ["设备名称", "PM10", "PM2.5"],
noIndex: true,
eqNumData: {
sc: 0,
jc: 0,
zl: 0,
jk: 0,
},
cemsDataList: [],
cemsData: [],
tspData: [],
wData: [],
intervalinfo: null, //窗口数据更新定时器
};
},
created() {
document.documentElement.classList.add("dark");
this.$TOOL.data.set("APP_DARK", true);
},
mounted() {
let that = this;
that.initDomStyle();
that.getleft1Data();
that.getleft2Data();
that.getleft3Data();
that.getright1Data();
that.getright2Data();
that.getright3Data();
that.initCharts();
that.addListener();
that.$nextTick(() => {
setTimeout(function () {}, 5000);
});
// that.intervalinfo = setInterval(() => {
// that.getleft1Data();
// // that.getleft2Data();
// that.getleft3Data();
// that.getright1Data();
// that.getright2Data();
// that.getright3Data();
// },60000)
},
beforeUnmount() {
// 性能优化
const canvas = document.getElementById("renderCanvas");
if (canvas) {
canvas.parentNode.removeChild(canvas);
}
},
methods: {
//有组织排放口实时监测清单数据( CEMS
getleft1Data() {
let that = this;
that.$API.em.equipment.list
.req({ type: 40, cate__code: "cems", has_envdata: "yes" })
.then((res) => {
that.cemsDataList = res.results;
that.cemsData = res.results[0];
let lineData = [];
res.results.forEach((item, index) => {
let arr = [],
obj1 = {},
obj2 = {},
obj3 = {},
obj4 = {};
obj1.elType = "primary";
obj1.value = item.name; //设备名称
obj2.elType = "primary";
obj2.value =
item.envdata && item.envdata.dust_zs
? item.envdata.dust_zs
: "-"; //颗粒物折算值
obj3.elType = "primary";
obj3.value =
item.envdata && item.envdata.so2_zs
? item.envdata.so2_zs
: "-"; //SO₂折算值
obj4.elType = "primary";
obj4.value =
item.envdata && item.envdata.nox_zs
? item.envdata.nox_zs
: "-"; //NOx折算值
arr.push(obj1);
arr.push(obj2);
arr.push(obj3);
arr.push(obj4);
lineData.push(arr);
});
this.lineData = lineData;
});
},
//接入设备数量
getleft2Data() {
//生产
this.$API.em.equipment.list
.req({ type: 10, query: {} })
.then((res1) => {
// console.log(res1)
this.eqNumData.sc = res1.count;
});
//监测
this.$API.em.equipment.list
.req({ type: 40, query: {} })
.then((res2) => {
// console.log(res2)
this.eqNumData.jc = res2.count;
});
//治理
this.$API.em.equipment.list
.req({ type: 30, query: {} })
.then((res3) => {
// console.log(res3)
this.eqNumData.zl = res3.count;
});
//监控
this.$API.em.equipment.list
.req({ type: 50, query: {} })
.then((res4) => {
// console.log(res4)
this.eqNumData.jk = res4.count;
});
},
//无组织排放口实时监测数据TSP
getleft3Data() {
let that = this;
that.$API.em.equipment.list
.req({ type: 40, cate__code: "tsp", has_envdata: "yes" })
.then((res) => {
that.tspDataList = res.results;
that.tspData = res.results[0];
let lineData = [];
res.results.forEach((item, index) => {
let arr = [],
obj1 = {},
obj2 = {};
obj1.elType = "primary";
obj1.value = item.name; //设备名称
obj2.elType = "primary";
obj2.value =
item.envdata && item.envdata.tsp
? item.envdata.tsp
: "-"; //颗粒物折算值
arr.push(obj1);
arr.push(obj2);
lineData.push(arr);
});
this.lineData2 = lineData;
});
},
//空气微站实时监测---(小微站)
getright1Data() {
let that = this;
that.$API.em.equipment.list
.req({ type: 40, cate__code: "aqms", has_envdata: "yes" })
.then((res) => {
that.wData = res.results;
let lineData = [];
res.results.forEach((item, index) => {
let arr = [],
obj1 = {},
obj2 = {},
obj3 = {};
obj1.elType = "primary";
obj1.value = item.name; //设备名称
obj2.elType = "primary";
obj2.value =
item.envdata && item.envdata.pm10
? item.envdata.pm10
: "-"; //PM10
obj3.elType = "primary";
obj3.value =
item.envdata && item.envdata.pm25
? item.envdata.pm25
: "-"; //PM2.5
arr.push(obj1);
arr.push(obj2);
arr.push(obj3);
lineData.push(arr);
});
this.lineData3 = lineData;
});
},
//今日车辆统计数据
getright2Data() {},
//环卫车作业情况
getright3Data() {},
configDark() {
this.config.dark = this.config.dark ? false : true;
},
backSystem() {
this.$router.push({ path: "/dashboard_enp" });
},
closeDialog() {
this.elDrawer = false;
this.activeIndex = 0;
},
drawerClick() {
this.elDrawer = true;
},
initDomStyle() {
let that = this;
// 获取窗口的总高度
var windowHeight = window.innerHeight;
var windowWidth = window.innerWidth;
// 获取目标元素
var dashboard = document.getElementsByClassName("dashboard")[0];
var left_other = document.getElementsByClassName("left_other")[0];
var right_other = document.getElementsByClassName("right_other")[0];
var model = document.getElementsByClassName("model")[0];
if (windowWidth > 960) {
dashboard.style.overflow = "hidden";
// 设置目标元素的高度
left_other.style.position = "absolute";
left_other.style.width = "20%";
right_other.style.position = "absolute";
// right_other.style.width = '20%';
// model.style.position = 'absolute';
// model.style.height = (windowHeight - 4) + 'px';
// model.style.top = 0;
var chartHeight1 = (100 - 18) * 0.35 + "vh";
var chartHeight2 = (100 - 18) * 0.29 + "vh";
let piechart = document.getElementById("pieChart");
piechart.style.height = (100 - 18) * 0.29 - 4 + "vh";
// var chartHeight3 = (100 - 17) * 0.28 + 'vh';
// var chartHeight4 = (100 - 17) * 0.715 + 'vh';
var charts = document.getElementsByClassName("panel");
for (var i = 0; i < charts.length; i++) {
var chart = charts[i];
switch (i) {
case 0:
chart.style.height = chartHeight1;
break;
case 1:
chart.style.height = chartHeight2;
break;
case 2:
chart.style.height = chartHeight1;
break;
case 3:
chart.style.height = chartHeight1;
break;
case 4:
chart.style.height = chartHeight2;
break;
case 5:
chart.style.height = chartHeight1;
break;
}
// chart.style.height = chartHeight;
}
} else {
dashboard.style.overflow = "auto";
var chartHeight = windowWidth * 0.6;
left_other.style.position = "static";
left_other.style.width = "100%";
right_other.style.position = "static";
right_other.style.width = "100%";
// model.style.position = 'relative';
// model.style.height = chartHeight;
var charts = document.getElementsByClassName("chart");
for (var i = 0; i < charts.length; i++) {
var chart = charts[i];
chart.style.height = chartHeight;
}
}
let containerHeight =
document.getElementsByClassName("panel1")[0].clientHeight;
debugger;
// console.log('containerHeight', containerHeight);
that.containerHeight = containerHeight;
if (this.engine != null) {
this.engine.resize();
}
},
// bindBtnClass(index) {
// let classInfo = { btns: true, btnsActive: false };
// if (index == this.activeBtns) {
// classInfo.btnsActive = true;
// }
// return classInfo;
// },
//切换设备类型
// equipmentTypeChange(index) {
// let that = this;
// that.activeBtns = index;
// // this.$refs.typeChange.setData(index);
// // this.$refs.cesiumDiv.typeChange(index);
// },
// 动态绑定Class
bindClass(index) {
let that = this;
let classInfo = {
menuWrap: true,
menuWrap1: false,
menuWrap2: false,
menuWrapActive: false,
};
if (index == that.activeIndex) {
classInfo.menuWrapActive = true;
}
if (index == 1 || index == 2) {
classInfo.menuWrap2 = true;
} else {
classInfo.menuWrap1 = true;
}
return classInfo;
},
menuClick(index) {
if (index == 0) {
this.activeIndex = index;
}
},
handleClick(command) {
this.activeIndex = 1;
this.elDrawer = true;
this.activeDrawerName = command;
},
handleClick2(command) {
this.activeIndex = 2;
this.elDrawer = true;
this.activeDrawerName = command;
},
handleClick3(command) {
this.activeIndex = 3;
this.elDrawer = true;
this.activeDrawerName = command;
},
handleClick4(command) {
this.activeIndex = 4;
this.elDrawer = true;
this.activeDrawerName = command;
},
handleClick5(command) {
this.activeIndex = 5;
this.elDrawer = true;
this.activeDrawerName = command;
},
compare(property) {
return function (a, b) {
return a[property] - b[property];
};
},
initCharts() {
let that = this;
// 初始化所有表
that.pieOption.series.data = that.pieData;
that.setChart("pieChart", that.pieOption);
},
addListener() {
var that = this;
window.addEventListener("resize", function () {
// 如果已经有 resizeTimeout清除它
if (this.resizeTimeout) {
clearTimeout(this.resizeTimeout);
}
// 设置一个新的 resizeTimeout延迟调整样式
this.resizeTimeout = setTimeout(function () {
that.initDomStyle();
}, 300); // 延迟 300 毫秒,可以根据需要调整
});
},
resizeChart(name) {
// 根据name resize chart
var myChart = echarts.getInstanceByDom(
document.getElementById(name)
);
if (myChart != undefined) {
// console.log(name + ' :resize')
myChart.resize();
}
},
setChart(name, option = null) {
// 根据name 渲染数据, option需填写否则option为模拟数据
var myChart = echarts.getInstanceByDom(
document.getElementById(name)
);
if (myChart == undefined) {
myChart = echarts.init(document.getElementById(name), "dark", {
renderer: "svg",
});
}
if (option == null) {
option = Object.assign({}, this.pieOption);
}
setTimeout(() => {
try {
myChart.setOption(option);
} catch (error) {}
}, 500);
},
},
unmounted() {
this.intervalinfo = null;
document.documentElement.classList.remove("dark");
this.$TOOL.data.remove("APP_DARK");
},
};
</script>
<style scoped>
.container {
width: 100%;
position: absolute;
height: 100vh;
top: 0vh;
z-index: 0;
padding-top: 8vh;
box-sizing: border-box;
background-image: url("/public/img/enp_blue/bg_enp.png");
background-size: cover;
}
.dashboard {
background-color: black;
font-family: Inter, "-apple-system", BlinkMacSystemFont, "PingFang SC",
"Hiragino Sans GB", "noto sans", "Microsoft YaHei", "Helvetica Neue",
Helvetica, Arial, sans-serif;
}
header {
z-index: 10;
display: flex;
position: relative;
align-items: center;
box-sizing: border-box;
padding: 0.7vh 0.4vw;
justify-content: space-between;
background-image: url("/public/img/enp_blue/bg_enp.png");
}
.headerImg {
width: 100%;
height: 6.6vh;
line-height: 6.5vh;
color: #ffffff;
font-size: 1.8vw;
text-align: center;
position: relative;
}
.sysName {
width: 100%;
text-align: center;
line-height: 6.3vh;
font-weight: bold;
color: #ffffff;
position: absolute;
top: 0;
left: 0;
}
.sysName {
color: #ffffff;
padding-left: 1vw;
font-size: 2.6vh;
}
.bottom_enp {
left: 0;
bottom: 0;
width: 100%;
height: 5vh;
position: absolute;
background-size: 100% 100%;
background-position: center;
background-image: url("/public/img/enp_blue/bottom_enp.png");
}
.menuWrap {
height: 4.6vh;
margin-right: 1vw;
}
.menuWrap1 {
width: 4.4vw;
background-image: url("/public/img/enp_blue/menu_bg1.png");
background-size: 100% 100%;
}
.menuWrap2 {
width: 7vw;
background-image: url("/public/img/enp_blue/menu_bg2.png");
background-size: 100% 100%;
}
.menuWrapActive.menuWrap1 {
background-image: url("/public/img/enp_blue/menu_bg1_active.png");
}
.menuWrapActive.menuWrap2 {
background-image: url("/public/img/enp_blue/menu_bg2_active.png");
}
.menuItem {
color: #ffffff;
line-height: 4.4vh;
font-size: 1.5vh;
text-align: center;
}
.dropdown {
color: #ffffff;
line-height: 4.5vh;
font-size: 1.4vh;
}
.wraning_icon {
width: 2vh;
height: 2.3vh;
margin-top: 0.9vh;
background-size: cover;
background-image: url("/public/img/enp_blue/warning_enp.png");
}
.user_icon {
width: 2.3vh;
height: 2.3vh;
margin-top: 0.9vh;
margin-left: 2vh;
background-size: cover;
background-image: url("/public/img/enp_blue/user_enp.png");
}
.model {
top: 8%;
left: 0;
width: 100%;
height: 100%;
background-image: url("/public/img/enp_blue/bg_enp.png");
background-size: cover;
}
#renderCanvas {
width: 100%;
height: 100%;
}
#loadingScreen {
position: absolute;
width: 100%;
top: 260px;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 30px;
}
.left_other,
.right_other {
position: absolute;
top: 8vh;
width: 20%;
padding: 10px;
}
.right_other {
right: 0;
}
.panel {
margin-top: 1.5vh;
background-size: 100% 100%;
}
.panel1 {
background-image: url("/public/img/enp_blue/left_bg2.png");
}
.panel2 {
background-image: url("/public/img/enp_blue/left_bg1.png");
}
/* .panel4 {
background-image: url('/public/img/enp_blue/right_bg1.png');
} */
/* .panel.panel_big {
background-image: url('/public/img/enp_blue/right_bg2.png');
} */
.blockTitle {
width: 100%;
height: 4vh;
position: relative;
}
.blockTitleText {
width: 100%;
height: 4vh;
line-height: 4vh;
position: absolute;
left: 0px;
top: 0px;
z-index: 10;
padding-left: 2.5vw;
color: #ffffff;
font-size: 1vw;
}
.blockTitleImg {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.eqItem {
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: nowrap;
overflow: hidden;
color: #ffffff;
}
.eqImg {
width: 4.8vh;
height: 5.5vh;
flex-shrink: 0;
padding-top: 1.5vh;
}
.eqImg_s {
padding-top: 0;
}
.eqText {
flex: 1;
height: 100%;
font-size: 1.4vh;
padding-left: 0.5vw;
margin: 0.5vh 0;
background: url("/public/img/enp_blue/eq_border2.svg") no-repeat;
background-size: 100% 100%;
background-size: contain;
}
.eqText_s {
height: 5.5vh;
margin-bottom: 1vh;
background: url("/public/img/enp_blue/eq_border.svg") no-repeat;
background-size: cover;
}
.eqName {
line-height: 4.5vh;
}
.eqText_s > .eqName {
padding-top: 0.5vh;
line-height: 2.5vh;
}
.eqNumWrap {
font-size: 1.2vh;
line-height: 3.5vh;
}
.eqNum {
font-size: 1.8vh;
}
.chart {
width: 50%;
height: 80%;
}
#pieChart {
flex: 1;
}
.todyCarItem {
color: white;
font-size: 16px;
display: flex;
flex-direction: column;
}
.pieDataItem {
width: 50%;
height: 49%;
position: relative;
display: inline-block;
margin-top: 10%;
padding-left: 0.5vw;
/* border-left: 1px solid #0070FF; */
}
.pieDataText {
height: 2vh;
line-height: 1.9vh;
font-size: 1.5vh;
color: #ffffff;
padding-left: 0.2vw;
}
.status {
height: 2.6vh;
display: flex;
padding: 0 1vh;
line-height: 2.6vh;
color: #ffffff;
justify-content: space-between;
}
/* table相关样式 */
.tableHear {
display: flex;
color: #ffffff;
margin-bottom: 0.5vh;
}
.tableBody {
padding: 0 1vh;
}
.badyItem {
height: 4.6vh;
line-height: 4.6vh;
margin-bottom: 1.4vh;
border-radius: 3px;
color: #ffffff;
font-size: 1.4vh;
display: flex;
border: 1px solid #0091ff;
}
.rowItem {
display: flex;
color: #ffffff;
padding: 0 1vh;
justify-content: space-between;
}
.rowindex {
flex: 1;
height: 4vh;
line-height: 4vh;
text-align: center;
margin-bottom: 1vh;
background-image: url("/public/img/enp_blue/index_bg.png");
background-size: cover;
}
.rowname {
flex: 5;
height: 4vh;
margin: 0 1vh;
padding: 0.5vh;
line-height: 3vh;
box-sizing: border-box;
background: rgba(255, 255, 255, 0.1);
}
.rownum {
flex: 2;
height: 4vh;
padding: 0.5vh;
line-height: 3vh;
box-sizing: border-box;
background: rgba(255, 255, 255, 0.1);
}
/* table */
/* 左右两边border暂时没展示 */
.left_border {
width: 1vh;
height: 70vh;
position: absolute;
left: 21%;
top: 15vh;
background-size: cover;
background-image: url("/public/img/enp_blue/left_border.png");
}
.right_border {
width: 1vh;
height: 70vh;
position: absolute;
right: 21%;
top: 15vh;
background-size: cover;
background-image: url("/public/img/enp_blue/right_border.png");
}
/* 左右两边border暂时没展示 */
</style>