Vue3+el-table实现甘特图

Vue3 + el-table实现甘特图效果

代码gitee

整体实现效果如下

进度列,可以通过设置天或小时,切换不同列显示类型。

涉及到的问题
1、通过Worker解决js线程堵塞问题

在根据时间动态生成列时,由于开始时间与结束时间跨度过大时,计算列逻辑,会堵塞js线程,甚至卡死浏览器。通过Worker单独启一个副线程,单独计算列。

在public文件夹下,新增一个columnWorker.js文件

具体实现逻辑:通过不断循环累加开始时间,与结束时间进行比较,生成所需要展示的列。具体代码实现可参考gitee仓库代码。

2、整合接口返回数据,动态适配列

这里也是根据开始时间和结束时间,但是会判断过滤掉时间中没有时分秒的数据。数据处理时机是在方法handleColumn中的回调函数中调用。在Worker方法中会返回当前列所涉及到的列数据,并在handleData方法中进行数据开始时间,结束时间跨度与列时间跨度是否有交集,如果有,则在该条数据中新增字段,该字段就是生成列的数据中key属性值。

剩下的可以clone代码自己看一看,代码逻辑很简单,就没有写备注。如果有问题可以提一提。

相关推荐
摘星编程9 分钟前
OpenHarmony环境下React Native:Loading全屏加载遮罩
javascript·react native·react.js
Amumu1213833 分钟前
Vue Router 和 常用组件库
前端·javascript·vue.js
£漫步 云端彡42 分钟前
Golang学习历程【第八篇 指针(pointer)】
javascript·学习·golang
爱内卷的学霸一枚42 分钟前
现代前端工程化实践:从Vue到React的架构演进与性能优化(7000字深度解析)
前端·vue.js·react.js
极客小云1 小时前
【基于AI的自动商品试用系统:不仅仅是虚拟试衣!】
javascript·python·django·flask·github·pyqt·fastapi
一位搞嵌入式的 genius1 小时前
深入理解浏览器中的 JavaScript:BOM、DOM、网络与性能优化
前端·javascript·网络·性能优化
David凉宸1 小时前
Vue 3生态系统深度解析与最佳实践
前端·javascript·vue.js
BYSJMG1 小时前
大数据分析案例:基于大数据的肺癌数据分析与可视化系统
java·大数据·vue.js·python·mysql·数据分析·课程设计
Highcharts.js1 小时前
用 Highcharts如何创建一个音频图表
javascript·信息可视化·音视频·highcharts·音频图表
摘星编程2 小时前
React Native + OpenHarmony:Stepper步进器组件
javascript·react native·react.js