Springboot+Vue整合echarts的简单使用

Springboot+Vue整合echarts的简单使用

由于是第一次在csdn写笔记,浅记录下吧

首先是前台(基于vue)

先下载echarts包(加上–force是防止npm版本过高引起依赖解析出错)

npm install echarts --save  --force	

在main.js中引入并全局挂载

import * as echarts from 'echarts'

Vue.prototype.$echarts = echarts  //全局引入 统计图表 对象

开始使用echarts开发!!!

一个图表对应一个div 使用 id属性在js中进行挂载

<template>
  <div>
    <el-row>
      <el-col :span="12">
        <div id="main" style="width: 500px; height: 300px"></div>
      </el-col>
      <el-col :span="12">
        <div id="pie" style="width: 500px; height: 300px"></div>
      </el-col>
    </el-row>
  </div>
</template>

echarts的使用需要在mouted钩子中使用

mounted() {
      //柱状图
      var myChart = this.$echarts.init(document.getElementById('main'));
      var option = {
        title: {
          text: '各季度会员图',
          left: 'center'
        },
        xAxis: {
          data: ['第一季度', '第二季度', '第三季度', '第四季度']
        },
        yAxis: {},
        series: [
          {
            type: 'bar',
            label: {
              formatter: '{d}%',
            },
            data: []
          },
          {
            type: 'line',
            label: {
              formatter: '{d}%',
            },
            data: []
          }
        ]
      }

      //饼图
      var pieChart = this.$echarts.init(document.getElementById('pie'));
      var pieOption = {
        //标题
        title: {
          text: '各季度会员图',
          left: 'center'
        },
        //开启图例显示
        legend:{
          orient: 'vertical',
          left:'left'
        },
        series: [
          {
            type: 'pie',
            //设置图形文本及数据
            label: {
              position: 'inner',  //文本显示在内部
              formatter: '{d}%',  //显示百分比(会屏蔽已设置的name 属性)
              fontSize: '15',
              color: '#fff'
            },
            data: []
          }
        ]
      };

      //从数据库查询数据并填充页面
      getMembers().then(res => {
        option.series[0].data = res.data
        option.series[1].data = res.data
        // 绘制图表
        myChart.setOption(option);

        pieOption.series[0].data = [
          {value: res.data[0], name:"第一季度"},
          {value: res.data[1], name:"第二季度"},
          {value: res.data[2], name:"第三季度"},
          {value: res.data[3], name:"第四季度"},
        ]
        pieChart.setOption(pieOption)
      })
    }

对应后台接口的axios封装

export const getMembers = ()=>{
  return requests({
    url: '/echarts/members',
    method: 'get'
  })
}

接下来是从后台接口拿数据(基于Springboot的后台)

此次图表是关于各个季度用户的数量统计,故而需要用到一个比较好用的工具类 — hutool

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
具体使用可参考 https://blog.csdn.net/qq_42981242/article/details/110939210

本次使用到的是计算季度的方法

先导入pom的依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.5.1</version>
</dependency>

对数据库中用户的数据进行查询,遍历他们的createTime并转换为对应的季度,放入switch统计各个季度的总数值,最后使用hutool的 CollUtil.newArrayList(多个值) 返回数据给前端

	return Result.success(CollUtil.newArrayList(q1,q2,q3,q4));

后台接口

package com.dayuan.crud.controller;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.Quarter;
import cn.hutool.core.io.unit.DataUnit;
import com.dayuan.crud.common.Result;
import com.dayuan.crud.pojo.User;
import com.dayuan.crud.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/echarts")
public class EchartsController {

    @Autowired
    private UserService userService;

    @GetMapping("/members")
    public Result members(){
        List<User> list = userService.list();
        //q1-q4 表示第一到第四季度
        int q1 = 0;
        int q2 = 0;
        int q3 = 0;
        int q4 = 0;
        for (User user : list) {
            Date joinTime = user.getCreateTime();
            Quarter quarter = DateUtil.quarterEnum(joinTime);
            switch (quarter) {
                case Q1: q1 += 1; break;
                case Q2: q2 += 1; break;
                case Q3: q3 += 1; break;
                case Q4: q4 += 1; break;
                default: break;
            }
        }
        return Result.success(CollUtil.newArrayList(q1,q2,q3,q4));
    }
}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot是一个基于Spring框架的快速开发Web应用程序的框架,Vue是一种流行的JavaScript框架,用于构建用户界面,MySQL是一种流行的关系型数据库,Echarts是一个基于JavaScript的图表库,用于可视化数据。结合这些技术可以构建一个功能强大的Web应用程序,以下是一个简单的演示: 1.后端使用Spring Boot和Mybatis Plus连接MySQL数据库,提供API接口供前端调用,以下是一个简单的示例代码: ```java @RestController @RequestMapping("/api") public class DataController { @Autowired private DataService dataService; @GetMapping("/data") public List<Data> getData() { return dataService.getData(); } } ``` 2.前端使用Vue和Element-UI构建用户界面,使用Echarts可视化数据,以下是一个简单的示例代码: ```vue <template> <div> <el-table :data="tableData"> <el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="value" label="值"></el-table-column> </el-table> <div ref="chart" style="height: 400px;"></div> </div> </template> <script> import axios from 'axios' import echarts from 'echarts' export default { data() { return { tableData: [] } }, mounted() { axios.get('/api/data').then(response => { this.tableData = response.data this.renderChart() }) }, methods: { renderChart() { const chart = echarts.init(this.$refs.chart) const data = this.tableData.map(item => ({ name: item.name, value: item.value })) chart.setOption({ title: { text: '数据可视化' }, tooltip: {}, xAxis: { data: data.map(item => item.name) }, yAxis: {}, series: [{ name: '值', type: 'bar', data: data.map(item => item.value) }] }) } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值