通过el-tab切换Echarts图表显示不全问题

news2024/10/8 22:21:10

一、背景

在让日常开发中很多时候会通过el-tab选项卡方式去分类统计数据,本文我们主要是针对统计中用到了echarts图表,在刚接触时可能会遇到默认选项卡可以正常显示图表数据,但是切换选项卡以后会出现图表大小出现问题,当然原因就是因为切换选项卡时,因为el-tab不显示的tab页样式有一个display: none的,这个属性使得echarts无法获取宽度,导致出错!所以在echarts填充以后并没有实时计算高度,所以导致大小不一致的情况(当然 你可以预先设置长和宽,就不会出现问题),解决这个问题的办法就是让重新加载切换的echart组件即可。

二、解决方案

通过给echarts组件添加v-if,切换选项卡时,动态改变v-if的值即可,v-if为true,会重新加载dom,反之会销毁dom,直接上代码
关键代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完整代码如下

<!-- 项目统计 -->
<template>
	<div class="list-main-content">
		<div class="header-box">
			<div class="header-statis-row">
				<div class="row-item">
					<div class="col-item">
						<div class="item-val">{{ statisModel.talktotal }}</div>
						<div class="item-label">在谈项目数</div>
					</div>
					<div class="divider-column"> </div>
					<div class="col-item">
						<div class="item-val">{{ statisModel.settletotal }}</div>
						<div class="item-label">落户项目数</div>
					</div>
					<div class="divider-column"> </div>
					<div class="col-item">
						<div class="item-val">{{ statisModel.identitytotal }}</div>
						<div class="item-label">认定项目数</div>
					</div>
				</div>
			</div>
		</div>
		<!--数据列表-->
		<div class="content-box" style="align-items:flex-start;">
			<el-tabs v-model="activeName" style="width: 100%;" @tab-click="handleClick">
				<el-tab-pane label="在谈项目" name="first">
					<TalkingStatis v-if="isTalkingStatis" ref="TalkingStatisRef"></TalkingStatis>
				</el-tab-pane>
				<el-tab-pane label="落户项目" name="second">
					<SettleStatis v-if="isSettleStatis" ref="SettleStatisRef"></SettleStatis>
				</el-tab-pane>
				<el-tab-pane label="认定项目" name="third">
					<IdentifyStatis v-if="isIdentifyStatis" ref="IdentifyStatisRef"></IdentifyStatis>
				</el-tab-pane>
			</el-tabs>
		</div>
	</div>
</template>
<script>
	import {
		getCurrentInstance,
		ref,
		reactive,
		toRefs,
		onMounted,
		computed,
		nextTick,
		watch
	} from 'vue';
	import {
		useRouter,
		useRoute
	} from 'vue-router'
	import {
		useStore
	} from 'vuex';
	import {
		getProjectNumber
	} from '@/service/index.js'
	import {
		MessageBox,
		MessageSuccess,
		MessageError,
		FormatDateTime,
		stampToTime2
	} from "@/plugin/utils.js";
	import moment from 'moment'
	import TalkingStatis from './TalkingStatis.vue'
	import SettleStatis from './SettleStatis.vue'
	import IdentifyStatis from './IdentifyStatis.vue'
	export default {
		components: {
			TalkingStatis,
			SettleStatis,
			IdentifyStatis
		},
		setup(props, context) {
			const {
				proxy
			} = getCurrentInstance(); // 获得 vue 实例对象
			const $router = useRouter()
			const $store = useStore()
			const state = reactive({
				isTalkingStatis: true,
				isSettleStatis: false,
				isIdentifyStatis: false,
				activeName: "first",
				part: 'dfc-statistic',
				statisModel: {
					identitytotal: 0,
					settletotal: 0,
					talktotal: 0
				}

			})
			const initData = () => {

				getProjectNumber(state.part).then(res => {
					if (res.data.code == 200) {
						console.log(res, '统计');
						state.statisModel = res.data.data
					}
				})
			}
			const handleClick = (tab, event) => {
				console.log(tab, "tab")
				if (tab.paneName == "first") {
					state.isTalkingStatis = true;

				} else if (tab.paneName == "second") {
					state.isSettleStatis = true;
				} else {
					state.isIdentifyStatis = true;
				}

			}
			onMounted(() => {
				initData();
			});



			return {
				...toRefs(state),
				handleClick
			}
		},
	}
