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.

184 lines
3.7 KiB
Vue

<script setup lang="ts">
import { ref, computed, watch, type Ref } from "vue";
import { useAppStoreHook } from "@/store/modules/app";
import {
delay,
useDark,
useECharts,
type EchartOptions
} from "@pureadmin/utils";
import * as echarts from "echarts/core";
const { isDark } = useDark();
const theme: EchartOptions["theme"] = computed(() => {
return isDark.value ? "dark" : "light";
});
const barChartRef = ref<HTMLDivElement | null>(null);
const { setOptions, resize } = useECharts(barChartRef as Ref<HTMLDivElement>, {
theme
});
const props = defineProps({
barInfo: {
type: Object
}
});
const barData = ref({ ...props.barInfo });
setOptions(
{
title: {
text: "缺陷监测数据",
left: "left",
textStyle: {
fontSize: 14,
color: "#333"
}
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow"
}
},
grid: {
bottom: "30px",
right: "30px",
left: "40px"
},
// legend: {
// //@ts-expect-error
// right: true,
// // data: ["star"]
// // data: ["watchers", "fork", "star"]
// },
xAxis: [
{
type: "category",
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
color: "#333"
// width: "70",
// overflow: "truncate"
},
data: ["10.15", "10.16", "10.17", "10.18", "10.19"],
triggerEvent: true
}
],
yAxis: [
{
type: "value",
triggerEvent: true,
axisLabel: {
//y轴字体
color: "#333"
}
},
{
type: "value",
splitLine: {
//分割线配置
show: false
},
triggerEvent: true,
axisLabel: {
//y轴字体
color: "#333"
}
}
],
series: [
// {
// name: "watchers",
// type: "bar",
// barWidth: "10%",
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "#e6a23c"
// },
// {
// offset: 1,
// color: "#eebe77"
// }
// ])
// },
// data: [200, 320, 800]
// },
// {
// name: "fork",
// type: "bar",
// barWidth: "15%",
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "#f56c6c"
// },
// {
// offset: 1,
// color: "#f89898"
// }
// ])
// },
// data: [1600, 2460, 4500]
// },
{
name: "已检出",
type: "bar",
barWidth: "30%",
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#F7B303"
},
{
offset: 1,
color: "#F7B303"
}
])
},
data: barData.value.barList
},
{
//折线(右边数据)
name: "缺陷检出",
type: "line",
yAxisIndex: 1,
data: barData.value.lineList,
itemStyle: {
//折线颜色
color: "#0246F6"
}
}
],
addTooltip: true
},
{
name: "click",
callback: params => {
console.log("click", params);
}
}
);
watch(
() => useAppStoreHook().getSidebarStatus,
() => {
delay(600).then(() => resize());
}
);
</script>
<template>
<div ref="barChartRef" style="width: 100%; height: 35vh" />
</template>