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

View File

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

View File

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

View File

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