From fd1ce8b257a6a03917c697b131ab366c39ae575c Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 7 Jun 2021 20:04:46 +0800 Subject: [PATCH] no message --- .../Controllers/Api/ProjectController.php | 73 ++++- app/Models/ProjectTask.php | 10 +- resources/assets/js/functions/web.js | 7 +- .../pages/manage/components/ProjectList.vue | 276 ++++++++++++------ .../pages/manage/components/TaskAddSimple.vue | 3 +- resources/assets/sass/project-list.scss | 56 +++- 6 files changed, 316 insertions(+), 109 deletions(-) diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index e89f1b80..6cca4fef 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -208,11 +208,71 @@ class ProjectController extends AbstractController return Base::retSuccess('修改成功'); } + /** + * 排序任务 + * + * @apiParam {Number} project_id 项目ID + * @apiParam {Object} sort 排序数据 + * @apiParam {Number} [only_column] 仅更新列表 + */ + public function sort() + { + $user = User::authE(); + if (Base::isError($user)) { + return $user; + } else { + $user = User::IDE($user['data']); + } + // + $project_id = intval(Request::input('project_id')); + $sort = Base::json2array(Request::input('sort')); + $only_column = intval(Request::input('only_column')); + // + $project = Project::select($this->projectSelect) + ->join('project_users', 'projects.id', '=', 'project_users.project_id') + ->where('projects.id', $project_id) + ->where('project_users.userid', $user->userid) + ->first(); + if (empty($project)) { + return Base::retError('项目不存在或不在成员列表内'); + } + // + if ($only_column) { + // 排序列表 + $index = 0; + foreach ($sort as $item) { + if (!is_array($item)) continue; + if (!intval($item['id'])) continue; + if (!is_array($item['task'])) continue; + ProjectColumn::whereId($item['id'])->whereProjectId($project->id)->update([ + 'sort' => $index + ]); + $index++; + } + } else { + // 排序任务 + foreach ($sort as $item) { + if (!is_array($item)) continue; + if (!intval($item['id'])) continue; + if (!is_array($item['task'])) continue; + $index = 0; + foreach ($item['task'] as $task_id) { + ProjectTask::whereId($task_id)->whereProjectId($project->id)->update([ + 'column_id' => $item['id'], + 'sort' => $index + ]); + $index++; + } + } + } + return Base::retSuccess('调整成功'); + } + /** * 修改项目成员 * * @apiParam {Number} project_id 项目ID - * @apiParam {Number} userid 成员ID或成员ID组 + * @apiParam {Number} userid 成员ID 或 成员ID组 */ public function user() { @@ -505,7 +565,10 @@ class ProjectController extends AbstractController ]); $column->sort = intval(ProjectColumn::whereProjectId($project->id)->orderByDesc('sort')->value('sort')) + 1; $column->save(); - return Base::retSuccess('添加成功', $column); + // + $data = $column->toArray(); + $data['project_task'] = []; + return Base::retSuccess('添加成功', $data); } } @@ -608,7 +671,7 @@ class ProjectController extends AbstractController return Base::retError('任务列表不存在或已被删除'); } // - return ProjectTask::addTask([ + $result = ProjectTask::addTask([ 'parent_id' => 0, 'project_id' => $project->id, 'column_id' => $column->id, @@ -622,5 +685,9 @@ class ProjectController extends AbstractController 'p_color' => $p_color, 'top' => $top, ]); + if (Base::isSuccess($result)) { + $result['data'] = ProjectTask::with(['taskUser', 'taskTag'])->whereId($result['data']['id'])->first(); + } + return $result; } } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 8ee75a55..965c0cd9 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -298,13 +298,15 @@ class ProjectTask extends AbstractModel $subtask['p_level'] = $task->p_level; $subtask['p_name'] = $task->p_name; $subtask['p_color'] = $task->p_color; - $res = self::addTask($subtask); - if (Base::isError($res)) { - return $res; + $result = self::addTask($subtask); + if (Base::isError($result)) { + return $result; } } } - return Base::retSuccess('添加成功'); + return Base::retSuccess('添加成功', [ + 'id' => $task->id + ]); }); } } diff --git a/resources/assets/js/functions/web.js b/resources/assets/js/functions/web.js index 94237f05..a331d5fc 100755 --- a/resources/assets/js/functions/web.js +++ b/resources/assets/js/functions/web.js @@ -184,6 +184,7 @@ return; } if (typeof config === "string") config = {title:config}; + let inputId = "modalInput_" + $A.randomString(6); $A.Modal.confirm({ render: (h) => { return h('div', [ @@ -197,7 +198,8 @@ h('Input', { props: { value: config.value, - placeholder: $A.L(config.placeholder) + placeholder: $A.L(config.placeholder), + elementId: inputId, }, on: { input: (val) => { @@ -220,6 +222,9 @@ } }, }); + setTimeout(() => { + document.getElementById(inputId) && document.getElementById(inputId).focus(); + }); }, modalConfirm(config, millisecond = 0) { diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index d62e9397..0a9eba0c 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -13,7 +13,7 @@
  • -
  • +
  • @@ -53,8 +53,15 @@
    -
      -
    • + +
    • @@ -77,20 +84,30 @@
    - + -
      -
    • +
      +
      -
    • -
    • + + +
      {{item.name}}
      @@ -120,17 +137,33 @@
      -
    • -
    • - -
    • -
    + +
    + +
    + +
  • -
  • {{$L('添加列表')}}
  • - +
  • +
    + {{$L('添加列表')}} +
    +
    + +
    +
  • +
    @@ -188,7 +221,7 @@
    -
    +
    {{$L('添加任务')}} @@ -370,6 +403,7 @@