From be1dea74526f1dbf2f9ccc0b4375b019fe2eefd3 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 21 Jun 2021 15:11:29 +0800 Subject: [PATCH] no message --- .../Controllers/Api/ProjectController.php | 25 ++++++++++++------- app/Models/ProjectTask.php | 8 +++++- resources/assets/js/pages/manage/calendar.vue | 4 +-- .../assets/js/pages/manage/dashboard.vue | 16 +++++++----- resources/assets/js/store/actions.js | 8 +++--- 5 files changed, 40 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 7be4d207..041934ba 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -39,6 +39,7 @@ class ProjectController extends AbstractController Carbon::today()->endOfDay() ]; $data['today'] = ProjectTask::authData() + ->whereNull('project_tasks.archived_at') ->whereNull('project_tasks.complete_at') ->where('project_tasks.parent_id', 0) ->where(function ($query) use ($between) { @@ -48,6 +49,7 @@ class ProjectController extends AbstractController // 超期未完成 $data['overdue'] = ProjectTask::authData() + ->whereNull('project_tasks.archived_at') ->whereNull('project_tasks.complete_at') ->where('project_tasks.parent_id', 0) ->whereNotNull('project_tasks.end_at') @@ -505,10 +507,10 @@ class ProjectController extends AbstractController * 任务列表 * * @apiParam {Number} [project_id] 项目ID - * @apiParam {Number} [parent_id] 主任务ID(填写后 project_id 无效) + * @apiParam {Number} [parent_id] 主任务ID(填写此项时 project_id 参数无效) * @apiParam {String} [name] 任务描述关键词 - * @apiParam {Array} [time] 时间范围,如:['2020-12-12', '2020-12-30'] - * @apiParam {String} [time_before] 指定时间之前,如:2020-12-30 00:00:00(填写此项时time参数无效) + * @apiParam {Array} [time] 指定时间范围未完成,如:['2020-12-12', '2020-12-30'] + * @apiParam {String} [time_before] 指定时间之前未完成,如:2020-12-30 00:00:00(填写此项时 time 参数无效) */ public function task__lists() { @@ -524,10 +526,10 @@ class ProjectController extends AbstractController // if ($parent_id > 0) { ProjectTask::userTask($parent_id); - $builder->where('parent_id', $parent_id); + $builder->where('project_tasks.parent_id', $parent_id); } elseif ($project_id > 0) { Project::userProject($project_id); - $builder->where('project_id', $project_id); + $builder->where('project_tasks.project_id', $project_id); } else { $builder->authData(); } @@ -539,16 +541,21 @@ class ProjectController extends AbstractController } // if (Base::isDateOrTime($time_before)) { - $builder->whereNotNull('project_tasks.end_at')->where('project_tasks.end_at', '<', Carbon::parse($time_before)); + $builder + ->whereNull('project_tasks.complete_at') + ->whereNotNull('project_tasks.end_at') + ->where('project_tasks.end_at', '<', Carbon::parse($time_before)); } elseif (is_array($time)) { if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) { $between = [ Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay() ]; - $builder->where(function ($query) use ($between) { - $query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between); - }); + $builder + ->whereNull('project_tasks.complete_at') + ->where(function ($query) use ($between) { + $query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between); + }); } } // diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 86fdeeaf..613dcc30 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -84,6 +84,11 @@ class ProjectTask extends AbstractModel { use SoftDeletes; + const taskSelect = [ + 'project_tasks.*', + 'project_task_users.owner', + ]; + protected $appends = [ 'file_num', 'msg_num', @@ -253,7 +258,7 @@ class ProjectTask extends AbstractModel { $pre = DB::getTablePrefix(); $user = $user ?: User::auth(); - $query->select("project_tasks.*") + $query->select(self::taskSelect) ->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid') ->whereExists(function ($der) use ($pre) { $der->select(DB::raw(1)) @@ -387,6 +392,7 @@ class ProjectTask extends AbstractModel $row = ProjectTaskUser::createInstance([ 'project_id' => $this->project_id, 'task_id' => $this->id, + 'task_pid' => $this->parent_id ?: $this->id, 'userid' => $owner, 'owner' => 1, ]); diff --git a/resources/assets/js/pages/manage/calendar.vue b/resources/assets/js/pages/manage/calendar.vue index 7e3a30d7..9cb2dcd8 100644 --- a/resources/assets/js/pages/manage/calendar.vue +++ b/resources/assets/js/pages/manage/calendar.vue @@ -87,10 +87,10 @@ export default { if (data.complete_at) { return false; } - if (!data.start_at || !data.end_at) { + if (!data.end_at) { return false; } - return data.task_user.find(({userid}) => userid == this.userId); + return data.owner; }) return datas.map(data => { let task = { diff --git a/resources/assets/js/pages/manage/dashboard.vue b/resources/assets/js/pages/manage/dashboard.vue index a5c09d31..e6463ce2 100644 --- a/resources/assets/js/pages/manage/dashboard.vue +++ b/resources/assets/js/pages/manage/dashboard.vue @@ -72,8 +72,7 @@
{{item.name}}
- - {{expiresFormat(item.end_at)}} + {{expiresFormat(item.end_at)}}
@@ -135,10 +134,11 @@ export default { }, list() { - const {tasks, dashboard} = this; + const {dashboard} = this; const todayStart = new Date($A.formatDate("Y-m-d 00:00:00")), todayEnd = new Date($A.formatDate("Y-m-d 23:59:59")); - return tasks.filter((data) => { + let datas = $A.cloneJSON(this.tasks); + datas = datas.filter((data) => { if (data.parent_id > 0) { return false; } @@ -148,6 +148,9 @@ export default { if (!data.end_at) { return false; } + if (!data.owner) { + return false; + } const start = new Date(data.start_at), end = new Date(data.end_at); data._start_time = start; @@ -156,11 +159,12 @@ export default { case 'today': return (start >= todayStart && start <= todayEnd) || (end >= todayStart && end <= todayEnd); case 'overdue': - return end < todayStart; + return end <= todayStart; default: return false; } - }).sort((a, b) => { + }) + return datas.sort((a, b) => { if (a._end_time != b._end_time) { return a._end_time - b._end_time; } diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index bff79dd0..c2875c1d 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -471,7 +471,8 @@ export default { project_id } }).then(result => { - state.columns = state.columns.filter((item) => item.project_id != project_id); + const ids = result.data.data.map(({id}) => id) + state.columns = state.columns.filter((item) => item.project_id != project_id || ids.includes(item.id)); dispatch("saveColumn", result.data.data); }).catch(e => { !e.ret && console.error(e); @@ -575,11 +576,12 @@ export default { url: 'project/task/lists', data: data }).then(result => { + const ids = result.data.data.map(({id}) => id) if (data.project_id) { - state.tasks = state.tasks.filter((item) => item.project_id != data.project_id); + state.tasks = state.tasks.filter((item) => item.project_id != data.project_id || ids.includes(item.id)); } if (data.parent_id) { - state.tasks = state.tasks.filter((item) => item.parent_id != data.parent_id); + state.tasks = state.tasks.filter((item) => item.parent_id != data.parent_id || ids.includes(item.id)); } dispatch("saveTask", result.data.data); }).catch(e => {