import { reactive, onMounted, ref, watch, nextTick, onActivated, markRaw } from 'vue';
import * as echarts from 'echarts';
<el-col :span="24" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="border: solid 1px red;">
<div style="height: 300px;" ref="barMapRef">
</div>
</el-col>
const state = reactive({
mapBar:{
generalData:['320', '882', '301', '334', '390', '330', '620'],
moreData:[320, 132, 101, 134, 90, 230, 210],
seriousData:[220, 182, 191, 234, 290, 330, 310],
especiallyseriousData:[150, 232, 201, 154, 190, 330, 410],
recgeneralData:[320, 332, 301, 334, 390, 330, 620],
recmoreData:[220, 182, 191, 234, 290, 330, 310],
recseriousData:[150, 232, 201, 154, 190, 330, 510],
recespeciallyseriousData:[120, 132, 101, 134, 290, 230, 220],
xAxis:['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
global: {
homeChartOne: null,
homeChartTwo: null,
homeCharThree: null,
dispose: [null, '', undefined],
} as any,
myCharts: [] as EmptyArrayType,
charts: {
theme: '',
bgColor: '',
color: '#303133',
},
})
onMounted(async () => {
initBarMap();
});
// 堆叠柱状图
const initBarMap = () => {
if (!state.global.dispose.some((b: any) => b === state.global.homeChartTwo)) state.global.homeChartTwo.dispose();
state.global.homeChartTwo = markRaw(echarts.init(barMapRef.value, state.charts.theme));
const option = {
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// type: 'shadow'
// }
// },
tooltip: {
position: 'top',
axisPointer: {
type: 'cross'
},// 标注线
// trigger:'axis',
trigger: 'item',
formatter: '{b}<br/>{c}' // 提示框文本格式器,{b}表示系列名,{c}表示数据值
},
legend: {},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
title: {
text: '', // 主标题文本
//subtext: '副标题', // 副标题文本
left: 'center' // 标题水平位置
},
xAxis:{
type: 'category',
data: state.mapBar.xAxis
},
yAxis: {
type: 'value'
},
series: [
{
name: 'general',
type: 'bar',
stack: 'general',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: {// 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.generalData, // 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'recgeneral',
type: 'bar',
stack: 'general',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
markLine: {// 标记线,最低到最高
lineStyle: {
type: 'dashed'
},
data: [[{ type: 'min' }, { type: 'max' }]]
},
data: state.mapBar.recgeneralData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'more',
type: 'bar',
stack: 'more',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: {// 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.moreData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'recmore',
type: 'bar',
stack: 'more',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: {// 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.recmoreData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'serious',
type: 'bar',
stack: 'serious',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: {// 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.seriousData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'recserious',
type: 'bar',
stack: 'serious',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: {// 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.recseriousData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'especiallyserious',
type: 'bar',
stack: 'especiallyserious',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
markLine: { // 标记线,最低到最高
lineStyle: {
type: 'dashed'
},
data: [[{ type: 'min' }, { type: 'max' }]]
},
data: state.mapBar.especiallyseriousData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
{
name: 'recespeciallyserious',
type: 'bar',
stack: 'especiallyserious',// 想同的stack 堆叠在一起
emphasis: {
focus: 'series'
},
// markLine: { // 标记线,最低到最高
// lineStyle: {
// type: 'dashed'
// },
// data: [[{ type: 'min' }, { type: 'max' }]]
// },
data: state.mapBar.recespeciallyseriousData,// 数据源
label: {
normal: {
show: true, // 显示标签
//position: 'top', // 标签位置
// 使用字符串模板设置标签格式
//formatter: '{b}<br/>{c}', // {c} 代表数据值
formatter: function (params) {
// params 是一个包含当前数据信息的对象
var data = params.data;
return (
params.name+'\n'+data
);
},
// textStyle: {
// color: 'black' // 文本颜色
// }
}
},
},
]
};
state.global.homeChartTwo.setOption(option);
state.myCharts.push(state.global.homeChartTwo);
};