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