uni-app:服务器端数据绘制多个echarts图标(renderjs解决手机端无法显示问题)

news2024/11/24 17:24:30

效果

代码 

<template>
	<view>
		<view :prop="option1" :change:prop="echarts.updateEcharts1" id="echarts1"
			class="echarts"></view>
		<view :prop="option2" :change:prop="echarts.updateEcharts2" id="echarts2"
			class="echarts"></view>
	</view>

</template>

<script>
	export default {
		data() {
			return {
				option1: '',
				option2: '',
			}
		},
		mounted() {
			this.getData(); // 在组件挂载后调用获取数据的方法
		},
		methods: {
			getData() {
				uni.request({
					url: getApp().globalData.position + 'Other/select_sale_ekanbaninfo',
					data: {},
					header: {
						"Content-Type": "application/x-www-form-urlencoded"
					},
					method: 'POST',
					dataType: 'json',
					success: res => {
						//行1:年月日总额统计
						this.line1_info = res.data;
						//行2:周统计
						var weekinfo = res.data.week_info;
						this.weekinfo = weekinfo;
						//行2:月统计
						var monthinfo = res.data.month_info;
						this.monthinfo = monthinfo;
						//行2:年统计
						var yearinfo = res.data.year_info;
						this.yearinfo = yearinfo;
						console.log(this.yearinfo)
						//显示图表
						this.echart();
					},
					fail(res) {
						console.log("查询失败")
					}
				});
			},
			echart() {
				//月统计
				// 提取日期和对应的值
				var dates1 = this.monthinfo.date;
				var values1 = this.monthinfo.total_amount;
				var months1 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
				var months1_chinese = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
				this.option1 = {
					//配置网格组件,用于定义图表的位置和大小
					grid: {
						top: '15%', // 增加top的值来创建间距
						left: '2%',
						right: '2%',
						bottom: '2%', // 增加bottom的值来创建间距
						containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
					},
					color: ['#5588d4'],
					tooltip: {
						trigger: 'item',
						axisPointer: {
							type: 'line'
						},
						formatter: function(params) {
							var value = values1[params.dataIndex];
							var date = dates1[params.dataIndex];
							var month = months1_chinese[params.dataIndex];
							var marker = params.marker; // 添加marker(小圆点)
							return marker + ' ' + date + '<br/>' + month + ' : ' + value + '万元';
						}
					},
					xAxis: {
						// name: '日期',
						data: months1,
						axisLine: {
							show: false // 隐藏纵坐标轴的横线
						},
						//隐藏小刻度短线
						axisTick: { // x轴刻度相关配置
							show: false, // 是否显示x轴刻度线
						},
						nameTextStyle: {
							fontSize: 12 // 设置横轴名称字体大小为12
						}
					},
					yAxis: {
						name: '金额(万元)',
						splitLine: {
							show: false // 隐藏纵坐标轴的背景横线
						},
						axisLine: {
							show: false // 隐藏纵坐标轴的竖线
						},
						//隐藏小刻度短线
						axisTick: { // x轴刻度相关配置
							show: false, // 是否显示x轴刻度线
						},
						axisLabel: {
							fontSize: 12 // 设置横轴标签字体大小为12
						},
						nameTextStyle: {
							fontSize: 12 // 设置横轴名称字体大小为12
						}
					},
					series: [{
						barWidth: '6',
						name: '销量',
						type: 'bar',
						data: values1,
						itemStyle: {
							show: true,
							position: 'top',
							textStyle: {
								// color: '#515dc3',
								fontSize: 12
							}
						}
					}]
				}
				//近五年年统计
				// 提取日期和对应的值
				var dates2 = this.yearinfo.date;
				var values2 = this.yearinfo.total_amount;
				// 进行图表的配置和数据处理
				this.option2 = {
					//配置网格组件,用于定义图表的位置和大小
					grid: {
						top: '15%', // 增加top的值来创建间距
						left: '2%',
						right: '2%',
						bottom: '2%', // 增加bottom的值来创建间距
						containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
					},
					color: ['#71aa77'],
					tooltip: {
						trigger: 'item',
						axisPointer: {
							type: 'line'
						},
						formatter: function(params) {
							var value = values2[params.dataIndex];
							var date = dates2[params.dataIndex];
							var marker = params.marker; // 添加marker(小圆点)
							return marker + ' ' + date + '年' + '<br/>' + value + '万元';
						}
					},
					xAxis: {
						// name: '日期',
						data: dates2,
						axisLine: {
							show: false // 隐藏纵坐标轴的横线
						},
						//隐藏小刻度短线
						axisTick: { // x轴刻度相关配置
							show: false, // 是否显示x轴刻度线
						},
						nameTextStyle: {
							fontSize: 12 // 设置横轴名称字体大小为12
						}
					},
					yAxis: {
						name: '金额(万元)',
						splitLine: {
							show: false // 隐藏纵坐标轴的背景横线
						},
						axisLine: {
							show: false // 隐藏纵坐标轴的竖线
						},
						//隐藏小刻度短线
						axisTick: { // x轴刻度相关配置
							show: false, // 是否显示x轴刻度线
						},
						axisLabel: {
							fontSize: 12 // 设置横轴标签字体大小为12
						},
						nameTextStyle: {
							fontSize: 12 // 设置横轴名称字体大小为12
						}
					},
					series: [{
						barWidth: '8',
						name: '销量',
						type: 'bar',
						data: values2,
						itemStyle: {
							normal: {
								label: {
									show: true,
									position: 'top',
									textStyle: {
										// color: '#515dc3',
										fontSize: 12
									}
								}
							}
						}
					}]
				}


			}
		}
	}