</script>
<style lang="scss" scoped>
	.header-box {
		.header-statis-row {
			@include layout(center, center, column);
			width: 100%;
			background-color: #FFFFFF;
			box-shadow: 2px 2px 4px #e8e4e4;

			.row-item {
				@include layout(center, center, row);
				// background-color: rgb(214, 235, 162);

				.col-item {
					@include wh-size(210px, 80px);
					@include layout(center, center, column);
					margin: 10px;

					.item-label {
						font-size: 18px;
						font-family: Alibaba PuHuiTi;
						font-weight: 500;
						color: #28344A;
						margin-top: 10px;
					}

					.item-val {
						font-size: 30px;
						font-family: DIN;
						font-weight: bold;
						color: #5074F7;
					}
				}

				.divider-column {
					@include wh-size(1px, 44px);
					border-right: 1px solid #99A4C4;


				}
			}
		}
	}

	:deep().el-tabs__content {
		// padding: 32px;
		color: #6b778c;
		font-size: 32px;
		font-weight: 600;
		height: 100%;
	}

	:deep().el-tabs__content {
		overflow: hidden;
		position: relative;
		height: 100%;
	}

	.el-tab-pane {
		height: 93%;
		// height: calc(100vh - 110px);
		overflow-y: auto;
	}

	.el-tabs {
		height: 100%;
	}
</style>

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

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

相关文章

第2集丨webpack 江湖 —— 创建一个简单的webpack工程demo

目录 一、创建webpack工程1.1 新建 webpack工程目录1.2 项目初始化1.3 新建src目录和文件1.4 安装jQuery1.5 安装webpack1.6 配置webpack1.6.1 创建配置文件&#xff1a;webpack.config.js1.6.2 配置dev脚本1.7 运行dev脚本 1.8 查看效果1.9 附件1.9.1 package.json1.9.2 webpa…

MyBatisPlus之DML编程控制

MyBatisPlus之DML编程控制 1. id生成策略控制&#xff08;Insert&#xff09;1.1 id生成策略控制&#xff08;TableId注解&#xff09;1.2 全局策略配置id生成策略全局配置表名前缀全局配置 2. 多记录操作&#xff08;批量Delete/Select&#xff09;2.1 按照主键删除多条记录2.…

【java实习评审】对小说更新时间点的并发压力的短链接接口实现比较到位

大家好&#xff0c;本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块java同学的代码周最佳作品。该同学来自西安邮电大学通信工程专业。本项目亮点难点&#xff1a;1 热门书籍在更新点的访问压力&#xff0c;2 书籍更新通知的及时性和有效性&#xff0c;3 书…

GlobalProtect-点击连接按钮无响应

GlobalProtect-点击连接按钮无响应 解决方案 重启PanGPS服务 点击连接

C++输入字符串函数cin.getline()

1.函数作用 接受一个字符串&#xff0c;可以接收空格并输出。 2.函数的完整形式 cin.getline(字符数组名,字符个数,结束标志) 第三个参数可以省略&#xff0c;当第三个参数省略之后&#xff0c;系统默认为’\0’。 若指定参数“字符个数”为n&#xff0c;则利用cout函数输出…

LiveGBS流媒体平台GB/T28181常见问题-TOKEN有效期是多久如何设置token有效期StreamToken和URLToken

LiveGBS中TOKEN有效期是多久如何设置token有效期StreamToken和URLToken 1、获取TOKEN2、TOKEN有效期3、默认token有效期3、自定义token加密key3.1、token_key3.2、stream_token_key 4、如何配置一直有效的token4.1、URLToken4.2、StreamToken 5、动态有效期6、流地址鉴权开启后…

《微SaaS创富周刊》第9期:如何把创业者访谈,变成年收入100万+美元的生意

导读 大家好&#xff01;第9期《微SaaS创富周刊》面世啦&#xff08;点击这里阅读第1期&#xff09;&#xff0c;感谢大家的关注和阅读&#xff01;本周刊面向独立开发者、早期创业团队&#xff0c;报道他们主要的产品形态——微SaaS如何变现的最新资讯和经验分享等。所谓微Sa…

