File size: 2,394 Bytes
77b0e0f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
// 创建一个引用来存储图表的 DOM 容器
const chartRef = ref(null)
const props = defineProps({
orderNumList: {
type: Array
},
totalSalesList: {
type: Array
},
newUserList: {
type: Array
},
activityUserList: {
type: Array
}
})
// 初始化图表的函数
const initChart = () => {
const chart = echarts.init(chartRef.value)
// 配置图表的选项
const option = {
title: {
text: '订单和用户数量'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
data: ['订单量', '销售额', '新增用户', '活跃用户']
},
toolbox: {
feature: {
saveAsImage: {}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: '订单量',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: props.orderNumList
},
{
name: '销售额',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: props.totalSalesList
},
{
name: '新增用户',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: props.newUserList
},
{
name: '活跃用户',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: props.activityUserList
}
]
}
// 使用设置的配置项渲染图表
chart.setOption(option)
}
// 在组件挂载后初始化图表
onMounted(() => {
initChart()
})
</script>
<template>
<div ref="chartRef" style="width: auto; height: 400px"></div>
</template>
<style scoped>
/* 可以根据需要调整图表容器的样式 */
</style>
|