</script>
<!-- 指定脚本类型模块为echarts,语言为renderjs -->
<script module="echarts" lang="renderjs">
	let myChart1
	let myChart2
	export default {
		mounted() {
			// 首先判断window.echarts是否存在,如果存在则调用initEcharts1方法进行初始化。
			if (typeof window.echarts === 'function') {
				this.initEcharts1()
				this.initEcharts2()
			} else {
				// 如果不存在,则动态创建一个<script>标签,并设置其src属性为static/js/echarts.js,然后在加载完成后调用initEcharts方法。
				// 动态引入较大类库避免影响页面展示
				const script = document.createElement('script')
				script.src = 'static/js/echarts.js'
				script.onload = function() {
					this.initEcharts1()
					this.initEcharts2()
				}.bind(this)
				document.head.appendChild(script)
			}
		},
		methods: {
			initEcharts1() {
				myChart1 = echarts.init(document.getElementById('echarts1'))
			},
			initEcharts2() {
				myChart2 = echarts.init(document.getElementById('echarts2'))
			},
			updateEcharts1(newValue, oldValue, ownerInstance, instance) {
				if (myChart1 != undefined) {
					myChart1.setOption(newValue)
				}
			},
			updateEcharts2(newValue, oldValue, ownerInstance, instance) {
				if (myChart2 != undefined) {
					myChart2.setOption(newValue)
				}
			},
		}
	}
</script>

<style>
	.echarts {
		width: 100%;
		height: 300px;
	}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞轮储能系统的建模与Simulink仿真(永磁同步电机作为飞轮驱动电机)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

termius mac版无需登录注册直接永久使用

1. 下载地址&#xff1a;termius下载 2. 解压安装 3. 当出现 “termius”已损坏,无法打开 则输入以下命令即可&#xff1a;sudo xattr -r -d com.apple.quarantine /Applications/Termius.app 最后去 系统设置-> 隐私与安全性-> 仍要打开 4. 删除app-update.yml文件&…

ICCV23中的域泛化相关研究

ICCV23中的域泛化相关研究 【OCR】Order-preserving Consistency Regularization for Domain Adaptation and Generalization【iDAG】iDAG: Invariant DAG Searching for Domain Generalization【RIDG】Domain Generalization via Rationale Invariance【3DLabelProp】Domain G…

一张图搞定英文星期、月份、季节总也搞不定的星期,月份,季节,一张图搞定,还有必用的常见搭配,再也不担心用错介词了~

一张图搞定英文星期、月份、季节 总也搞不定的星期&#xff0c;月份&#xff0c;季节&#xff0c;一张图搞定&#xff0c;还有必用的常见搭配&#xff0c;再也不担心用错介词了~

无序数组计算排序后最大相邻差

如题目所示&#xff0c;给定数组[2,6,3,4,5,10,9]&#xff0c;排序后的最大相邻差为9-63。想必你想到的方法是先运用冒泡或者快速排序&#xff0c;先将数组进行排序&#xff0c;然后循环求出来最大相邻差。这个时间复杂度为nlogn。 我们可以使用桶排序的方式计算最大相邻差&…

prettier代码格式化配置文件

项目默认配置文件 自定义配置文件

ubuntu系统开机黑屏(只显示logo、左上角光标闪烁)问题

问题背景 在使用pycharm的时候&#xff0c;我使用了pycharm的快捷键ctrlaltF7&#xff0c;结果进入了ubuntu的ttf界面&#xff0c;由于之前不知道这个东西&#xff0c;百度一顿乱搜&#xff0c;以为显卡驱动出问题了&#xff0c;就把驱动删了&#xff0c;其实我完全可以ctrlal…

[计算机入门] Windows附件程序介绍(游戏类)

