From a38ddf83f28ba81bd7215d8ba8511fa92dfe2768 Mon Sep 17 00:00:00 2001 From: weifashi <605403358@qq.com> Date: Thu, 9 Nov 2023 00:36:49 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A1.=E4=BC=98=E5=8C=96=E5=AD=97?= =?UTF-8?q?=E6=AE=B5is=5Fall=5Fvisible=EF=BC=8C2.=E6=9B=B4=E6=96=B0okr?= =?UTF-8?q?=E7=89=88=E6=9C=AC=EF=BC=8C3.=E4=BF=AE=E5=A4=8D=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=BB=BB=E5=8A=A1=E5=88=97=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/ProjectController.php | 24 +++++++------- app/Models/Deleted.php | 12 ++++--- app/Models/ProjectTask.php | 16 ++++----- ...93619_add_project_tasks_is_all_visible.php | 2 +- ...18_rename_project_tasks_is_all_visible.php | 33 +++++++++++++++++++ docker-compose.yml | 2 +- .../js/pages/manage/components/TaskDetail.vue | 30 ++++++++--------- 7 files changed, 77 insertions(+), 42 deletions(-) create mode 100644 database/migrations/2023_11_08_164418_rename_project_tasks_is_all_visible.php diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 18acbff53..b51bfdbf0 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -983,7 +983,7 @@ class ProjectController extends AbstractController $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->where("project_tasks.visibility", 1); $query->orWhere("project_users.userid", $userid); $query->orWhere("project_task_users.userid", $userid); $query->orWhere("project_p_task_users.userid", $userid); @@ -1470,7 +1470,7 @@ class ProjectController extends AbstractController $task = ProjectTask::userTask($task_id, $isArchived, true, false, ['taskUser', 'taskTag']); // 项目可见性 $project_userid = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->value('userid'); // 项目负责人 - if ($task->is_all_visible != 1 && $user->userid != $project_userid) { + if ($task->visibility != 1 && $user->userid != $project_userid) { $visibleUserids = ProjectTaskUser::whereTaskId($task_id)->pluck('userid')->toArray(); // 是否任务负责人、协助人、可见人 $subVisibleUserids = ProjectTaskUser::whereTaskPid($task_id)->pluck('userid')->toArray(); // 是否子任务负责人、协助人 if (!in_array($user->userid, $visibleUserids) && !in_array($user->userid, $subVisibleUserids)) { @@ -1481,7 +1481,7 @@ class ProjectController extends AbstractController $data = $task->toArray(); $data['project_name'] = $task->project?->name; $data['column_name'] = $task->projectColumn?->name; - $data['visibility_appointor'] = $task->is_all_visible == 1 ? [0] : ProjectTaskUser::whereTaskId($task_id)->whereOwner(2)->pluck('userid'); + $data['visibility_appointor'] = $task->visibility == 1 ? [0] : ProjectTaskUser::whereTaskId($task_id)->whereOwner(2)->pluck('userid'); return Base::retSuccess('success', $data); } @@ -1732,7 +1732,7 @@ class ProjectController extends AbstractController } - if ($data['is_all_visible'] == 1) { + if ($data['visibility'] == 1) { $data['is_visible'] = 1; } else { $projectOwner = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->pluck('userid')->toArray(); // 项目负责人 @@ -1780,7 +1780,7 @@ class ProjectController extends AbstractController 'column_id' => $task->column_id, 'times' => [$task->start_at, $task->end_at], 'owner' => [User::userid()], - 'is_all_visible' => $task->is_all_visible, + 'visibility' => $task->visibility, ]); $data = ProjectTask::oneTask($task->id); $pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray(); @@ -1838,13 +1838,13 @@ class ProjectController extends AbstractController // $data = ProjectTask::oneTask($task->id)->toArray(); $data['update_marking'] = $updateMarking ?: json_decode('{}'); - $data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid'); + $data['visibility_appointor'] = $data['visibility'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid'); $task->pushMsg('update', $data); // 可见性推送 if ($task->parent_id == 0) { $subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray(); - if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) { - if ($data['is_all_visible'] == 1) { + if (Arr::exists($param, 'visibility') || Arr::exists($param, 'visibility_appointor')) { + if ($data['visibility'] == 1) { $task->pushMsgVisibleAdd($data); } if ($param['visibility_appointor']) { @@ -1854,17 +1854,17 @@ class ProjectController extends AbstractController $addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds); $task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds); } - if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) { + if ($data['visibility'] != 1 && empty($param['visibility_appointor'])) { $task->pushMsgVisibleRemove(); } } - if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) { + if (Arr::exists($param, 'owner') && $data['visibility'] != 1) { $diff = array_diff($owners, $subUserids); if ($diff) { $task->pushMsgVisibleRemove($diff); } } - if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) { + if (Arr::exists($param, 'assist') && $data['visibility'] != 1) { $diff = array_diff($assists, $subUserids); if ($diff) { $task->pushMsgVisibleRemove($diff); @@ -1878,7 +1878,7 @@ class ProjectController extends AbstractController } $parentTask = ProjectTask::whereId($task->parent_id)->first(); $subUserids = ProjectTaskUser::whereTaskPid($task->parent_id)->pluck('userid')->toArray(); - if ($parentTask && $parentTask->is_all_visible != 1 && empty($subUserids)) { + if ($parentTask && $parentTask->visibility != 1 && empty($subUserids)) { $diff = array_diff($owners, $param['owner'] ?: [], $subUserids); if ($diff) { $parentTask->pushMsgVisibleRemove($diff); diff --git a/app/Models/Deleted.php b/app/Models/Deleted.php index 0309091dc..fc586768a 100644 --- a/app/Models/Deleted.php +++ b/app/Models/Deleted.php @@ -81,11 +81,13 @@ class Deleted extends AbstractModel { $array = is_array($userid) ? $userid : [$userid]; foreach ($array as $value) { - self::updateInsert([ - 'type' => $type, - 'did' => $id, - 'userid' => $value, - ]); + if (!self::where('type', $type)->where('did', $id)->where('userid', $value)->exists()) { + self::updateInsert([ + 'type' => $type, + 'did' => $id, + 'userid' => $value, + ]); + } } } } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index a4fe40b35..9d5587997 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -371,7 +371,7 @@ class ProjectTask extends AbstractModel $p_color = $data['p_color']; $top = intval($data['top']); $userid = User::userid(); - $is_all_visible = isset($data['visibility_appoint']) ? $data['visibility_appoint'] : $data['is_all_visible']; + $visibility = isset($data['visibility_appoint']) ? $data['visibility_appoint'] : $data['visibility']; $visibility_userids = $data['visibility_appointor'] ?: []; // if (ProjectTask::whereProjectId($project_id) @@ -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 ?: 1 + 'visibility' => $visibility ?: 1 ]); if ($content) { $task->desc = Base::getHtml($content, 100); @@ -722,10 +722,10 @@ class ProjectTask extends AbstractModel $this->syncDialogUser(); } // 可见性 - 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"]]); + if (Arr::exists($data, 'visibility') || Arr::exists($data, 'visibility_appointor')) { + if (Arr::exists($data, 'visibility')) { + ProjectTask::whereId($data['task_id'])->update(['visibility' => $data["visibility"]]); + ProjectTask::whereParentId($data['task_id'])->update(['visibility' => $data["visibility"]]); } ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete(); if (Arr::exists($data, 'visibility_appointor')) { @@ -1453,7 +1453,7 @@ class ProjectTask extends AbstractModel ]; } // 项目成员(其他人) - if ($data['is_all_visible'] == 1) { + if ($data['visibility'] == 1) { // 全部可见 $userids = array_diff($userids, $owners, $assists); } else { @@ -1511,7 +1511,7 @@ class ProjectTask extends AbstractModel $array = []; if ($pushUserIds) { $userids = $pushUserIds; - } elseif ($this->is_all_visible != 1) { + } elseif ($this->visibility != 1) { $userids = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($this->id)->orWhere('task_pid', '=', $this->id)->pluck('userid')->toArray(); } else { $userids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 diff --git a/database/migrations/2023_06_15_093619_add_project_tasks_is_all_visible.php b/database/migrations/2023_06_15_093619_add_project_tasks_is_all_visible.php index e0200036c..8b8e9f1ae 100644 --- a/database/migrations/2023_06_15_093619_add_project_tasks_is_all_visible.php +++ b/database/migrations/2023_06_15_093619_add_project_tasks_is_all_visible.php @@ -30,7 +30,7 @@ class AddProjectTasksIsAllVisible extends Migration { // Schema::table('project_tasks', function (Blueprint $table) { - $table->dropColumn("avatar"); + $table->dropColumn("is_all_visible"); }); } } diff --git a/database/migrations/2023_11_08_164418_rename_project_tasks_is_all_visible.php b/database/migrations/2023_11_08_164418_rename_project_tasks_is_all_visible.php new file mode 100644 index 000000000..dd7ccf3d8 --- /dev/null +++ b/database/migrations/2023_11_08_164418_rename_project_tasks_is_all_visible.php @@ -0,0 +1,33 @@ +getTablePrefix(); + DB::statement("ALTER TABLE `{$pre}project_tasks` MODIFY COLUMN is_all_visible TINYINT(1) DEFAULT 1 COMMENT '任务可见性:1-项目人员 2-任务人员 3-指定成员'"); + $table->renameColumn('is_all_visible', 'visibility'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 7b376935c..451a057f5 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -177,7 +177,7 @@ services: okr: container_name: "dootask-okr-${APP_ID}" - image: "kuaifan/doookr:0.0.19" + image: "kuaifan/doookr:0.0.21" environment: TZ: "${TIMEZONE:-PRC}" DOO_TASK_URL: "http://${APP_IPPR}.3" diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index 0328dd649..33f08973e 100644 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -197,7 +197,7 @@ :add-icon="false" :before-submit="onAssist"/> - +
@@ -207,21 +207,21 @@
- + {{$L('项目人员')}}
- + {{$L('任务人员')}}
- + {{$L('指定成员')}}
@@ -230,8 +230,8 @@
- {{$L('项目人员可见')}} - {{$L('任务人员可见')}} + {{$L('项目人员可见')}} + {{$L('任务人员可见')}} 0 && arr[0]) { - this.taskDetail.is_all_visible = 3 + this.taskDetail.visibility = 3 this.updateVisible() } }, @@ -1582,9 +1582,9 @@ export default { visibleUserSelectShowChange(isShow){ if(!isShow && (this.taskDetail.visibility_appointor.length == 0 || !this.taskDetail.visibility_appointor[0])){ - let old = this.taskDetail.old_is_all_visible; - this.taskDetail.is_all_visible = old > 2 ? 1 : (old || 1); - if(this.taskDetail.is_all_visible < 3 ){ + let old = this.taskDetail.old_visibility; + this.taskDetail.visibility = old > 2 ? 1 : (old || 1); + if(this.taskDetail.visibility < 3 ){ this.updateVisible(); } } @@ -1594,12 +1594,12 @@ export default { switch (command) { case 1: case 2: - this.taskDetail.is_all_visible = command + this.taskDetail.visibility = command this.updateVisible(); break; case 3: - this.taskDetail.old_is_all_visible = this.taskDetail.is_all_visible - this.taskDetail.is_all_visible = command + this.taskDetail.old_visibility = this.taskDetail.visibility + this.taskDetail.visibility = command this.$nextTick(() => { this.$refs.visibleUserSelectRef.onSelection() }); @@ -1608,7 +1608,7 @@ export default { }, updateVisible() { - this.updateData(['is_all_visible', 'visibility_appointor']) + this.updateData(['visibility', 'visibility_appointor']) } } }