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 @@