<template>
<div style="width: 100%; height: 100%; padding: 2%">
<div id="nodeOne" style="width: 800px; height: 600px"></div>
</div>
</template>
<script setup >
import echarts from "echarts";
import { onMounted, reactive } from "vue";
import { any } from "vue-types";
const schoolAllContrXlegend = reactive([
"全选",
"Email",
"Union Ads",
"Video Ads",
"Direct",
"Search Engine",
"Email2",
"Union Ads2",
"Video Ads2",
"Direct2",
"Search Engine2",
]);
const option: any = reactive<any>({
//这里是具体的配置项或者直接引入
tooltip: {
trigger: "axis",
},
legend: {
type: "scroll",
data: schoolAllContrXlegend,
selected: {
Email: false, //添加全选,默认没有选中
全选: false,
},
},
grid: {
top: "20%",
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
boundaryGap: false,
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
},
series: [
{
name: "Email",
type: "line",
stack: "Total",
data: [120, 132, 101, 134, 90, 230, 210],
},
{
name: "Union Ads",
type: "line",
stack: "Total",
data: [220, 182, 191, 234, 290, 330, 310],
},
{
name: "Video Ads",
type: "line",
stack: "Total",
data: [150, 232, 201, 154, 190, 330, 410],
},
{
name: "Direct",
type: "line",
stack: "Total",
data: [320, 332, 301, 334, 390, 330, 320],
},
{
name: "Search Engine",
type: "line",
stack: "Total",
data: [820, 932, 901, 934, 1290, 1330, 1320],
},
{
name: "Email2",
type: "line",
stack: "Total",
data: [120, 132, 101, 134, 90, 230, 210],
},
{
name: "Union Ads2",
type: "line",
stack: "Total",
data: [220, 182, 191, 234, 290, 330, 310],
},
{
name: "Video Ads2",
type: "line",
stack: "Total",
data: [150, 232, 201, 154, 190, 330, 410],
},
{
name: "Direct2",
type: "line",
stack: "Total",
data: [320, 332, 301, 334, 390, 330, 320],
},
{
name: "Search Engine2",
type: "line",
stack: "Total",
data: [820, 932, 901, 934, 1290, 1330, 1320],
},
{
name: "全选",
type: "line",
data: [],
},
],
});
onMounted(() => {
initChart();
});
const initChart = () => {
let oneChart = echarts.init(document.getElementById("nodeOne"));
oneChart.setOption(option);
//params为点击以后的每一项参数,为一个对象
oneChart.on("legendselectchanged", function (params: any) {
if (params.name == "全选") {
let selectMark = option.legend.selected["全选"]; //获取图例中的全选状态,作为一个标记变量
//option为上面的Echarts对象
var data = option.legend.data;
if (selectMark) {
//判断
for (var i = 0; i < data.length; i++) {
option.legend.selected[data[i]] = false;
}
} else {
for (var i = 0; i < data.length; i++) {
option.legend.selected[data[i]] = true;
}
}
this.setOption(option);
}
});
// //点击以后初始化重置大小
// window.onresize = function () {
// oneChart.resize()
// }
// }, 1000)
};
</script>