diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index e2d554d1..1c52be66 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -483,7 +483,7 @@ class ProjectController extends AbstractController $data = []; - // 今日待任务 + // 今日待完成 $between = [ Carbon::today()->startOfDay(), Carbon::today()->endOfDay() @@ -501,8 +501,9 @@ class ProjectController extends AbstractController /** * 任务列表 * - * @apiParam {String} name 任务名称(包含) - * @apiParam {Array} time 时间范围,格式:数组,如:[2020-12-12,2020-20-12] + * @apiParam {String} name 任务名称(包含) + * @apiParam {Array} time 时间范围,如:['2020-12-12', '2020-12-30'] + * @apiParam {String} time_before 指定时间之前,如:2020-12-30 00:00:00(填写此项时time参数无效) */ public function task__lists() { @@ -512,18 +513,21 @@ class ProjectController extends AbstractController // $name = Request::input('name'); $time = Request::input('time'); + $time_before = Request::input('time_before'); if ($name) { $builder->where(function($query) use ($name) { $query->where('project_tasks.name', 'like', '%,' . $name . ',%'); }); } - if (is_array($time)) { + if (Base::isDateOrTime($time_before)) { + $builder->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) { + $builder->where(function ($query) use ($between) { $query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between); }); } diff --git a/app/Models/Project.php b/app/Models/Project.php index 3f09310a..43487334 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -191,9 +191,9 @@ class Project extends AbstractModel /** * 查询自己的项目 - * @param $query + * @param self $query * @param null $user - * @return mixed + * @return self */ public function scopeAuthData($query, $user = null) { diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 6dafd4d0..d4ddfe43 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -7,6 +7,7 @@ use App\Module\Base; use App\Tasks\PushTask; use Arr; use Carbon\Carbon; +use DB; use Hhxsv5\LaravelS\Swoole\Task\Task; use Illuminate\Database\Eloquent\SoftDeletes; use Request; @@ -249,14 +250,21 @@ class ProjectTask extends AbstractModel /** * 查询自己的任务 - * @param $query + * @param self $query * @param null $user - * @return mixed + * @return self */ public function scopeAuthData($query, $user = null) { + $pre = DB::getTablePrefix(); $user = $user ?: User::auth(); $query->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid') + ->whereExists(function ($der) use ($pre) { + $der->select(DB::raw(1)) + ->from('project_task_users as B') + ->whereColumn('project_task_users.task_pid', '=', 'B.task_pid') + ->havingRaw("max({$pre}B.id) = {$pre}project_task_users.id"); + }) ->whereNull('project_tasks.archived_at') ->where('project_tasks.parent_id', 0) ->where('project_task_users.userid', $user->userid); diff --git a/resources/assets/js/pages/manage/dashboard.vue b/resources/assets/js/pages/manage/dashboard.vue index 23f50e36..9c3e4766 100644 --- a/resources/assets/js/pages/manage/dashboard.vue +++ b/resources/assets/js/pages/manage/dashboard.vue @@ -5,17 +5,17 @@