diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 15be098a..1190a68f 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1677,6 +1677,9 @@ class ProjectController extends AbstractController if ($usertype == 'replace' && empty($userids)) { throw new ApiException("状态[{$item['name']}]设置错误,设置流转模式时必须填写状态负责人"); } + if ($usertype == 'merge' && empty($userids)) { + throw new ApiException("状态[{$item['name']}]设置错误,设置剔除模式时必须填写状态负责人"); + } if ($userlimit && empty($userids)) { throw new ApiException("状态[{$item['name']}]设置错误,设置限制负责人时必须填写状态负责人"); } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index d5b0c4a3..b785c508 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -541,13 +541,18 @@ class ProjectTask extends AbstractModel if ($newFlowItem->userids) { // 判断自动添加负责人 $flowData['owner'] = $data['owner'] = $this->taskUser->where('owner', 1)->pluck('userid')->toArray(); - if ($newFlowItem->usertype == "replace") { - // 流转模式 + if (in_array($newFlowItem->usertype, ["replace", "merge"])) { + // 流转模式、剔除模式 if ($this->parent_id === 0) { $flowData['assist'] = $data['assist'] = $this->taskUser->where('owner', 0)->pluck('userid')->toArray(); $data['assist'] = array_merge($data['assist'], $data['owner']); } $data['owner'] = $newFlowItem->userids; + // 判断剔除模式:保留操作状态的人员 + if ($newFlowItem->usertype == "merge") { + $data['assist'] = array_diff($data['assist'], [User::userid()]); + $data['owner'] = array_merge($data['owner'], [User::userid()]); + } } else { // 添加模式 $data['owner'] = array_merge($data['owner'], $newFlowItem->userids); diff --git a/resources/assets/js/pages/manage/components/ProjectWorkflow.vue b/resources/assets/js/pages/manage/components/ProjectWorkflow.vue index d75fcc4b..6aa4bc4f 100644 --- a/resources/assets/js/pages/manage/components/ProjectWorkflow.vue +++ b/resources/assets/js/pages/manage/components/ProjectWorkflow.vue @@ -149,8 +149,10 @@ {{$L('添加模式')}} {{$L('流转模式')}} + {{$L('剔除模式')}}
{{$L('流转到此状态时改变任务负责人为状态负责人,原本的任务负责人移至协助人员。')}}
+
{{$L('流转到此状态时改变任务负责人为状态负责人(并保留操作状态的人员),原本的任务负责人移至协助人员。')}}
{{$L('流转到此状态时添加状态负责人至任务负责人。')}}