ggfwjsc/src/view/home copy.vue

112 lines
2.7 KiB
Vue
Raw Normal View History

2024-04-12 09:26:48 +08:00
<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>