factory_web/src/views/bigScreen/index_enp_blue.vue

1314 lines
38 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 class="login_config" style="z-index:1000;position: absolute;right: 1vw;bottom: 0;">
<el-button :icon="config.dark ? 'el-icon-sunny' : 'el-icon-moon'" circle type="info"
@click="configDark"></el-button>
</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">环保管理</div> -->
<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-item command="pollutecalendar">污染日历</el-dropdown-item> -->
<!-- <el-dropdown-item command="">决策分析</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="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="">
<!-- <div id="loadingScreen">
<el-progress type="circle" :percentage="loadedPercent" :width=220 status="warning">
<template #default="{ percentage }">
<div style="font-size: 30px; color: white; font-weight: bold">{{ percentage }}%</div>
<div style="font-size: 18px; color: white; margin-top: 10px">工厂模型加载中</div>
</template>
</el-progress>
</div> -->
<Cesium />
<!-- <canvas id="renderCanvas"></canvas> -->
</div>
<!-- 左侧列表数据 -->
<div v-show="activeIndex == 0" class="left_other animate__animated animate__backInLeft">
<!-- 无组织污染源一览 -->
<div class="panel panel1">
<div class="blockTitle">
<div class="blockTitleText">无组织污染源一览</div>
<img class="blockTitleImg" src="img/enp_blue/block_title.png">
</div>
<div style="display: flex;">
<div style="padding:0.5vw">
<div class="chart" id="chart1" style="width:7vw;height:7vw;"></div>
</div>
<div style="width: 60%;">
<div class="pieDataItem">
<div class="pieDataText">总计</div>
<div class="pieDataNumber">{{ wryData.count }}</div>
</div>
<div class="pieDataItem">
<div class="pieDataText">生产工艺</div>
<div class="pieDataNumber">{{ wryData.count_mtrans }}</div>
</div>
<div class="pieDataItem">
<div class="pieDataText">物料储存</div>
<div class="pieDataNumber">{{ wryData.count_mstore }}</div>
</div>
<div class="pieDataItem">
<div class="pieDataText">物料输送</div>
<div class="pieDataNumber">{{ wryData.count_product }}</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;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 class="eqItem">
<img class="eqImg eqImg_s" src="img/enp_blue/hjzljc.svg">
<div class="eqText eqText_s">
<div class="eqName">环境质量检测</div>
<div class="eqNumWrap"><span class="eqNum">9</span>台</div>
</div>
</div> -->
</div>
</div>
</div>
<!-- 主要排放口实时监测清单 -->
<div class="panel panel3">
<div class="blockTitle">
<div class="blockTitleText">主要排放口实时监测清单</div>
<img class="blockTitleImg" src="img/enp_blue/block_title.png">
</div>
<div>
<div class="title_s">{{ cemsData.equipment_name }}</div>
<div class="status"><span style="color:#32D74B">数据正常</span><span>2024-01-26 14:32:06</span></div>
<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">折算</div>
</div>
<div class="rowItem">
<div class="rowindex">1</div>
<div class="rowname">颗粒物(mg/m³)</div>
<div class="rownum">1</div>
</div>
<div class="rowItem">
<div class="rowindex">2</div>
<div class="rowname">SO₂(mg/m³)</div>
<div class="rownum">2</div>
</div>
<div class="rowItem">
<div class="rowindex">3</div>
<div class="rowname">NOx(mg/m³)</div>
<div class="rownum">3</div>
</div>
</div>
</div>
</div>
<!-- 右侧数据 -->
<div v-show="activeIndex == 0" class="right_other animate__animated animate__backInRight">
<!-- 统计 -->
<div class="panel panel4" style="box-sizing:border-box;padding:0 1vh">
<div class="right_one">
<div class="leftNumbers">
<div class="numberItem">
<div class="numberItemName">含氧量</div>
<div><span class="numberItemNum">1.56</span><span class="numberItemUnit">%</span></div>
</div>
<div class="numberItem">
<div class="numberItemName">温度</div>
<div><span class="numberItemNum">73.5</span><span class="numberItemUnit">℃</span></div>
</div>
<div class="numberItem">
<div class="numberItemName">流速</div>
<div><span class="numberItemNum">4.185</span><span class="numberItemUnit">m/s</span></div>
</div>
</div>
<div class="rightNumbers">
<div class="numberItem">
<div class="numberItemName">压力</div>
<div><span class="numberItemNum">721.215 </span><span class="numberItemUnit">KPa</span></div>
</div>
<div class="numberItem">
<div class="numberItemName">湿度</div>
<div><span class="numberItemNum">3.615 </span><span class="numberItemUnit">%RH</span> </div>
</div>
<div class="numberItem">
<div class="numberItemName">流量</div>
<div>-</div>
</div>
</div>
<div class="ballImg">
<span class="right_one_status">正常</span>
</div>
</div>
</div>
<!-- 环境质量实时监测清单 -->
<div class="panel panel_big panel5">
<div class="blockTitle">
<div class="blockTitleText">环境质量实时监测清单</div>
<img class="blockTitleImg" src="img/enp_blue/block_title.png">
</div>
<div>
<div class="tableHear"
style="margin:1vh 0;height:2.6vh;line-height:2.6vh;display:flex;padding:1vh;font-size:1.3vh">
<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">{{ item.pm10 }}</span>
<span style="flex:1">{{ item.pm25 }}</span>
</div>
</div>
</div>
</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(0)">生产设备</div>
<div class="btns" :class="bindBtnClass(1)">治理设备</div>
<div class="btns" :class="bindBtnClass(2)">监测设备</div>
<div class="btns" :class="bindBtnClass(3)">监控设备</div>
<!-- <div class="btns" :class="bindBtnClass(4)">环境监测</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 * as BABYLON from "babylonjs"
import * as BABYLON_GUI from "babylonjs-gui"
import * as BABYLON_GRID from "@/utils/gridMaterial"
import * as BABYLON_MATERIAL from "@/utils/babylonMaterial"
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 'babylonjs-loaders';
import 'animate.css';
export default {
components: {
Cesium,
orgDialog,
cemsDrawer,
cems2Drawer,
cemsExport,
pollutant,
innerclean,
transport,
envirqualmonitor,
envirmonitor,
pollutecalendar,
eqments,
alarmrecord,
pollutant2,
smartg,
videowall
},
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: 0,
activeDrawerName: '',
activeIndex: 0,
activeSection: 2,
activeSectionName: '回转窑',
updateTime: '2023-08-17 16:00:00',
pieOption: {
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%',
right: '4%',
bottom: '3%',
containLabel: true
},
series: {
name: '无组织污染源',
type: 'pie',
radius: [35, 40],
center: ['50%', '50%'],
emphasis: {
focus: 'series',
label: {
show: true,
fontSize: 10,
fontWeight: 'bold'
}
},
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: [],
},
},
pieData: [
{ value: 0, name: '物料输送' },
{ value: 0, name: '生产工艺过程' },
{ value: 0, name: '物料储存' },
],
wryData: {
count: 0,
count_product: 0,
count_mtrans: 0,
count_mstore: 0
},
eqNumData: {
sc: 0,
jc: 0,
zl: 0,
jk: 0
},
cemsData: [],
monitorData: [
{ value: 1.167, name: '颗粒物(mg/m³)' },
{ value: 5.714, name: 'SO₂(mg/m³)' },
{ value: 12.546, name: 'NOx(mg/m³)' },
],
arguData: [
{ value: 21.215, name: '含氧量' },
{ value: 78.318, name: '温度' },
{ value: 4.183, name: '流速' },
{ value: 21.215, name: '压力' },
{ value: 3.612, name: '湿度' },
{ value: 2, name: '流量' },
],
mgroupValues: {
电石渣: { total: '0', elec: '0' },
原料磨: { total: '0', elec: '0' },
煤磨: { total: '0', elec: '0' },
回转窑: { total: '0', elec: '0' },
水泥磨: { total: '0', elec: '0' },
水泥包装: { total: '0', elec: '0' }
},
wData: [
{ name: '磅房', pm10: '2.9', pm25: '14.2' },
{ name: '北厂界', pm10: '-', pm25: '68.1' },
{ name: '东厂界', pm10: '-', pm25: '41.322' },
],
}
},
created() {
document.documentElement.classList.add("dark")
this.$TOOL.data.set("APP_DARK", true)
},
mounted() {
let that = this;
that.getleft1Data();
that.getleft2Data();
that.getleft3Data();
this.getright1Data();
this.getright2Data();
that.initCharts();
that.addListener();
that.initDomStyle();
that.$nextTick(() => {
setTimeout(function () {
// that.initFactory();
}, 1000);
});
},
beforeUnmount() {
// 性能优化
const canvas = document.getElementById('renderCanvas');
if (canvas) {
canvas.parentNode.removeChild(canvas);
}
},
methods: {
//无组织污染源一览数据
getleft1Data() {
let that = this;
that.$API.enp.drain.countcate.req({ type: 20 }).then((res) => {
console.log(res)
that.wryData = res;
that.pieData[0].value = res.count_product;
that.pieData[1].value = res.count_mtrans;
that.pieData[2].value = res.count_mstore;
})
},
//接入设备数量
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: 20, 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: 40, query: {} }).then((res4) => {
console.log(res4)
this.eqNumData.jk = res4.count;
})
},
//有组织排放口实时监测清单数据( CEMS
getleft3Data() {
let that = this;
that.$API.enp.drain_equip.list.req({ drain__type: 10, equipment__type: 20, has_envdata: 'yes' }).then(res => {
that.cemsDataList = res.results;
that.cemsData = res.results[0];
})
},
//无组织排放口实时监测数据TSP
getright1Data() {
let that = this;
that.$API.enp.drain_equip.list.req({ drain__type: 20, equipment__type: 20, has_envdata: 'yes' }).then(res => {
// that.cemsDataList = res.results;
// that.cemsData = res.results[0];
})
},
//环境质量实时监测清单---(小微站)
getright2Data() {
let that = this;
that.$API.em.equipment.list.req({ type: 20, cate__code: 'aqms', has_envdata: 'yes' }).then(res => {
that.wData = res.results;
console.log('wData', this.wData)
})
},
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() {
// 获取窗口的总高度
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.31 + 'vh';
var chartHeight2 = (100 - 18) * 0.37 + '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 = chartHeight1;
break;
case 2:
chart.style.height = chartHeight2;
break;
case 3:
chart.style.height = chartHeight3;
break;
case 4:
chart.style.height = chartHeight4;
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;
}
}
if (this.engine != null) {
this.engine.resize();
}
},
bindBtnClass(index) {
let classInfo = { btns: true, btnsActive: false };
if (index == this.activeBtns) {
classInfo.btnsActive = true;
}
return classInfo;
},
// 动态绑定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;
},
getMessage(msg) {
console.log(msg);
},
compare(property) {
return function (a, b) {
return a[property] - b[property];
}
},
initCharts() {
let that = this;
// 初始化所有表格
that.pieOption.series.data = that.pieData;
that.setChart('chart1', 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() {
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;
color: #ffffff;
position: absolute;
top: 0;
left: 0;
}
.sysName {
color: #ffffff;
padding-left: 1vw;
font-size: 2vh;
}
.btns_enp {
bottom: 7vh;
left: 28.7vw;
width: 42.6vw;
height: 4.3vh;
position: absolute;
display: flex;
justify-content: space-between;
}
.btns {
width: 8vw;
height: 5vh;
font-size: 2vh;
line-height: 4.9vh;
background-image: url('/public/img/enp_blue/btn.png');
background-size: 100% 100%;
text-align: center;
color: #ffffff;
}
.btns.btnsActive {
background-image: url('/public/img/enp_blue/btn_active.png');
}
.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,
.panel2 {
background-image: url('/public/img/enp_blue/left_bg1.png');
}
.panel3 {
background-image: url('/public/img/enp_blue/left_bg2.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%;
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: 9vh;
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: 100%;
height: 220px;
}
#chart1 {
/* background-image: url('/public/img/enp_blue/huan_bg.png');
background-size: 75%;
background-repeat: no-repeat;
background-position: center; */
}
.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;
}
.pieDataItem:nth-of-type(1) {
.pieDataText {
border-left: 0.5vh solid #0091ff;
}
.pieDataNumber {
border-left: 0.1vh solid #0091ff;
}
}
.pieDataItem:nth-of-type(2) {
.pieDataText {
border-left: 0.5vh solid #0Ed877;
}
.pieDataNumber {
border-left: 0.1vh solid #0Ed877;
}
}
.pieDataItem:nth-of-type(3) {
.pieDataText {
border-left: 0.5vh solid #ffbf60;
}
.pieDataNumber {
border-left: 0.1vh solid #ffbf60;
}
}
.pieDataItem:nth-of-type(4) {
.pieDataText {
border-left: 0.5vh solid #67dbff;
}
.pieDataNumber {
border-left: 0.1vh solid #67dbff;
}
}
.pieDataNumber {
height: 3vh;
line-height: 2.9vh;
font-size: 2vh;
color: #ffffff;
padding-left: 0.2vw;
border-left: 0.1vh solid #0070FF;
}
.beforeLine {
width: 2px;
height: 30%;
position: absolute;
background: #0070FF;
}
.title_s {
height: 3.7vh;
line-height: 3.7vh;
color: #ffffff;
margin-top: 1vh;
font-size: 1.4vh;
text-align: center;
background-image: url('/public/img/enp_blue/little_title.png');
}
.status {
height: 2.6vh;
display: flex;
padding: 0 1vh;
line-height: 2.6vh;
color: #ffffff;
justify-content: space-between;
}
.tableHear {
display: flex;
color: #ffffff;
margin-bottom: 0.5vh;
}
.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, .1);
}
.rownum {
flex: 4;
height: 4vh;
padding: 0.5vh;
line-height: 3vh;
box-sizing: border-box;
background: rgba(255, 255, 255, .1);
}
.right_one {
height: 100%;
display: flex;
color: #ffffff;
position: relative;
justify-content: space-between;
background: url('/public/img/enp_blue/right_one.svg') no-repeat;
background-size: 100% 100%;
}
.leftNumbers {
padding: 2.5vh 1vh;
}
.rightNumbers {
padding: 2.5vh 1vh;
text-align: right;
}
.numberItem {
height: 33.3%;
line-height: 1.6vh;
}
.numberItemName {
font-size: 1.4vh;
line-height: 4vh;
}
.numberItemNum {
font-size: 1.6vh;
}
.numberItemUnit {
font-size: 1.2vh;
}
.ballImg {
position: absolute;
width: 5vw;
height: 5vw;
background-image: url('/public/img/enp_blue/ball.png');
background-size: cover;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.right_one_status {
top: 50%;
left: 50%;
width: 100%;
z-index: 10;
color: #ffffff;
font-size: 2vh;
text-align: center;
position: absolute;
transform: translate(-50%, -50%);
}
/* right2 */
.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;
}
/* right2 */
/* 表格 */
.drawer_container {
background-image: url('/public/img/enp_blue/tableBg.png');
}
/* 表格 */
.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');
}
.pageClass {
width: 100%;
height: 89vh;
position: absolute;
bottom: 0;
left: 0;
}
</style>