278 lines
5.8 KiB
Vue
Raw Normal View History

<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>
2024-01-30 18:15:58 +08:00
<div class="notoDta" v-if="xData.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</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";
2024-01-30 18:15:58 +08:00
import { countPowerLevel3 } from "@/api/modules/largeMachinery";
import { GlobalStore } from "@/stores";
const store = GlobalStore();
// 选中
let checked = ref(1);
function getNowData(type: any) {
checked.value = type;
// 初始化option
2024-01-30 18:15:58 +08:00
getMemberCareList();
}
function getWeekData(type: any) {
checked.value = type;
// 初始化option
2024-01-30 18:15:58 +08:00
getMemberCareList();
}
function getMonthData(type: any) {
checked.value = type;
// 初始化option
2024-01-30 18:15:58 +08:00
getMemberCareList();
}
// x轴
2024-01-30 18:15:58 +08:00
let xData = ref([] as any);
// Y轴单位
let unit = ref("" as any);
// Y轴数据
2024-01-30 18:15:58 +08:00
let yData = ref([] as any);
// 图表数据项
let option = ref(null as any);
function initOption() {
option.value = {
2024-01-30 18:15:58 +08:00
grid: {
top: "15%",
bottom: "10%" //也可设置left和right设置距离来控制图表的大小
},
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
// );
// }
},
2024-01-30 18:15:58 +08:00
xAxis: {
data: xData.value,
axisLine: {
show: false //隐藏X轴轴线
},
axisTick: {
show: false //隐藏X轴刻度
},
axisLabel: {
show: true,
textStyle: {
color: "#FFFFFF" //X轴文字颜色
}
}
2024-01-30 18:15:58 +08:00
},
yAxis: [
{
2024-01-30 18:15:58 +08:00
type: "value",
nameTextStyle: {
2024-01-30 18:15:58 +08:00
color: "#FFFFFF"
},
splitLine: {
2024-01-30 18:15:58 +08:00
show: false
},
axisTick: {
show: false
},
axisLine: {
2024-01-30 18:15:58 +08:00
show: false,
lineStyle: {
2024-01-30 18:15:58 +08:00
color: "#FFFFFF"
}
},
axisLabel: {
show: true,
textStyle: {
2024-01-30 18:15:58 +08:00
color: "#FFFFFF"
}
}
}
],
series: [
{
2024-01-30 18:15:58 +08:00
type: "bar",
barWidth: 15,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#00FFE3"
},
{
offset: 1,
color: "#4693EC"
}
])
}
},
data: yData.value
}
]
};
}
function drawChart() {
initOption();
// console.log("绘制前数据", yData.value);
2024-01-30 18:15:58 +08:00
let chartDom = document.getElementById("concreteEchartsBottomLeft");
if (chartDom) {
chartDom.removeAttribute("_echarts_instance_");
}
let concreteEchartsBottomLeft = echarts.init(document.getElementById("concreteEchartsBottomLeft"));
concreteEchartsBottomLeft.setOption(option.value);
}
2024-01-30 18:15:58 +08:00
onMounted(async () => {});
// 获取 各配比产量
// const realTimeTotal = ref({}) as any;
const getMemberCareList = async () => {
const res: any = await countPowerLevel3({ projectSn: store.sn, type: checked.value });
console.log("各配比产量", res);
if (res.result.data.length > 0) {
xData.value = res.result.data.map((item: any) => item.name);
yData.value = res.result.data.map((item: any) => Number(item.count));
drawChart();
} else {
xData.value = []
yData.value = []
let chartDom = document.getElementById("concreteEchartsBottomLeft");
if (chartDom) {
chartDom.removeAttribute("_echarts_instance_");
}
let concreteEchartsBottomLeft = echarts.init(document.getElementById("concreteEchartsBottomLeft"));
concreteEchartsBottomLeft.clear();
}
};
onMounted(async () => {
2024-01-30 18:15:58 +08:00
getMemberCareList();
});
</script>
<style lang="scss" scoped>
2024-01-30 18:15:58 +08:00
.notoDta {
top: 30%;
width: 45%;
left: 30%;
position: absolute;
text-align: center;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: calc(100vw * 14 / 1920);
margin: -6% 37%;
}
}
.load-top-left {
width: 100%;
height: 100%;
padding-left: 3%;
padding-top: 3%;
position: relative;
.select-right {
2024-01-30 18:15:58 +08:00
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>