no message
This commit is contained in:
parent
33fcb52a40
commit
be1dea7452
@ -39,6 +39,7 @@ class ProjectController extends AbstractController
|
|||||||
Carbon::today()->endOfDay()
|
Carbon::today()->endOfDay()
|
||||||
];
|
];
|
||||||
$data['today'] = ProjectTask::authData()
|
$data['today'] = ProjectTask::authData()
|
||||||
|
->whereNull('project_tasks.archived_at')
|
||||||
->whereNull('project_tasks.complete_at')
|
->whereNull('project_tasks.complete_at')
|
||||||
->where('project_tasks.parent_id', 0)
|
->where('project_tasks.parent_id', 0)
|
||||||
->where(function ($query) use ($between) {
|
->where(function ($query) use ($between) {
|
||||||
@ -48,6 +49,7 @@ class ProjectController extends AbstractController
|
|||||||
|
|
||||||
// 超期未完成
|
// 超期未完成
|
||||||
$data['overdue'] = ProjectTask::authData()
|
$data['overdue'] = ProjectTask::authData()
|
||||||
|
->whereNull('project_tasks.archived_at')
|
||||||
->whereNull('project_tasks.complete_at')
|
->whereNull('project_tasks.complete_at')
|
||||||
->where('project_tasks.parent_id', 0)
|
->where('project_tasks.parent_id', 0)
|
||||||
->whereNotNull('project_tasks.end_at')
|
->whereNotNull('project_tasks.end_at')
|
||||||
@ -505,10 +507,10 @@ class ProjectController extends AbstractController
|
|||||||
* 任务列表
|
* 任务列表
|
||||||
*
|
*
|
||||||
* @apiParam {Number} [project_id] 项目ID
|
* @apiParam {Number} [project_id] 项目ID
|
||||||
* @apiParam {Number} [parent_id] 主任务ID(填写后 project_id 无效)
|
* @apiParam {Number} [parent_id] 主任务ID(填写此项时 project_id 参数无效)
|
||||||
* @apiParam {String} [name] 任务描述关键词
|
* @apiParam {String} [name] 任务描述关键词
|
||||||
* @apiParam {Array} [time] 时间范围,如:['2020-12-12', '2020-12-30']
|
* @apiParam {Array} [time] 指定时间范围未完成,如:['2020-12-12', '2020-12-30']
|
||||||
* @apiParam {String} [time_before] 指定时间之前,如:2020-12-30 00:00:00(填写此项时time参数无效)
|
* @apiParam {String} [time_before] 指定时间之前未完成,如:2020-12-30 00:00:00(填写此项时 time 参数无效)
|
||||||
*/
|
*/
|
||||||
public function task__lists()
|
public function task__lists()
|
||||||
{
|
{
|
||||||
@ -524,10 +526,10 @@ class ProjectController extends AbstractController
|
|||||||
//
|
//
|
||||||
if ($parent_id > 0) {
|
if ($parent_id > 0) {
|
||||||
ProjectTask::userTask($parent_id);
|
ProjectTask::userTask($parent_id);
|
||||||
$builder->where('parent_id', $parent_id);
|
$builder->where('project_tasks.parent_id', $parent_id);
|
||||||
} elseif ($project_id > 0) {
|
} elseif ($project_id > 0) {
|
||||||
Project::userProject($project_id);
|
Project::userProject($project_id);
|
||||||
$builder->where('project_id', $project_id);
|
$builder->where('project_tasks.project_id', $project_id);
|
||||||
} else {
|
} else {
|
||||||
$builder->authData();
|
$builder->authData();
|
||||||
}
|
}
|
||||||
@ -539,14 +541,19 @@ class ProjectController extends AbstractController
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (Base::isDateOrTime($time_before)) {
|
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)) {
|
} elseif (is_array($time)) {
|
||||||
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
||||||
$between = [
|
$between = [
|
||||||
Carbon::parse($time[0])->startOfDay(),
|
Carbon::parse($time[0])->startOfDay(),
|
||||||
Carbon::parse($time[1])->endOfDay()
|
Carbon::parse($time[1])->endOfDay()
|
||||||
];
|
];
|
||||||
$builder->where(function ($query) use ($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);
|
$query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,11 @@ class ProjectTask extends AbstractModel
|
|||||||
{
|
{
|
||||||
use SoftDeletes;
|
use SoftDeletes;
|
||||||
|
|
||||||
|
const taskSelect = [
|
||||||
|
'project_tasks.*',
|
||||||
|
'project_task_users.owner',
|
||||||
|
];
|
||||||
|
|
||||||
protected $appends = [
|
protected $appends = [
|
||||||
'file_num',
|
'file_num',
|
||||||
'msg_num',
|
'msg_num',
|
||||||
@ -253,7 +258,7 @@ class ProjectTask extends AbstractModel
|
|||||||
{
|
{
|
||||||
$pre = DB::getTablePrefix();
|
$pre = DB::getTablePrefix();
|
||||||
$user = $user ?: User::auth();
|
$user = $user ?: User::auth();
|
||||||
$query->select("project_tasks.*")
|
$query->select(self::taskSelect)
|
||||||
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
||||||
->whereExists(function ($der) use ($pre) {
|
->whereExists(function ($der) use ($pre) {
|
||||||
$der->select(DB::raw(1))
|
$der->select(DB::raw(1))
|
||||||
@ -387,6 +392,7 @@ class ProjectTask extends AbstractModel
|
|||||||
$row = ProjectTaskUser::createInstance([
|
$row = ProjectTaskUser::createInstance([
|
||||||
'project_id' => $this->project_id,
|
'project_id' => $this->project_id,
|
||||||
'task_id' => $this->id,
|
'task_id' => $this->id,
|
||||||
|
'task_pid' => $this->parent_id ?: $this->id,
|
||||||
'userid' => $owner,
|
'userid' => $owner,
|
||||||
'owner' => 1,
|
'owner' => 1,
|
||||||
]);
|
]);
|
||||||
|
@ -87,10 +87,10 @@ export default {
|
|||||||
if (data.complete_at) {
|
if (data.complete_at) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!data.start_at || !data.end_at) {
|
if (!data.end_at) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return data.task_user.find(({userid}) => userid == this.userId);
|
return data.owner;
|
||||||
})
|
})
|
||||||
return datas.map(data => {
|
return datas.map(data => {
|
||||||
let task = {
|
let task = {
|
||||||
|
@ -72,8 +72,7 @@
|
|||||||
</EDropdown>
|
</EDropdown>
|
||||||
<div class="item-title" @click="$store.dispatch('openTask', item.id)">{{item.name}}</div>
|
<div class="item-title" @click="$store.dispatch('openTask', item.id)">{{item.name}}</div>
|
||||||
<div :class="['item-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']">
|
<div :class="['item-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']">
|
||||||
<Icon type="ios-time-outline"/>
|
<Icon type="ios-time-outline"/>{{expiresFormat(item.end_at)}}
|
||||||
{{expiresFormat(item.end_at)}}
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -135,10 +134,11 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
list() {
|
list() {
|
||||||
const {tasks, dashboard} = this;
|
const {dashboard} = this;
|
||||||
const todayStart = new Date($A.formatDate("Y-m-d 00:00:00")),
|
const todayStart = new Date($A.formatDate("Y-m-d 00:00:00")),
|
||||||
todayEnd = new Date($A.formatDate("Y-m-d 23:59:59"));
|
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) {
|
if (data.parent_id > 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -148,6 +148,9 @@ export default {
|
|||||||
if (!data.end_at) {
|
if (!data.end_at) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!data.owner) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
const start = new Date(data.start_at),
|
const start = new Date(data.start_at),
|
||||||
end = new Date(data.end_at);
|
end = new Date(data.end_at);
|
||||||
data._start_time = start;
|
data._start_time = start;
|
||||||
@ -156,11 +159,12 @@ export default {
|
|||||||
case 'today':
|
case 'today':
|
||||||
return (start >= todayStart && start <= todayEnd) || (end >= todayStart && end <= todayEnd);
|
return (start >= todayStart && start <= todayEnd) || (end >= todayStart && end <= todayEnd);
|
||||||
case 'overdue':
|
case 'overdue':
|
||||||
return end < todayStart;
|
return end <= todayStart;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}).sort((a, b) => {
|
})
|
||||||
|
return datas.sort((a, b) => {
|
||||||
if (a._end_time != b._end_time) {
|
if (a._end_time != b._end_time) {
|
||||||
return 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
|
project_id
|
||||||
}
|
}
|
||||||
}).then(result => {
|
}).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);
|
dispatch("saveColumn", result.data.data);
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
!e.ret && console.error(e);
|
!e.ret && console.error(e);
|
||||||
@ -575,11 +576,12 @@ export default {
|
|||||||
url: 'project/task/lists',
|
url: 'project/task/lists',
|
||||||
data: data
|
data: data
|
||||||
}).then(result => {
|
}).then(result => {
|
||||||
|
const ids = result.data.data.map(({id}) => id)
|
||||||
if (data.project_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) {
|
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);
|
dispatch("saveTask", result.data.data);
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user