no message
This commit is contained in:
parent
33fcb52a40
commit
be1dea7452
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
//
|
||||
|
@ -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,
|
||||
]);
|
||||
|
@ -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 = {
|
||||
|
@ -72,8 +72,7 @@
|
||||
</EDropdown>
|
||||
<div class="item-title" @click="$store.dispatch('openTask', item.id)">{{item.name}}</div>
|
||||
<div :class="['item-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']">
|
||||
<Icon type="ios-time-outline"/>
|
||||
{{expiresFormat(item.end_at)}}
|
||||
<Icon type="ios-time-outline"/>{{expiresFormat(item.end_at)}}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@ -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;
|
||||
}
|
||||
|
8
resources/assets/js/store/actions.js
vendored
8
resources/assets/js/store/actions.js
vendored
@ -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 => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user