Vue甘特图vxe-gantt使用(一)年视图渲染
在项目管理场景中,甘特图的时间跨度往往长达数年甚至十年以上。vxe-gantt 提供了年视图(year),让你可以清晰展示长期任务的规划和进度。本文介绍年视图的两种使用方式:默认模式和精确模式,并通过示例对比它们的区别与应用场景。
概述
vxe-gantt 通过 taskViewConfig.scales 配置项控制时间轴的展示粒度。当设置为 ['year'] 时,甘特图以“年”为最小时间单位进行渲染。
| 配置项 | 值 | 说明 |
|---|---|---|
| taskViewConfig.scales | ['year'] | 以年为维度渲染时间轴,每个单元格代表一年。 |
| taskViewConfig.viewStyle.cellWidth | 数值(如 120) | 每个年份单元格的宽度(单位:px)。 |
| taskConfig.dateFormat | 日期格式字符串 | 控制日期解析精度,决定甘特条在单元格内的精确位置。 |
适用场景:跨年度的大型工程规划、产品路线图、长期战略项目等。
默认模式:以年为粒度渲染
在默认模式下,甘特图仅解析任务的 年份(yyyy),每个单元格对应一整年。任务条以年份为单位在时间轴上定位,不区分具体的月份或日期。
| 特点 | 说明 |
|---|---|
| 简单直观 | 无需关心具体日期,只看年份即可。 |
| 性能更优 | 按年渲染,单元格数量少,滚动流畅。 |
| 精度有限 | 无法区分同一年的不同月份或季度。 |
| 适用场景 | 宏观规划、高层汇报、年度里程碑展示。 |
<template>
<div>
<vxe-gantt v-bind="ganttOptions">vxe-gantt>
div>
template><script setup>
import { reactive } from 'vue'const ganttOptions = reactive({
border: true,
showOverflow: true,
cellConfig: {
height: 80
},
taskBarConfig: {
showProgress: true,
showContent: true,
barStyle: {
round: true,
bgColor: '#f56565',
completedBgColor: '#65c16f'
}
},
taskViewConfig: {
scales: ['year'],
tableStyle: {
width: 320
},
viewStyle: {
cellWidth: 120
}
},
columns: [
{ type: 'seq', field: 'seq', width: 70 },
{ field: 'title', title: '任务名称' },
{ field: 'start', title: '开始时间', width: 100 },
{ field: 'end', title: '结束时间', width: 100 }
],
data: [
{ id: 10001, title: 'A项目', start: '2024-02-26', end: '2025-05-03', progress: 90 },
{ id: 10002, title: '城市道路修理进度', start: '2025-03-03', end: '2027-08-18', progress: 70 },
{ id: 10003, title: 'B大工程', start: '2026-05-28', end: '2029-10-11', progress: 90 },
{ id: 10004, title: '超级大工程', start: '2028-08-11', end: '2032-11-18', progress: 80 }
]
})
script>
精确模式
通过设置 taskConfig.dateFormat,可以指定日期解析格式,让甘特条在单元格内按实际开始/结束日期精确显示进度。即使是年视图,也能在单元格内呈现出任务在一年中的具体起止位置。
注意:精确模式下,任务的 start 和 end 字段必须与 dateFormat 格式保持一致。
| 特点 | 说明 |
|---|---|
| 精度高 | 可精确到月或日,甘特条位置与实际日期对应。 |
| 视觉更细腻 | 单元格内能直观看出任务在年内的分布。 |
| 数据要求更高 | 日期字段必须包含完整的年月日信息。 |
| 适用场景 | 详细进度跟踪、需要区分年内时间点的场景。 |
<template>
<div>
<vxe-gantt v-bind="ganttOptions">vxe-gantt>
div>
template><script setup>
import { reactive } from 'vue'const ganttOptions = reactive({
border: true,
showOverflow: true,
cellConfig: {
height: 80
},
taskConfig: {
dateFormat: 'yyyy-MM-dd'
},
taskBarConfig: {
showProgress: true,
showContent: true,
barStyle: {
round: true,
bgColor: '#f56565',
completedBgColor: '#65c16f'
}
},
taskViewConfig: {
scales: ['year'],
tableStyle: {
width: 320
},
viewStyle: {
cellWidth: 120
}
},
columns: [
{ type: 'seq', field: 'seq', width: 70 },
{ field: 'title', title: '任务名称' },
{ field: 'start', title: '开始时间', width: 160 },
{ field: 'end', title: '结束时间', width: 160 }
],
data: [
{ id: 10001, title: 'A项目', start: '2024-02-26', end: '2025-05-03', progress: 90 },
{ id: 10002, title: '城市道路修理进度', start: '2025-03-03', end: '2027-08-18', progress: 70 },
{ id: 10003, title: 'B大工程', start: '2026-05-28', end: '2029-10-11', progress: 90 },
{ id: 10003, title: '超级大工程', start: '2028-08-11', end: '2032-11-18', progress: 80 }
]
})
script>
两种模式对比
| 对比维度 | 默认模式 | 精确模式 |
|---|---|---|
| 日期解析 | 仅解析年份(yyyy) | 按 dateFormat 解析(如 yyyy-MM-dd) |
| 甘特条精度 | 以年为单位,占据整年位置 | 精确到月/日,在单元格内按比例定位 |
| 数据字段要求 | start/end 至少包含年份 | start/end 必须包含完整的月/日信息 |
| 视觉表现 | 甘特条左对齐年份起始位置 | 甘特条根据实际日期在单元格内偏移 |
| 性能开销 | 较低 | 稍高(需要更精细的日期计算) |
| 典型场景 | 高层规划、年度概览 | 执行跟踪、详细排期 |
- vxe-gantt 的年视图提供了两种使用模式:
- 默认模式:简单直观,以年为粒度展示任务,适合宏观规划场景。
- 精确模式:通过 taskConfig.dateFormat 指定日期精度,在年视图内精确定位任务起止,适合需要细粒度展示的跟踪场景。
可根据实际业务需求,在“简洁性”与“精确性”之间选择合适的模式。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Vue应用中异步更新性能问题的优化策略详解
先来看一个令许多开发者感到困惑的场景:明明修改了数据,DOM 却“毫无反应”,无法获取最新的高度,也无法计算正确的坐标。这并非 Vue 的缺陷,反而是它精心设计的性能优化策略。核心在于——你需要学会与它“异步更新”的特性协作,而非硬碰硬。 所谓的“异步更新性能问题”,本质上是一种认知偏差。Vue 的
如何避免原型对象挂载大体积动态数组内存污染
原型链上的大数组:一个隐蔽的内存冲击波 先给个核心判断:直接在原型对象上挂载一个大体积动态数组,这既不是传统意义上的内存“污染”,也不是安全漏洞那种“污染”,而是一种相当隐蔽但后果严重的内存管理失当。它会导致所有实例共享同一份数据,而且正因为生命周期跟整个原型链绑定得太紧,垃圾回收器(GC)根本看不
利用堆栈信息精准定位显式绑定错误对象致未定义异常
深入追踪:显式绑定传错对象引发的未定义异常 说实话,这类问题在JavaScript开发中相当常见——显式绑定传错了对象,然后方法执行时静默失败、访问undefined、或者抛出TypeError。但真正的难点不在于“报了什么错”,而在于“到底是哪个对象被绑错了”。要解决它,需要跳出堆栈的表层报错信息
ES模块中默认导出和具名导出的执行上下文
export default 与具名导出在 ES Module 中的行为机制截然不同,核心差异不在于“值如何传递”,而在于绑定如何建立以及导入时如何使用。先给出总结性结论,再逐一详细拆解。 export default 是一种语法糖,而非真正的变量声明 这种设计容易引起误解。实际上,export d
详解HTML中iframe标签loading=lazy属性实现嵌入内容懒加载方法
先聊聊 loading= "lazy " 这个属性——它本意是让 iframe 实现延迟加载,但实际落地时常常“失效”。这并非程序漏洞,而是浏览器内置的防御机制:只有所有条件同时触发,它才会真正推迟资源请求。比如 src 必须是跨域地址(类似 https: widget example com emb
- 日榜
- 周榜
- 月榜
相关攻略
2026-07-03 07:00
2026-07-03 07:00
2026-07-03 07:00
2026-07-03 07:00
2026-07-03 06:59
2026-07-03 06:59
2026-07-03 06:59
2026-07-03 06:59
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