Pytorch学习笔记1:张量+训练参数传入与处理+制作训练集

文章目录 Pytorch中张量的一些常见函数最基础也最常见的方法关于Indexing, Slicing, Joining, Mutating Ops&#xff08;索引、切片、聚合、旋转&#xff09;随机种子torch.bernoulli(input)torch.normaltorch.rand(size)torch.randn(size)torch.randperm(n) Python--argparse-…

vue3自定义指令 vue中常用自定义指令

文章目录 vue3自定义指令1.什么是自定义指令&#xff1f;2.注册自定义指令2.1 全局注册2.2 局部注册<script setup>中注册&#xff1a;<script>中使用&#xff1a; 3.钩子函数参数详解4.指令传值5.总结 常用自定义指令案例v-longpressv-debounce vue3自定义指令 除…

智能财务分析-亿发财务报表管理系统,赋能中小企业财务数字化转型

对于许多中小企业来说&#xff0c;企业重要部门往往是财务和业务部门。业务负责创收&#xff0c;财务负责控制成本&#xff0c;降低税收风险。但因管理机制和公司运行制度的原因&#xff0c;中小企业往往面临着业务与财务割裂的问题&#xff0c;财务数据不清晰&#xff0c;无法…

2023年下半年广州/深圳软考信息系统项目管理师报名

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…

Vue3 axios数据请求封装

Vue3 axios数据请求封装 环境&#xff1a;vue3tsvite 首先在项目目录下安装axios 运行 npm install axios 成功后在package.json文件会显示。 目录&#xff1a; request.ts文件代码&#xff1a; import axios from axiosconst request axios.create({baseURL:https://api.…

装配木牛前雷达的2023款创维汽车EV6被评为“最强主动安全车型”

近日&#xff0c;全新升级的2023款创维EV6改款车型接受了中国汽车技术研究中心&#xff08;以下简称“中汽中心”&#xff09;的安全碰撞实验。据称&#xff0c;该款车型在主动安全测试中得分率高达98.97%&#xff0c;这近满分的成绩再次刷新了国内主动安全汽车排行榜&#xff…

Android 之 Paint API —— Typeface (字型)

本节带来Paint API系列的最后一个API&#xff0c;Typeface(字型)&#xff0c;由字义&#xff0c;我们大概可以猜到&#xff0c;这个 API是用来设置字体以及字体风格的&#xff0c;使用起来也非常的简单&#xff01;下面我们来学习下Typeface的一些相关 的用法&#xff01; 官方…

右击不显示TortoiseGit图标处理方法

第一种 右键--》TortoiseGIt--》setting--》Icon Overlays--》Status cache&#xff0c;按照下图设置&#xff0c;然后重启电脑。 第二种 进入注册信息&#xff0c;按照步骤找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIden…

CS144学习笔记(1):Internet and IP

1.网络应用 网络应用可以在世界范围内交换数据&#xff0c;例如你可以通过浏览器读取出版社服务器提供的文章。网络应用的基本模型&#xff1a;两台主机各自在本地运行一个程序&#xff0c;程序通过网络来通信。 最常用的通信模型使用双向可靠字节流&#xff0c;通信的两台主机…

我愿称之为最火爆院校!学科评级A+!就业堪比清北!

一、学校及专业介绍 北京邮电大学&#xff08;Beijing University of Posts and Telecommunications&#xff09;&#xff0c;简称北邮&#xff0c;位于北京市&#xff0c;是中华人民共和国教育部直属、工业和信息化部共建的全国重点大学&#xff0c;位列国家“双一流”建设高校…

队列 的初识

Q: 什么是队列&#xff1f; A: 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构&#xff0c;队列可以在任务与任务间、中断和任务间传递信息。 Q: 为什么不使用全局变量&#xff1f; A: 如果使用全局变量&#xff0c;任务1修改了变量 a &am…

IIC外设通信

文章目录 IIC外设简介功能介绍框图简化结构图主机发送流程主机接收流程 IIC外设简介 STM32内部集成了硬件IIC收发电路&#xff0c;可由硬件自动执行时钟生成&#xff0c;起始终止条件生成&#xff0c;应答收发位&#xff0c;数据收发等功能&#xff0c;减轻CPU负担。 功能介绍…