新型管道消毒机前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

234 lines
4.8 KiB

<template>
<div class="seal_test_container">
<div class="title_wrap">
<img class="icon" :src="SealPng" alt="" />
<div class="title">实时压力表</div>
</div>
<div class="echarts_box" id="seal_echarts"></div>
<div class="oper_box">
<img class="air_img" :src="StopAir" alt="" />
<img class="air_img" :src="StartAir" alt="" />
</div>
</div>
</template>
<script setup>
import * as echarts from 'echarts'
import { ref, onMounted, onBeforeUnmount } from 'vue'
import SealPng from '@/assets/img/seal/seal.png'
import StartAir from '@/assets/img/seal/start.png'
import StopAir from '@/assets/img/seal/stop.png'
import DisStart from '@/assets/img/seal/dis_start.png'
import DisStop from '@/assets/img/seal/dis_stop.png'
import { useSealStore } from '@/store'
const sealStore = useSealStore()
const sealCharts = ref(null)
const sealOptions = ref({
series: [
{
type: 'gauge',
min: 0,
max: 800,
progress: {
show: true,
width: 18,
itemStyle: {
color: '#3442aa',
},
},
pointer: {
itemStyle: {
color: '#3442aa',
},
},
axisLine: {
lineStyle: {
width: 18,
},
},
axisTick: {
show: false,
},
splitLine: {
length: 15,
lineStyle: {
width: 2,
color: '#999',
},
},
axisLabel: {
distance: 25,
color: '#999',
fontSize: 20,
},
anchor: {
show: true,
showAbove: true,
size: 25,
itemStyle: {
borderWidth: 10,
borderColor: '#3442aa',
},
},
title: {
show: false,
},
detail: {
valueAnimation: true,
fontSize: 40,
color: '#3442aa',
formatter: '{value} KPa',
offsetCenter: [0, '70%'],
},
data: [
{
value: sealStore.currentAirPressure,
},
],
},
],
})
const timer = ref(null)
onBeforeUnmount(() => {
timer.value = null
})
onMounted(() => {
sealCharts.value = echarts.init(document.getElementById('seal_echarts'))
sealCharts.value.setOption(sealOptions.value)
timer.value = setInterval(() => {
sealCharts.value.setOption({
series: [
{
type: 'gauge',
min: 0,
max: 800,
progress: {
show: true,
width: 18,
itemStyle: {
color: '#3442aa',
},
},
pointer: {
itemStyle: {
color: '#3442aa',
},
},
axisLine: {
lineStyle: {
width: 18,
},
},
axisTick: {
show: false,
},
splitLine: {
length: 15,
lineStyle: {
width: 2,
color: '#999',
},
},
axisLabel: {
distance: 25,
color: '#999',
fontSize: 20,
},
anchor: {
show: true,
showAbove: true,
size: 25,
itemStyle: {
borderWidth: 10,
borderColor: '#3442aa',
},
},
title: {
show: false,
},
detail: {
valueAnimation: true,
fontSize: 40,
color: '#3442aa',
formatter: '{value} KPa',
offsetCenter: [0, '70%'],
},
data: [
{
value: sealStore.currentAirPressure,
},
],
},
],
})
}, 1000)
})
</script>
<style lang="scss" scoped>
.seal_test_container {
margin-bottom: 19px;
height: 580px;
box-sizing: border-box;
border-radius: 16px;
display: flex;
align-items: center;
margin-right: 30px;
width: 1220px;
height: 580px;
box-sizing: border-box;
border-radius: 16px;
background: #ffffff;
position: relative;
.title_wrap {
position: absolute;
left: 28px;
top: 28px;
width: 141px;
height: 31px;
box-sizing: border-box;
display: flex;
align-items: center;
.title {
font-family: 思源黑体;
font-size: 20px;
font-weight: bold;
line-height: normal;
letter-spacing: 0.02em;
font-feature-settings: 'kern' on;
color: #000000;
margin-left: 9px;
}
.icon {
width: 30px;
height: 30px;
}
}
.oper_box {
position: absolute;
left: 28px;
bottom: 28px;
width: 1164px;
box-sizing: border-box;
padding: 0 120px;
height: 110px;
display: flex;
align-items: center;
justify-content: space-between;
.air_img {
width: 341px;
height: 110px;
}
}
.echarts_box {
height: 580px;
position: absolute;
left: 0;
top: -36px;
width: 1220px;
}
}
</style>