diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 30e24173..1aa59339 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -458,7 +458,9 @@ class ProjectController extends AbstractController * 添加、修改 任务列表 * * @apiParam {Number} project_id 项目ID + * @apiParam {Number} [column_id] 列表ID(留空为添加列表) * @apiParam {String} name 列表名称 + * @apiParam {String} color 颜色 */ public function column__add() { @@ -472,6 +474,7 @@ class ProjectController extends AbstractController $project_id = intval(Request::input('project_id')); $column_id = intval(Request::input('column_id')); $name = trim(Request::input('name')); + $color = trim(Request::input('color')); if (empty($name)) { return Base::retError('列表名称不能为空'); } @@ -486,19 +489,60 @@ class ProjectController extends AbstractController } // if ($column_id > 0) { - $column = ProjectColumn::find($column_id); + $column = ProjectColumn::whereId($column_id)->whereProjectId($project_id)->first(); + if (empty($column)) { + return Base::retError('列表不存在'); + } + $column->name = $name; + $column->color = $color; + $column->save(); + return Base::retSuccess('修改成功', $column); } else { $column = ProjectColumn::createInstance([ 'project_id' => $project->id, + 'name' => $name, + 'color' => $color, ]); - } - if ($column) { - $column->name = $name; $column->save(); return Base::retSuccess('添加成功', $column); + } + } + + /** + * 删除任务列表 + * + * @apiParam {Number} project_id 项目ID + * @apiParam {Number} column_id 列表ID(留空为添加列表) + */ + public function column__delete() + { + $user = User::authE(); + if (Base::isError($user)) { + return $user; } else { + $user = User::IDE($user['data']); + } + // + $project_id = intval(Request::input('project_id')); + $column_id = intval(Request::input('column_id')); + // 项目 + $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('项目不存在或不在成员列表内'); + } + // + $column = ProjectColumn::whereId($column_id)->whereProjectId($project_id)->first(); + if (empty($column)) { return Base::retError('列表不存在'); } + if ($column->deleteColumn()) { + return Base::retSuccess('删除成功'); + } + return Base::retError('删除失败'); } /** diff --git a/app/Models/Project.php b/app/Models/Project.php index 82e564bf..dab0ee1f 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -111,6 +111,7 @@ class Project extends AbstractModel { $result = AbstractModel::transaction(function () { ProjectTask::whereProjectId($this->id)->delete(); + ProjectColumn::whereProjectId($this->id)->delete(); WebSocketDialog::whereId($this->dialog_id)->delete(); if ($this->delete()) { return Base::retSuccess('success'); diff --git a/app/Models/ProjectColumn.php b/app/Models/ProjectColumn.php index 8cd7169d..7cbf2687 100644 --- a/app/Models/ProjectColumn.php +++ b/app/Models/ProjectColumn.php @@ -2,6 +2,9 @@ namespace App\Models; +use App\Module\Base; +use Illuminate\Database\Eloquent\SoftDeletes; + /** * Class ProjectColumn * @@ -27,6 +30,8 @@ namespace App\Models; */ class ProjectColumn extends AbstractModel { + use SoftDeletes; + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ @@ -34,4 +39,21 @@ class ProjectColumn extends AbstractModel { return $this->hasMany(projectTask::class, 'column_id', 'id')->orderByDesc('id'); } + + /** + * 删除列表 + * @return bool + */ + public function deleteColumn() + { + $result = AbstractModel::transaction(function () { + ProjectTask::whereColumnId($this->id)->delete(); + if ($this->delete()) { + return Base::retSuccess('success'); + } else { + return Base::retError('error'); + } + }); + return Base::isSuccess($result); + } } diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index df916008..d18abcc9 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -55,13 +55,28 @@