vue 甘特图组件 vxe-gantt 紧前紧后依赖关系连接线配置详解
2026/9/16 22:18:23 网站建设 项目流程

在项目管理、生产排程、研发计划等场景中,甘特图是展示任务时间线与依赖关系的核心工具。任务依赖关系(即“紧前紧后关系”)决定了任务执行的先后顺序,直接影响项目进度的计算与关键路径的识别。
vxe-gantt 作为 Vxe 生态中的专业甘特图组件,提供了四种标准的依赖关系类型,并通过 links 配置轻松绘制任务之间的连接线。本文将详细解读每种依赖类型的含义,并配合完整代码示例,帮助您快速搭建带依赖关系的甘特图。

类型说明

vxe-gantt 通过枚举 VxeGanttDependencyType 定义了四种依赖类型,与项目管理国际标准一致:

类型值枚举常量含义图示说明
0FinishToStart完成后开始(FS):前置任务完成后,后续任务才能开始。这是最常见、最严格的依赖关系。任务A结束 → 任务B开始
1StartToFinish开始到完成(SF):前置任务开始后,后续任务才能完成。该类型较少使用,常见于某些特殊工序。任务A开始 → 任务B结束
2StartToStart开始后才开始(SS):前置任务开始后,后续任务才能开始。适用于任务可并行启动的场景。任务A开始 → 任务B开始
3FinishToFinish完成到完成(FF):前置任务完成后,后续任务才能完成。常用于需要同步验收的场景。任务A结束 → 任务B结束

在配置 links 时,from 表示前置任务(依赖源),to 表示后续任务(依赖目标)。箭头的方向由 from 指向 to。

核心配置解析

vxe-gantt 通过独立的 links 数组来定义所有依赖连线,每条连线包含三个属性:

links:[{from:10001,to:10002,type:VxeGanttDependencyType.FinishToStart},// ...]
  • from:前置任务的 id(对应 rowConfig.keyField 字段)
  • to:后置任务的 id
  • type:依赖类型(使用枚举值)

组件会自动根据任务的时间范围(start / end)和依赖类型计算连接线的起点与终点,并绘制带箭头的曲线或折线。若依赖关系在时间逻辑上不合理(如 FS 依赖中前置任务结束时间晚于后置任务开始时间),连接线仍会绘制,但会以红色或警告样式提示用户(具体视觉效果取决于主题)。

代码

<template><div><vxe-ganttv-bind="ganttOptions"></vxe-gantt></div></template><scriptsetup>import{reactive}from'vue'import{VxeGanttDependencyType}from'vxe-gantt'constganttOptions=reactive({border:true,height:600,rowConfig:{keyField:'id'// 行主键},taskBarConfig:{showProgress:true,// 是否显示进度条showContent:true,// 是否在任务条显示内容moveable:true,// 是否允许拖拽任务移动日期resizable:true,// 是否允许拖拽任务调整日期barStyle:{round:true,// 圆角bgColor:'#fca60b',// 任务条的背景颜色completedBgColor:'#65c16f'// 已完成部分任务条的背景颜色}},taskViewConfig:{tableStyle:{width:480// 表格宽度}},links:[{from:10001,to:10002,type:VxeGanttDependencyType.FinishToFinish},{from:10004,to:10005,type:VxeGanttDependencyType.StartToStart},{from:10005,to:10006,type:VxeGanttDependencyType.FinishToStart},{from:10013,to:10012,type:VxeGanttDependencyType.StartToFinish}],columns:[{type:'seq',width:70},{field:'title',title:'任务名称'},{field:'start',title:'开始时间',width:100},{field:'end',title:'结束时间',width:100},{field:'progress',title:'进度(%)',width:80}],data:[{id:10001,title:'任务1',start:'2024-03-01',end:'2024-03-04',progress:3},{id:10002,title:'任务2',start:'2024-03-03',end:'2024-03-08',progress:10},{id:10003,title:'任务3',start:'2024-03-03',end:'2024-03-11',progress:90},{id:10004,title:'任务4',start:'2024-03-05',end:'2024-03-11',progress:15},{id:10005,title:'任务5',start:'2024-03-08',end:'2024-03-15',progress:100},{id:10006,title:'任务6',start:'2024-03-10',end:'2024-03-21',progress:5},{id:10007,title:'任务7',start:'2024-03-15',end:'2024-03-24',progress:70},{id:10008,title:'任务8',start:'2024-03-05',end:'2024-03-15',progress:50},{id:10009,title:'任务9',start:'2024-03-19',end:'2024-03-20',progress:5},{id:10010,title:'任务10',start:'2024-03-12',end:'2024-03-20',progress:10},{id:10011,title:'任务11',start:'2024-03-01',end:'2024-03-08',progress:90},{id:10012,title:'任务12',start:'2024-03-03',end:'2024-03-06',progress:60},{id:10013,title:'任务13',start:'2024-03-02',end:'2024-03-05',progress:50},{id:10014,title:'任务14',start:'2024-03-04',end:'2024-03-15',progress:0},{id:10015,title:'任务15',start:'2024-03-01',end:'2024-03-05',progress:30}]})</script>

注意事项与最佳实践

  • 数据一致性
    • links 中的 from / to 值必须在 data 中存在,否则该连线会被忽略或报错。
    • 任务的 start / end 日期格式需与组件默认解析格式一致(示例中为 ‘YYYY-MM-DD’,也可通过 format 配置自定义)。
  • 性能考量
    • 当任务数超过 100 且依赖关系密集时,连接线数量激增(最多可达 N*(N-1)/2 条),可能影响渲染性能。建议仅配置必要的依赖关系,并开启虚拟滚动(scrollY)优化长列表。

vxe-gantt 通过简洁的 links 配置完美支持了项目管理中四种标准的任务依赖类型(FS、SF、SS、FF),并自动绘制连接线,极大降低了甘特图开发的复杂度。配合丰富的交互配置(拖拽、调整、进度展示),可快速构建专业级的项目计划工具。
若您需要更复杂的依赖规则(如滞后/提前量、日历例外),可结合组件的事件监听与自定义计算实现。

https://gantt.vxeui.com

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询