perf: 支持查看已归档任务详情

This commit is contained in:
kuaifan 2022-01-23 17:36:19 +08:00
parent 9b0ca581f1
commit 1777153411
4 changed files with 32 additions and 16 deletions

View File

@ -876,6 +876,7 @@ class ProjectController extends AbstractController
* - yes已完成
* - no未完成
* @apiParam {String} [archived] 归档状态
* - all所有
* - yes已归档
* - no未归档默认
* @apiParam {Object} sorts 排序方式
@ -911,7 +912,7 @@ class ProjectController extends AbstractController
//
$scopeAll = false;
if ($parent_id > 0) {
ProjectTask::userTask($parent_id);
ProjectTask::userTask($parent_id, str_replace(['all', 'yes', 'no'], [null, false, true], $archived));
$scopeAll = true;
$builder->where('project_tasks.parent_id', $parent_id);
} elseif ($parent_id === -1) {
@ -974,6 +975,10 @@ class ProjectController extends AbstractController
* @apiName task__one
*
* @apiParam {Number} task_id 任务ID
* @apiParam {String} [archived] 归档状态
* - all所有
* - yes已归档
* - no未归档默认
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
@ -984,8 +989,9 @@ class ProjectController extends AbstractController
User::auth();
//
$task_id = intval(Request::input('task_id'));
$archived = Request::input('archived', 'no');
//
$task = ProjectTask::userTask($task_id, true, false, ['taskUser', 'taskTag']);
$task = ProjectTask::userTask($task_id, str_replace(['all', 'yes', 'no'], [null, false, true], $archived), false, ['taskUser', 'taskTag']);
//
$data = $task->toArray();
$data['project_name'] = $task->project?->name;
@ -1013,7 +1019,7 @@ class ProjectController extends AbstractController
//
$task_id = intval(Request::input('task_id'));
//
$task = ProjectTask::userTask($task_id);
$task = ProjectTask::userTask($task_id, null);
//
return Base::retSuccess('success', $task->content ?: json_decode('{}'));
}
@ -1038,7 +1044,7 @@ class ProjectController extends AbstractController
//
$task_id = intval(Request::input('task_id'));
//
$task = ProjectTask::userTask($task_id);
$task = ProjectTask::userTask($task_id, null);
//
return Base::retSuccess('success', $task->taskFile);
}
@ -1435,7 +1441,7 @@ class ProjectController extends AbstractController
return Base::retError('记录不存在');
}
//
$task = ProjectTask::userTask($projectLog->task_id, null, true);
$task = ProjectTask::userTask($projectLog->task_id, true, true);
//
$record = $projectLog->record;
if ($record['flow'] && is_array($record['flow'])) {

View File

@ -1059,7 +1059,7 @@ class ProjectTask extends AbstractModel
/**
* 获取任务(会员有任务权限 会员存在项目内)
* @param int $task_id
* @param bool $archived true:仅限未归档, false:不限制, null:不限制
* @param bool $archived true:仅限未归档, false:仅限已归档, null:不限制
* @param int|bool $mustOwner 0|false:不限制, 1|true:限制任务或项目负责人, 2:已有负责人才限制任务或项目负责人
* @param array $with
* @return self
@ -1072,7 +1072,7 @@ class ProjectTask extends AbstractModel
throw new ApiException('任务不存在', [ 'task_id' => $task_id ], -4002);
}
if ($archived === true && $task->archived_at != null) {
throw new ApiException('任务已归档', [ 'task_id' => $task_id ], -4002);
throw new ApiException('任务已归档', [ 'task_id' => $task_id ]);
}
if ($archived === false && $task->archived_at == null) {
throw new ApiException('任务未归档', [ 'task_id' => $task_id ]);

View File

@ -65,7 +65,10 @@ export default {
return;
}
this.loadIng++;
this.$store.dispatch("getTaskOne", task_id).then(({data}) => {
this.$store.dispatch("getTaskOne", {
task_id,
archived: 'all'
}).then(({data}) => {
this.loadIng--;
this.taskInfo = data;
this.$store.dispatch("getTaskContent", task_id);

View File

@ -1010,20 +1010,21 @@ export default {
* 获取单个任务
* @param state
* @param dispatch
* @param task_id
* @param data Number|JSONObject{task_id, ?archived_at}
* @returns {Promise<unknown>}
*/
getTaskOne({state, dispatch}, task_id) {
getTaskOne({state, dispatch}, data) {
return new Promise(function (resolve, reject) {
if ($A.runNum(task_id) === 0) {
if (/^\d+$/.test(data)) {
data = {task_id: data}
}
if ($A.runNum(data.task_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", {
url: 'project/task/one',
data: {
task_id,
},
data,
}).then(result => {
dispatch("saveTask", result.data);
resolve(result)
@ -1125,7 +1126,10 @@ export default {
const newIds = state.cacheTasks.filter(task => task.parent_id == parent_id && task._time >= time).map(({id}) => id)
dispatch("forgetTask", currentIds.filter(v => newIds.indexOf(v) == -1))
}
dispatch("getTasks", {parent_id}).then(() => {
dispatch("getTasks", {
parent_id,
archived: 'all'
}).then(() => {
call()
resolve()
}).catch(() => {
@ -1292,7 +1296,10 @@ export default {
}
state.taskId = task_id;
if (task_id > 0) {
dispatch("getTaskOne", task_id).then(() => {
dispatch("getTaskOne", {
task_id,
archived: 'all'
}).then(() => {
dispatch("getTaskContent", task_id);
dispatch("getTaskFiles", task_id);
dispatch("getTaskForParent", task_id).catch(() => {})