diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 75f13b6b1..6feabef9c 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -979,10 +979,14 @@ class ProjectController extends AbstractController $builder->leftJoin('project_users', function ($query) { $query->on('project_tasks.project_id', '=', 'project_users.project_id')->where('project_users.owner', 1); }); + $builder->leftJoin('project_task_users as project_p_task_users', function ($query) { + $query->on('project_p_task_users.task_pid', '=', 'project_tasks.parent_id'); + }); $builder->where(function ($query) use ($userid) { $query->where("project_tasks.is_all_visible", 1); $query->orWhere("project_users.userid", $userid); $query->orWhere("project_task_users.userid", $userid); + $query->orWhere("project_p_task_users.userid", $userid); }); // 优化子查询汇总 $builder->leftJoinSub(function ($query) { @@ -1778,7 +1782,7 @@ class ProjectController extends AbstractController 'column_id' => $task->column_id, 'times' => [$task->start_at, $task->end_at], 'owner' => [User::userid()], - 'is_all_visible' => 2, + 'is_all_visible' => $task->is_all_visible, ]); $data = ProjectTask::oneTask($task->id); $pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray(); diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 6dbc456ae..a4fe40b35 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -371,8 +371,8 @@ class ProjectTask extends AbstractModel $p_color = $data['p_color']; $top = intval($data['top']); $userid = User::userid(); - $is_all_visible = $data['visibility_appoint']; - $visibility_userids = $data['visibility_appointor']; + $is_all_visible = isset($data['visibility_appoint']) ? $data['visibility_appoint'] : $data['is_all_visible']; + $visibility_userids = $data['visibility_appointor'] ?: []; // if (ProjectTask::whereProjectId($project_id) ->whereNull('project_tasks.complete_at') @@ -401,7 +401,7 @@ class ProjectTask extends AbstractModel 'p_level' => $p_level, 'p_name' => $p_name, 'p_color' => $p_color, - 'is_all_visible' => $is_all_visible + 'is_all_visible' => $is_all_visible ?: 1 ]); if ($content) { $task->desc = Base::getHtml($content, 100); @@ -725,6 +725,7 @@ class ProjectTask extends AbstractModel if (Arr::exists($data, 'is_all_visible') || Arr::exists($data, 'visibility_appointor')) { if (Arr::exists($data, 'is_all_visible')) { ProjectTask::whereId($data['task_id'])->update(['is_all_visible' => $data["is_all_visible"]]); + ProjectTask::whereParentId($data['task_id'])->update(['is_all_visible' => $data["is_all_visible"]]); } ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete(); if (Arr::exists($data, 'visibility_appointor')) {