首页 vue3甘特图组件
文章
取消

vue3甘特图组件

基于vue3的极简甘特图组建,支持日程重叠,覆盖,重叠提取自定义展示。

gantt

基于vue3.x开发的精简版甘特图,支持重叠日程展示,支持导出gantt imggantt Excel文件。

vue3-gantt 参考链接
Demo在线预览

使用方式

1
2
3
4
5
6
  <Gantt
    :data="data"
    itemText="项目"
    dateText="日期"
    :dateRangeList="dateRangeList"
  />
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { ref } from 'vue'
import Gantt from 'vue3-gantt'
const dateRangeList = ref(['2022-01-01', '2022-03-05'])
const data = ref([
  {
    type: 'normal',
    color: '',
    name: '项目1',
    schedule: [
      {
        id: 333330,
        name: '900勇士同时在线庆祝活动',
        desc: '这个活动很重要,6666666营收数百万,跨部门合作的一个大项目,BOSS亲自下场坐镇指挥,大家一定要团结一心!',
        backgroundColor: 'rgb(253, 211, 172)',
        textColor: 'rgb(245, 36, 9)',
        days: ["2022-01-15","2022-02-05"]
      },
      {
        id: 555550,
        name: 'XXXXXX',
        desc: '这个活动很重要,6666666营收数百万,跨部门合作的一个大项目,BOSS亲自下场坐镇指挥,大家一定要团结一心!',
        backgroundColor: '#28f',
        textColor: '#fff',
        days: ["2022-02-15","2022-02-25"]
      },
    ],
  },
  {
    type: 'normal',
    color: '',
    name: '流星蝴蝶剑',
    schedule: [
      {
        id: 222221,
        name: '小年活动',
        desc: '这个活动很重要,6666666营收数百万,跨部门合作的一个大项目,BOSS亲自下场坐镇指挥,大家一定要团结一心!',
        backgroundColor: '#482',
        textColor: '#fff',
        days: ["2022-02-25","2022-03-10"]
      }
    ],
  },
])

组件接收参数

参数名类型默认值可选值说明
dataArray[Object][]-甘特图数据
dateRangeListArray[]-当前图表内的日期区间,此数组长度为2,内容为起始时间, 格式为’YYYY-MM-DD’
itemTextStringnull-表头描述文字
dateTextStringnull-表头描述文字
activeDateString今天-当前时间轴高亮显示的一天,(不会覆盖日程样式),’YYYY-MM-DD’格式时间字符串
repeatModeObject见下方-重叠日程展示模式配置
itemWidthNumber40-日期格子的宽度,最小40
itemHeightNumber40-日期格子的高度度,最小40
scheduleTitleFunctionnull-日程上面展示的文本,function接收日程信息为参数,最终使用该方法返回值渲染
borderColorString‘#eee’-表格边框颜色

组件内容宽度需要自行控制把握最小宽度

组件事件

参数名类型默认值可选值说明
scheduleClickFunctionnull-点击日程的回调事件,接收一个日程详情参数
scrollXEndFunctionnull-横向滚动条滚动到底部的事件
scrollYEndFunctionnull-竖向滚动条滚动到底部的事件

data配置 Array[Object]

参数名取值说明
type‘alike’||’normal’项目类型(展示风格)
colorcss颜色格式当前项目背景色, type为’alike’时生效
nameString当前项目名称
scheduleArray[Object]项目日程

schedule 项目日程配置

为了便于业务开发,可以在以下基础上任意拓展字段

参数名说明
id日程全局唯一id
name日程名称
desc日程描述
backgroundColor日程背景色
textColor日程名称展示文字颜色
days日程日期列表Array, 数组内容为合法的连续的日期,日期格式为 YYYY-MM-DD,也可以简写为长度为2的数组,数组内容分别为起始日期

repeatMode配置 Object

参数名可选值默认值说明
mode‘cover’||’extract’‘cover’重叠日程的处理方式,正常覆盖或者单独提取重复日程再组合, cover会忽略repeatMode其余选项
backgroundColorcss颜色格式‘#FFFFCC’extract模式下的背景色
textColorcss颜色格式‘#336666’extract模式下的文字颜色
nameString||Function‘重叠日程’重叠日程的展示文字,Function接收一个list参数,参数为重叠日程Array
descString||Function‘这是多个日程’重叠日程的描述文字,Function接收一个list参数,参数为重叠日程Array

组件实例对外暴露的方法

导出当前甘特图的完整快照图片

1
2
3
4
5
<Gantt
    ref="gantt"
    ...
/>
<button @click="exportImg">下载图片</button>
1
2
3
4
5
const gantt = ref(null)

const exportImg = () => {
  gantt.value.exportImg({ download: true, waterValue: 'YiJio制作' })
}

exportImg 方法接收一个Object, 配置图片的导出行为, exportImg 返回一个Promise, 成功状态会接收到图片的base64值

exportImg Options

参数名可选值默认值说明
downloadBooleantrue是否自动下载图片
waterValueString’’图片水印文字, 为空就不添加水印,暂不支持自定义文字样式

导出当前甘特图Excel

1
2
3
4
5
<Gantt
    ref="gantt"
    ...
/>
<button @click="exportGanttExcel">导出Excel</button>
1
2
3
4
5
const gantt = ref(null)

const exportGanttExcel = () => {
  gantt.value.exportGanttExcel({ fileName: '测试列表' })
}

exportGanttExcel接收一个对象file,配置导出文件的信息

exportExcel Options

参数名可选值默认值说明
fileNameString‘数据’导出文件名称
本文由作者按照 CC BY 4.0 进行授权

白鹭引擎学习笔记

前端开发编码习惯