From 1ac6bad2bb47803184c427006caa9f30518dc7c3 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 22 Jan 2026 07:34:09 +0000 Subject: [PATCH] =?UTF-8?q?fix(task):=20=E4=BF=AE=E5=A4=8D=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=88=87=E6=8D=A2=E6=97=B6=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 恢复工作流切换时通过 $data['complete_at'] 设置完成状态,确保走统一处理入口 - 修复工作流切换时主任务完成状态校验被跳过的问题 - 修复工作流切换时 $updateMarking['is_update_project'] 未设置的问题 - checkAndAutoSetFlowItem 仅在用户单独提交 complete_at 时调用 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Co-Authored-By: Happy --- app/Models/ProjectTask.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 879bae36b..0573f4293 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -684,13 +684,13 @@ class ProjectTask extends AbstractModel // 判断自动完成 if (!$this->complete_at) { $flowData['complete_at'] = $this->complete_at; - $this->completeTask(Carbon::now(), $newFlowItem->name); + $data['complete_at'] = date("Y-m-d H:i"); } } else { // 判断自动打开 if ($this->complete_at) { $flowData['complete_at'] = $this->complete_at; - $this->completeTask(null); + $data['complete_at'] = false; } } $flowUserids = $newFlowItem->userids; @@ -740,7 +740,7 @@ class ProjectTask extends AbstractModel ])->save(); } // 状态 - if (Arr::exists($data, 'complete_at') && !Arr::exists($data, 'flow_item_id')) { + if (Arr::exists($data, 'complete_at')) { // 子任务:主任务已完成时无法修改 if ($mainTask?->complete_at) { throw new ApiException('主任务已完成,无法修改子任务状态'); @@ -750,14 +750,22 @@ class ProjectTask extends AbstractModel if ($this->complete_at) { throw new ApiException('任务已完成'); } - $flowItemName = $this->checkAndAutoSetFlowItem('end', -4005); + // 只有用户单独提交 complete_at 时才自动设置工作流状态 + if (!Arr::exists($data, 'flow_item_id')) { + $flowItemName = $this->checkAndAutoSetFlowItem('end', -4005); + } else { + $flowItemName = isset($newFlowItem) ? $newFlowItem->name : null; + } $this->completeTask(Carbon::now(), $flowItemName); } else { // 标记未完成 if (!$this->complete_at) { throw new ApiException('未完成任务'); } - $this->checkAndAutoSetFlowItem('start', -4006); + // 只有用户单独提交 complete_at 时才自动设置工作流状态 + if (!Arr::exists($data, 'flow_item_id')) { + $this->checkAndAutoSetFlowItem('start', -4006); + } $this->completeTask(null); } $updateMarking['is_update_project'] = true;