You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1278 lines
24 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="content">
<div class="title">轮胎工厂控制中心</div>
<div class="card card1"></div>
<div class="text text1">质量情况</div>
<div class="icon icon1"></div>
<div class="text text2">100%</div>
<div class="text text3">产品合格率</div>
<div class="icon icon2"></div>
<div class="text text4">98%</div>
<div class="text text5">来料合格率</div>
<div class="card card2"></div>
<div class="text text6">工厂产量情况当日</div>
<div class="icon icon3"></div>
<div class="icon icon4"></div>
<div class="icon icon5"></div>
<div class="icon icon6"></div>
<div class="icon icon7"></div>
<div class="icon icon8"></div>
<div class="text text7">95%</div>
<div class="text text8">平均交付率</div>
<div class="card card3"></div>
<div class="text text9">销量</div>
<div class="card card4"></div>
<div class="text text10">设备运行状态</div>
<div class="icon icon9"></div>
<div class="text text11">设备总数</div>
<div class="text text12">92</div>
<div class="text text13"></div>
<div class="icon icon10"></div>
<div class="text text14">90%</div>
<div class="icon icon11"></div>
<div class="text text15">设备开机率</div>
<div class="icon icon12"></div>
<div class="text text16">72</div>
<div class="text text17"></div>
<div class="text text18">运行数量</div>
<div class="icon icon13"></div>
<div class="text text19">2</div>
<div class="text text20"></div>
<div class="text text21">故障数量</div>
<div class="icon icon14"></div>
<div class="text text22">7</div>
<div class="text text23"></div>
<div class="text text24">停机数量</div>
<div class="card card5"></div>
<div class="text text25">能源管理</div>
<div class="icon icon15"></div>
<div class="text text26">区域能耗:kw-h</div>
<div class="card card6"></div>
<div class="text text27">异常警告状况</div>
<div class="icon icon16"></div>
<div class="text text28">434</div>
<div class="text text29">设备异常</div>
<div class="icon icon17"></div>
<div class="text text30">365</div>
<div class="text text31">原料异常</div>
<div class="icon icon18"></div>
<div class="text text32">321</div>
<div class="text text33">质量异常</div>
<div class="icon icon19"></div>
<div class="text text34">312</div>
<div class="text text35">生产异常</div>
<div class="icon icon20"></div>
<div class="text text36">298</div>
<div class="text text37">人员异常</div>
<div class="table1">
<div style="background-color: #05346044" class="tableTh">
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
工厂名称
</div>
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
总数单位W
</div>
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
合格数单位W
</div>
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
一次交检合格率
</div>
</div>
<vue3-scroll-seamless
:class-options="scrollTableOption"
:data="table1Data"
class="case-item"
style="height: calc(100% - 1vw);overflow: hidden;"
>
<div
v-for="(item, index) in table1Data"
:key="index"
>
<div style="height: 1vw"
:style='"background-color:" + ((index % 2 === 0)? "#073978":"#00000000")'>
<div
class="scrollTableItem">
{{ item.value1 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value3 }}
</div>
<div
class="scrollTableItem">
{{ item.value4 }}
</div>
</div>
</div>
</vue3-scroll-seamless>
</div>
<div class="chart1">
<div ref="chart1Ref" style="width: 100%;height: 100%;" />
</div>
<div class="chart2">
<div ref="chart2Ref" style="width: 100%;height: 100%;" />
</div>
<div class="table2">
<div class="item" v-for="i in table2Data">
<div class="value1">
<div class="span">
{{ i.value1 }}
</div>
</div>
<div class="value2">
<div class="a">
<div class="b" :style="`width:${(i.value2 / 1000) * 100}%`"></div>
</div>
</div>
<div class="value3">
<div class="span">
{{ i.value2 }}kw
</div>
</div>
</div>
</div>
<div class="chart3">
<div ref="chart3Ref" style="width: 100%;height: 100%;" />
</div>
<div class="chart4">
<div ref="chart4Ref" style="width: 100%;height: 100%;" />
</div>
<div class="chart5">
<div ref="chart5Ref" style="width: 100%;height: 100%;" />
</div>
</div>
</template>
<script setup>
import Chart from '@/components/chart.vue';
import * as echarts from 'echarts';
import chinaJson from './china.json';
const props = defineProps({
changeType: Function
})
import { vue3ScrollSeamless } from 'vue3-scroll-seamless';
echarts.registerMap('china', chinaJson);
const scrollTableOption = ref({
limitMoveNum: 2,
hoverStop: true
});
const table1Data = ref([
{
value1: '广东工厂',
value2: '340',
value3: '338',
value4: '99.1%'
},
{
value1: '湖北工厂',
value2: '390',
value3: '381',
value4: '97.7%'
},
{
value1: '山东工厂',
value2: '412',
value3: '410',
value4: '99.5%'
}
]);
const table2Data = ref([
{
value1: '广东工厂',
value2: '900'
},
{
value1: '山东工厂',
value2: '800'
},
{
value1: '河北工厂',
value2: '700'
},
{
value1: '湖北工厂',
value2: '600'
},
{
value1: '河南工厂',
value2: '500'
}
]);
const chart1Ref = ref();
const chart2Ref = ref();
const chart3Ref = ref();
const chart4Ref = ref();
const chart5Ref = ref();
onMounted(async () => {
await nextTick();
let chart1 = echarts.init(chart1Ref.value);
let chart2 = echarts.init(chart2Ref.value);
let chart3 = echarts.init(chart3Ref.value);
let chart4 = echarts.init(chart4Ref.value);
let chart5 = echarts.init(chart5Ref.value);
chart1.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '30',
right: '5%',
bottom: '40',
top: '10%'
},
xAxis: {
type: 'category',
data: ['广东工厂\n(半钢)', '广东工厂\n(全钢)', '河北工厂\n(半钢)', '河北工厂\n(全钢)', '山东工厂', '湖北综合\n工厂', '河南工厂'],
axisLine: {
lineStyle: {
color: '#ffffff'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#ffffff',
interval: 0,
fontSize: 6
}
},
yAxis: {
type: 'value',
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: '#ffffff'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#ffffff',
fontSize: 8
}
},
series: [
{
name: '产量',
type: 'bar',
data: [220, 163, 540, 452, 398, 383, 187],
barWidth: '40%',
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{ offset: 0, color: '#4BF79C' }, // 顶部
{ offset: 1, color: '#012CFF' } // 底部
]
)
}
}
]
});
chart2.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '30',
right: '5%',
bottom: '40',
top: '10%'
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
axisLine: {
lineStyle: {
color: '#ffffff'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#ffffff',
interval: 0,
fontSize: 6
}
},
yAxis: [
{
type: 'value',
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: '#ffffff'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#ffffff',
fontSize: 8
}
},
{
type: 'value',
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: '#ffffff'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#ffffff',
fontSize: 8
}
}
],
series: [
{
name: '数量',
type: 'bar',
data: [387, 422, 360, 401, 445, 395, 410, 432, 378, 400, 420, 390],
barWidth: '40%',
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{ offset: 0, color: '#205FFC' }, // 顶部
{ offset: 1, color: '#00000000' } // 底部
]
)
}
},
{
name: '达成率',
type: 'line',
yAxisIndex: 1,
data: [79, 82, 75, 84, 80, 78, 85, 77, 81, 83, 76, 79],
barWidth: '40%',
lineStyle: { width: 1, color: '#fff' }
}
]
});
chart3.setOption({
radar: {
indicator: [
{ name: '温度', max: 100 },
{ name: '天气', max: 100 },
{ name: '预期', max: 100 },
{ name: '能耗', max: 100 },
{ name: '风级', max: 100 },
{ name: '湿度', max: 100 }
],
radius: '80%',
splitLine: { lineStyle: { color: '#444' } },
splitArea: { areaStyle: { color: ['#1E2A3A', '#14202B'] } },
axisLine: { lineStyle: { color: '#555' } },
axisName: {
color: '#fff',
fontSize: 8
},
axisNameGap: 0
},
series: [
{
name: '指标',
type: 'radar',
symbol: 'none', // ⚡ 取消拐点
data: [
{
value: [80, 60, 70, 50, 90, 65],
name: '图表1',
areaStyle: { color: 'rgba(93, 92, 183, 0.7)' },
lineStyle: { color: '#0000' }
},
{
value: [60, 80, 55, 70, 65, 90],
name: '图表2',
areaStyle: { color: 'rgba(120, 107, 170, 0.7)' },
lineStyle: { color: '#0000' }
},
{
value: [70, 75, 80, 60, 85, 70],
name: '图表3',
areaStyle: { color: 'rgba(147, 122, 157, 0.7)' },
lineStyle: { color: '#0000' }
},
{
value: [65, 70, 75, 80, 60, 85],
name: '图表4',
areaStyle: { color: 'rgba(173, 138, 143, 0.7)' },
lineStyle: { color: '#0000' }
},
{
value: [85, 60, 70, 75, 80, 65],
name: '图表5',
areaStyle: { color: 'rgba(128, 128, 128, 0.7)' },
lineStyle: { color: '#0000' }
}
]
}
]
});
chart4.setOption({
tooltip: {
trigger: 'item'
},
series: [
{
type: 'pie',
radius: '60%',
data: [
{ value: 1048, name: '广东工厂' },
{ value: 735, name: '山东工厂' },
{ value: 580, name: '河北工厂' },
{ value: 484, name: '湖北工厂' },
{ value: 300, name: '河南工厂' }
],
label: {
show: true,
color: '#ffffff', // 文字颜色
fontSize: 4, // 文字大小
fontWeight: 'normal'
},
labelLine: {
show: true,
length: 3,
length2: 3,
smooth: 0.2, // 平滑曲线
lineStyle: { color: '#fff', width: 1 }
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
});
chart5.setOption({
geo: {
map: "china",
show: false,
// aspectScale: 0.75, //长宽比
zoom: 1.6,
roam: false,
center: [104, 35],
},
visualMap: {
show: false,
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高', '低'],
calculable: true,
textStyle: {
color: '#fff'
}
},
series: [
{
name: '示例数据',
type: 'map',
map: 'china',
roam: false,
zoom: 1.6,
center: [104, 35],
itemStyle: {
areaColor: '#007AA999',
borderColor: '#fff6',
borderWidth: 1
},
label: {
show: true,
color: '#fff',
fontSize: 6
},
},
{
type: "effectScatter",
coordinateSystem: "geo",
showEffectOn: 'emphasis',
zlevel: 1,
rippleEffect: {
period: 15,
scale: 1,
brushType: "fill",
},
hoverAnimation: true,
itemStyle: {
normal: {
color: "#FEC03D",
shadowBlur: 10,
shadowColor: "#333",
},
},
data: [
{ name: '河北工厂', value: [114.5025, 38.0455] },
{ name: '山东工厂', value: [117.0009, 36.6758] },
{ name: '湖南工厂', value: [112.9823, 28.1941] },
{ name: '广东工厂', value: [113.2806, 23.1252] }
],
label: {
padding: [-16, 0, 0, 5],
show: true,
position: 'bottom',
// align:'left',
formatter: function (val) {
return `{b|${val.data.name}}`
},
rich: {
b: {
padding: [0, 0, 0, 5],
color: '#0FF32E',
height: 40,
fontSize: 12,
},
}
}
},
]
});
chart5.on('click', function(params) {
if (params.seriesType === 'effectScatter') {
props.changeType(1)
}
});
});
</script>
<style lang="less" scoped>
.content {
min-height: calc(100vh - 84px);
position: relative;
width: 100%;
height: 100%;
background-image: url("@/assets/images/index/bg.png");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.title {
position: absolute;
width: 100%;
height: 10.2%;
background-image: url("@/assets/images/index/title.png");
background-repeat: no-repeat;
background-size: 100% 100%;
color: #40C8FF;
text-align: center;
font-size: 1.6vw;
display: flex;
justify-content: center;
align-items: center;
}
.card {
position: absolute;
width: 24.3%;
height: 28%;
background-image: url("@/assets/images/index/card.png");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.text {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
font-size: 0.8vw;
white-space: nowrap;
color: #fff;
}
.icon {
position: absolute;
background-repeat: no-repeat;
background-size: 100% 100%;
}
.card1 {
top: 11%;
left: 0.55%;
}
.text1 {
left: 0.55%;
top: 11.21%;
width: 24.24%;
height: 3.11%;
}
.icon1 {
background-image: url("@/assets/images/index/icon1.png");
left: 2.36%;
top: 16.21%;
width: 4.14%;
height: 9.25%;
}
.text2 {
left: 6.94%;
top: 17.40%;
width: 3.42%;
height: 4.49%;
font-size: 1vw;
color: #3AEAC2;
font-weight: 700;
}
.text3 {
left: 6.94%;
top: 22.16%;
width: 3.56%;
height: 2.29%;
font-size: 0.6vw;
}
.icon2 {
background-image: url("@/assets/images/index/icon2.png");
left: 14.13%;
top: 16.21%;
width: 4.14%;
height: 9.25%;
}
.text4 {
left: 18.72%;
top: 17.40%;
width: 2.67%;
height: 4.49%;
font-size: 1vw;
color: #3AEAC2;
font-weight: 700;
}
.text5 {
left: 18.72%;
top: 22.16%;
width: 3.56%;
height: 2.29%;
font-size: 0.6vw;
}
.card2 {
left: 0.55%;
top: 41.06%;
}
.text6 {
left: 0.55%;
top: 41.52%;
width: 24.24%;
height: 3.11%;
}
.icon3 {
background-image: url("@/assets/images/index/icon3.svg");
left: 1.23%;
top: 46.85%;
width: 7.12%;
height: 19.05%;
}
.icon4 {
background-image: url("@/assets/images/index/icon4.svg");
left: 1.47%;
top: 47.48%;
width: 6.67%;
height: 17.67%;
}
.icon5 {
background-image: url("@/assets/images/index/icon5.svg");
left: 1.57%;
top: 47.87%;
width: 6.43%;
height: 17.03%;
}
.icon6 {
background-image: url("@/assets/images/index/icon6.svg");
left: 1.95%;
top: 48.76%;
width: 5.68%;
height: 15.18%;
}
.icon7 {
background-image: url("@/assets/images/index/icon7.svg");
left: 2.33%;
top: 49.73%;
width: 4.96%;
height: 13.28%;
}
.icon8 {
background-image: url("@/assets/images/index/icon8.svg");
left: 2.60%;
top: 50.37%;
width: 4.45%;
height: 11.91%;
}
.text7 {
left: 2.60%;
top: 50.37%;
width: 4.45%;
height: 9.91%;
font-size: 1.6vw;
font-weight: 700;
}
.text8 {
left: 2.60%;
top: 58.37%;
width: 4.45%;
height: 2%;
font-size: 0.6vw;
}
.card3 {
left: 0.55%;
top: 70.53%;
}
.text9 {
left: 0.55%;
top: 71.02%;
width: 24.24%;
height: 3.11%;
}
.card4 {
left: 74.85%;
top: 11.99%;
}
.text10 {
left: 74.85%;
top: 12.53%;
width: 24.24%;
height: 3.11%;
}
.icon9 {
background-image: url("@/assets/images/index/icon9.png");
left: 79.36%;
top: 18.77%;
width: 5.03%;
height: 9.52%;
}
.text11 {
left: 84.48%;
top: 20.33%;
width: 2.19%;
height: 1.65%;
font-size: 0.6vw;
}
.text12 {
left: 84.48%;
top: 22.79%;
width: 1.54%;
height: 3.85%;
font-size: 1vw;
font-weight: 700;
}
.text13 {
left: 86.07%;
top: 23.63%;
width: 0.62%;
height: 1.92%;
}
.icon10 {
background-image: url("@/assets/images/index/icon10.png");
left: 88.40%;
top: 15.21%;
width: 4.21%;
height: 11.36%;
}
.text14 {
left: 89.66%;
top: 17.22%;
width: 1.68%;
height: 2.56%;
font-weight: 700;
}
.icon11 {
background-image: url("@/assets/images/index/icon11.png");
left: 88.86%;
top: 27.39%;
width: 3.28%;
height: 2.11%;
}
.text15 {
left: 89.17%;
top: 27.56%;
width: 2.74%;
height: 1.65%;
font-size: 0.6vw;
}
.icon12 {
background-image: url("@/assets/images/index/icon12.png");
left: 76.78%;
top: 30.77%;
width: 3.25%;
height: 7.88%;
}
.text16 {
left: 80.51%;
top: 31.77%;
width: 1.44%;
height: 3.85%;
font-size: 1vw;
font-weight: 700;
color: #1BF1D8;
}
.text17 {
left: 82.16%;
top: 32.60%;
width: 0.62%;
height: 1.92%;
font-size: 0.6vw;
}
.text18 {
left: 80.56%;
top: 35.97%;
width: 2.19%;
height: 1.65%;
font-size: 0.6vw;
}
.icon13 {
background-image: url("@/assets/images/index/icon13.png");
left: 84.02%;
top: 30.77%;
width: 3.25%;
height: 7.88%;
}
.text19 {
left: 87.75%;
top: 31.77%;
width: 0.72%;
height: 3.85%;
font-size: 1vw;
font-weight: 700;
color: #EDAD0E;
}
.text20 {
left: 88.86%;
top: 32.60%;
width: 0.62%;
height: 1.92%;
font-size: 0.6vw;
}
.text21 {
left: 87.78%;
top: 35.97%;
width: 2.19%;
height: 1.65%;
font-size: 0.6vw;
}
.icon14 {
background-image: url("@/assets/images/index/icon14.png");
left: 91.29%;
top: 30.77%;
width: 3.25%;
height: 7.88%;
}
.text22 {
left: 95.07%;
top: 31.77%;
width: 0.72%;
height: 3.85%;
font-size: 1vw;
font-weight: 700;
color: #F87D89;
}
.text23 {
left: 95.99%;
top: 32.60%;
width: 0.62%;
height: 1.92%;
font-size: 0.6vw;
}
.text24 {
left: 95.10%;
top: 35.97%;
width: 2.19%;
height: 1.65%;
font-size: 0.6vw;
}
.card5 {
left: 74.85%;
top: 41.82%;
}
.text25 {
left: 74.85%;
top: 42.12%;
width: 24.24%;
height: 3.11%;
}
.icon15 {
background-image: url("@/assets/images/index/icon15.svg");
left: 75.09%;
top: 50.00%;
width: 1.54%;
height: 2.93%;
}
.text26 {
left: 77%;
top: 50.37%;
width: 3.90%;
height: 2.02%;
font-size: 0.6vw;
}
.card6 {
left: 74.85%;
top: 69.85%;
}
.text27 {
left: 74.85%;
top: 70%;
width: 24.24%;
height: 3.11%;
}
.icon16 {
background-image: url("@/assets/images/index/icon16.png");
left: 75.62%;
top: 78.57%;
width: 3.97%;
height: 5.86%;
}
.text28 {
left: 75.62%;
top: 74.63%;
width: 3.97%;
height: 3.5%;
font-size: 1.2vw;
font-weight: 700;
color: #22F2FF;
}
.text29 {
left: 75.62%;
top: 78.53%;
width: 3.97%;
height: 1.54%;
font-size: 0.6vw;
}
.icon17 {
background-image: url("@/assets/images/index/icon16.png");
left: 80.51%;
top: 78.57%;
width: 3.97%;
height: 5.86%;
}
.text30 {
left: 80.51%;
top: 74.63%;
width: 3.97%;
height: 3.5%;
font-size: 1.2vw;
font-weight: 700;
color: #22F2FF;
}
.text31 {
left: 80.51%;
top: 78.53%;
width: 3.97%;
height: 1.54%;
font-size: 0.6vw;
}
.icon18 {
background-image: url("@/assets/images/index/icon16.png");
left: 84.79%;
top: 83.97%;
width: 3.97%;
height: 5.86%;
}
.text32 {
left: 84.79%;
top: 80.07%;
width: 3.97%;
height: 3.5%;
font-size: 1.2vw;
font-weight: 700;
color: #22F2FF;
}
.text33 {
left: 84.79%;
top: 83.57%;
width: 3.97%;
height: 1.54%;
font-size: 0.6vw;
}
.icon19 {
background-image: url("@/assets/images/index/icon16.png");
left: 75.62%;
top: 90.09%;
width: 3.97%;
height: 5.86%;
}
.text34 {
left: 75.62%;
top: 86.01%;
width: 3.97%;
height: 3.5%;
font-size: 1.2vw;
font-weight: 700;
color: #22F2FF;
}
.text35 {
left: 75.62%;
top: 90.01%;
width: 3.97%;
height: 1.54%;
font-size: 0.6vw;
}
.icon20 {
background-image: url("@/assets/images/index/icon16.png");
left: 80.51%;
top: 90.09%;
width: 3.97%;
height: 5.86%;
}
.text36 {
left: 80.51%;
top: 86.01%;
width: 3.97%;
height: 3.5%;
font-size: 1.2vw;
font-weight: 700;
color: #22F2FF;
}
.text37 {
left: 80.51%;
top: 90.01%;
width: 3.97%;
height: 1.54%;
font-size: 0.6vw;
}
.table1 {
position: absolute;
width: 23.5%;
height: 12%;
top: 26%;
left: 1%;
}
.scrollTableItem {
width: 25%;
display: inline-block;
font-size: 0.6vw;
line-height: 1vw;
text-align: center;
color: #2DD8FF;
vertical-align: top;
}
.tableTh {
width: 100%;
height: 1vw;
background-color: #02295D;
}
.chart1 {
position: absolute;
top: 45%;
left: 8.5%;
width: 16%;
height: 23%;
}
.chart2 {
position: absolute;
top: 75%;
left: 1%;
width: 23.5%;
height: 23%;
}
.table2 {
position: absolute;
top: 53%;
left: 75%;
width: 14%;
height: 16%;
.item {
height: 20%;
.value1 {
display: inline-block;
vertical-align: top;
width: 3vw;
height: 100%;
font-size: 0.7vw;
color: #fff;
.span {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
.value2 {
display: inline-block;
vertical-align: top;
width: calc(100% - 6vw);
height: 100%;
color: #fff;
position: relative;
.a {
position: absolute;
width: 90%;
height: 6px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 3px;
background-color: #08396D;
overflow: hidden;
.b {
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
height: 100%;
background: linear-gradient(to right, #88F9C9, #67BBF8);
}
}
}
.value3 {
display: inline-block;
vertical-align: top;
width: 3vw;
height: 100%;
font-size: 0.7vw;
color: #66BBF9;
.span {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
}
}
.chart3 {
position: absolute;
top: 53%;
left: 89%;
width: 10%;
height: 16%;
}
.chart4 {
position: absolute;
top: 74%;
left: 89%;
width: 10%;
height: 22%;
}
.chart5 {
position: absolute;
top: 13%;
left: 25%;
width: 49.5%;
height: 82%;
}
</style>