使用Vue3绘制甘特图

1.导入Dhtmlx-gantt库

npm install dhtmlx-gantt

附官网地址:Gantt Docs (dhtmlx.com)
网站不是国内的,全英文的,有时候网络连接不好会导致使用它的api导出png、pdf功能失效,甘特图绘制库是导入本地的,不受影响。

我下面讲的都是免费功能,付费功能我没去了解。

2.在vue文件中导入gantt

<template> 
 <div ref="gantt" class="g"></div>
</template>
<script>
  import { gantt } from "dhtmlx-gantt";
  import "dhtmlx-gantt/codebase/dhtmlxgantt.css";
</script>

3.具体配置,放在vue的mounted周期里

下面我列几个常用的:

      //gantt图任务悬浮窗位置,自己调一个合适的
      gantt.config.tooltip_offset_x = 0;
      gantt.config.tooltip_offset_y = 0;

      //激活列表展开、折叠功能
      gantt.config.open_split_tasks = true;

      //创建新事件通过点击”+“打开灯箱,灯箱就是输入框和修改框
      gantt.config.details_on_create = true;

      //甘特图图表宽度自适应
      gantt.config.autofit = true;

      //用户可以通过拖拽调整行高
      gantt.config.resize_rows = true;

      //允许重新排序任务,同时保存它们的树级位置。例如,子任务永远不会成为父任务
      gantt.config.order_branch = true;

      //新增空白列后新增项目
      //gantt.config.placeholder_task = true;

      //图标刷新后位置不变
      gantt.config.preserve_scroll = true;

      //启用将任务的开始和结束日期四舍五入到最接近的刻度
      gantt.config.round_dnd_dates = true;

      //开启只读模式
      gantt.config.readonly = true;

      //设置甘特图表头高度
      gantt.config.scale_height = 100;

      //是否显示依赖连线(取消)
      gantt.config.show_links = true;

      //点击表头可排序
      gantt.config.sort = true;

      //初始化甘特图
      gantt.init(this.$refs.gantt);

4.修改列表展示的成员,也放在mounted里

name是变量名,label是在页面展示的内容

gantt.config.columns = [
    {name:"text",       label:"Task name",  width:"*", tree:true },
    {name:"start_date", label:"Start time", align:"center" },
    {name:"duration",   label:"Duration",   align:"center" },
    {name:"add",        label:"",           width:44 }
];

5.自定义灯箱,任务输入框,也放在mounted里

gantt.config.lightbox.sections = [
    {name:"description", height:38, map_to:"text", type:"textarea",focus:true},                                                                  
    {name:"time", height:72, type:"duration", map_to:"auto"}
];

map_to与columns里的name对应

name - (string)节的名称(根据该名称,dhtmlxGantt将从区域设置中获取节的标签)。标签集合)。例如,对于时间部分,dhtmlxGantt将获取存储为gantt.locale.labels.section_time的标签。
Map_to - (string)将映射到节的数据属性的名称。
Type -(字符串)节控件(编辑器)的类型。
height-(数字)部分的高度。不用于复选框和单选部分。
Focus -(布尔值)如果设置为true,则该部分将聚焦于打开灯箱

设置灯箱的中文展示

gantt.locale.labels.section_start_date = "计划开始时间";

section_后面跟light的name 名称

6.导入数据

gantt.parse(JSON.stringify(project);

7.导出,官方的接口偶然会抽风

1.开启服务,放mounted里

    gantt.plugins({
        export_api: true
    });

2.弄个按钮调用一下接口 

gantt.exportToPNG({data:project.value});

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 和 Echarts 都是非常流行的前端框架和库,用于数据可视化和构建交互式应用程序。下面是如何在 Vue使用 Echarts 画甘特图的简单步骤: 1. 安装 Echarts 库 在 Vue 项目中使用 Echarts,需要先安装 Echarts 库。可以使用 npm 或 yarn 进行安装: ```npm install echarts --save``` 或 ```yarn add echarts``` 2. 导入 Echarts 库 在 Vue 组件中,需要导入 Echarts 库,并创建一个实例,例如: ```javascript import echarts from 'echarts' export default { data(){ return { chart: null } }, mounted(){ this.createChart() }, methods: { createChart(){ this.chart = echarts.init(this.$refs.chart) // 在这里配置甘特图的数据和样式 } } } ``` 3. 配置甘特图数据和样式 通过 Echarts 的 API,可以配置甘特图的数据和样式。例如: ```javascript createChart(){ this.chart = echarts.init(this.$refs.chart) this.chart.setOption({ tooltip: { formatter: function (params) { var duration = params.value[2] - params.value[1]; return params.name + ': ' + params.value[1] + ' - ' + params.value[2] + '<br/>' + 'Duration: ' + duration + ' days'; } }, xAxis: { scale: true, min: new Date(2017, 0, 1).getTime(), max: new Date(2017, 4, 1).getTime(), type: 'time', boundaryGap : false }, yAxis: { data: ['Planning', 'Implementation', 'Testing'] }, series: [{ name: 'Project Plan', type: 'custom', renderItem: function (params, api) { var yValue = api.value(0); var start = api.coord([api.value(1), yValue]); var end = api.coord([api.value(2), yValue]); var height = api.size([0, 1])[1] * 0.6; return { type: 'rect', shape: echarts.graphic.clipRectByRect({ x: start[0], y: start[1] - height / 2, width: end[0] - start[0], height: height }, { x: params.coordSys.x, y: params.coordSys.y, width: params.coordSys.width, height: params.coordSys.height }), style: api.style() }; }, encode: { x: [1, 2], y: 0 }, data: [ ['Planning', new Date(2017, 1, 1), new Date(2017, 2, 3)], ['Implementation', new Date(2017, 2, 3), new Date(2017, 3, 20)], ['Testing', new Date(2017, 3, 20), new Date(2017, 4, 1)] ] }] }) } ``` 在这个例子中,我们通过 Echarts 的 API,指定了甘特图的数据和样式。例如,我们指定了 x 轴的时间范围和 y 轴的项目阶段。然后,我们创建了一个自定义的渲染项,用于绘制甘特图的条形。最后,我们将这个渲染项添加到了甘特图的 series 中。 以上就是使用 Vue 和 Echarts 画甘特图的简单步骤。希望这个例子能够帮助你更好地理解如何在 Vue使用 Echarts。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值