433 lines
12 KiB
Vue
433 lines
12 KiB
Vue
<!--实时检查数据-->
|
||
<template>
|
||
<div class="check-data">
|
||
<secondary-title :title="title" longBg>
|
||
<template>
|
||
<div class="right-tip">
|
||
注释:表头为“污染物名称[污染物标准值]”
|
||
</div>
|
||
</template>
|
||
</secondary-title>
|
||
<div class="check-data-info">
|
||
<div class="table-info">
|
||
<div class="table-header">
|
||
<div class="table-header-item" v-for="(item,index) of tableHeaderData"
|
||
:style="`width:${tableItemWidthList[index]}%`">
|
||
{{ item }}
|
||
</div>
|
||
</div>
|
||
<div class="table-body">
|
||
|
||
<vue-seamless-scroll
|
||
v-if="dataSource.length"
|
||
ref="vueSeamless"
|
||
:data="dataSource"
|
||
class="seamless-scroll"
|
||
:class-option="defaultOption"
|
||
>
|
||
<div class="table-item-body" v-for="item of dataSource">
|
||
<div class="point-name" :style="`width:${tableItemWidthList[0]}%`" :title="item.pointName">{{
|
||
item.pointName
|
||
}}
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[1]}%`">
|
||
<div class="_value">
|
||
{{ `${item.COValue}${item.COUnit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.COValue,'COStandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[2]}%`">
|
||
<div class="_value">
|
||
{{ `${item.SO2Value}${item.SO2Unit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.SO2Value,'SO2StandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[3]}%`">
|
||
<div class="_value">
|
||
{{ `${item.NOValue}${item.NOUnit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.NOValue,'NOStandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[4]}%`">
|
||
<div class="_value">
|
||
{{ `${item.O3Value}${item.O3Unit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.O3Value,'O3StandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[5]}%`">
|
||
<div class="_value">
|
||
{{ `${item.PM10Value}${item.PM10Unit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.PM10Value,'PM10StandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="data-value" :style="`width:${tableItemWidthList[6]}%`">
|
||
<div class="_value">
|
||
{{ `${item.PM25Value}${item.PM25Unit}` }}
|
||
</div>
|
||
<div :class="getOddsRatioIcon(item.PM25Value,'PM25StandardValue')">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</vue-seamless-scroll>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import vueSeamlessScroll from 'vue-seamless-scroll'
|
||
|
||
export default {
|
||
name: "CheckData",
|
||
components: {vueSeamlessScroll},
|
||
data() {
|
||
return {
|
||
title: '实时检查数据',
|
||
tableItemWidthList: [12, 16, 16, 16, 13, 14, 13],
|
||
standardValue: {
|
||
COStandardValue: 0.5,
|
||
SO2StandardValue: 30,
|
||
NOStandardValue: 10,
|
||
O3StandardValue: 80,
|
||
PM10StandardValue: 50,
|
||
PM25StandardValue: 40
|
||
},
|
||
tableHeaderData: ['监测设备', '一氧化碳[0.5%VOL]', '二氧化硫[30mg/m³]', '氮氧化物[10mg/L]', '臭氧[80⏜ppm]', 'PM10[50μg/m³]', 'PM2.5[40μg/m³]'],
|
||
dataSource: [
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
},
|
||
{
|
||
pointName: '监测设备名称',
|
||
COValue: 2,
|
||
COUnit: '%VOL',
|
||
SO2Value: 30,
|
||
SO2Unit: 'mg/m³',
|
||
NOValue: 20,
|
||
NOUnit: 'mg/L',
|
||
O3Value: 10,
|
||
O3Unit: 'ppm',
|
||
PM10Value: 10,
|
||
PM10Unit: 'μg/m³',
|
||
PM25Value: 30,
|
||
PM25Unit: 'μg/m³'
|
||
}
|
||
]
|
||
}
|
||
},
|
||
computed: {
|
||
defaultOption() {
|
||
return {
|
||
step: 0.3, // 数值越大速度滚动越快
|
||
limitMoveNum: 9, // 开始无缝滚动的数据量 this.dataList.length
|
||
hoverStop: true, // 是否开启鼠标悬停stop
|
||
direction: 1, // 0向下 1向上 2向左 3向右
|
||
openWatch: true, // 开启数据实时监控刷新dom
|
||
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
||
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
||
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
|
||
}
|
||
},
|
||
},
|
||
methods: {
|
||
//判断数值是上升还是下降
|
||
getOddsRatioIcon(val, valType) {
|
||
if (val > this.standardValue[valType]) {
|
||
return 'odds-ratio-up-icon'
|
||
} else if (val < this.standardValue[valType]) {
|
||
return 'odds-ratio-reduction-icon'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="less">
|
||
@import "assets/styles/mixin";
|
||
|
||
.check-data {
|
||
margin-top: 43px;
|
||
height: 1100px;
|
||
width: 100%;
|
||
background-image: linear-gradient(62deg, rgba(8, 31, 55, 0.10) 0%, rgba(18, 50, 81, 0.10) 100%);
|
||
/* border: 1px inset transparent; !* 先将边框颜色设置为透明 *!
|
||
border-image: linear-gradient(rgba(79, 182, 238, 0), rgba(39, 127, 216, 1)); !* 使用线性渐变作为边框图片 *!
|
||
border-image-slice: 1; !* 指定切分边框图像的位置 *!*/
|
||
.flex-column;
|
||
overflow: hidden;
|
||
|
||
.right-tip {
|
||
height: 100%;
|
||
font-family: MicrosoftYaHei;
|
||
font-size: 29.97px;
|
||
color: #6AC4FF;
|
||
letter-spacing: 1.97px;
|
||
text-align: right;
|
||
font-weight: 400;
|
||
padding-right: 10px;
|
||
.flex-row;
|
||
}
|
||
|
||
.check-data-info {
|
||
flex: 1;
|
||
padding: 30px 20px 0 20px;
|
||
height: 0;
|
||
|
||
.table-info {
|
||
width: 100%;
|
||
height: 100%;
|
||
.flex-column;
|
||
|
||
.table-header {
|
||
height: 77px;
|
||
background-color: rgba(35, 140, 255, 0.2);
|
||
padding: 0 20px;
|
||
.flex-row;
|
||
|
||
.table-header-item {
|
||
font-family: MicrosoftYaHei-Bold;
|
||
font-size: 29.97px;
|
||
color: #37EAFF;
|
||
letter-spacing: 0;
|
||
text-align: left;
|
||
line-height: 34.25px;
|
||
font-weight: 700;
|
||
}
|
||
}
|
||
|
||
.table-body {
|
||
height: calc(100% - 77px);
|
||
|
||
.seamless-scroll {
|
||
height: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.table-item-body {
|
||
height: 77px;
|
||
background: rgba(21, 77, 160, 0.20);
|
||
margin-top: 20px;
|
||
.flex-row;
|
||
|
||
.point-name {
|
||
font-family: MicrosoftYaHei-Bold;
|
||
font-size: 29.97px;
|
||
color: #FFFFFF;
|
||
letter-spacing: 0;
|
||
line-height: 34.25px;
|
||
font-weight: 700;
|
||
text-align: left;
|
||
.text-ellipsis;
|
||
}
|
||
|
||
.data-value {
|
||
.flex-row;
|
||
justify-content: center;
|
||
|
||
._value {
|
||
font-family: MicrosoftYaHei-Bold;
|
||
font-size: 29.97px;
|
||
color: #FFFFFF;
|
||
letter-spacing: 0;
|
||
text-align: center;
|
||
font-weight: 700;
|
||
}
|
||
|
||
.odds-ratio-up-icon {
|
||
width: 23px;
|
||
height: 25px;
|
||
background: url("assets/peakCoalImages/left/odds-ratio-up-icon.png") no-repeat;
|
||
padding-left: 20px;
|
||
}
|
||
|
||
.odds-ratio-reduction-icon {
|
||
width: 22px;
|
||
height: 26px;
|
||
background: url("assets/peakCoalImages/left/odds-ratio-reduction-icon.png") no-repeat;
|
||
padding-left: 20px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
::-webkit-scrollbar {
|
||
width: 4px;
|
||
height: 4px;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb {
|
||
border-radius: 5px;
|
||
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
||
background-color: rgba(21, 77, 160, 0.20);;
|
||
}
|
||
|
||
::-webkit-scrollbar-track {
|
||
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
||
border-radius: 5px;
|
||
background-color: #d3dce6;
|
||
}
|
||
</style>
|