feat: 增强搜索功能,支持通过 ID、名称和其他字段搜索任务、文件和报告
This commit is contained in:
@@ -991,10 +991,12 @@ class ProjectController extends AbstractController
|
||||
* - keys.tag: 标签名称
|
||||
* - keys.status: 任务状态 (completed: 已完成、uncompleted: 未完成、flow-xx: 流程状态ID)
|
||||
*
|
||||
* @apiParam {Number} [project_id] 项目ID
|
||||
* @apiParam {Number} [parent_id] 主任务ID(project_id && parent_id ≤ 0 时 仅查询自己参与的任务)
|
||||
* - 大于0:指定主任务下的子任务
|
||||
* - 等于-1:表示仅主任务
|
||||
* @apiParam {Number} [project_id] 项目ID(传入后只查询该项目内任务)
|
||||
* @apiParam {Number} [parent_id] 主任务ID(查询优先级最高)
|
||||
* - 大于0:只查该主任务下的子任务(此时 archived 强制 all,忽略 project_id/scope)
|
||||
* - 等于-1:仅主任务(可与 project_id 组合)
|
||||
* @apiParam {String} [scope] 查询范围(仅在未指定 project_id 且 parent_id ≤ 0 时生效)
|
||||
* - all_project:查询“我参与的项目”下的所有任务(仍受可见性限制)
|
||||
*
|
||||
* @apiParam {String} [time] 指定时间范围,如:today, week, month, year, 2020-12-12,2020-12-30
|
||||
* - today: 今天
|
||||
@@ -1038,6 +1040,7 @@ class ProjectController extends AbstractController
|
||||
$deleted = Request::input('deleted', 'no');
|
||||
$keys = Request::input('keys');
|
||||
$sorts = Request::input('sorts');
|
||||
$scope = Request::input('scope');
|
||||
$keys = is_array($keys) ? $keys : [];
|
||||
$sorts = is_array($sorts) ? $sorts : [];
|
||||
|
||||
@@ -1045,7 +1048,11 @@ class ProjectController extends AbstractController
|
||||
//
|
||||
if ($keys['name']) {
|
||||
if (Base::isNumber($keys['name'])) {
|
||||
$builder->where("project_tasks.id", intval($keys['name']));
|
||||
$builder->where(function ($query) use ($keys) {
|
||||
$query->where("project_tasks.id", intval($keys['name']))
|
||||
->orWhere("project_tasks.name", "like", "%{$keys['name']}%")
|
||||
->orWhere("project_tasks.desc", "like", "%{$keys['name']}%");
|
||||
});
|
||||
} else {
|
||||
$builder->where(function ($query) use ($keys) {
|
||||
$query->where("project_tasks.name", "like", "%{$keys['name']}%");
|
||||
@@ -1089,6 +1096,14 @@ class ProjectController extends AbstractController
|
||||
$scopeAll = true;
|
||||
$builder->where('project_tasks.project_id', $project_id);
|
||||
}
|
||||
if (!$scopeAll && $scope === 'all_project') {
|
||||
$scopeAll = true;
|
||||
$builder->whereIn('project_tasks.project_id', function ($query) use ($userid) {
|
||||
$query->select('project_id')
|
||||
->from('project_users')
|
||||
->where('userid', $userid);
|
||||
});
|
||||
}
|
||||
if ($scopeAll) {
|
||||
$builder->allData();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user