From 243c2da636647f7e483a807d48a1942614b3862f Mon Sep 17 00:00:00 2001 From: "LINING-PC\\lining" Date: Sat, 11 Oct 2025 19:11:59 +0800 Subject: [PATCH] v1.4.0 - bugfix --- src/components/Timeline.vue | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/components/Timeline.vue b/src/components/Timeline.vue index 98210a4..3340d4e 100644 --- a/src/components/Timeline.vue +++ b/src/components/Timeline.vue @@ -354,7 +354,7 @@ const optimizedTimelineData = computed(() => { const currentDay = new Date(day.year, day.month - 1, day.day) currentDay.setHours(0, 0, 0, 0) const daysDiff = Math.floor( - (currentDay.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24), + (currentDay.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24) ) const totalHourOffset = daysDiff * 24 @@ -455,7 +455,7 @@ const computeAllMilestonesPositions = () => { if (!isNaN(milestoneDate.getTime())) { const startDiff = Math.floor( (milestoneDate.getTime() - timelineConfig.value.startDate.getTime()) / - (1000 * 60 * 60 * 24), + (1000 * 60 * 60 * 24) ) const left = startDiff * 30 + 30 / 2 - 12 // 30是dayWidth,12是图标半径 @@ -489,7 +489,7 @@ const computeAllMilestonesPositions = () => { if (!isNaN(milestoneDate.getTime())) { const startDiff = Math.floor( (milestoneDate.getTime() - timelineConfig.value.startDate.getTime()) / - (1000 * 60 * 60 * 24), + (1000 * 60 * 60 * 24) ) const left = startDiff * 30 + 30 / 2 - 12 @@ -592,7 +592,7 @@ const handleTaskRowHover = (taskId: number | null) => { window.dispatchEvent( new CustomEvent('timeline-task-hover', { detail: taskId, - }), + }) ) } @@ -644,7 +644,7 @@ const handleMilestoneIconChange = (milestoneId: number, icon: string) => { window.dispatchEvent( new CustomEvent('milestone-icon-changed', { detail: { milestoneId, icon }, - }), + }) ) } @@ -662,7 +662,7 @@ const handleMilestoneSave = (updatedMilestone: Milestone) => { window.dispatchEvent( new CustomEvent('milestone-data-updated', { detail: { milestone: updatedMilestone }, - }), + }) ) } @@ -675,14 +675,14 @@ const handleMilestoneDelete = (milestoneId: number) => { window.dispatchEvent( new CustomEvent('milestone-deleted', { detail: { milestoneId }, - }), + }) ) // 广播里程碑数据变化事件,确保Timeline重新渲染 window.dispatchEvent( new CustomEvent('milestone-data-changed', { detail: { milestoneId }, - }), + }) ) } @@ -697,7 +697,7 @@ const handleMilestoneUpdate = (updatedMilestone: Milestone) => { window.dispatchEvent( new CustomEvent('milestone-data-updated', { detail: { milestone: updatedMilestone }, - }), + }) ) } @@ -1017,7 +1017,7 @@ watch( clearTimelineCache() timelineData.value = generateTimelineData() } - }, + } ) // 保证每次时间轴数据变化后都自动居中今日(仅初始化和外部props变更时触发,不因任务/里程碑变更触发) @@ -1032,7 +1032,7 @@ watch( }) } }, - { deep: true }, + { deep: true } ) // 将今日定位到时间线中间位置 @@ -1057,13 +1057,13 @@ const scrollToTodayCenter = (retry = 0) => { startNormalized = new Date( yearRange.startDate.getFullYear(), yearRange.startDate.getMonth(), - yearRange.startDate.getDate(), + yearRange.startDate.getDate() ) } else { startNormalized = new Date( timelineStart.getFullYear(), timelineStart.getMonth(), - timelineStart.getDate(), + timelineStart.getDate() ) } @@ -1136,7 +1136,7 @@ const scrollToTodayCenter = (retry = 0) => { } const dayOffset = Math.floor( - (todayNormalized.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24), + (todayNormalized.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24) ) const daysInQuarter = Math.floor((endOfQuarter.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24)) + 1 @@ -1193,7 +1193,7 @@ const getTodayLinePositionInYearView = computed(() => { const startNormalized = new Date( yearRange.startDate.getFullYear(), yearRange.startDate.getMonth(), - yearRange.startDate.getDate(), + yearRange.startDate.getDate() ) const startYear = startNormalized.getFullYear() @@ -1287,7 +1287,7 @@ const scrollToToday = () => { const startNormalized = new Date( timelineStart.getFullYear(), timelineStart.getMonth(), - timelineStart.getDate(), + timelineStart.getDate() ) // 计算今天距离时间线开始日期的天数 @@ -1338,7 +1338,7 @@ const updateTask = (updatedTask: Task) => { window.dispatchEvent( new CustomEvent('task-updated', { detail: updatedTask, - }), + }) ) } @@ -1398,7 +1398,7 @@ const handleTaskBarContextMenu = (event: { task: Task; position: { x: number; y: window.dispatchEvent( new CustomEvent('context-menu', { detail: event, - }), + }) ) } @@ -1481,7 +1481,7 @@ onMounted(() => { // 监听TaskList的垂直滚动事件 window.addEventListener( 'task-list-vertical-scroll', - handleTaskListVerticalScroll as EventListener, + handleTaskListVerticalScroll as EventListener ) // 监听语言变化 window.addEventListener('locale-changed', handleLocaleChange as EventListener) @@ -1491,7 +1491,7 @@ onMounted(() => { // 监听Timeline容器resize事件(TaskList切换等) window.addEventListener( 'timeline-container-resized', - handleTimelineContainerResized as EventListener, + handleTimelineContainerResized as EventListener ) // 监听里程碑点击定位事件 @@ -1581,7 +1581,7 @@ const handleTimelineBodyScroll = (event: Event) => { window.dispatchEvent( new CustomEvent('timeline-vertical-scroll', { detail: { scrollTop }, - }), + }) ) } } @@ -1594,7 +1594,7 @@ watch( updateSvgSize() }) }, - { immediate: true }, + { immediate: true } ) // 拖拽滑动相关状态 @@ -1778,7 +1778,7 @@ const startAutoScroll = (direction: 'left' | 'right') => { window.dispatchEvent( new CustomEvent('timeline-auto-scroll', { detail: { scrollDelta: newScrollLeft - currentScrollLeft }, - }), + }) ) autoScrollTimer = window.setTimeout(scroll, 16) // 约60fps @@ -1832,14 +1832,14 @@ onUnmounted(() => { window.removeEventListener('task-list-hover', handleTaskListHover as EventListener) window.removeEventListener( 'task-list-vertical-scroll', - handleTaskListVerticalScroll as EventListener, + handleTaskListVerticalScroll as EventListener ) window.removeEventListener('locale-changed', handleLocaleChange as EventListener) window.removeEventListener('splitter-drag-start', handleSplitterDragStart as EventListener) window.removeEventListener('splitter-drag-end', handleSplitterDragEnd as EventListener) window.removeEventListener( 'timeline-container-resized', - handleTimelineContainerResized as EventListener, + handleTimelineContainerResized as EventListener ) window.removeEventListener('milestone-click-locate', handleMilestoneClickLocate as EventListener) window.removeEventListener('drag-boundary-check', handleDragBoundaryCheck as EventListener) @@ -1950,7 +1950,7 @@ watch( } }) }, - { deep: true }, + { deep: true } ) // 处理里程碑点击定位事件 @@ -2936,7 +2936,7 @@ const handleAddSuccessor = (task: Task) => { border-right: 1px solid var(--gantt-border-medium); box-sizing: border-box; height: 100%; - min-width: 120px; + min-width: 60px; } .timeline-month:last-child {