factory_web/src/views/bigScreen/enpComponents/pollutant.vue

363 lines
17 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>
<el-container v-if="!pollutantDetail">
<el-main class="nopadding">
<el-container>
<el-header>
<div class="left-panel">污染源清单</div>
</el-header>
<el-main class="nopadding">
<el-container>
<el-header>
<div class="searchWrap">
<el-select v-model="query.cate" placeholder="污染源分类" @change="handleQuery" clearable>
<el-option v-for="item in cateOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :data="tableData" style="width: 100%;" size="large" :apiObj="apiObj"
row-key="id" :params="params" :query="query" hidePagination @row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column prop="number" label="污染源编号" width="180" />
<el-table-column prop="name" label="污染源名称" />
<el-table-column prop="name" label="污染源类型" />
<el-table-column prop="mgroup_name" label="所属工段" />
</scTable>
</el-main>
</el-container>
</el-main>
</el-container>
</el-main>
</el-container>
<el-container v-else>
<el-header>
<div class="panel_title">污染源及关联设备信息
<span class="backBtn" @click="handleClick"> 返回 </span>
</div>
</el-header>
<el-main>
<el-container>
<el-aside style="width: 35%">
<div class="aside_one">
<div class="pageTitle">污染源及关联设备静态信息</div>
<div class="linesWrap">
<div class="typeLine">
<div class="greenBlock">
<div class="greenBlockInner"></div>
</div>
<span>生产设备</span>
</div>
<div class="infoLine">
<span class="circles"></span>
<span>{{ eqs.name }}</span>
</div>
<el-row class="infoLine">
<el-col :span="12">
<div><span class="infotitle">设备类型:</span>主要生产设备</div>
</el-col>
<el-col :span="12">
<div>
<span class="infotitle">电机功率:</span>
<span v-if="eqs.power_kw">{{ eqs.power_kw }}kw</span>
</div>
</el-col>
<el-col :span="12">
<div>
<span class="infotitle">生产能力:</span>
<span v-if="eqs.parameter_json && eqs.parameter_json.生产能力">{{
eqs.parameter_json.生产能力
}}</span>
</div>
</el-col>
</el-row>
<div class="typeLine">
<div class="greenBlock">
<div class="greenBlockInner"></div>
</div>
<span>治理设备</span>
</div>
<div class="infoLine">
<span class="circles"></span>
<span>{{ eqz.name }}</span>
</div>
<el-row class="infoLine">
<el-col :span="12">
<div><span class="infotitle">风量:</span>
<span v-if="eqz.parameter_json && eqz.parameter_json.风量">{{ eqz.parameter_json.风量
}}m³/h</span>
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">过滤面积:</span>
<span v-if="eqz.parameter_json && eqz.parameter_json.过滤面积">{{
eqz.parameter_json.过滤面积
}} m²</span>
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">布袋材质:</span>
<span v-if="eqz.parameter_json && eqz.parameter_json.布袋材质">{{
eqz.parameter_json.布袋材质
}} </span>
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">过滤风速:</span>
<span v-if="eqz.parameter_json && eqz.parameter_json.过滤风速">{{
eqz.parameter_json.过滤风速
}} </span>m/min
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">额定功率:</span>
<span v-if="eqz.parameter_json && eqz.parameter_json.额定功率">{{
eqz.parameter_json.额定功率
}} </span> Kw
</div>
</el-col>
</el-row>
<div class="typeLine">
<div class="greenBlock">
<div class="greenBlockInner"></div>
</div>
<span>污染源</span>
</div>
<div class="infoLine">
<span class="circles"></span>
<span>{{ detailItem.name }}</span>
</div>
<el-row class="infoLine">
<el-col :span="12">
<div><span class="infotitle">排气筒高度:</span>{{ detailItem.height }} m</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">废气处理量:</span> {{ detailItem.treatment_capacity }} m³/h
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">PM超低排放限值 </span> {{ detailItem.pm_limit }} mg/Nm³</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">排污许可状况: </span>已许可</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">治理措施: </span>{{ detailItem.measure }}</div>
</el-col>
</el-row>
<div class="typeLine">
<div class="greenBlock">
<div class="greenBlockInner"></div>
</div>
<span>监测设备</span>
</div>
<div class="infoLine">
<span class="circles"></span>
<span>{{ eqc.name }}</span>
</div>
<el-row class="infoLine">
<el-col :span="24">
<div>
<span class="infotitle">颗粒物:(实测值)</span>0.218 mg/m³
<span class="infotitle">(折算值)</span>0.218 mg/m³
</div>
</el-col>
<el-col :span="24">
<div>
<span class="infotitle">SO2实测值</span>0.218 mg/m³
<span class="infotitle">(折算值)</span>0.218 mg/m³
</div>
</el-col>
<el-col :span="24">
<div>
<span class="infotitle">NOX实测值</span>0.218 mg/m³
<span class="infotitle">(折算值)</span>0.218 mg/m³
</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">流量:</span> 0.000 m³/h</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">温度:</span> 0.000 ℃</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">湿度:</span> 0.000 %</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">压力:</span> 0.000 MPa</div>
</el-col>
<el-col :span="12">
<div><span class="infotitle">含氧量</span> 0.000 %</div>
</el-col>
</el-row>
</div>
</div>
</el-aside>
<el-main>
<div class="aside_side">
<div class="pageTitle">污染源及关联设备动态信息</div>
<div id="dataChart" style="width: 100%; height:200px;margin-top:1vh"></div>
<div id="dataChart2" style="width: 100%; height:200px;margin-top:1vh"></div>
<div id="dataChart3" style="width: 100%; height:200px;margin-top:1vh"></div>
<div id="dataChart4" style="width: 100%; height:200px;margin-top:1vh"></div>
</div>
</el-main>
</el-container>
</el-main>
</el-container>
</template>
<script>
import * as echarts from "echarts";
export default {
data() {
return {
eqs: {},
eqc: {},
eqz: {},
pollutantDetail: false,
query: {},
cateOptions: [{ id: 'mtrans', name: '生产工艺' }, { id: 'product', name: '物料输送' }, { id: 'mstore', name: '物料储存' }],
apiObj: this.$API.enp.drain.list,
params: { type: 20 },
detailItem: {},
detailForm: {
day: 18,
year: 2024,
month: 1
},
biquery: {
end_time: '2024-02-01',
start_time: '2024-01-29',
time_bucket: "1 minute",
equipment_id: "3491356310052896768",
},
basicOption: {
title: {
text: '设备名称',
left: 'center',
top: 'top',
textStyle: {
color: '#fff'
}
},
legend: {
},
tooltip: {
trigger: 'axis'
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 20
},
{
start: 0,
end: 20
}
],
dataset: {
source: []
},
xAxis: { type: 'category' },
yAxis: {},
series: [{ type: 'line' }]
},
}
},
methods: {
initTimeNow() {
var now = new Date();
let year = now.getFullYear(); // 年份
let month = now.getMonth() + 1; // 月份
let day = now.getDate(); // 日期
this.detailForm.year = year;
this.detailForm.month = month;
this.detailForm.day = day;
},
handleQuery() {
this.$refs.table.queryData(this.query);
},
rowClick(row) {
this.pollutantDetail = true;
this.detailItem = row;
this.$nextTick(() => {
this.getEquipments(row.equipments);
this.getDetailData();
})
},
getEquipments(ids) {
let that = this;
console.log(ids);
ids.forEach(id => {
that.$API.em.equipment.item.req(id).then(res => {
if (res.type == 10) {
that.eqs = res;
that.getDetailData(1, id);
} else if (res.type == 20) {
that.eqc = res;
that.getDetailData(2, id);
} else if (res.type == 30) {
that.eqz = res;
that.getDetailData(3, id);
}
})
});
},
getDetailData(type, id) {
var that = this;
if (type == 1) {
var chartDom = document.getElementById('dataChart');
var myChart = echarts.init(chartDom);
} else if (type == 2) {
var chartDom2 = document.getElementById('dataChart2');
var myChart2 = echarts.init(chartDom2);
} else if (type == 3) {
var chartDom3 = document.getElementById('dataChart3');
var myChart3 = echarts.init(chartDom3);
} else {
var chartDom4 = document.getElementById('dataChart4');
var myChart4 = echarts.init(chartDom4);
}
let obj = that.biquery;
obj.equipment_id = id;
let params = { query: obj };
that.$API.bi.dataset.exec.req('eq_status', params).then(res => {
let newOption = Object.assign({}, this.basicOption);
newOption.dataset.source = res.data.ds0;
newOption.dataZoom.startValue = that.biquery.start_time;
if (type == 1) {
newOption.title.text = that.eqs.name;
myChart.setOption(newOption);
} else if (type == 2) {
newOption.title.text = that.eqc.name;
myChart2.setOption(newOption);
echarts.connect([myChart, myChart2])
} else if (type == 3) {
newOption.title.text = that.eqz.name;
myChart3.setOption(newOption);
echarts.connect([myChart2, myChart3])
} else {
newOption.title.text = that.eqc.name;
myChart4.setOption(newOption);
echarts.connect([myChart3, myChart4])
}
}).then(() => { myChart.hideLoading() })
myChart.hideLoading()
},
handleClick() {
this.pollutantDetail = false;
this.detailItem = {};
},
}
}
</script>