276 lines
5.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<Card title="累计试验次数">
<div class="load-bottom-left">
<div class="choice-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 class="load-content">
<div id="universalHistogram" ref="universalHistogram" style="width: 100%; height: 100%"></div>
</div>
</div>
</Card>
</template>
<script lang="ts" setup>
import Card from "@/components/card.vue";
// import symbolIcon2 from "@/assets/images/toxicGasMonitor/lineIcon2.png";
import { onMounted, ref, onBeforeUnmount } from "vue";
import * as echarts from "echarts";
// import { getSelectDataListApi } from "@/api/modules/distribution";
// import Card from "@/components/card.vue";
import { GlobalStore } from "@/stores";
import mitts from "@/utils/bus"; //兄弟组件传值
const store = GlobalStore();
// x轴
// let twenty_four_time = ref([] as any);
// Y轴单位
let unit = ref("" as any);
// Y轴数据
// let yData1 = ref([
// ["2023-9-19 05:15:00", 12],
// ["2023-9-19 15:15:00", 200],
// ["2023-9-19 17:15:00", 50],
// ["2023-9-19 19:15:00", 24],
// ["2023-9-20 05:15:00", 30],
// ["2023-9-20 15:15:00", 60]
// ]);
// 图表数据项
let option = ref(null as any);
// 选中
let checked = ref(1);
function getNowData(type: any) {
checked.value = type;
// 初始化option
drawChart();
}
function getWeekData(type: any) {
checked.value = type;
// 初始化option
drawChart();
}
function getMonthData(type: any) {
checked.value = type;
// 初始化option
drawChart();
}
let typeList = ref([
{
value: 1,
dayType: "最低值",
typeUnit: "℃"
},
{
value: 2,
dayType: "最高值",
typeUnit: "℃"
}
]);
function selectChange(e: any) {
console.log("当前日期", e);
drawChart();
}
function initOption() {
option.value = {
tooltip: {
trigger: "axis",
backgroundColor: "rgba(0, 0, 0, 0.9)",
borderColor: "#010306",
textStyle: {
color: "#FFFFFF"
}
},
grid: {
left: "2%",
right: "4%",
bottom: "5%",
top: "16%",
containLabel: true
},
legend: {
left: 10,
top: 12,
itemGap: 25,
textStyle: {
color: "#fff",
padding: [0, 0, 0, 15]
},
itemWidth: 12,
itemHeight: 10
},
xAxis: {
type: "category",
data: ["01:00", "02:00", "03:00", "04:00", "05:00", "06:00"],
axisLine: {
lineStyle: {
color: "white"
}
},
axisLabel: {
textStyle: {
fontFamily: "Microsoft YaHei"
}
}
},
yAxis: {
type: "value",
max: "600",
axisLine: {
show: false,
lineStyle: {
color: "white"
}
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(255,255,255,0.3)"
}
},
axisLabel: {}
},
series: [
{
name: "试验次数",
type: "bar",
barWidth: "20%",
barGap: "70%", // 设置相邻柱子之间的间隔为 10%
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#3368F3"
},
{
offset: 1,
color: "#82FBEA"
}
])
}
},
data: [400, 400, 300, 300, 300, 400, 400, 400, 300]
},
{
name: "报告上传次数",
type: "bar",
barWidth: "20%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#81F279"
},
{
offset: 1,
color: "#C9FA86"
}
])
}
},
data: [400, 500, 500, 500, 500, 400, 400, 500, 500]
}
]
};
}
function drawChart() {
initOption();
// console.log("绘制前数据", option.value);
let chartDom = document.getElementById("universalHistogram");
if (chartDom) {
chartDom.removeAttribute("_echarts_instance_");
}
let universalHistogram = echarts.init(document.getElementById("universalHistogram"));
universalHistogram.setOption(option.value);
}
onMounted(async () => {
drawChart();
});
// 即时销毁事件总线派发否则会执行两次mitts.on造成不必要的内存浪费 7.14 by CJP
onBeforeUnmount(async () => {
mitts.off("devSn");
});
</script>
<style lang="scss" scoped>
.load-bottom-left {
width: 100%;
height: 100%;
position: relative;
.load-content {
height: 100%;
background: url("@/assets/images/cardImg.png") no-repeat;
background-size: 100% 100%;
position: relative;
}
}
.choice-right {
width: 40%;
display: flex;
position: absolute;
z-index: 99;
color: #fff;
font-size: 10px;
text-align: center;
line-height: 20px;
right: -5%;
top: 5%;
.selected {
height: 5%;
background: url("@/assets/images/dustNoise/rightImg2.png") no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
.day {
padding: 0 5%;
margin-right: 4%;
z-index: 99;
}
.week {
padding: 0 5%;
margin-right: 4%;
z-index: 99;
}
.month {
padding: 0 5%;
z-index: 99;
}
.active {
background: url("@/assets/images/dustNoise/rightImg.png") no-repeat;
background-size: 100% 100%;
}
}
:deep(.el-input__wrapper) {
background: #112d59;
}
:deep(.el-input__inner) {
color: #fff;
}
:deep(.el-select .el-input .el-select__caret) {
color: #fff;
}
:deep(.el-date-editor) {
width: 100%;
}
:deep(.el-range-separator) {
color: #fff;
}
:deep(.el-date-editor .el-range-input) {
color: #fff;
}
</style>