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

ECharts 环形图组件封装

一、ECharts引入

1.安装echarts包

npm install echarts --save

2.引入echarts

这里就演示全局引入了,挂载到vue全局,后面使用时,直接使用 $echarts

import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts

二、写echarts组件

这里演示环形图表吧,刚好项目中用了,兄弟们有时间可以去echarts 官网去看看API

TIPS: 官网地址贴着了 ECharts 官网

几个注意点简单说下:

  1. ECharts 的DOM盒子需要设定尺寸

要不然渲染不出来的;需要设置样式,那就套盒子,写样式;

  1. 数据改变时重新渲染问题;

当传入的数据改变时,需要重新渲染,这里我用watch 来监听 props 的值,改变时,就重新执行渲染函数;


先贴个效果吧:

下面就代码吧:

父组件中(引用组件)

这里的数据,后台在父组件中去请求后台去;这里不多赘述了哈;

 <div class="charts_box" v-if=" active == 1"><div class="charts" v-for="(item,index) in echartsList" :key="index"><EchartsBar :data="item" /></div>
</div>

echarts 组件

<template><div><div class="charts_item"><div class="echartsBar"><div ref="chart" style="width:140px;height:140px"></div></div><div class="info"><p>{{ this.data.residue }}</p><span v-if="data.name == 'CPU资源剩余量'">核</span><span v-else-if=" data.name =='GPU资源剩余量'">TFLOPS</span><span v-else>G</span><p>/</p><p>{{ this.data.total }}</p><span v-if="data.name =='CPU资源剩余量'">核</span><span v-else-if="data.name =='GPU资源剩余量'">TFLOPS</span><span v-else>G</span></div><div class="titleName" v-if="data.name =='CPU资源剩余量'">CPU资源剩余量</div><div class="titleName" v-else-if="data.name =='GPU资源剩余量'">GPU资源剩余量</div><div class="titleName" v-else-if="data.name =='内容资源剩余量'">内容资源剩余量</div><div class="titleName" v-else-if="data.name =='硬盘资源剩余量'">硬盘资源剩余量</div></div></div>
</template><script>
export default {name: "EchartsBar",components: {},props: {data: {type: Object,default: () => {return {name: "请传值",residue: 0,total: 100};}}},data() {return {};},watch: {// 当数据发生改变时,重新渲染echartsdata: {handler() {this.getEchartsData();},deep: true,immediate: true}},mounted() {this.getEchartsData();},methods: {getEchartsData() {const chart = this.$refs.chart;if (chart) {const myChart = this.$echarts.init(chart);const option = {title: {text: Math.round((this.data.residue / this.data.total) * 100) + "%",textStyle: {color: "#333333",fontSize: 18,fontWeight: "normal"},// subtext: "总分:100分",// subtextStyle: {//   color: "#909090"// },// itemGap: -10, // 主副标题距离left: "center",top: "center"},angleAxis: {max: this.data.total, // 满分clockwise: false, // 逆时针// 隐藏刻度线axisLine: {show: false},axisTick: {show: false},axisLabel: {show: false},splitLine: {show: false}},radiusAxis: {type: "category",// 隐藏刻度线axisLine: {show: false},axisTick: {show: false},axisLabel: {show: false},splitLine: {show: false}},polar: {center: ["50%", "50%"],radius: "160%" //图形大小},series: [{type: "bar",data: [{name: "资源剩余量",value: this.data.residue,itemStyle: {normal: {color:// 比分比低于30%时,显示橘色,否则显示绿色Math.round((this.data.residue / this.data.total) * 100) >= 30? this.$echarts.graphic.LinearGradient(1, 0, 0, 0, [{offset: 0,color: "#4FE884"},{offset: 1,color: "#00B759"}]): this.$echarts.graphic.LinearGradient(1, 0, 0, 0, [{offset: 0,color: "#ff4f1e"},{offset: 1,color: "#ff8a65"}])}}}],coordinateSystem: "polar",roundCap: true,barWidth: 20,barGap: "-100%", // 两环重叠z: 2},{// 灰色环type: "bar",data: [{value: this.data.total,itemStyle: {color: "#e9f1f3",shadowColor: "rgba(0, 0, 0, 0.2)",shadowBlur: 5,shadowOffsetY: 2}}],coordinateSystem: "polar",roundCap: true,barWidth: 20,barGap: "-100%", // 两环重叠z: 1}]};myChart.setOption(option);window.addEventListener("resize", function() {myChart.resize();});}}}
};
</script>
<style scoped lang='less'>
.charts_item {width: 100%;display: flex;flex-direction: column;justify-content: center;justify-items: center;.echartsBar {margin: 0 auto;}.info {width: 100%;display: flex;justify-content: center;align-items: baseline;color: #333333;padding: 20px 0 10px 0;p {text-align: center;font-size: 20px;font-weight: 500;padding: 0 3px;}span {font-size: 14px;font-weight: 400;}}.titleName {margin: 0 auto;font-size: 16px;color: #333333;text-align: center;}
}
</style>

觉得还行,收藏点赞哈

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~~~~~~~~~~~~~

相关文章:

ECharts 环形图组件封装

一、ECharts引入1.安装echarts包npm install echarts --save2.引入echarts这里就演示全局引入了&#xff0c;挂载到vue全局&#xff0c;后面使用时&#xff0c;直接使用 $echartsimport * as echarts from echarts Vue.prototype.$echarts echarts二、写echarts组件这里演示环…...

c++ 怎么调用python 提供的函数接口

在 C 中调用 Python 函数有多种方法&#xff0c;以下是其中的两种常见方法&#xff1a;使用 Python/C APIPython 提供了 C/C API&#xff0c;可以通过该 API 在 C 中调用 Python 函数。使用这种方法&#xff0c;需要先将 Python 解释器嵌入到 C 代码中&#xff0c;然后可以通过…...

【动态规划】背包问题(01背包,完全背包)

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

记录 UE5 完全重新构建 UE C++项目

不知道搞了什么&#xff0c;C项目的实时代码编译罢工了&#xff0c;搞了半天都修不好&#xff0c;只能又重建了 UE5 版本为 v5.1.1 删除以下文件夹 /Binaries /Intermediate /SavedBinaries 文件夹是编译后的模块 Intermediate 文件夹里是中间层的C代码&#xff0c;完全由ue…...

java版云HIS系统源码 微服务架构支持VUE

云his系统源码 一个好的HIS系统&#xff0c;要具有开放性&#xff0c;便于扩展升级&#xff0c;增加新的功能模块&#xff0c;支撑好医院的业务的拓展&#xff0c;而且可以反过来给医院赋能&#xff0c;最终向更多的患者提供更好地服务。 私信了解更多&#xff01; 本套基于…...

苹果内购支付检验错误码

21000 The request to the App Store didn’t use the HTTP POST request method. 对App Store的请求没有使用HTTP POST请求方法。 21001 The App Store no longer sends this status code. App Store不再发送此状态代码。 21002 The data in the receipt-data property…...

day27_css

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、CSS 零、 复习昨日 见代码 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通…...

智慧赋能,聚力开源——第四届OpenI/O 启智开发者大会开源治理专场顺利举办!

为汇聚国内外知名开源组织共同探讨中国开源生态建设及开源治理相关议题&#xff0c;推进产学研用开源合作&#xff0c;2月24日下午&#xff0c;第四届OpenI/O启智开发者大会在深圳人才研修院智汇中心举办以“构建开源联合体&#xff0c;共建开源生态”为主题的开源治理专场分论…...

Java工程师应该如何成长?

近几年&#xff0c;不少开发者会抱怨“面试造火箭&#xff0c;天天拧螺丝”&#xff0c;每天进行重复业务开发&#xff0c;似乎能力被日常工作限制&#xff0c;无法突破提高。 极客时间《Java 核心技术 36 讲》专栏作者杨晓峰认为&#xff0c;如果处于新手阶段&#xff0c;全面…...

【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法

文章目录熟悉Python懂R语言掌握SQL大数据基础数据库常用类型多表查询更多聚合函数distinctcase when窗口函数动态更新一行变多行调优内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第四章编程技能考查其他内容&#xff1a;【数据分析师求职面试指南】必备基础知识整…...

Maven - Linux 服务器 Maven 环境安装与测试

目录 一.引言 二.安装流程 1.获取安装包 2.解压并安装 3.配置环境 4.mvn 验证 三.测试踩坑 1.Permission denied 2.Plugin or dependencies Error 一.引言 通道机上的 java 项目需要 mvn package 提示没有 mvn 命令&#xff0c;下面记录下安装 maven 的全过程。 二.安…...

5G模块可以注册到4G,不能注册到5G;SIM卡接到5G手机是可以注册到5G网络的?

5G网络覆盖范围较小或者信号质量不佳。在这种情况下&#xff0c;您可以尝试移动到不同的位置&#xff0c;以获得更好的信号质量和覆盖范围。 目前&#xff0c;5G网络已经在全球多个国家和地区推出&#xff0c;并且在不断扩大覆盖范围。以下是一些已经拥有5G覆盖的主要地区&…...

宝塔webhook自动化打包vue项目时,npm不生效问题

文章目录&#x1f4cb;前言&#x1f3af;查看webhook配置的代码&#x1f3af;测试代码&#xff0c;检查输出内容&#x1f3af;解决方法&#x1f4cb;前言 这篇文章主要是记录和解决在宝塔面板中&#xff0c;webhook自动化打包vue项目时&#xff0c;npm不生效问题。说来奇怪&am…...

嵌入式 Linux进程间通信之信号量

目录 一、信号量 1、信号量概述 2、什么是信号量 3、信号量的分类 4、进程获取共享资源要执行的操作 5、System V IPC 机制&#xff1a;信号量 5.1 semget函数 5.2 semop函数 5.3 semctl函数 一、信号量 1、信号量概述 信号量集&#xff1a;由若干个信号组成的集合&a…...

谷粒学院开发(一):基础准备

商业模式 常见商业模式 B2C模式&#xff1a; 两个角色&#xff1a; 管理员&#xff1a;增加&#xff0c;修改&#xff0c;删除普通用户&#xff1a;查询 商家到用户&#xff0c;自己制作大量自有版权的视频&#xff0c;放在自有平台上&#xff0c;让用户付费。 这是这个项目使…...

Photoshop如何安装ZXP扩展插件?

Photoshop如何安装ZXP扩展插件呢&#xff1f;有一些小伙伴不会安装&#xff0c;今天介绍两种安装ZXP扩展的方法&#xff0c;希望对能帮助到大家。方法一&#xff1a;手动安装方式1&#xff09;把下载好的.zxp扩展名改为.zip&#xff0c;然后解压。Windows系统&#xff1a;C:\Us…...

c++面试技巧-基础篇4

1.面试官&#xff1a;在使用继承时需要注意哪些问题&#xff1f; 应聘者&#xff1a;在使用继承时需要注意以下内容。 &#xff08;1&#xff09;父类的构造函数和析构函数是不会被继承的&#xff0c;需要重写派生类的构造函数和析构函数。 &#xff08;2&#xff09;派生类…...

openEuler用户软件仓(EUR)介绍

什么是 EUR EUR(openEuler User Repo)是openEuler社区针对开发者推出的个人软件包托管平台&#xff0c;目的在于为开发者提供一个易用的软件包分发平台。 链接&#xff1a;https://eur.openeuler.openatom.cn/ 为什么我们需要 EUR 在操作系统的世界&#xff0c;软件包是一等…...

MySQL的图形化界面开发工具DataGrip的下载安装

在日常的开发中&#xff0c;会借助于MySQL的图形化界面&#xff0c;来简化开发&#xff0c;提高开发效率。目前mysql主流的图形化界面工具&#xff0c;有Navicat、SQLyog、DataGrip等&#xff0c;最后一种DataGrip&#xff0c;这种图形化界面工具&#xff0c;功能更加强大&…...

Azure Portal 访问安全性增强

Azure Portal 访问安全性增强客户需求如何设置账号&#xff08;包括Admin&#xff09;定期修改密码&#xff0c;例如强制每90天必须修改密码如何设定账号密码的复杂性要求如何设定限制访问Azure Portal的源IP Address客户需求 为了增强访问Azure Portal的安全性&#xff0c;希…...

4步突破AI算法学习瓶颈:用Excel可视化打开深度学习黑箱

4步突破AI算法学习瓶颈&#xff1a;用Excel可视化打开深度学习黑箱 【免费下载链接】ai-by-hand-excel 项目地址: https://gitcode.com/gh_mirrors/ai/ai-by-hand-excel 传统AI算法学习常陷入"公式理解难、数据流向抽象、参数调整盲目"的三重困境&#xff0c…...

LIN总线测试避坑指南:为什么你的校验和测试总通不过?从经典型到增强型的实战解析

LIN总线校验和测试全攻略&#xff1a;从算法原理到故障排查的深度实践 在汽车电子系统的开发与测试中&#xff0c;LIN总线作为CAN总线的补充&#xff0c;广泛应用于车门模块、座椅控制、空调系统等对带宽要求不高的场景。而校验和作为LIN报文数据完整性的重要保障&#xff0c;其…...

DanKoe 视频笔记:生活哲学:理解生活的三个阶段

在本节课中&#xff0c;我们将学习一个关于个人成长与生活节奏的框架。通过理解“强度”、“一致性”和“好奇心”这三个循环往复的阶段&#xff0c;你可以更好地定位自己当前的状态&#xff0c;并学会顺应而非对抗生活的自然周期&#xff0c;从而减少迷茫&#xff0c;更有效地…...

别再乱用.pem和.key了!用ASN.1 Editor手把手拆解RSA私钥的PKCS#8格式(附OpenSSL 3.1验证)

从文件后缀到密钥本质&#xff1a;用ASN.1 Editor透视RSA私钥的PKCS#8结构 当你在终端输入openssl genpkey -algorithm RSA生成密钥对时&#xff0c;是否曾好奇过.pem文件里那些看似随机的字符究竟隐藏着什么秘密&#xff1f;面对invalid key format的错误提示&#xff0c;又是…...

如何在10分钟内实现AI助手与Figma的无缝协作?TalkToFigma Desktop完整指南

如何在10分钟内实现AI助手与Figma的无缝协作&#xff1f;TalkToFigma Desktop完整指南 【免费下载链接】cursor-talk-to-figma-mcp Cursor Talk To Figma MCP 项目地址: https://gitcode.com/GitHub_Trending/cu/cursor-talk-to-figma-mcp 您是否厌倦了在AI编程工具和Fi…...

从零开始:SpaCy安装与模型下载的完整流程(含版本查询技巧)

从零开始&#xff1a;SpaCy安装与模型下载的完整流程&#xff08;含版本查询技巧&#xff09; 自然语言处理&#xff08;NLP&#xff09;正在改变我们与计算机交互的方式&#xff0c;而SpaCy作为这一领域的明星工具库&#xff0c;以其高效性和易用性赢得了众多开发者的青睐。无…...

2026 年智慧工地排名榜单第一|山东建安物联科技有限公司

2026 年度智慧工地综合实力榜单正式揭晓&#xff0c;山东建安物联科技有限公司&#xff08;大建安&#xff09;凭借标准引领、技术实力与标杆项目&#xff0c;登顶全国榜首&#xff0c;成为行业公认的智慧工地领军企业。公司打造的中建八局烟台崆峒胜境项目&#xff0c;获评国家…...

维普AIGC检测降AI率全流程攻略:从70%降到10%以下实操分享

维普AIGC检测降AI率全流程攻略&#xff1a;从70%降到10%以下实操分享 说一个最近碰到的真事。我们实验室一个师弟&#xff0c;论文用维普查了AIGC检测&#xff0c;结果出来AI率72.4%。他当场就懵了——因为他确实有用AI辅助写了一些段落&#xff0c;但自认为改了挺多的&#xf…...

自然滚动的终结:Scroll Reverser如何重构输入设备交互逻辑

自然滚动的终结&#xff1a;Scroll Reverser如何重构输入设备交互逻辑 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在追求无缝人机交互的今天&#xff0c;macOS系统中输入设备…...

生成式AI欺诈来袭,什么样的IP数据接口才能筑起防线?

某电商平台的风控系统发出预警&#xff1a;一个“新用户”正在批量下单高价商品&#xff0c;收货地址遍布全国&#xff0c;支付方式各不相同。但奇怪的是&#xff0c;这些订单的浏览行为、停留时间、点击轨迹几乎完全一致——这不是真人&#xff0c;而是生成式AI模拟的虚假用户…...