在 Vue 项目中快速引入和使用 ECharts

ECharts 是一个强大的数据可视化库,能够帮助我们轻松创建各种图表。本文将详细介绍如何在 Vue 项目中快速引入和使用 ECharts,并使用 Vue 的选项式 API 来实现一个简单的柱状图组件。

1. 安装 ECharts

首先,我们需要通过 npm 或 yarn 安装 ECharts:

复制代码
npm install echarts --save

//或者

yarn add echarts

2. 创建一个使用 ECharts 的组件

我们将创建一个简单的柱状图组件,命名为 BarChart.vue

2.1 完整代码

复制代码
<template>
  <div ref="barChart" style="width: 100%; height: 250px"></div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "BarChart",
props: {
    chartData: {
      type: Object,
      required: true
    }
  },

  mounted() {
  if (this.chartData && Object.keys(this.chartData).length > 0) {
    this.createChart(this.chartData);
  } else {
    console.warn("chartData is empty or not provided.");
  }
},
watch: {
  chartData: {
    handler(newVal) {
      if (newVal && Object.keys(newVal).length > 0) {
        this.createChart(newVal);
      }
    },
    deep: true // 深度监听对象的变化
  }
},
  methods: {
    createChart(listByOutbounddata) {
  const chart = echarts.init(this.$refs.barChart);
      const option = {
        title: {
          text: "",
        },
        tooltip: {},
        legend: {
          data: ["出库(万)", "入库(万)"],
          top: 10,
          left: "center",
          textStyle: {
            color: "#ccc",
          },
        },
        // color: ["#009491"],
        grid: {
          left: "0%",
          right: "0%",
          bottom: "0%",
          top: "20%",
          containLabel: true,
        },
        xAxis: {
          axisLabel: {
            textStyle: {
              color: "#fff",
              fontSize: "12",
            },
            lineStyle: {
              color: "#000",
            },
            interval: 0,
            rotate: 40,
          },
          type: "category",
          data: listByOutbounddata.map((item) => item.date),
          axisTick: {
            alignWithLabel: true,
          },
        },
        yAxis: {
          axisLabel: {
            textStyle: {
              color: "#fff",
              fontSize: "12",
            },
            lineStyle: {
              color: "#999",
            },
            interval: 0,
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: "#000",
            },
          },
        },
        series: [
          {
            name: "出库(万)",
            type: "bar",
            barWidth: "15px",
            label: {
              normal: {
                show: true,
                position: "top",
                color: "#fff",
              },
            },
            itemStyle: {
              color: "#5ece9c",
              barBorderRadius: 2,
            },
            zlevel: 2,
            data: listByOutbounddata.map((item) => item.todayOutboundQuantity),
          },

          {
            name: "入库(万)",
            type: "bar",
            barWidth: "15px",
            label: {
              normal: {
                show: true,
                position: "top",
                color: "#fff",
              },
            },
            itemStyle: {
              color: "#299de8",
              barBorderRadius: 2,
            },
            zlevel: 2,
            data: listByOutbounddata.map((item) => item.todayInboundQuantity),
          },
        ],
      };
      chart.setOption(option);
    },
  },
};
</script>

3. 引入组件并使用

App.vue 或者其他需要使用这个图表的组件中,引入并使用 BarChart 组件。

复制代码
<template>
  <div id="app">
    <BarChart  :chartData="listByOutbounddata"  />
  </div>
</template>

<script>
import BarChart from './components/BarChart.vue';

export default {
  name: 'App',
  components: {
    BarChart,
  },
 data() {
    return {
        listByOutbounddata:[], //后台请求的值
   }
 }
};
</script>

<style>
</style>

4. 运行项目

确保你已经在项目根目录下运行了 npm run serve 或者 yarn serve,然后在浏览器中打开项目,你应该能够看到一个简单的柱状图。

相关推荐
WindfallSheng2 小时前
从Vibe Coding到Spec Coding:一套可落地的AI-SDD企业级研发实战工程
javascript·vue.js
我有满天星辰3 小时前
Vue 指令完全指南:从 Vue 2 到 Vue 3 的演进与实战
前端·javascript·vue.js
我有满天星辰5 小时前
Vue 3 响应式双雄:ref 与 reactive 完全指南
前端·javascript·vue.js
leoZ23116 小时前
Claude 驱动的全栈开发:Spring Boot + Vue 的 BS 架构实践
vue.js·spring boot·架构
荒诞英雄20 小时前
从 17MB Vendor 大包到按需加载:Vite 多入口 Vue 组件库首屏优化实践
vue.js·vite
jsonbro20 小时前
手把手带你实现发布订阅模式
前端·vue.js·设计模式
Cobyte1 天前
23.Vue Vapor 组件 attrs 的实现
前端·javascript·vue.js
斯特凡今天也很帅1 天前
xml页面可以打开,不报错,但是显示数据的地方也不显示,我是怎么解决的
xml·vue.js
柯克七七1 天前
给老项目加了 TypeScript,本来只想自己爽,结果全公司代码审查标准被我抬高了
前端·vue.js·typescript
自然 醒1 天前
前端如何实现在线预览office常见文件功能?
前端·vue.js