From 2e70c9617cf81abeda0e99994a099f085e6199ef Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 2 Mar 2024 12:45:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=98=BE=E7=A4=BA=E6=97=A0=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E7=9A=84=E5=AD=90=E4=BB=BB=E5=8A=A1=E3=80=81=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E6=88=90=E5=91=98=E5=8F=AF=E8=A7=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/ProjectTask.php | 95 ++++++++++++++++-------------- resources/assets/js/store/state.js | 2 +- 2 files changed, 53 insertions(+), 44 deletions(-) diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 4d41ae4cb..c3df1b44a 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1430,53 +1430,62 @@ class ProjectTask extends AbstractModel } // $array = []; - if (empty($data['parent_id'])) { - if (Arr::exists($data, 'owner') || Arr::exists($data, 'assist')) { - $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($data['id'])->get(); - // 负责人 - $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); - $owners = array_intersect($userids, $owners); - if ($owners) { - $array[] = [ - 'userid' => array_values($owners), - 'data' => array_merge($data, [ - 'owner' => 1, - 'assist' => 1, - ]) - ]; - } - // 协助人 - $assists = $taskUser->where('owner', 0)->pluck('userid')->toArray(); - $assists = array_intersect($userids, $assists); - if ($assists) { - $array[] = [ - 'userid' => array_values($assists), - 'data' => array_merge($data, [ - 'owner' => 0, - 'assist' => 1, - ]) - ]; - } - // 项目成员(其他人) - if ($data['visibility'] == 1) { - // 全部可见 + if (Arr::exists($data, 'owner') || Arr::exists($data, 'assist')) { + $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($data['id'])->get(); + // 负责人 + $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); + $owners = array_intersect($userids, $owners); + if ($owners) { + $array[] = [ + 'userid' => array_values($owners), + 'data' => array_merge($data, [ + 'owner' => 1, + 'assist' => 1, + ]) + ]; + } + // 协助人 + $assists = $taskUser->where('owner', 0)->pluck('userid')->toArray(); + $assists = array_intersect($userids, $assists); + if ($assists) { + $array[] = [ + 'userid' => array_values($assists), + 'data' => array_merge($data, [ + 'owner' => 0, + 'assist' => 1, + ]) + ]; + } + // 其他人 + switch ($data['visibility']) { + case 1: + // 项目人员,除了负责人、协助人项目其他人 $userids = array_diff($userids, $owners, $assists); - } else { - // 指定可见 - $userids = $taskUser->pluck('userid')->toArray(); - } - $data = array_merge($data, [ - 'owner' => 0, - 'assist' => 0, - ]); + break; + case 2: + // 任务人员,除了负责人、协助人 + $userids = []; + break; + case 3: + // 指定成员 + $specifys = ProjectTaskVisibilityUser::select(['userid'])->whereTaskId($data['id'])->pluck('userid')->toArray(); + $userids = array_diff($specifys, $owners, $assists); + break; + default: + $userids = []; + break; + } + if ($userids) { + $array[] = [ + 'userid' => array_values($userids), + 'data' => array_merge($data, [ + 'owner' => 0, + 'assist' => 0, + ]) + ]; } } // - $array[] = [ - 'userid' => array_values($userids), - 'data' => $data - ]; - // foreach ($array as $item) { $params = [ 'ignoreFd' => Request::header('fd'), diff --git a/resources/assets/js/store/state.js b/resources/assets/js/store/state.js index b1bdc5fe7..b25b365c0 100644 --- a/resources/assets/js/store/state.js +++ b/resources/assets/js/store/state.js @@ -7,7 +7,7 @@ export default { clientId: "", // 缓存版本号(如果想升级后清除客户端缓存则修改此参数值) - cacheVersion: "v5", + cacheVersion: "v6", // 窗口是否激活 windowActive: true,