Skip to content

Gantt

甘特图

基础用法

vue
<template>
    <ham-gantt :dataSource="dataSource" :fillMonthNull="1">
        <template #column-head-project="{ row }">
            <el-button v-bind="getIconProp(row)" size="small" circle />
            <div class="link" :title="row.title">
                {{ row.title }}
            </div>
        </template>
    </ham-gantt>
</template>

<script setup>
import { CircleCheck, Warning } from '@element-plus/icons-vue'
import { ref, onMounted } from 'vue'
import axios from 'axios'

// 获取图标配置
const getIconProp = row => {
    const base = {}
    base.icon = row.type === 'warning' ? Warning : CircleCheck
    base.type = row.type
    return base
}

// 初始化
const dataSource = ref([])
onMounted(async () => {
    const result = await axios.post('/docApi/component/gantt')
    dataSource.value = result?.data?.data || []
    console.log(dataSource.value)
})
</script>
<style lang="scss" scoped>
.link {
    cursor: pointer;
    padding-left: 6px;
    font-size: 14px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 5;
    align-items: center;
    word-break: break-all;
    text-overflow: ellipsis;
    box-sizing: border-box;
    &:hover {
        color: var(--el-color-primary);
    }
}
</style>
<template>
    <ham-gantt :dataSource="dataSource" :fillMonthNull="1">
        <template #column-head-project="{ row }">
            <el-button v-bind="getIconProp(row)" size="small" circle />
            <div class="link" :title="row.title">
                {{ row.title }}
            </div>
        </template>
    </ham-gantt>
</template>

<script setup>
import { CircleCheck, Warning } from '@element-plus/icons-vue'
import { ref, onMounted } from 'vue'
import axios from 'axios'

// 获取图标配置
const getIconProp = row => {
    const base = {}
    base.icon = row.type === 'warning' ? Warning : CircleCheck
    base.type = row.type
    return base
}

// 初始化
const dataSource = ref([])
onMounted(async () => {
    const result = await axios.post('/docApi/component/gantt')
    dataSource.value = result?.data?.data || []
    console.log(dataSource.value)
})
</script>
<style lang="scss" scoped>
.link {
    cursor: pointer;
    padding-left: 6px;
    font-size: 14px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 5;
    align-items: center;
    word-break: break-all;
    text-overflow: ellipsis;
    box-sizing: border-box;
    &:hover {
        color: var(--el-color-primary);
    }
}
</style>

属性

属性名说明类型默认值
dataSource绑定数据源IGanttDataColumn[][]
rowWidth单元格的宽度number180
columnWidth首行的宽度number136
columnHeight每行的高度number108
headerHeight标题的高度number72
fillMonthNull首尾留白月number2
title标题string项目

IGanttDataColumn

属性名说明类型默认值
id唯一标识string
title显示标题string
data进度数据IGanttData[][]

IGanttData

属性名说明类型可选值默认值
id唯一标识string
startTime开始时间number
endTime结束时间number
type进度数据stringwarning | danger | primary | info | primary
name显示标题string