dhtmlxGantt 甘特图 一行展示多条任务类型

效果如图:

后台拿到数据 处理之后如图:

含义:

如上图所示, 如果一行需要展示多个 需要给父数据的那条添加render:split属性,

子数据的parent为父数据的Id即可

切记 父数据的id 别为0 为0 时 会出现错乱

因为有些小伙伴提出分段展示的数据结构还是有点问题,下面展示一个完整的demo

<template>

<div id="gantt" ref="gantt"></div>

</template>

<script>

import { gantt } from 'dhtmlx-gantt';

import "dhtmlx-gantt/codebase/dhtmlxgantt.css";

export default {

name: 'SpeadDomeGantt',

data() {

return {

};

},

mounted() {

this.init()

},

methods: {

init(){

gantt.config.xml_date = "%Y-%m-%d %H:%i";

gantt.config.scale_height = 50 //设置甘特图的表头高度

//鼠标移入展示信息

gantt.plugins({

tooltip: true

})

//时间展示 2021-10-11 07:22

gantt.templates.tooltip_date_format = gantt.date.date_to_str("%Y-%m-%d %H:%i")

//鼠标移入展示信息

gantt.config.readonly = true //甘蔗图只读属性

gantt.config.round_dnd_dates = false //将任务开始时间和结束时间自动"四舍五入'

gantt.config.root_id = "root"

//添加taba栏

gantt.config.columns = [

{name:"name", label:"名称", align: 'center', width: 120},

{name:"age", label:"年龄", align: 'center', width: 120}

]

//禁用拖拽项 拖拽类型

gantt.attachEvent("onBeforeTaskDrag", function(id, mode, e){

var modes = gantt.config.drag_mode;

switch (mode){

case modes.move:

break;

case modes.resize:

break;

case modes.progress:

break;

}

})

gantt.init(this.$refs.gantt)

//模拟数据

let datalist = [

//第一组 //整条数据需要带上render属性 里面多段的数据parent执行整条的id

{

id: 1, name: '小花', age: 18, render: 'split', text: ''

},

{

id: 100, parent: 1, start_date: '2022-08-19 07:20:00', end_date: '2022-08-20 20:00:00',

text: '玩游戏', color: '#F56C6C'

},

{

id: 101, parent: 1, start_date: '2022-08-20 23:20:00', end_date: '2022-08-21 20:00:00',

text: '事情一', color: '#67C23A'

},

{

id: 102, parent: 1, start_date: '2022-08-22 07:20:00', end_date: '2022-08-22 20:00:00',

text: '事情二', color: '#E6A23C'

},

{

id: 103, parent: 1, start_date: '2022-08-23 07:20:00', end_date: '2022-08-24 20:00:00',

text: '事情三', color: '#909399'

},

//第二组

{

id: 2, name: '小草', age: 16, render: 'split', text: ''

},

{

id: 104, parent: 2, start_date: '2022-08-19 02:20:00', end_date: '2022-08-20 18:00:00',

text: '玩游戏', color: '#E6A23C'

},

{

id: 105, parent: 2, start_date: '2022-08-20 22:10:00', end_date: '2022-08-21 10:00:00',

text: '事情四', color: '#909399'

},

{

id: 106, parent: 2, start_date: '2022-08-21 17:20:00', end_date: '2022-08-22 20:00:00',

text: '事情五', color: '#67C23A'

},

{

id: 107, parent: 2, start_date: '2022-08-23 00:20:00', end_date: '2022-08-23 20:00:00',

text: '事情六', color: '#F56C6C'

},

]

gantt.parse({data: datalist})

},

},

};

</script>

<style scoped>

#gantt {

height: 120px;

}

</style>

效果图如下:

ok, 有任何问题请联系我, 尽量给出详细的解答!

相关推荐
事圆则缓21 分钟前
volatile 使用场景全解析:它能保证什么,又解决不了什么
android
蒲公英内测分发1 小时前
智能投影仪参加海外展会,未上架的 Android 配套 App 怎么让客户限时试用?
android
ii_best1 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
终端安全笔记1 小时前
安卓做 MDM 管控,先分清三种注册入口
android·安全·智能手机
乌萨达3 小时前
手机模拟器安卓怎么用?电脑安装应用、玩手游与账号同步指南
android·智能手机·电脑·雷电模拟器
美狐美颜SDK开放平台3 小时前
Android与iOS直播APP美颜有什么区别?视频美颜SDK开发详解
android·ios·音视频·视频美颜sdk
春猿火5 小时前
某市-2026【网安·论道】misc-afterimage_note-wp
android
恋猫de小郭6 小时前
Shopify 回应为什么从 RN 回到原生,为什么不用 KMP ?
android·前端·flutter
fundroid8 小时前
Android AI 开发,真正拉开差距的是工程闭环
android·ai·大模型·agent
脚踏实地,坚持不懈!8 小时前
Android 面试题全解(结合 AOSP 源码 · 截至 Android 17 / API 37)
android