当前位置: 首页 > news >正文

springboot + Vue前后端项目(第十二记)

项目实战第十二记

  • 1.写在前面
  • 2. 整合Echarts
    • 2.1 vue安装Echarts
    • 2.2 使用Echarts
    • 2.3 EchartsController编写
    • 2.4 Home.vue编写
  • 总结
  • 写在最后

1.写在前面

本篇主要讲解系统整合Echarts

2. 整合Echarts

2.1 vue安装Echarts

npm i echarts -S

2.2 使用Echarts

vue中使用echarts的demo

<template><div><div id="main" style="width: 100%; height: 500px;"></div></div>
</template><script>
import * as echarts from 'echarts'export default {name: "Home",data() {return {}},mounted() {   // 主要用于对DOM进行操作和进行一些需要DOM的逻辑处理this.initEcharts();},methods: {initEcharts() {let chartDom = document.getElementById('main');let myChart = echarts.init(chartDom);let option;option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{data: [150, 230, 224, 218, 135, 147, 260],type: 'line'}]};myChart.setOption(option);}}
}
</script><style scoped></style>

注:可以去Echarts官网进一步实践不同类型的图表
示例地址

2.3 EchartsController编写

该接口主要统计每个季度的用户人数,然后传递数据给前端

package com.ppj.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.date.Quarter;
import com.ppj.common.Result;
import com.ppj.entity.User;
import com.ppj.service.IUserService;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;@RestController
@RequestMapping("/echarts")
public class EchartsController {@Autowiredprivate IUserService userService;/*** 获取每个季度的会员数* @return*/@GetMapping("/members")public Result getMembers(){List<User> userList = userService.list();int q1 = 0;int q2 = 0;int q3 = 0;int q4 = 0;for (User user : userList) {Date createTime = user.getCreateTime();// 季度Quarter quarter = DateUtil.quarterEnum(createTime);switch (quarter){case Q1:q1++;break;case Q2:q2++;break;case Q3:q3++;break;case Q4:q4++;break;default:break;}}return Result.success(CollUtil.newArrayList(q1,q2,q3,q4));}}

2.4 Home.vue编写

模拟各种统计实时展示,用折线,柱状,饼状图展示各月度会员人数

<template><div><el-row :gutter="10" style="margin-bottom: 50px;"><el-col :span="6"><el-card style="color: #409EFF;"><div><i class="el-icon-user-solid"/>用户总数</div><div style="padding: 10px 0;text-align: center;font-weight: bold;">100</div></el-card></el-col><el-col :span="6"><el-card style="color: #67C23A;"><div><i class="el-icon-s-goods"/>销售总量</div><div style="padding: 10px 0;text-align: center;font-weight: bold;">10000</div></el-card></el-col><el-col :span="6"><el-card style="color: #E6A23C;"><div><i class="el-icon-coin"/>收益总额</div><div style="padding: 10px 0;text-align: center;font-weight: bold;">999</div></el-card></el-col><el-col :span="6"><el-card style="color: #F56C6C;"><div><i class="el-icon-medal-1"/>门店总数</div><div style="padding: 10px 0;text-align: center;font-weight: bold;">1000</div></el-card></el-col></el-row><el-row><el-col :span="12"><!-- 为 ECharts 准备一个定义了宽高的 DOM --><div id="line" style="width: 600px; height: 400px"></div></el-col><el-col :span="12"><div id="pie" style="width: 600px; height: 400px"></div></el-col></el-row></div>
</template><script>
import * as echarts from 'echarts'export default {name: "Home",data() {return {}},mounted() {   // 主要用于对DOM进行操作和进行一些需要DOM的逻辑处理this.initEcharts();},methods: {initEcharts() {//页面元素渲染之后再触发let lineChartDom = document.getElementById("line");let lineChart = echarts.init(lineChartDom);let pieChartDom = document.getElementById("pie");let pieChart = echarts.init(pieChartDom);const lineOption = {title: {text: "各季度会员数量统计",subtext: "趋势图",left: "center",},xAxis: {   // 横坐标type: "category",data: ["第一季度", "第二季度", "第三季度", "第四季度"],},yAxis: {type: "value",},// 显示数据series: [{data: [],type: "line",   // 折线数据},{data: [],type: "bar",   // 柱状数据},],};this.request.get("/echarts/members").then(res => {if(res.code === "200"){// 获取数据lineOption.series[0].data =res.datalineOption.series[1].data =res.data}// 绘制图表lineChart.setOption(lineOption)})const pieOption = {title: {text: "各季度会员数量统计",subtext: "比例图",left: "center",},tooltip: {trigger: "item",},legend: {orient: "vertical",left: "left",},series: [{type: "pie",radius: "50%",data: [],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: "rgba(0, 0, 0, 0.5)",},},},],};this.request.get("/echarts/members").then(res => {if (res.code === "200") {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)}})}}
}
</script><style scoped></style>

总结

  • 这只是简单的整合echarts使用示例,后期可以根据自己的需求,看官方文档更加深入的使用echarts
  • 代码内部有详细的注释

写在最后

如果此文对您有所帮助,请帅戈靓女们务必不要吝啬你们的Zan,感谢!!不懂的可以在评论区评论,有空会及时回复。
文章会一直更新

相关文章:

springboot + Vue前后端项目(第十二记)

项目实战第十二记 1.写在前面2. 整合Echarts2.1 vue安装Echarts2.2 使用Echarts2.3 EchartsController编写2.4 Home.vue编写 总结写在最后 1.写在前面 本篇主要讲解系统整合Echarts 2. 整合Echarts 2.1 vue安装Echarts npm i echarts -S2.2 使用Echarts vue中使用echarts的…...

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数&#xff08;recursive&#xff09;&#xff0c;用于删除目录及其内容。如果不加这个参数&#xff0c;rm 命令无法删除非空目录。-f 是强制参数&#xff08;force&#xff09;&#xff0c;用于强制删除文件或目录&#xff0c;不会进行任何确认提示…...

SQLiteOpenHelper数据库帮助器

SQLiteOpenHelper数据库帮助器是Android提供的数据库辅助工具。 1、继承SQLiteOpenHelper类&#xff0c;需要重写onCreate和onUpgrade两个方法 案例&#xff1a;实现增删改查 package com.example.databases_text;import android.app.PictureInPictureParams; import androi…...

2024年5月26日 (周日) 叶子游戏新闻

资深开发者&#xff1a;3A游戏当前处于一种尴尬的中间地带游戏行业整体&#xff0c;尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出&#xff0c;广受好评&#xff0c;但居高不下的游戏开发成本&#xff08;传闻《漫威蜘蛛侠2》的制作成本高达3亿美元&#xff09;正严重…...

STM32-10-定时器

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG 文章目录 一、STM32 基础定时器1. 基本定时器简介2. 基本定时器框图3. 基本定时器相关寄存器4. 定时器溢出…...

今天说的什么好呢

先这样吧...

计算机网络-Traffic-Filter流量过滤策略

一、概述 为提高网络安全性&#xff0c;管理人员需要控制进入网络的流量&#xff0c;将不信任的报文丢弃在网络边界。所谓的不信任报文是指对用户来说存在安全隐患或者不愿意接收的报文。同时保证数据访问安全性&#xff0c;企业网络中经常会要求一些部门之间不能相互访问。 背…...

小白入职 必要熟悉 Git / tortoiseGit 工具

1.安装Git 1.1 了解Git Git是分布式版本控制系统&#xff0c;没有中央服务器的每个人的电脑就是一个完整的版本库&#xff0c;工作时无需联网可多人协作&#xff0c;只需把各自的修改推送给对方&#xff0c;就可以互相看到对方的修改了 分布式版本控制工具管理方式&#xff…...

春秋CVE-2022-23906

简介 CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。 正文 1.进入靶场2.进入登录界面&#xff0c;弱口令admin/123456 3.进入后台&#xff0c;文件上传点 4.上传一句话木马图片 5.复制图片&#xf…...

JavaFX安装与使用

前言 最近学习了javafx,开始时在配置环境和导包时遇到了一些麻烦,关于网上很多方法都尝试过了,现在问题都解决了,和大家分享一下我是怎么实现javafx的配置,希望大家可以通过这个方法实现自己的环境配置! &#x1f648;个人主页: 心.c &#x1f525;文章专题:javafx &#x1f49…...

漫画|基于SprinBoot+vue的漫画网站(源码+数据库+文档)

漫画网站 目录 基于SprinBootvue的漫画网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…...

python-项目实战

项目实战 1.外星人入侵小游戏 2.数据可视化 3.web应用开发 一、外星人入侵小游戏 需求: 开发大型项目时&#xff0c;做好规划后再动手编写项目很重要。规划可确保你不偏离轨道&#xff0c;从而提高项目成功的可能性。 在游戏《外星人入侵》中&#xff0c;玩家控制着一艘最…...

单片机原理及技术(一)—— 认识单片机(C51编程)

目录 一、单片机概述 1.1 什么是单片机 1.2 单片机的发展历史 1.3 单片机的特点 1.4 MCS-51 系列与 AT89S5x 系列单片机 1.4.1 MCS-51 系列单片机 1.4.2 AT89S5x 系列单片机 1.5 各种衍生品种的8051单片机 1.5.1 STC 系列单片机 1.5.2 C8051Fxxx 系列单片机 一、单片…...

白嫖的在线工具类宝藏网站清单,快点击进来收藏一波

简单整理了一下自己日常经常使用的10个免费工具网站&#xff0c;建议点赞关注收藏&#xff0c;快点分享给小伙伴们&#xff01; 1.奶牛快传:用户体验更好的网盘工具。 https://cowtransfer.com/ 今年开始使用的一款网盘工具&#xff0c;和百度网盘类似,叫奶牛快传&#xff0c;如…...

【机器学习300问】97、机器学习中哪些是凸优化问题,哪些是非凸优化问题?

在机器学习的领域中&#xff0c;多数模型的参数估计问题实质上可以转化为优化问题。鉴于机器学习模型的多样性&#xff0c;不同的模型会对应着不同的损失函数&#xff0c;进而形成各具特色的优化问题。了解优化问题的形式和特点&#xff0c;对于提升我们求解模型参数的效率和准…...

两种盒模型

在CSS中&#xff0c;有两种主要的盒模型&#xff08;Box Model&#xff09;&#xff0c;它们决定了元素的尺寸计算方式&#xff1a; 标准盒模型&#xff08;W3C Box Model&#xff09; 在标准盒模型中&#xff0c;元素的总宽度和总高度分别由以下几个部分组成&#xff1a; Cont…...

【C++】类型转换

目录 前言一、C语言中的类型转换二、为什么C需要四种类型转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast3.5 RTTI 前言 本篇文章讲解的是C中对于C语言类型转换做出的一些更好的规范问题&#xff0c;同时也保证了在一些特殊场景下进…...

Redis RDB 持久化问题

前言 Redis 是内存数据库&#xff0c;它将自己的数据储存在内存里面&#xff0c;如果不想办法将储存在内存中的数据保存到磁盘里面&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据也就没了。 因此&#xff0c;Redis 提供了 RDB 持久化功能&#xff0c;这个功能…...

windows 下nginx常用命令

1、启动&#xff0c;目录cmd&#xff0c;后 start nginx.exe 2.重新加载 nginx -s reload 3.查看状态 tasklist /fi “imagename eq nginx.exe” 4.关闭 nginx -s quit...

xjoi题库一级1-10段题解(c语言版)

xjoi题库一级一段 xjoi题库一级二段 xjoi题库一级三段 xjoi题库一级四段 xjoi题库一级五段...

算法的能耗模型与绿色计算优化方向的技术4

能耗模型基础理论算法复杂度与能耗关系时间复杂度与空间复杂度对硬件资源消耗的影响&#xff0c;建立数学模型描述指令执行次数、数据访问频率与能耗的关联。硬件层面的能耗因素CPU动态功耗&#xff08;CVf&#xff09;、静态功耗、内存访问能耗、缓存命中率等关键参数&#xf…...

监控太阳能电池在哪?别瞎找,看这里!

在工商业安防、交通、能源等众多领域&#xff0c;太阳能监控供电系统正成为解决偏远无电、布线困难区域监控难题的关键方案。然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;许多项目决策者常常陷入困惑&#xff1a;真正可靠、匹配项目需求的监控太阳能电池究竟在哪里&a…...

为什么开发者都在使用go-cursor-help?5步掌握Cursor无限试用技巧

为什么开发者都在使用go-cursor-help&#xff1f;5步掌握Cursor无限试用技巧 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial reque…...

Swoole vs RoadRunner vs PHP-PM:异步I/O配置参数对比表(含内存泄漏率、上下文切换耗时、FD复用率实测)

第一章&#xff1a;Swoole vs RoadRunner vs PHP-PM 异步I/O配置全景概览现代PHP高性能服务化方案中&#xff0c;Swoole、RoadRunner 和 PHP-PM 均通过常驻内存与异步I/O机制突破传统PHP-FPM的阻塞模型&#xff0c;但其实现路径、依赖模型与配置范式存在本质差异。三者均不依赖…...

CogVideoX-2b适合谁?三类人群实战应用场景深度剖析

CogVideoX-2b适合谁&#xff1f;三类人群实战应用场景深度剖析 1. 当视频创作不再需要专业设备 你是否曾经想过制作一段短视频&#xff0c;却因为缺乏专业设备和技能而放弃&#xff1f;CogVideoX-2b的出现彻底改变了这一局面。这个基于智谱AI开源模型的文字生成视频工具&…...

JavaScript中骨架屏Skeleton在异步数据加载中应用

骨架屏的核心作用是提升用户感知性能——用模拟真实内容布局的视觉占位符替代空白等待&#xff0c;降低加载焦虑&#xff1b;它比loading图标更能建立界面认知&#xff0c;需通过请求前插入、请求后替换实现&#xff0c;并注重结构准确、动画克制与切换干净。骨架屏&#xff08…...

Amber与Kemal框架深度对比:为什么选择Amber开发企业级应用

Amber与Kemal框架深度对比&#xff1a;为什么选择Amber开发企业级应用 【免费下载链接】amber A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance. 项目…...

速成正果经

慈于一切众生&#xff0c;恭敬一切众生&#xff0c;以所有世界永远无苦为方向&#xff0c;以顺一切众生的愿为方向&#xff0c;以增一切众生的慧为方向&#xff0c;以增一切众生的智为方向&#xff0c;以健一切众生的体为方向&#xff0c;以促进一切众生内心舒畅为方向&#xf…...

5分钟极速上手:AdGuard浏览器扩展的广告拦截与隐私保护实战指南

5分钟极速上手&#xff1a;AdGuard浏览器扩展的广告拦截与隐私保护实战指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension 你是否厌倦了网页上无处不在的广告弹窗&#xf…...

终极Windows Defender移除指南:3步彻底禁用微软安全组件,性能飙升30%

终极Windows Defender移除指南&#xff1a;3步彻底禁用微软安全组件&#xff0c;性能飙升30% 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://g…...