前后端分离项目引用Echarts

10,692次阅读
没有评论

共计 2456 个字符,预计需要花费 7 分钟才能阅读完成。

首先是安装 Echarts

yarn add echarts 或者 npm install echarts

在组件中引入 Echarts
在需要使用图表的 Vue 组件中引入 Echarts:

import * as echarts from 'echarts';

创建一个 DOM 元素用于渲染图表在组件的模板中创建一个 DOM 元素,例如一个 

 元素,用于承载图表:

  1. 初始化图表
    在组件的 mounted 生命周期钩子中初始化图表:写在 method 方法里
     mounted() {this.fetchInventoryData();
        this.initInventoryChart();  // 调用初始化图表的方法}
  2. 前端处理后端传过来数据的方法

fetchInventoryData() {// axios.get('/system/inventory/getInventoryDataForEcharts')
    maplist()
    .then(response => {console.log('原始响应:', response); 
        return response;
      })
     .then(data => {console.log('Received data:', data); 
        const receivedData = data;
        console.log('Received inventoryNumbers:', receivedData.inventoryNumbers);
        console.log('Received quantities:', receivedData.quantities);
        this.inventoryData = receivedData.inventoryNumbers.map((invId, index) => {console.log(`Current index: ${index}, invId: ${invId}, quantity: ${receivedData.quantities[index]}`);
          return { 
            inventoryNumber: invId, 
            quantity: receivedData.quantities[index] 
          };
        });
        console.log('Mapped inventoryData:', this.inventoryData);
        this.initInventoryChart();// 不加这个下面的逻辑会走不通的,异步处理错误})
 .catch(error => {console.error('Error fetching inventory data:', error);
    });
},
initInventoryChart() {console.log('进入 initInventoryChart 方法');
  console.log('当前的 inventoryData:', this.inventoryData);
  // 确保获取到库存数据后再初始化图表
  if (this.inventoryData && this.inventoryData.length> 0) {const chartDom = document.getElementById('inventoryChart');
    this.myChart = echarts.init(chartDom);
    const option = {
      title: {text: '库存分布'},
      tooltip: {trigger: 'item'},
      legend: {
        orient:'vertical',
        left: 'left'
      },
      series: [
        {
          name: '库存分布',
          type: 'pie',
          radius: '50%',
          data: this.inventoryData.map(item => ({name: ` 库存 ${item.inventoryNumber}`,
            value: item.quantity
          })),
          emphasis: {
            itemStyle: {
              shadowBlur: 10,
              shadowOffsetX: 0,
              shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
          }
        }
      ]
    };
      this.myChart.setOption(option);
    }
  },

引用 js

import{maplist} from '@/api/system/inventory';

JS

export function maplist(){
  return request({
    url:'/system/inventory/getInventoryDataForEcharts',// 路径写你们自己的,引用那里也一样
    method:'get',
  })
}

基本上前端就可以了

接下来是后端 Controller 层

@RequestMapping("/getInventoryDataForEcharts")
    public Map getInventoryDataForEcharts() {List inventoryList = ylInventoryService.selectYlInventoryList(new YlInventory());
        List inventoryNumbers = new ArrayList();
        List quantities = new ArrayList();

        for (YlInventory inventory : inventoryList) {inventoryNumbers.add(inventory.getInvId());
            quantities.add(inventory.getAmount());
        }

        Map result = new HashMap();
        result.put("inventoryNumbers", inventoryNumbers);
        result.put("quantities", quantities);
        return result;
    }

调用的是 selectYlInvenList 这个方法,这个方法就是个查询列表的方法,跟查询走的是一个方法。本质都是通过调用这个方法,获取数据库的数据,返回给前端。

原文地址: 前后端分离项目引用 Echarts

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-29发表,共计2456字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)