diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 37a4eba27..56d039f2f 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -2196,6 +2196,47 @@ class ProjectController extends AbstractController return Base::retSuccess('success', $data); } + /** + * @api {get} api/project/task/move 35. 任务移动 + * + * @apiDescription 需要token身份(限:项目、任务负责人) + * @apiVersion 1.0.0 + * @apiGroup project + * @apiName task__move + * + * @apiParam {Number} task_id 任务ID + * @apiParam {Number} project_id 项目ID + * @apiParam {Number} column_id 列ID + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function task__move() + { + User::auth(); + // + $task_id = intval(Request::input('task_id')); + $project_id = intval(Request::input('project_id')); + $column_id = intval(Request::input('column_id')); + // + $task = ProjectTask::userTask($task_id, true, true, 2); + // + if( $task->project_id == $project_id && $task->column_id == $column_id){ + return Base::retSuccess('移动成功', ['id' => $task_id]); + } + // + $project = Project::userProject($project_id); + $column = ProjectColumn::whereProjectId($project->id)->whereId($column_id)->first(); + if (empty($column)) { + return Base::retError('列表不存在'); + } + // + $task->moveTask($project_id,$column_id); + // + return Base::retSuccess('移动成功', ['id' => $task_id]); + } + /** * @api {get} api/project/flow/list 38. 工作流列表 * diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index d002ea4e4..5c565bd5f 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1665,6 +1665,46 @@ class ProjectTask extends AbstractModel } } + /** + * 移动任务 + * @param int $project_id + * @param int $column_id + * @return bool + */ + public function moveTask(int $projectId, int $columnId) + { + AbstractModel::transaction(function () use($projectId, $columnId) { + // 任务内容 + if($this->content){ + $this->content->project_id = $projectId; + $this->content->save(); + } + // 任务文件 + foreach ($this->taskFile as $taskFile){ + $taskFile->project_id = $projectId; + $taskFile->save(); + } + // 任务标签 + foreach ($this->taskTag as $taskTag){ + $taskTag->project_id = $projectId; + $taskTag->save(); + } + // 任务用户 + foreach ($this->taskUser as $taskUser){ + $taskUser->project_id = $projectId; + $taskUser->save(); + } + // + $this->project_id = $projectId; + $this->column_id = $columnId; + $this->save(); + // + $this->addLog("移动{任务}"); + }); + $this->pushMsg('update'); + return true; + } + /** * 获取任务 * @param $task_id diff --git a/language/original-api.txt b/language/original-api.txt index d6228bc60..0f609bb85 100644 --- a/language/original-api.txt +++ b/language/original-api.txt @@ -478,4 +478,5 @@ Api接口文档 文件总大小已超过1GB,请分批下载 文件总大小已超过1GB,请分批下载 保存任务详情至文件失败 -保存任务详情至文件失败,请重试 \ No newline at end of file +保存任务详情至文件失败,请重试 +移动成功 \ No newline at end of file diff --git a/resources/assets/js/pages/manage/components/TaskMove.vue b/resources/assets/js/pages/manage/components/TaskMove.vue new file mode 100644 index 000000000..be289809a --- /dev/null +++ b/resources/assets/js/pages/manage/components/TaskMove.vue @@ -0,0 +1,177 @@ + + + diff --git a/resources/assets/js/pages/manage/components/TaskOperation.vue b/resources/assets/js/pages/manage/components/TaskOperation.vue index e5585df1e..c1b68834b 100644 --- a/resources/assets/js/pages/manage/components/TaskOperation.vue +++ b/resources/assets/js/pages/manage/components/TaskOperation.vue @@ -1,80 +1,104 @@