diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 97b055a15..b9923edbd 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1668,7 +1668,7 @@ class ProjectController extends AbstractController 'column_id' => $task->column_id, 'times' => [$task->start_at, $task->end_at], 'owner' => [User::userid()], - 'is_all_visible' => 0, + 'is_all_visible' => 2, ]); $data = ProjectTask::oneTask($task->id); $projectUserid = Project::whereId($data->project_id)->value('userid'); @@ -1726,7 +1726,7 @@ class ProjectController extends AbstractController // $data = ProjectTask::oneTask($task->id)->toArray(); $data['update_marking'] = $updateMarking ?: json_decode('{}'); - $data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [0] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid'); + $data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid'); $task->pushMsg('update', $data); // 可见性推送 if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) { @@ -1740,18 +1740,18 @@ class ProjectController extends AbstractController $addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds); $task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds); } - if ($data['is_all_visible'] == 0 && empty($param['visibility_appointor'])) { + if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) { $task->pushMsgVisibleRemove(); } } - if (Arr::exists($param, 'owner') && $data['is_all_visible'] == 0) { + if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) { $subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray(); - $diff = array_diff($owners, $param['owner'], $subUserids); + $diff = array_diff($owners, $param['owner'] ?: [], $subUserids); if ($diff) { $task->pushMsgVisibleRemove($diff); } } - if (Arr::exists($param, 'assist') && $data['is_all_visible'] == 0) { + if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) { $diff = array_diff($owners, $param['assist']); if ($diff) { $task->pushMsgVisibleRemove($diff); diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index d9fa21620..3cd6d89f4 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -370,18 +370,8 @@ class ProjectTask extends AbstractModel $p_color = $data['p_color']; $top = intval($data['top']); $userid = User::userid(); - $visibility_appoint = $data['visibility_appoint']; - $visibility_appointor = $data['visibility_appointor']; - // 可见性 - $visibility_userids = []; - $is_all_visible = 0; - if ($visibility_appoint) { - if (in_array(0, $visibility_appointor)) { - $is_all_visible = 1; - } else { - $visibility_userids = $visibility_appointor; - } - } + $is_all_visible = $data['visibility_appoint']; + $visibility_userids = $data['visibility_appointor']; // if (ProjectTask::whereProjectId($project_id) ->whereNull('project_tasks.complete_at') @@ -686,7 +676,7 @@ class ProjectTask extends AbstractModel foreach ($owner as $uid) { if (intval($uid) == 0) continue; if (!$this->project->useridInTheProject($uid)) continue; - // + // DOTO ProjectTaskUser::updateInsert([ 'task_id' => $this->id, 'userid' => $uid, @@ -716,15 +706,13 @@ class ProjectTask extends AbstractModel $this->syncDialogUser(); } // 可见性 - if (Arr::exists($data, 'visibility_appointor') || Arr::exists($data, 'is_all_visible')) { - if ($data['is_all_visible'] == 1) { - ProjectTask::whereId($data['task_id'])->update(['is_all_visible' => 1]); - ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete(); - } elseif ( isset($data['visibility_appointor']) || $data['is_all_visible'] == 0) { - ProjectTask::whereId($data['task_id'])->update(['is_all_visible' => 0]); - // 覆盖 - ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete(); - foreach ($data['visibility_appointor'] as $uid) { + 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"]]); + } + ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete(); + foreach ($data['visibility_appointor'] as $uid) { + if($uid){ ProjectTaskUser::createInstance([ 'project_id' => $this->project_id, 'task_id' => $this->id, @@ -733,7 +721,6 @@ class ProjectTask extends AbstractModel 'owner' => 2, ])->save(); } - } } // 计划时间(原则:子任务时间在主任务时间内) @@ -1508,7 +1495,7 @@ class ProjectTask extends AbstractModel $array = []; if ($pushUserIds) { $userids = $pushUserIds; - }elseif ($this->is_all_visible == 0) { + }elseif ($this->is_all_visible != 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/resources/assets/js/components/UserSelect.vue b/resources/assets/js/components/UserSelect.vue index 9df819825..4ef8bb8e9 100755 --- a/resources/assets/js/components/UserSelect.vue +++ b/resources/assets/js/components/UserSelect.vue @@ -312,6 +312,7 @@ export default { } else { this.searchKey = "" } + this.$emit("showUpdate",value) }, searchKey() { diff --git a/resources/assets/js/pages/manage/components/TaskAdd.vue b/resources/assets/js/pages/manage/components/TaskAdd.vue index 55d57e470..ca979d144 100644 --- a/resources/assets/js/pages/manage/components/TaskAdd.vue +++ b/resources/assets/js/pages/manage/components/TaskAdd.vue @@ -93,24 +93,50 @@ - - - {{$L('任务负责人')}} - {{$L('任务协助人')}} - - - {{$L('所有人员')}} - {{$L('指定成员')}} - - +
+ + {{$L('可见性')}} + + + + +
+ + + {{$L('项目人员')}} +
+
+ +
+ + + {{$L('任务人员')}} +
+
+ +
+ + + {{$L('指定成员')}} +
+
+
+
+
+
+ {{$L('项目人员可见')}} + {{$L('任务人员可见')}} +
+ + />
@@ -206,10 +232,7 @@ export default { p_name: '', p_color: '', // 可见性 - visibility_principal: 1, - visibility_assist: 1, visibility_appoint: 1, - is_all_visible: 1, visibility_appointor: [], }, @@ -533,6 +556,35 @@ export default { close() { this.$emit("input", !this.value) }, + + showCisibleDropdown(){ + this.$refs.eDropdownRef.show() + }, + + visibleUserSelectShowUpdate(isShow){ + if(!isShow && (this.addData.visibility_appointor.length == 0 || !this.addData.visibility_appointor[0])){ + let old = this.addData.old_visibility_appoint; + this.addData.visibility_appoint = old > 2 ? 1 : (old || 1); + if(this.addData.visibility_appoint < 3 ){ + } + } + }, + + dropVisible(command) { + switch (command) { + case 1: + case 2: + this.addData.visibility_appoint = command + break; + case 3: + this.addData.old_visibility_appoint = this.addData.visibility_appoint + this.addData.visibility_appoint = command + this.$nextTick(() => { + this.$refs.visibleUserSelectRef.onSelection() + }); + break; + } + }, } } diff --git a/resources/assets/js/pages/manage/components/TaskAddSimple.vue b/resources/assets/js/pages/manage/components/TaskAddSimple.vue index 3bb6ca84d..40d4235f5 100644 --- a/resources/assets/js/pages/manage/components/TaskAddSimple.vue +++ b/resources/assets/js/pages/manage/components/TaskAddSimple.vue @@ -114,10 +114,8 @@ export default { p_name: '', p_color: '', // 可见性 - visibility_principal: 1, - visibility_assist: 1, visibility_appoint: 1, - visibility_appointor: [0], + visibility_appointor: [], }, active: false, @@ -223,10 +221,8 @@ export default { p_name: '', p_color: '', // 可见性 - visibility_principal: 1, - visibility_assist: 1, visibility_appoint: 1, - visibility_appointor: [0], + visibility_appointor: [], } }).catch(({msg}) => { $A.modalError(msg); diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index fd83e7584..862353e7f 100644 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -1,71 +1,56 @@