消毒机设备
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.
 
 
 
 
 

106 lines
2.9 KiB

<script lang="ts" setup>
import liquidLevelSvg from 'assets/images/liquid/liquid-container.svg'
import ScaleRuler from 'components/liquid/ScaleRuler.vue'
// import liquidScaleSvg from 'assets/images/liquid/liquid-scale.svg'
import { roundNumber } from 'libs/utils'
import { computed, onMounted, ref, watchEffect } from 'vue'
import { useLiquidStore } from '@/stores/liquidStore'
const elementHeight = ref(200)
const liquidContainelRef = ref<HTMLElement | null>(null)
const rulerHeight = ref(0)
onMounted(() => {
const element = document.querySelector('.liquid-level-img')
if (element) {
elementHeight.value = element.clientHeight
console.log('元素高度:', elementHeight.value)
}
if (liquidContainelRef.value) {
rulerHeight.value = liquidContainelRef.value.offsetHeight
}
})
const liquidStore = useLiquidStore()
const liquidStateData = ref(liquidStore.liquidStateData)
const liquidTotal = ref(liquidStore.liquidTotal)
watchEffect(() => {
liquidTotal.value = liquidStore.liquidTotal
liquidStateData.value = liquidStore.liquidStateData
})
const nowLiquid = computed(() => {
return roundNumber(liquidStateData.value.nowLiquid, 0)
})
// 计算液位高度(根据比例计算,假设图片高度固定为200px,可根据实际调整)
const liquidHeight = computed(() => {
return ((Number(nowLiquid.value) / Number(liquidTotal.value)) * 100).toFixed(2)
})
</script>
<template>
<div class="liquid-level-main">
<ScaleRuler :key="rulerHeight" :max-scale="liquidTotal" :ruler-height="rulerHeight" />
<div ref="liquidContainelRef" class="liquid-level-container">
<img :src="liquidLevelSvg" alt="液位图" class="liquid-level-img-r">
<!-- <div class="liquid-level-middle" :style="{ height: `${liquidHeight}px` }" /> -->
<div class="liquid-level" :style="{ height: `${liquidHeight}%` }" />
<div class="current-level">
<span>当前液位</span>
<span class="text">{{ nowLiquid }}</span>
<span class="text">g</span>
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.liquid-level-main {
display: flex;
gap: 5px;
}
.liquid-level-container{
position: relative;
height: 60vh;; /* 根据实际调整 */
}
.liquid-level-img-l {
height: 62.5vh;
margin-top: -1.5vh;
}
.liquid-level-img-r {
height: 60vh;
}
.liquid-level {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background: linear-gradient(to top, #0099ff, #7fc8fa); /* 颜色渐变,可按需调整 */
min-height: .8rem;
border-radius: 0 0 20px 20px;
}
.liquid-level-middle{
background: linear-gradient(352deg, #0093f5, #effafe);
bottom: 0;
left: 0;
position: absolute;
width: 50%;
z-index: 1;
margin-left: 23%
}
.current-level {
position: absolute;
top: 2rem;
left: 50%;
transform: translateX(-50%);
font-size: 1.3rem;
font-weight: bold;
.text{
color: #007bff;
padding: 3px;
}
}
</style>