游乐游手机版
首页/前端开发/文章详情

Vue甘特图vxe-gantt小时视图设置日期轴间隔3小时

时间:2026-07-18 06:41
vxe-gantt小时视图通过scales配置,顶层日期刻度,底层小时刻度并指定step:3,每3小时显示一个刻度,实现短期任务紧凑排期,提升时间粒度精度,适合高精度小时级排期场景。

任务时间跨度一旦压缩到小时甚至分钟级别,默认的日视图或周视图就很难看清细节了。这时候,vxe-gantt 提供的小时视图(hour)配合 step 参数,就能让时间轴的密度变得恰到好处——短期任务的进度展示,紧凑又直观。

核心配置

关键在于 taskViewConfig.scales 的两层配置:顶层用 date 显示日期,底层用 hour 并指定 step: 3,时间轴就会每隔3小时显示一个刻度。举个例子:

 复制代码taskViewConfig: {
  scales: [
    { type: 'date' },        // 顶层:以天为单位
    { type: 'hour', step: 3 } // 底层:每3小时一个刻度
  ]
}

代码

 复制代码<template>
  <div>
    <vxe-gantt v-bind="ganttOptions">vxe-gantt>
  div>
template><script setup>
import { reactive } from 'vue'const ganttOptions = reactive({
  showOverflow: true,
  cellConfig: {
    height: 80
  },
  taskBarConfig: {
    showProgress: true,
    showContent: true,
    barStyle: {
      round: true,
      bgColor: '#f56565',
      completedBgColor: '#65c16f'
    }
  },
  taskViewConfig: {
    scales: [{ type: 'date' }, { type: 'hour', step: 3 }],
    tableStyle: {
      width: 320
    }
  },
  columns: [
    { type: 'seq', field: 'seq', width: 70 },
    { field: 'title', title: '任务名称', minWidth: 140 },
    { field: 'start', title: '开始时间', width: 160 },
    { field: 'end', title: '结束时间', width: 160 }
  ],
  data: [
    { id: 10001, title: '任务R790', start: '2024-03-01 08:30:20', end: '2024-03-01 09:30:30', progress: 100 },
    { id: 10002, title: '任务C30456572349', start: '2024-03-01 00:00:00', end: '2024-03-01 00:00:00', progress: 100 },
    { id: 10003, title: '任务E563', start: '2024-03-01 01:00:00', end: '2024-03-01 01:05:0', progress: 90 },
    { id: 10004, title: '任务P687', start: '2024-03-01 01:20:00', end: '2024-03-01 08:50:00', progress: 80 }
  ]
})
script>

配置说明

配置项说明
scales 第一层{ type: 'date' }顶层以天为刻度单位,显示日期(如 2024-03-01)
scales 第二层{ type: 'hour', step: 3 }底层以小时为单位,每 3 小时显示一个刻度
taskConfig.dateFormat不设置默认解析到秒,精确匹配数据中的时间格式
  • 效果:时间轴上会显示 00:00、03:00、06:00、09:00... 等刻度,任务条根据实际起止时间在单元格内精确定位。

调整更精细的间隔

如果需要更大的间隔(如每 4 小时或 6 小时),只需修改 step 值:

 复制代码// 每4小时间隔
{ type: 'hour', step: 4 }// 每6小时间隔
{ type: 'hour', step: 6 }

通过 scales 中的 step 参数,可以轻松控制小时视图的日期轴密度。对于需要按 3 小时间隔展示任务的场景,只需配置 { type: 'hour', step: 3 } 即可。结合 date 顶层,既能宏观看到日期分布,又能微观观察小时级别的任务细节,非常适合短期密集任务的排期展示。

来源:https://juejin.cn/post/7660367762293522475
上一篇Vue集成Highcharts完整开发指南 下一篇老项目引入TypeScript意外提升全公司代码审查标准
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
如何用JavaScript动态修改页面Meta元数据
前端开发 · 2026-07-18

如何用JavaScript动态修改页面Meta元数据

使用JavaScript可通过document querySelector定位并修改已有meta标签的content属性,或动态创建meta元素插入文档头部。该方法适用于单页应用更新页面描述、OpenGraph及Twitter卡片数据,但搜索引擎爬虫与社交平台通常不执行JS,动态修改对SEO和分享抓取无效,可靠方案仍需服务端渲染或静态生成。

原生HTML模态对话框焦点陷阱无障碍实现原理
前端开发 · 2026-07-18

原生HTML模态对话框焦点陷阱无障碍实现原理

使用`dialog showModal()`可自动实现焦点陷阱与Tab循环,无需JavaScript。纯CSS或`inert`属性无法循环焦点,只有正确声明模态上下文才能满足WCAGA级无障碍标准。

VS Code扩展调试获取当前工作目录与项目根路径
前端开发 · 2026-07-18

VS Code扩展调试获取当前工作目录与项目根路径

在VSCode扩展开发中,`process cwd()`默认指向扩展目录而非用户项目,且不能`chdir`。应使用`vscode workspace workspaceFolders`API动态获取项目根目录,注意处理空值并避免已弃用的`rootPath`。

React Leaflet地图中心与缩放动态控制实战教程完整版
前端开发 · 2026-07-18

React Leaflet地图中心与缩放动态控制实战教程完整版

在React-Leaflet中,通过按钮点击跳转至指定坐标并调整缩放级别,应使用whenCreated获取Leaflet原生地图实例,调用setView或flyTo方法,避免依赖center zoomprops的响应式更新,以确保性能与状态一致性。

如何用事件委托实现动态卡片翻转的原生JS
前端开发 · 2026-07-18

如何用事件委托实现动态卡片翻转的原生JS

针对动态生成的卡片列表,采用事件委托将监听器挂载到父容器,利用事件冒泡精准捕获点击目标。通过class替代重复ID,使用card querySelector()限定局部作用域,配合closest()定位卡片容器,实现翻转与还原功能。该方法避免全局查询与状态污染,确保多卡片独立控制,提升性能与可扩展性。