diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 545f0cdf..c2633c9b 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -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'])) { diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 0c9f05db..5a5b7123 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -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 ]); diff --git a/resources/assets/js/pages/single/task.vue b/resources/assets/js/pages/single/task.vue index 45f20ce3..accfba4b 100644 --- a/resources/assets/js/pages/single/task.vue +++ b/resources/assets/js/pages/single/task.vue @@ -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); diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index d8ce06e4..f1fc567b 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1010,20 +1010,21 @@ export default { * 获取单个任务 * @param state * @param dispatch - * @param task_id + * @param data Number|JSONObject{task_id, ?archived_at} * @returns {Promise} */ - 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(() => {})