Gantt
本文最后更新于:5 个月前
About DHX Gantt
甘特图
属性
必要属性
| 属性名 | 数据类型 | 功能 |
| —- | —- |
| ID | String/number | 任务ID |
| start_date | Date | 计划开始任务的时间 |
| end_date | Date | 计划完成任务的时间 |
| duration | number | 任务持续时间 |
可选属性

常用属性
| 属性名 | 数据类型 | 功能 |
| —- | —- |
| text | string/number/array | 任务名称 |
| progress | number | 任务进度(0-1) |
| end_date | Date | 计划完成任务的时间 |
| duration | number | 任务持续时间 |
| parent | number/string | 父任务ID,不存在就不会在图中呈现该任务|
| open | boolean | 指定任务分支是否将首先打开(以显示子任务)|
Readonly
gantt.config.readonly = true;
代码实例
前端html
<button onclick="ganttinit();">布置计划内容</button>
<button onclick="ganttstart();">开始任务</button>
<script>
gantt.config.date_format = "%Y/%m/%d %H:%i:%s";
gantt.init("gantt_here");
gantt.config.readonly = true;
function ganttinit(){
gantt.parse(getGantt());
}
function ganttstart() {
setInterval(() => {
gantt.parse(getGantt());
}, 1000);
}
</script>
后端
var GanttList = [];
class Gantt {
constructor(id, start_date, end_date, text, progress, parent, open) {
this.id = id;
this.start_date = start_date;
this.end_date = end_date;
this.text = text;
this.progress = progress;
this.parent = parent;
this.open = open;
}
}
//父项目
let gtemp = new Gantt(9999,new Date(PlanStartTime).toLocaleString(),new Date(PlanEndTime).toLocaleString(),Red_result['operationalPlanName'],0,0,true);
GanttList.push(gtemp);
//更新进度
function GetProgress(){
for(let gantt of GanttList){
for(let marker of RedMarkerList){
if(marker.getExtData().taskid === gantt.id && gantt.id != 9999){
//计算当前距离目的地/总距离
let nowdis = AMap.GeometryUtil.distance(marker.getPosition(), marker.getExtData().end)*60*60;
let progress = NumFilter((marker.getExtData().dis-nowdis)/marker.getExtData().dis);
gantt.progress = progress;
}
}
}
return GanttList;
}
//添加子项目
let gtemp = new Gantt(item.assignmentNumber,item.assignmentStartTime,item.assignmentEndTime,item.assignmentName,0,9999,true);
GanttList.push(gtemp);
//返回gantt json数据
function getGantt(){
var GanttData = {
data: GanttList,
links: [
]}
return GanttData;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!