312 lines
5.9 KiB
Vue
312 lines
5.9 KiB
Vue
|
|
<template>
|
|||
|
|
<Card title="各配比产量(t)">
|
|||
|
|
<div class="load-top-left">
|
|||
|
|
<div>
|
|||
|
|
<div class="select-right">
|
|||
|
|
<div class="day selected" @click="getNowData(1)" :class="checked == 1 ? 'active' : ''">今日</div>
|
|||
|
|
<div class="week selected" @click="getWeekData(2)" :class="checked == 2 ? 'active' : ''">近7天</div>
|
|||
|
|
<div class="month selected" @click="getMonthData(3)" :class="checked == 3 ? 'active' : ''">近30日</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="concreteEchartsBottomLeft" ref="concreteEchartsBottomLeft" style="width: 100%; height: 100%"></div>
|
|||
|
|
</div>
|
|||
|
|
</Card>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script lang="ts" setup>
|
|||
|
|
import Card from "@/components/card.vue";
|
|||
|
|
import { onMounted, ref } from "vue";
|
|||
|
|
import * as echarts from "echarts";
|
|||
|
|
import symbolIcon from "@/assets/images/toxicGasMonitor/lineIcon.png";
|
|||
|
|
import symbolIcon2 from "@/assets/images/toxicGasMonitor/lineIcon2.png";
|
|||
|
|
// 选中
|
|||
|
|
let checked = ref(1);
|
|||
|
|
function getNowData(type: any) {
|
|||
|
|
checked.value = type;
|
|||
|
|
// 初始化option
|
|||
|
|
// initOption();
|
|||
|
|
}
|
|||
|
|
function getWeekData(type: any) {
|
|||
|
|
checked.value = type;
|
|||
|
|
// 初始化option
|
|||
|
|
// initOption();
|
|||
|
|
}
|
|||
|
|
function getMonthData(type: any) {
|
|||
|
|
checked.value = type;
|
|||
|
|
// 初始化option
|
|||
|
|
// initOption();
|
|||
|
|
}
|
|||
|
|
// x轴
|
|||
|
|
let twenty_four_time = ref([
|
|||
|
|
"00:00",
|
|||
|
|
"02:00",
|
|||
|
|
"04:00",
|
|||
|
|
"06:00",
|
|||
|
|
"08:00",
|
|||
|
|
"10:00",
|
|||
|
|
"12:00",
|
|||
|
|
"14:00",
|
|||
|
|
"16:00",
|
|||
|
|
"18:00",
|
|||
|
|
"20:00",
|
|||
|
|
"22:00",
|
|||
|
|
"24:00"
|
|||
|
|
] as any);
|
|||
|
|
// Y轴单位
|
|||
|
|
let unit = ref("" as any);
|
|||
|
|
// Y轴数据
|
|||
|
|
let yData1 = ref([22, 22, 19, 23, 34, 33, 31, 22, 18, 19, 24, 29, 25] as any);
|
|||
|
|
let yData2 = ref([12, 12, 10, 13, 20, 23, 21, 12, 13, 10, 13, 21, 17] as any);
|
|||
|
|
|
|||
|
|
// 图表数据项
|
|||
|
|
let option = ref(null as any);
|
|||
|
|
|
|||
|
|
function initOption() {
|
|||
|
|
option.value = {
|
|||
|
|
// backgroundColor: '#071c3a',
|
|||
|
|
title: {
|
|||
|
|
// text: '日用气量分析',
|
|||
|
|
textStyle: {
|
|||
|
|
align: "center",
|
|||
|
|
color: "#fff",
|
|||
|
|
fontSize: 20
|
|||
|
|
},
|
|||
|
|
top: "2%",
|
|||
|
|
left: "center"
|
|||
|
|
},
|
|||
|
|
legend:{
|
|||
|
|
icon: "rect",
|
|||
|
|
type: "plain",
|
|||
|
|
left: "5%",
|
|||
|
|
bottom: "92%",
|
|||
|
|
itemGap: 20,
|
|||
|
|
itemWidth: 10, // 设置宽度
|
|||
|
|
itemHeight: 10, // 设置高度
|
|||
|
|
textStyle: {
|
|||
|
|
color: "#fff",
|
|||
|
|
rich: {
|
|||
|
|
name: {
|
|||
|
|
width: 100,
|
|||
|
|
verticalAlign: "left",
|
|||
|
|
fontSize: 14,
|
|||
|
|
color: "#FFFFFF"
|
|||
|
|
},
|
|||
|
|
value: {
|
|||
|
|
width: 70,
|
|||
|
|
fontSize: 14,
|
|||
|
|
color: "#FFFFFF"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
tooltip: {
|
|||
|
|
trigger: "axis",
|
|||
|
|
backgroundColor: "rgba(0, 0, 0, 0.9)",
|
|||
|
|
borderColor: "#010306",
|
|||
|
|
textStyle: {
|
|||
|
|
color: "#FFFFFF"
|
|||
|
|
},
|
|||
|
|
axisPointer: {
|
|||
|
|
lineStyle: {
|
|||
|
|
color: {
|
|||
|
|
type: "linear",
|
|||
|
|
x: 0,
|
|||
|
|
y: 0,
|
|||
|
|
x2: 0,
|
|||
|
|
y2: 1,
|
|||
|
|
colorStops: [
|
|||
|
|
{
|
|||
|
|
offset: 0,
|
|||
|
|
color: "rgba(0, 255, 233,0)"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
offset: 0.5,
|
|||
|
|
color: "rgba(255, 255, 255,1)"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
offset: 1,
|
|||
|
|
color: "rgba(0, 255, 233,0)"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
global: false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// formatter: function (params) {
|
|||
|
|
// // console.log("tooltip", params);
|
|||
|
|
// return (
|
|||
|
|
// params[0].name +
|
|||
|
|
// "<br/>" +
|
|||
|
|
// params[0].marker +
|
|||
|
|
// " " +
|
|||
|
|
// params[0].seriesName +
|
|||
|
|
// ": " +
|
|||
|
|
// params[0].value +
|
|||
|
|
// "<br/>" +
|
|||
|
|
// params[1].marker +
|
|||
|
|
// " " +
|
|||
|
|
// params[1].seriesName +
|
|||
|
|
// ": " +
|
|||
|
|
// params[1].value
|
|||
|
|
// );
|
|||
|
|
// }
|
|||
|
|
},
|
|||
|
|
grid: {
|
|||
|
|
top: "20%",
|
|||
|
|
left: "10%",
|
|||
|
|
right: "8%",
|
|||
|
|
bottom: "12%"
|
|||
|
|
// containLabel: true
|
|||
|
|
},
|
|||
|
|
xAxis: [
|
|||
|
|
{
|
|||
|
|
type: "category",
|
|||
|
|
axisLine: {
|
|||
|
|
show: true,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "#14346C"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
splitArea: {
|
|||
|
|
// show: true,
|
|||
|
|
color: "#f00",
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "#f00"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
axisLabel: {
|
|||
|
|
color: "#fff"
|
|||
|
|
},
|
|||
|
|
splitLine: {
|
|||
|
|
show: false
|
|||
|
|
},
|
|||
|
|
boundaryGap: false,
|
|||
|
|
data: twenty_four_time.value
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
yAxis: [
|
|||
|
|
{
|
|||
|
|
name: unit.value,
|
|||
|
|
nameGap: 30,
|
|||
|
|
nameTextStyle: {
|
|||
|
|
align: "right", // 将 Y 轴名称文字右对齐
|
|||
|
|
verticalAlign: "middle", // 将 Y 轴名称文字垂直居中
|
|||
|
|
padding: [0, 15, 0, 0], // 设置名称文字的内边距,调整位置
|
|||
|
|
color: "#fff",
|
|||
|
|
nameLocation: "start"
|
|||
|
|
},
|
|||
|
|
type: "value",
|
|||
|
|
min: 0,
|
|||
|
|
// max: 140,
|
|||
|
|
splitNumber: 3,
|
|||
|
|
splitLine: {
|
|||
|
|
show: true,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "#14346C"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
axisLine: {
|
|||
|
|
show: true,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "#14346C"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
axisLabel: {
|
|||
|
|
show: true,
|
|||
|
|
margin: 20,
|
|||
|
|
textStyle: {
|
|||
|
|
color: "#fff"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
axisTick: {
|
|||
|
|
show: true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
series: [
|
|||
|
|
{
|
|||
|
|
showAllSymbol: true,
|
|||
|
|
symbol: `image://${symbolIcon2}`,
|
|||
|
|
// symbol: "circle",
|
|||
|
|
symbolSize: 8,
|
|||
|
|
smooth: true, //是否平滑
|
|||
|
|
name: "配比1",
|
|||
|
|
type: "line",
|
|||
|
|
color: "#4AC0F3",
|
|||
|
|
data: yData1.value
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
showAllSymbol: true,
|
|||
|
|
symbol: `image://${symbolIcon}`,
|
|||
|
|
// symbol: "circle",
|
|||
|
|
symbolSize: 8,
|
|||
|
|
smooth: true, //是否平滑
|
|||
|
|
name: "配比2",
|
|||
|
|
type: "line",
|
|||
|
|
color: "#81F279",
|
|||
|
|
data: yData2.value
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function drawChart() {
|
|||
|
|
initOption();
|
|||
|
|
// console.log("绘制前数据", yData.value);
|
|||
|
|
let concreteEchartsBottomLeft = echarts.init(document.getElementById("concreteEchartsBottomLeft"));
|
|||
|
|
concreteEchartsBottomLeft.setOption(option.value);
|
|||
|
|
}
|
|||
|
|
onMounted(async () => {
|
|||
|
|
drawChart();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
.load-top-left {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
padding-left: 3%;
|
|||
|
|
padding-top: 3%;
|
|||
|
|
position: relative;
|
|||
|
|
.select-right {
|
|||
|
|
width: 40%;
|
|||
|
|
display: flex;
|
|||
|
|
position: absolute;
|
|||
|
|
z-index: 10;
|
|||
|
|
color: #fff;
|
|||
|
|
font-size: 10px;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 20px;
|
|||
|
|
right: 2%;
|
|||
|
|
top: 5%;
|
|||
|
|
.selected {
|
|||
|
|
height: 5%;
|
|||
|
|
background: url("@/assets/images/dustNoise/rightImg2.png") no-repeat;
|
|||
|
|
background-size: 100% 100%;
|
|||
|
|
cursor: pointer;
|
|||
|
|
}
|
|||
|
|
.day {
|
|||
|
|
padding: 0 6%;
|
|||
|
|
margin-right: 5%;
|
|||
|
|
z-index: 99;
|
|||
|
|
}
|
|||
|
|
.week {
|
|||
|
|
padding: 0 6%;
|
|||
|
|
margin-right: 5%;
|
|||
|
|
z-index: 99;
|
|||
|
|
}
|
|||
|
|
.month {
|
|||
|
|
padding: 0 6%;
|
|||
|
|
z-index: 99;
|
|||
|
|
}
|
|||
|
|
.active {
|
|||
|
|
background: url("@/assets/images/dustNoise/rightImg.png") no-repeat;
|
|||
|
|
background-size: 100% 100%;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
</style>
|