|
@@ -1,30 +1,562 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div>
|
|
<div>
|
|
|
|
|
+ <vxe-switch v-model="treeConfig.showIcon" />
|
|
|
|
|
+
|
|
|
<vxe-gantt v-bind="ganttOptions" />
|
|
<vxe-gantt v-bind="ganttOptions" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { reactive } from 'vue'
|
|
import { reactive } from 'vue'
|
|
|
|
|
+import { VxeGanttTaskType } from 'vxe-gantt'
|
|
|
|
|
+
|
|
|
|
|
+const treeConfig = reactive({
|
|
|
|
|
+ transform: true, // 自动将列表转为树结构
|
|
|
|
|
+ rowField: 'newId', // 自定义树节点关联的主键
|
|
|
|
|
+ parentField: 'newParentId', // 自定义树节点关联的父节点的字段名
|
|
|
|
|
+ showIcon: true // 是否显示展开按钮
|
|
|
|
|
+})
|
|
|
const ganttOptions = reactive({
|
|
const ganttOptions = reactive({
|
|
|
border: true,
|
|
border: true,
|
|
|
height: 600,
|
|
height: 600,
|
|
|
|
|
+ columnConfig: {
|
|
|
|
|
+ resizable: true
|
|
|
|
|
+ },
|
|
|
|
|
+ treeConfig,
|
|
|
|
|
+ taskConfig: {
|
|
|
|
|
+ titleField: 'newTitle', // 自定义标题字段名
|
|
|
|
|
+ startField: 'start', // 自定义开始日期字段名
|
|
|
|
|
+ endField: 'end', // 自定义结束期字段名
|
|
|
|
|
+ progressField: 'progress', // 自定义进度值字段名
|
|
|
|
|
+ typeField: 'type' // 自定义渲染类型字段名
|
|
|
|
|
+ },
|
|
|
|
|
+ taskBarSubviewConfig: {
|
|
|
|
|
+ showOverview: true, // 是否显示任务总览,当子任务被展开后自动显示任务总览
|
|
|
|
|
+ // 自定义子任务视图任务条的样式
|
|
|
|
|
+ barStyle({ row }) {
|
|
|
|
|
+ if (row.flag === 1) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ top: '-12px', // 偏移位置,计划于实际不重叠
|
|
|
|
|
+ backgroundColor: '#40d9eff'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (row.flag === 2) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ top: '12px', // 偏移位置,计划于实际不重叠
|
|
|
|
|
+ backgroundColor: '#31d231'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ taskBarConfig: {
|
|
|
|
|
+ showContent: true, // 是否在任务条显示内容
|
|
|
|
|
+ moveable: true, // 是否允许拖拽任务移动日期
|
|
|
|
|
+ resizable: true, // 是否允许拖拽任务调整日期
|
|
|
|
|
+ barStyle({ row }) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ round: true, // 圆角
|
|
|
|
|
+ bgColor: row.flag === 1 ? '#40d9eff' : '#31d231' // 已完成部分任务条的背景颜色
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ taskViewConfig: {
|
|
|
|
|
+ tableStyle: {
|
|
|
|
|
+ width: 200
|
|
|
|
|
+ },
|
|
|
|
|
+ viewStyle: {
|
|
|
|
|
+ border: 'inner'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
columns: [
|
|
columns: [
|
|
|
- { field: 'name', title: '任务名称', minWidth: 200 },
|
|
|
|
|
- { field: 'start', title: '开始时间', width: 100 },
|
|
|
|
|
- { field: 'end', title: '结束时间', width: 100 }
|
|
|
|
|
|
|
+ { field: 'newTitle', title: '任务名称', minWidth: 160, treeNode: true },
|
|
|
|
|
+ { field: 'planStartDate', title: '计划开始日期', width: 140 },
|
|
|
|
|
+ { field: 'planEndDate', title: '实际 结束日期', width: 140 },
|
|
|
|
|
+ { field: 'actualStartDate', title: '计划开始日期', width: 140 },
|
|
|
|
|
+ { field: 'actualEndDate', title: '实际结束日期', width: 140 }
|
|
|
],
|
|
],
|
|
|
- data: [
|
|
|
|
|
- { id: 10001, name: '任务R790', start: '2024-03-01', end: '2024-03-04', progress: 3 },
|
|
|
|
|
- { id: 10002, name: '任务C30456572349', start: '2024-03-03', end: '2024-03-08', progress: 10 },
|
|
|
|
|
- { id: 10003, name: '任务E563', start: '2024-03-03', end: '2024-03-11', progress: 90 },
|
|
|
|
|
- { id: 10004, name: '任务P687', start: '2024-03-05', end: '2024-03-11', progress: 15 },
|
|
|
|
|
- { id: 10005, name: '任务L8412430903', start: '2024-03-08', end: '2024-03-15', progress: 100 },
|
|
|
|
|
- { id: 10006, name: '任务B567', start: '2024-03-10', end: '2024-03-21', progress: 5 },
|
|
|
|
|
- { id: 10007, name: '任务V513802134450', start: '2024-03-15', end: '2024-03-24', progress: 70 },
|
|
|
|
|
- { id: 10008, name: '任务G110', start: '2024-03-20', end: '2024-03-29', progress: 50 },
|
|
|
|
|
- { id: 10009, name: '任务I802', start: '2024-03-19', end: '2024-03-20', progress: 5 },
|
|
|
|
|
- { id: 10010, name: '任务K778', start: '2024-03-12', end: '2024-03-20', progress: 10 }
|
|
|
|
|
- ]
|
|
|
|
|
|
|
+ data: []
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+// 将实际和计划一分二
|
|
|
|
|
+const handleMultiTask = (list) => {
|
|
|
|
|
+ const multiRest = []
|
|
|
|
|
+ list.forEach((item) => {
|
|
|
|
|
+ if (item.hasChild) {
|
|
|
|
|
+ const groupRow = {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ newTitle: `${item.title}`,
|
|
|
|
|
+ flag: 3,
|
|
|
|
|
+ newId: `g${item.id}`,
|
|
|
|
|
+ newParentId: item.parentId ? `g${item.parentId}` : null,
|
|
|
|
|
+ start: '',
|
|
|
|
|
+ end: '',
|
|
|
|
|
+ progress: 0,
|
|
|
|
|
+ type: VxeGanttTaskType.Subview
|
|
|
|
|
+ }
|
|
|
|
|
+ multiRest.push(groupRow)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 计划
|
|
|
|
|
+ const planRow = {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ newTitle: `计划:${item.title}`,
|
|
|
|
|
+ flag: 1,
|
|
|
|
|
+ newId: `p${item.id}`,
|
|
|
|
|
+ newParentId: item.parentId ? `g${item.parentId}` : null,
|
|
|
|
|
+ start: item.planStartDate,
|
|
|
|
|
+ end: item.planEndDate,
|
|
|
|
|
+ progress: 0
|
|
|
|
|
+ }
|
|
|
|
|
+ // 实际
|
|
|
|
|
+ const actualRow = {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ newTitle: `实际:${item.title}`,
|
|
|
|
|
+ flag: 2,
|
|
|
|
|
+ newId: `a${item.id}`,
|
|
|
|
|
+ newParentId: item.parentId ? `g${item.parentId}` : null,
|
|
|
|
|
+ start: item.actualStartDate,
|
|
|
|
|
+ end: item.actualEndDate,
|
|
|
|
|
+ progress: 0
|
|
|
|
|
+ }
|
|
|
|
|
+ multiRest.push(planRow, actualRow)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ return multiRest
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const loadList = () => {
|
|
|
|
|
+ const list = [
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10001,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务1',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10002,
|
|
|
|
|
+ parentId: 10001,
|
|
|
|
|
+ title: '任务2',
|
|
|
|
|
+ planStartDate: '2024-02-27',
|
|
|
|
|
+ planEndDate: '2024-03-03',
|
|
|
|
|
+ actualStartDate: '2024-03-01',
|
|
|
|
|
+ actualEndDate: '2024-03-02',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10003,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务3',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10004,
|
|
|
|
|
+ parentId: 10003,
|
|
|
|
|
+ title: '任务4',
|
|
|
|
|
+ planStartDate: '2024-03-01',
|
|
|
|
|
+ planEndDate: '2024-03-02',
|
|
|
|
|
+ actualStartDate: '2024-03-03',
|
|
|
|
|
+ actualEndDate: '2024-03-04',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10005,
|
|
|
|
|
+ parentId: 10003,
|
|
|
|
|
+ title: '任务5',
|
|
|
|
|
+ planStartDate: '2024-03-03',
|
|
|
|
|
+ planEndDate: '2024-03-05',
|
|
|
|
|
+ actualStartDate: '2024-03-04',
|
|
|
|
|
+ actualEndDate: '2024-03-07',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10006,
|
|
|
|
|
+ parentId: 10003,
|
|
|
|
|
+ title: '任务6',
|
|
|
|
|
+ planStartDate: '2024-03-19',
|
|
|
|
|
+ planEndDate: '2024-03-22',
|
|
|
|
|
+ actualStartDate: '2024-03-17',
|
|
|
|
|
+ actualEndDate: '2024-03-20',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10007,
|
|
|
|
|
+ parentId: 10005,
|
|
|
|
|
+ title: '任务7',
|
|
|
|
|
+ planStartDate: '2024-03-17',
|
|
|
|
|
+ planEndDate: '2024-03-20',
|
|
|
|
|
+ actualStartDate: '2024-03-19',
|
|
|
|
|
+ actualEndDate: '2024-03-22',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10008,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务8',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10009,
|
|
|
|
|
+ parentId: 10008,
|
|
|
|
|
+ title: '任务9',
|
|
|
|
|
+ planStartDate: '2024-03-02',
|
|
|
|
|
+ planEndDate: '2024-03-03',
|
|
|
|
|
+ actualStartDate: '2024-03-02',
|
|
|
|
|
+ actualEndDate: '2024-03-03',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10010,
|
|
|
|
|
+ parentId: 10008,
|
|
|
|
|
+ title: '任务10',
|
|
|
|
|
+ planStartDate: '2024-03-05',
|
|
|
|
|
+ planEndDate: '2024-03-07',
|
|
|
|
|
+ actualStartDate: '2024-03-05',
|
|
|
|
|
+ actualEndDate: '2024-03-09',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10011,
|
|
|
|
|
+ parentId: 10008,
|
|
|
|
|
+ title: '任务11',
|
|
|
|
|
+ planStartDate: '2024-03-08',
|
|
|
|
|
+ planEndDate: '2024-03-11',
|
|
|
|
|
+ actualStartDate: '2024-03-11',
|
|
|
|
|
+ actualEndDate: '2024-03-15',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10012,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务12',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10013,
|
|
|
|
|
+ parentId: 10012,
|
|
|
|
|
+ title: '任务13',
|
|
|
|
|
+ planStartDate: '2024-03-04',
|
|
|
|
|
+ planEndDate: '2024-03-05',
|
|
|
|
|
+ actualStartDate: '2024-03-06',
|
|
|
|
|
+ actualEndDate: '2024-03-08',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10014,
|
|
|
|
|
+ parentId: 10012,
|
|
|
|
|
+ title: '任务14',
|
|
|
|
|
+ planStartDate: '2024-03-06',
|
|
|
|
|
+ planEndDate: '2024-03-07',
|
|
|
|
|
+ actualStartDate: '2024-03-03',
|
|
|
|
|
+ actualEndDate: '2024-03-05',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10015,
|
|
|
|
|
+ parentId: 10012,
|
|
|
|
|
+ title: '任务15',
|
|
|
|
|
+ planStartDate: '2024-03-09',
|
|
|
|
|
+ planEndDate: '2024-03-12',
|
|
|
|
|
+ actualStartDate: '2024-03-10',
|
|
|
|
|
+ actualEndDate: '2024-03-11',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10016,
|
|
|
|
|
+ parentId: 10012,
|
|
|
|
|
+ title: '任务16',
|
|
|
|
|
+ planStartDate: '2024-03-13',
|
|
|
|
|
+ planEndDate: '2024-03-15',
|
|
|
|
|
+ actualStartDate: '2024-03-17',
|
|
|
|
|
+ actualEndDate: '2024-03-18',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10017,
|
|
|
|
|
+ parentId: 10012,
|
|
|
|
|
+ title: '任务17',
|
|
|
|
|
+ planStartDate: '2024-03-17',
|
|
|
|
|
+ planEndDate: '2024-03-21',
|
|
|
|
|
+ actualStartDate: '2024-03-18',
|
|
|
|
|
+ actualEndDate: '2024-03-19',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10018,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务18',
|
|
|
|
|
+ planStartDate: '2024-03-11',
|
|
|
|
|
+ planEndDate: '2024-03-12',
|
|
|
|
|
+ actualStartDate: '2024-03-12',
|
|
|
|
|
+ actualEndDate: '2024-03-15',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10019,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务19',
|
|
|
|
|
+ planStartDate: '2024-03-15',
|
|
|
|
|
+ planEndDate: '2024-03-17',
|
|
|
|
|
+ actualStartDate: '2024-03-17',
|
|
|
|
|
+ actualEndDate: '2024-03-20',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10020,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务20',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10021,
|
|
|
|
|
+ parentId: 10020,
|
|
|
|
|
+ title: '任务21',
|
|
|
|
|
+ planStartDate: '2024-03-18',
|
|
|
|
|
+ planEndDate: '2024-03-21',
|
|
|
|
|
+ actualStartDate: '2024-03-19',
|
|
|
|
|
+ actualEndDate: '2024-03-21',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10022,
|
|
|
|
|
+ parentId: 10020,
|
|
|
|
|
+ title: '任务22',
|
|
|
|
|
+ planStartDate: '2024-03-23',
|
|
|
|
|
+ planEndDate: '2024-03-25',
|
|
|
|
|
+ actualStartDate: '2024-03-23',
|
|
|
|
|
+ actualEndDate: '2024-03-25',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10023,
|
|
|
|
|
+ parentId: 10020,
|
|
|
|
|
+ title: '任务23',
|
|
|
|
|
+ planStartDate: '2024-03-27',
|
|
|
|
|
+ planEndDate: '2024-04-02',
|
|
|
|
|
+ actualStartDate: '2024-03-27',
|
|
|
|
|
+ actualEndDate: '2024-03-28',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10024,
|
|
|
|
|
+ parentId: 10020,
|
|
|
|
|
+ title: '任务24',
|
|
|
|
|
+ planStartDate: '2024-04-04',
|
|
|
|
|
+ planEndDate: '2024-04-06',
|
|
|
|
|
+ actualStartDate: '2024-04-02',
|
|
|
|
|
+ actualEndDate: '2024-04-05',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10025,
|
|
|
|
|
+ parentId: 10020,
|
|
|
|
|
+ title: '任务25',
|
|
|
|
|
+ planStartDate: '2024-04-07',
|
|
|
|
|
+ planEndDate: '2024-04-11',
|
|
|
|
|
+ actualStartDate: '2024-04-08',
|
|
|
|
|
+ actualEndDate: '2024-04-13',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10026,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务26',
|
|
|
|
|
+ planStartDate: '2024-04-05',
|
|
|
|
|
+ planEndDate: '2024-04-08',
|
|
|
|
|
+ actualStartDate: '2024-04-07',
|
|
|
|
|
+ actualEndDate: '2024-04-10',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10027,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务27',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10028,
|
|
|
|
|
+ parentId: 10027,
|
|
|
|
|
+ title: '任务28',
|
|
|
|
|
+ planStartDate: '2024-03-10',
|
|
|
|
|
+ planEndDate: '2024-03-13',
|
|
|
|
|
+ actualStartDate: '2024-03-13',
|
|
|
|
|
+ actualEndDate: '2024-03-14',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10029,
|
|
|
|
|
+ parentId: 10027,
|
|
|
|
|
+ title: '任务29',
|
|
|
|
|
+ planStartDate: '2024-03-14',
|
|
|
|
|
+ planEndDate: '2024-03-18',
|
|
|
|
|
+ actualStartDate: '2024-03-16',
|
|
|
|
|
+ actualEndDate: '2024-03-18',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10030,
|
|
|
|
|
+ parentId: 10027,
|
|
|
|
|
+ title: '任务30',
|
|
|
|
|
+ planStartDate: '2024-03-19',
|
|
|
|
|
+ planEndDate: '2024-03-25',
|
|
|
|
|
+ actualStartDate: '2024-03-20',
|
|
|
|
|
+ actualEndDate: '2024-03-26',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10031,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务31',
|
|
|
|
|
+ planStartDate: '2024-03-22',
|
|
|
|
|
+ planEndDate: '2024-03-24',
|
|
|
|
|
+ actualStartDate: '2024-03-19',
|
|
|
|
|
+ actualEndDate: '2024-03-20',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10032,
|
|
|
|
|
+ parentId: null,
|
|
|
|
|
+ title: '任务32',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ actualStartDate: '',
|
|
|
|
|
+ actualEndDate: '',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80,
|
|
|
|
|
+ hasChild: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10033,
|
|
|
|
|
+ parentId: 10032,
|
|
|
|
|
+ title: '任务33',
|
|
|
|
|
+ planStartDate: '2024-03-09',
|
|
|
|
|
+ planEndDate: '2024-03-14',
|
|
|
|
|
+ actualStartDate: '2024-03-11',
|
|
|
|
|
+ actualEndDate: '2024-03-15',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10034,
|
|
|
|
|
+ parentId: 10032,
|
|
|
|
|
+ title: '任务34',
|
|
|
|
|
+ planStartDate: '2024-03-15',
|
|
|
|
|
+ planEndDate: '2024-03-21',
|
|
|
|
|
+ actualStartDate: '2024-03-16',
|
|
|
|
|
+ actualEndDate: '2024-03-19',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10035,
|
|
|
|
|
+ parentId: 10015,
|
|
|
|
|
+ title: '任务35',
|
|
|
|
|
+ planStartDate: '2024-03-16',
|
|
|
|
|
+ planEndDate: '2024-03-18',
|
|
|
|
|
+ actualStartDate: '2024-03-17',
|
|
|
|
|
+ actualEndDate: '2024-03-19',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10036,
|
|
|
|
|
+ parentId: 10015,
|
|
|
|
|
+ title: '任务36',
|
|
|
|
|
+ planStartDate: '2024-03-12',
|
|
|
|
|
+ planEndDate: '2024-03-14',
|
|
|
|
|
+ actualStartDate: '2024-03-13',
|
|
|
|
|
+ actualEndDate: '2024-03-15',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10037,
|
|
|
|
|
+ parentId: 10016,
|
|
|
|
|
+ title: '任务37',
|
|
|
|
|
+ planStartDate: '2024-03-19',
|
|
|
|
|
+ planEndDate: '2024-03-22',
|
|
|
|
|
+ actualStartDate: '2024-03-21',
|
|
|
|
|
+ actualEndDate: '2024-03-23',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 10038,
|
|
|
|
|
+ parentId: 10016,
|
|
|
|
|
+ title: '任务38',
|
|
|
|
|
+ planStartDate: '2024-03-23',
|
|
|
|
|
+ planEndDate: '2024-03-25',
|
|
|
|
|
+ actualStartDate: '2024-03-24',
|
|
|
|
|
+ actualEndDate: '2024-03-27',
|
|
|
|
|
+ planProgress: 90,
|
|
|
|
|
+ actualProgress: 80
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ const multiRest = handleMultiTask(list)
|
|
|
|
|
+ ganttOptions.data = multiRest
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+loadList()
|
|
|
</script>
|
|
</script>
|