Skip to content

Commit 992cbcf

Browse files
committed
v1.3.0 - bugfix
1 parent 23be4e6 commit 992cbcf

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/components/GanttChart.vue

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { formatPredecessorDisplay } from '../utils/predecessorUtils'
99
import jsPDF from 'jspdf'
1010
import html2canvas from 'html2canvas'
1111
import type { Task } from '../models/classes/Task'
12+
import type { Milestone } from '../models/classes/Milestone'
1213
import type { ToolbarConfig } from '../models/configs/ToolbarConfig'
1314
import { TimelineScale } from '../models/types/TimelineScale'
1415
import { useMessage } from '../composables/useMessage'
@@ -604,6 +605,25 @@ const tasksForTimeline = computed(() => {
604605
return result
605606
})
606607
608+
// 将Task[]转换为Milestone[]的计算属性,确保类型兼容
609+
const milestonesForTimeline = computed((): Milestone[] => {
610+
if (!props.milestones) return []
611+
612+
// 过滤出有startDate的里程碑,并转换为Milestone类型
613+
return props.milestones
614+
.filter((task): task is Task & { startDate: string } => !!task.startDate)
615+
.map(task => ({
616+
id: task.id,
617+
name: task.name,
618+
startDate: task.startDate, // 此时已确保非空
619+
endDate: task.endDate,
620+
assignee: task.assignee,
621+
type: task.type || 'milestone',
622+
icon: task.icon,
623+
description: task.description,
624+
}))
625+
})
626+
607627
// 计算所有任务和里程碑的最小开始时间和最大结束时间
608628
const timelineDateRange = computed(() => {
609629
// 扁平化所有任务和子任务
@@ -1549,7 +1569,7 @@ function handleTaskDelete(task: Task, deleteChildren?: boolean) {
15491569
<Timeline
15501570
ref="timelineRef"
15511571
:tasks="tasksForTimeline"
1552-
:milestones="props.milestones"
1572+
:milestones="milestonesForTimeline"
15531573
:start-date="timelineDateRange.min"
15541574
:end-date="timelineDateRange.max"
15551575
:working-hours="props.workingHours"

0 commit comments

Comments
 (0)