当前位置: 首页
前端开发
Vue甘特图vxe-gantt使用(一)年视图渲染

Vue甘特图vxe-gantt使用(一)年视图渲染

热心网友 时间:2026-06-29
转载

在项目管理场景中,甘特图的时间跨度往往长达数年甚至十年以上。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 指定日期精度,在年视图内精确定位任务起止,适合需要细粒度展示的跟踪场景。

可根据实际业务需求,在“简洁性”与“精确性”之间选择合适的模式。

来源:https://juejin.cn/post/7654781697330659362

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Vue应用中异步更新性能问题的优化策略详解

Vue应用中异步更新性能问题的优化策略详解

先来看一个令许多开发者感到困惑的场景:明明修改了数据,DOM 却“毫无反应”,无法获取最新的高度,也无法计算正确的坐标。这并非 Vue 的缺陷,反而是它精心设计的性能优化策略。核心在于——你需要学会与它“异步更新”的特性协作,而非硬碰硬。 所谓的“异步更新性能问题”,本质上是一种认知偏差。Vue 的

时间:2026-07-03 07:00
如何避免原型对象挂载大体积动态数组内存污染

如何避免原型对象挂载大体积动态数组内存污染

原型链上的大数组:一个隐蔽的内存冲击波 先给个核心判断:直接在原型对象上挂载一个大体积动态数组,这既不是传统意义上的内存“污染”,也不是安全漏洞那种“污染”,而是一种相当隐蔽但后果严重的内存管理失当。它会导致所有实例共享同一份数据,而且正因为生命周期跟整个原型链绑定得太紧,垃圾回收器(GC)根本看不

时间:2026-07-03 07:00
利用堆栈信息精准定位显式绑定错误对象致未定义异常

利用堆栈信息精准定位显式绑定错误对象致未定义异常

深入追踪:显式绑定传错对象引发的未定义异常 说实话,这类问题在JavaScript开发中相当常见——显式绑定传错了对象,然后方法执行时静默失败、访问undefined、或者抛出TypeError。但真正的难点不在于“报了什么错”,而在于“到底是哪个对象被绑错了”。要解决它,需要跳出堆栈的表层报错信息

时间:2026-07-03 07:00
ES模块中默认导出和具名导出的执行上下文

ES模块中默认导出和具名导出的执行上下文

export default 与具名导出在 ES Module 中的行为机制截然不同,核心差异不在于“值如何传递”,而在于绑定如何建立以及导入时如何使用。先给出总结性结论,再逐一详细拆解。 export default 是一种语法糖,而非真正的变量声明 这种设计容易引起误解。实际上,export d

时间:2026-07-03 07:00
详解HTML中iframe标签loading=lazy属性实现嵌入内容懒加载方法

详解HTML中iframe标签loading=lazy属性实现嵌入内容懒加载方法

先聊聊 loading= "lazy " 这个属性——它本意是让 iframe 实现延迟加载,但实际落地时常常“失效”。这并非程序漏洞,而是浏览器内置的防御机制:只有所有条件同时触发,它才会真正推迟资源请求。比如 src 必须是跨域地址(类似 https: widget example com emb

时间:2026-07-03 06:59
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