fix:可视化事件发送问题

This commit is contained in:
qiuchengw
2025-12-03 14:01:37 +08:00
parent f13a1ff128
commit c98c6a12f0
2 changed files with 33 additions and 22 deletions
+14
View File
@@ -2046,6 +2046,18 @@ function handleAddSuccessor(targetTask: Task) {
taskDrawerVisible.value = true
}
// 处理前置任务已添加事件(拖拽连接完成)
function handlePredecessorAdded(event: { targetTask: Task; newTask: Task }) {
// 直接转发事件给外部
emit('predecessor-added', event)
}
// 处理后置任务已添加事件(拖拽连接完成)
function handleSuccessorAdded(event: { targetTask: Task; newTask: Task }) {
// 直接转发事件给外部
emit('successor-added', event)
}
// 新增Task插入到任务树中
// 插入新任务到任务树(parentId 已在打开 TaskDrawer 时预设好)
const insertTask = (tasks: Task[], newTask: Task) => {
@@ -2276,6 +2288,8 @@ function handleMilestoneDialogDelete(milestoneId: number) {
@stop-timer="handleStopTimer"
@add-predecessor="handleAddPredecessor"
@add-successor="handleAddSuccessor"
@predecessor-added="handlePredecessorAdded"
@successor-added="handleSuccessorAdded"
@delete="handleTaskDelete"
>
<template v-if="$slots['custom-task-content']" #custom-task-content="barScope">
+19 -22
View File
@@ -1048,39 +1048,36 @@ const hasCircularDependency = (taskId: number, targetId: number): boolean => {
// 创建连接
const createLink = (sourceTask: Task, targetTask: Task, mode: 'predecessor' | 'successor') => {
console.log("----> hello:", {
mode,
sourceTask,
targetTask,
})
if (mode === 'predecessor') {
// 前置模式:将源任务添加到目标任务的前置任务列表
const predecessorIds = targetTask.predecessor ? getPredecessorIds(targetTask.predecessor) : []
if (!predecessorIds.includes(sourceTask.id)) {
predecessorIds.push(sourceTask.id)
// 将数组转换为适当的格式(数组或逗号分隔的字符串)
if (Array.isArray(targetTask.predecessor)) {
targetTask.predecessor = predecessorIds
} else {
targetTask.predecessor = predecessorIds.join(',')
}
// mode='predecessor' 表示从左侧 anchor 拖出
// 从左侧 anchor 拖到右侧:sourceTask 依赖 targetTask
// 实现:将 targetTask.id 添加到 sourceTask.predecessor 中
const predecessorIds = sourceTask.predecessor ? getPredecessorIds(sourceTask.predecessor) : []
if (!predecessorIds.includes(targetTask.id)) {
predecessorIds.push(targetTask.id)
sourceTask.predecessor = predecessorIds
// 触发任务更新事件
updateTask(targetTask)
updateTask(sourceTask)
// 发射 predecessor-added 事件
emit('predecessor-added', { targetTask, newTask: sourceTask })
emit('predecessor-added', { targetTask: sourceTask, newTask: targetTask })
}
} else {
// 后置模式:将目标任务的 ID 添加到源任务的前置任务列表
// 注意:这里实际是在源任务的 predecessor 中添加目标任务
// 因为"后置任务"的意思是:目标任务依赖于源任务
// mode='successor' 表示从右侧 anchor 拖出
// 从右侧 anchor 拖到左侧:sourceTask 是 targetTask 的前置任务
// 实现:将 sourceTask.id 添加到 targetTask.predecessor 中
const predecessorIds = targetTask.predecessor ? getPredecessorIds(targetTask.predecessor) : []
if (!predecessorIds.includes(sourceTask.id)) {
predecessorIds.push(sourceTask.id)
// 将数组转换为适当的格式
if (Array.isArray(targetTask.predecessor)) {
targetTask.predecessor = predecessorIds
} else {
targetTask.predecessor = predecessorIds.join(',')
}
targetTask.predecessor = predecessorIds
// 触发任务更新事件
updateTask(targetTask)
// 发射 successor-added 事件
emit('successor-added', { targetTask: sourceTask, newTask: targetTask })
emit('successor-added', { targetTask, newTask: sourceTask })
}
}
}