mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 03:01:12 +00:00
feat:调整可见性
This commit is contained in:
parent
ff2f311d43
commit
36499a36b1
@ -1719,6 +1719,7 @@ class ProjectController extends AbstractController
|
|||||||
$task = ProjectTask::userTask($task_id, true, true, 2);
|
$task = ProjectTask::userTask($task_id, true, true, 2);
|
||||||
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get();
|
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get();
|
||||||
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人
|
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人
|
||||||
|
$assists = $taskUser->where('owner', 0)->pluck('userid')->toArray(); // 协助人
|
||||||
|
|
||||||
// 更新任务
|
// 更新任务
|
||||||
$updateMarking = [];
|
$updateMarking = [];
|
||||||
@ -1729,32 +1730,49 @@ class ProjectController extends AbstractController
|
|||||||
$data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [] : 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);
|
$task->pushMsg('update', $data);
|
||||||
// 可见性推送
|
// 可见性推送
|
||||||
if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) {
|
if($task->parent_id == 0){
|
||||||
if ($data['is_all_visible'] == 1) {
|
|
||||||
$task->pushMsgVisibleAdd($data);
|
|
||||||
}
|
|
||||||
if ($param['visibility_appointor']) {
|
|
||||||
$oldVisibleUserIds = $taskUser->where('owner', 2)->pluck('userid')->toArray()??[];
|
|
||||||
$newVisibleUserIds = $param['visibility_appointor'] ?? [];
|
|
||||||
$deleteUserIds = array_diff($oldVisibleUserIds, $newVisibleUserIds);
|
|
||||||
$addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds);
|
|
||||||
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
|
|
||||||
}
|
|
||||||
if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) {
|
|
||||||
$task->pushMsgVisibleRemove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) {
|
|
||||||
$subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray();
|
$subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray();
|
||||||
$diff = array_diff($owners, $param['owner'] ?: [], $subUserids);
|
if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) {
|
||||||
if ($diff) {
|
if ($data['is_all_visible'] == 1) {
|
||||||
$task->pushMsgVisibleRemove($diff);
|
$task->pushMsgVisibleAdd($data);
|
||||||
|
}
|
||||||
|
if ($param['visibility_appointor']) {
|
||||||
|
$oldVisibleUserIds = $taskUser->where('owner', 2)->pluck('userid')->toArray()??[];
|
||||||
|
$newVisibleUserIds = $param['visibility_appointor'] ?? [];
|
||||||
|
$deleteUserIds = array_diff($oldVisibleUserIds, $newVisibleUserIds, $subUserids);
|
||||||
|
$addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds);
|
||||||
|
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
|
||||||
|
}
|
||||||
|
if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) {
|
||||||
|
$task->pushMsgVisibleRemove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) {
|
||||||
if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) {
|
$diff = array_diff($owners, $subUserids);
|
||||||
$diff = array_diff($owners, $param['assist']);
|
if ($diff) {
|
||||||
if ($diff) {
|
$task->pushMsgVisibleRemove($diff);
|
||||||
$task->pushMsgVisibleRemove($diff);
|
}
|
||||||
|
}
|
||||||
|
if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) {
|
||||||
|
$diff = array_diff($assists, $subUserids);
|
||||||
|
if ($diff) {
|
||||||
|
$task->pushMsgVisibleRemove($diff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(Arr::exists($param, 'owner') ){
|
||||||
|
$diff = array_diff($owners, $param['owner'] ?: [] );
|
||||||
|
if ($diff) {
|
||||||
|
$task->pushMsgVisibleRemove($diff);
|
||||||
|
}
|
||||||
|
$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) ) {
|
||||||
|
$diff = array_diff($owners, $param['owner'] ?: [], $subUserids);
|
||||||
|
if ($diff) {
|
||||||
|
$parentTask->pushMsgVisibleRemove($diff);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|||||||
@ -676,15 +676,24 @@ class ProjectTask extends AbstractModel
|
|||||||
foreach ($owner as $uid) {
|
foreach ($owner as $uid) {
|
||||||
if (intval($uid) == 0) continue;
|
if (intval($uid) == 0) continue;
|
||||||
if (!$this->project->useridInTheProject($uid)) continue;
|
if (!$this->project->useridInTheProject($uid)) continue;
|
||||||
// DOTO
|
$row = ProjectTaskUser::where("task_id",$this->id)
|
||||||
ProjectTaskUser::updateInsert([
|
->where("userid",$uid)
|
||||||
'task_id' => $this->id,
|
->where("owner",'!=', 2)
|
||||||
'userid' => $uid,
|
->first();
|
||||||
], [
|
if(empty($row)){
|
||||||
'project_id' => $this->project_id,
|
ProjectTaskUser::createInstance([
|
||||||
'task_pid' => $this->parent_id ?: $this->id,
|
'task_id' => $this->id,
|
||||||
'owner' => 1,
|
'userid' => $uid,
|
||||||
]);
|
'project_id' => $this->project_id,
|
||||||
|
'task_pid' => $this->parent_id ?: $this->id,
|
||||||
|
'owner' => 1,
|
||||||
|
])->save();
|
||||||
|
}else{
|
||||||
|
$row->project_id = $this->project_id;
|
||||||
|
$row->task_pid = $this->parent_id ?: $this->id;
|
||||||
|
$row->owner = 1;
|
||||||
|
$row->save();
|
||||||
|
}
|
||||||
$array[] = $uid;
|
$array[] = $uid;
|
||||||
}
|
}
|
||||||
if ($array) {
|
if ($array) {
|
||||||
@ -711,15 +720,17 @@ class ProjectTask extends AbstractModel
|
|||||||
ProjectTask::whereId($data['task_id'])->update(['is_all_visible' => $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();
|
ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete();
|
||||||
foreach ($data['visibility_appointor'] as $uid) {
|
if(Arr::exists($data, 'visibility_appointor')){
|
||||||
if($uid){
|
foreach ($data['visibility_appointor'] as $uid) {
|
||||||
ProjectTaskUser::createInstance([
|
if($uid){
|
||||||
'project_id' => $this->project_id,
|
ProjectTaskUser::createInstance([
|
||||||
'task_id' => $this->id,
|
'project_id' => $this->project_id,
|
||||||
'task_pid' => $this->parent_id ?: $this->id,
|
'task_id' => $this->id,
|
||||||
'userid' => $uid,
|
'task_pid' => $this->parent_id ?: $this->id,
|
||||||
'owner' => 2,
|
'userid' => $uid,
|
||||||
])->save();
|
'owner' => 2,
|
||||||
|
])->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1442,7 +1453,7 @@ class ProjectTask extends AbstractModel
|
|||||||
$userids = array_diff($userids, $owners, $assists);
|
$userids = array_diff($userids, $owners, $assists);
|
||||||
} else {
|
} else {
|
||||||
// 指定可见
|
// 指定可见
|
||||||
$userids = $taskUser->where('owner', 2)->pluck('userid')->toArray();
|
$userids = $taskUser->pluck('userid')->toArray();
|
||||||
}
|
}
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'owner' => 0,
|
'owner' => 0,
|
||||||
@ -1545,7 +1556,8 @@ class ProjectTask extends AbstractModel
|
|||||||
$projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
$projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
||||||
$projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人
|
$projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人
|
||||||
$taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray();
|
$taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray();
|
||||||
$userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists);
|
$subUserids = ProjectTaskUser::whereTaskPid($this->id)->pluck('userid')->toArray();
|
||||||
|
$userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists,$subUserids);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
$array[] = [
|
$array[] = [
|
||||||
|
|||||||
@ -669,6 +669,7 @@ export default {
|
|||||||
const clone = $A.cloneJSON(this.values)
|
const clone = $A.cloneJSON(this.values)
|
||||||
this.values = $A.cloneJSON(this.selects)
|
this.values = $A.cloneJSON(this.selects)
|
||||||
this.$emit('input', this.values)
|
this.$emit('input', this.values)
|
||||||
|
this.$emit('submit', this.values)
|
||||||
|
|
||||||
if (!this.beforeSubmit) {
|
if (!this.beforeSubmit) {
|
||||||
this.showModal = false
|
this.showModal = false
|
||||||
|
|||||||
@ -743,7 +743,7 @@ export default {
|
|||||||
name: '优先级',
|
name: '优先级',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!($A.isArray(taskDetail.task_user) && taskDetail.task_user.find(({owner}) => owner !== 1))) {
|
if (!($A.isArray(taskDetail.task_user) && taskDetail.task_user.find(({owner}) => owner === 0 ))) {
|
||||||
list.push({
|
list.push({
|
||||||
command: 'assist',
|
command: 'assist',
|
||||||
icon: '',
|
icon: '',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user