3.16 Windows附件程序介绍(游戏类) 3.16.1 扫雷&#xff1a;MineSweeper.exe 扫雷是一款经典的单人益智游戏&#xff0c;最初于1990年代由微软公司首次发布在Windows操作系统上。它成为了Windows自带游戏程序的一部分&#xff0c;并广受欢迎。 游戏的目标是通过逻辑和推理&am…

跨考408的C语言需要什么水平?

跨考408的C语言需要什么水平? 其实C语言了解一下就可以了&#xff0c;复习之前可以在b站上面随便找个视频看一下&#xff0c;指针部分重点学习一下就 行&#xff0c;C语言主要是数据结构代码部分的基础&#xff0c;对于跨考生来说&#xff0c;先看一下C语言对数据结构的复习有…

Windows技巧

Windows应用 无限延长Windows10 自动更新时间 管理员身份打开cmd 输入以下代码 这里设置的是3000天&#xff0c;需要恢复更新可以将其设置为1天 reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings” /v FlightSettingsMaxPauseDays /t reg_dword…

理解一致性哈希算法

摘要&#xff1a;一致性哈希是什么&#xff0c;使用场景&#xff0c;解决了什么问题&#xff1f; 本文分享自华为云社区《16 张图解 &#xff5c; 一致性哈希算法》&#xff0c;作者&#xff1a;小林coding。 如何分配请求&#xff1f; 大多数网站背后肯定不是只有一台服务器…

2021年03月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 对于字典infor {“name”:“tom”, “age”:13, “sex”:“male”}&#xff0c;删除"age":13键值对的操作正确的…

06_Node.js服务器开发

1 服务器开发的基本概念 1.1 为什么学习服务器开发 Node.js开发属于服务器开发&#xff0c;那么作为一名前端工程师为什么需要学习服务器开发呢&#xff1f; 为什么学习服务器开发&#xff1f; 能够和后端程序员更加紧密配合网站业务逻辑前置扩宽知识视野 1.2 服务器开发可…

强制删除文件?正确操作方法分享!

“我昨天在删除文件时有个文件一直删除不掉。想用强制删除的方法来把它删掉&#xff0c;应该怎么操作呢&#xff1f;谁能教教我呀&#xff1f;” 在使用电脑的过程中&#xff0c;我们有时候可能会发现文件无论怎么删除都无法删掉&#xff0c;如果我们想要强制删除文件但不知道怎…

selenium-webdriver-Chrome新驱动地址(Chrome115及以上版本)

Chrome115、Chrome116、Chrome117&#xff0c;在旧的链接并没有 新地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/ 参考学习链接&#xff08;我也是根据这个老师的链接学到的&#xff09;&#xff1a;https://www.cnblogs.com/wuxianfeng023/p/1765…

JVM完整图文学习笔记(含拓展知识广度学习)第一章:内存结构

目录 内存结构 程序计数器 概述&#xff1a; 为什么私有化&#xff1f; 性能优化 安全性高 成本较低 为什么程序计数器不会存在内存溢出&#xff1f; 虚拟机栈 概述&#xff1a; 问题辨析&#xff1a; 垃圾回收是否涉及栈内存&#xff1f; 栈内存分配越大越好吗&#xf…

mariadb 错误日志中报错:Incorrect definition of table mysql.column_stats:

数据库错误日志出现此错误原因是因为系统表中字段类型或者数据结构有变动导致&#xff0c;一般是因为升级数据库版本后未同步升级系统表结构。 解决方法&#xff1a; 1.如果错误日志过大&#xff0c;直接删除。 2.执行 mysql_upgrade -u[用户名] -p[密码];&#xff0c;这一步…

计算机考研 | 2017年 | 计算机组成原理真题

文章目录 【计算机组成原理2017年真题43题-13分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2017年真题44题-10分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2017年真题43题-13分】 &#xff08;1…

南美巴西市场最全分析开发攻略,收藏一篇就够了

巴西位于南美洲东部&#xff0c;是南美洲资源最丰富&#xff0c;经济活力和经济实力最强的国家。巴西作为拉丁美洲的出口大国&#xff0c;一直是一个比较有潜力的市场&#xff0c;亦是我国外贸公司和独立外贸人集群的地方。中国长期是巴西主要的合作伙伴&#xff0c;2022年占巴…

探究IO多路复用select/poll/epoll的实现原理及优缺点

IO多路复用 多路指多个文件描述符&#xff0c;复用指使用一个线程。 IO多路复用通俗的理解就是一个线程监视多个文件描述符****&#xff0c;一旦某个文件描述符就绪&#xff0c;就通知应用程序对其进行读写操作。 select select会将三个fd_set文件描述符集合(bitMap),即读集…