112 lines
2.7 KiB
Vue
112 lines
2.7 KiB
Vue
<template>
|
||
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
|
||
<!--vue3中 id=‘’ 变更 ref=-->
|
||
<div ref="chart" style="width:100%;height:200px;"></div>
|
||
</template>
|
||
|
||
<script setup >
|
||
import {onMounted, reactive, ref} from "vue";
|
||
// 局部引入echarts核心模块
|
||
import * as echarts from 'echarts'
|
||
|
||
// const props = defineProps({ // 宏接收:父传参
|
||
// 结构优化
|
||
const {chartType,chartData}= defineProps({ // 宏接收:父传参
|
||
chartType:{
|
||
type: String
|
||
},
|
||
chartData: {
|
||
type: Array
|
||
}
|
||
})
|
||
|
||
const chart =ref(); // 创建DOM引用
|
||
|
||
// 第二种方法:初始化方法
|
||
const option = reactive({
|
||
// 指定图表的配置项和数据
|
||
title: { // 标题
|
||
// left: 'center', // 居中
|
||
text: 'ECharts 入门示例',
|
||
left: 'center',
|
||
textStyle: {
|
||
color: '#f60',
|
||
fontSize: 20,
|
||
}
|
||
},
|
||
color: '#f00', // 系列柱的颜色
|
||
tooltip: {}, // 提示
|
||
legend: { // 图例
|
||
data: ['销量'],
|
||
top: '5%',
|
||
left: 'right',
|
||
textStyle: { // 文字样式
|
||
color: '#f68',
|
||
}
|
||
},
|
||
xAxis: { // x轴
|
||
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
|
||
axisLine: { // 设置轴
|
||
lineStyle: { // 样式
|
||
color:'#000' // 颜色
|
||
}
|
||
},
|
||
|
||
axisLabel:{
|
||
interval: 0,
|
||
formatter: value => value.split('').join('\n') //报红:取消lang='ts'
|
||
}
|
||
},
|
||
yAxis: { // y轴
|
||
axisLine: { // 设置轴
|
||
lineStyle: { // 样式
|
||
color:'#000' // 颜色
|
||
}
|
||
},
|
||
axisLabel:{
|
||
// formatter: '{value} 件'
|
||
formatter: function(value,index){ // 报红:取消lang='ts'
|
||
return value %2 == 0 ? value + '件' : value // 可写各种逻辑判断: 奇偶数
|
||
}
|
||
}
|
||
},
|
||
series: [ // data数据
|
||
{
|
||
name: '销量',
|
||
// type: 'bar', // 图样类型
|
||
// type: props.chartType, // 父传参:自定义
|
||
type:chartType, // 结构优化
|
||
// data: [5, 20, 36, 10, 10, 20], // 图标数据
|
||
// data: props.chartData,
|
||
data: chartData,
|
||
label: {
|
||
show: true,
|
||
position: 'top'
|
||
},
|
||
}
|
||
]
|
||
})
|
||
|
||
// 使用生命钩子
|
||
onMounted(() => {
|
||
// 基于准备好的dom,初始化echarts实例
|
||
// var myChart = echarts.init(document.getElementById('main'));
|
||
// Vue3中: 需要引入
|
||
var myChart = echarts.init(chart.value)
|
||
|
||
// init(); // vue3.2没有this
|
||
// 使用刚指定的配置项和数据显示图表。
|
||
myChart.setOption(option);
|
||
|
||
// 单图表响应式: 跟随浏览器大小改变
|
||
window.addEventListener('resize',()=>{
|
||
myChart.resize()
|
||
})
|
||
|
||
})
|
||
|
||
</script>
|
||
|
||
<style scoped>
|
||
|
||
</style> |