diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 1aa59339..e89f1b80 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -503,6 +503,7 @@ class ProjectController extends AbstractController 'name' => $name, 'color' => $color, ]); + $column->sort = intval(ProjectColumn::whereProjectId($project->id)->orderByDesc('sort')->value('sort')) + 1; $column->save(); return Base::retSuccess('添加成功', $column); } @@ -546,7 +547,7 @@ class ProjectController extends AbstractController } /** - * {post}添加任务 + * {post} 添加任务 * * @apiParam {Number} project_id 项目ID * @apiParam {Number} [column_id] 列表ID,留空取第一个 @@ -555,6 +556,7 @@ class ProjectController extends AbstractController * @apiParam {Array} [times] 计划时间(格式:开始时间,结束时间;如:2020-01-01 00:00,2020-01-01 23:59) * @apiParam {Number} [owner] 负责人,留空为自己 * @apiParam {Array} [subtasks] 子任务(格式:[{name,owner,times}]) + * @apiParam {Number} [top] 添加的任务排到列表最前面 */ public function task__add() { @@ -574,6 +576,7 @@ class ProjectController extends AbstractController $p_level = Base::getPostValue('p_level'); $p_name = Base::getPostValue('p_name'); $p_color = Base::getPostValue('p_color'); + $top = Base::getPostInt('top'); // 项目 $project = Project::select($this->projectSelect) ->join('project_users', 'projects.id', '=', 'project_users.project_id') @@ -617,6 +620,7 @@ class ProjectController extends AbstractController 'p_level' => $p_level, 'p_name' => $p_name, 'p_color' => $p_color, + 'top' => $top, ]); } } diff --git a/app/Models/Project.php b/app/Models/Project.php index dab0ee1f..b3229665 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -65,7 +65,7 @@ class Project extends AbstractModel */ public function projectColumn(): \Illuminate\Database\Eloquent\Relations\HasMany { - return $this->hasMany(projectColumn::class, 'project_id', 'id')->orderBy('id'); + return $this->hasMany(projectColumn::class, 'project_id', 'id')->orderBy('sort')->orderBy('id'); } /** diff --git a/app/Models/ProjectColumn.php b/app/Models/ProjectColumn.php index 7cbf2687..8d2be94b 100644 --- a/app/Models/ProjectColumn.php +++ b/app/Models/ProjectColumn.php @@ -12,20 +12,27 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property int $id * @property int|null $project_id 项目ID * @property string|null $name 列表名称 - * @property int|null $inorder 排序(ASC) + * @property string|null $color 颜色 + * @property int|null $sort 排序(ASC) * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property \Illuminate\Support\Carbon|null $deleted_at * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTask[] $projectTask * @property-read int|null $project_task_count * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn newQuery() + * @method static \Illuminate\Database\Query\Builder|ProjectColumn onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn query() + * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereColor($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereInorder($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereProjectId($value) + * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereSort($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn whereUpdatedAt($value) + * @method static \Illuminate\Database\Query\Builder|ProjectColumn withTrashed() + * @method static \Illuminate\Database\Query\Builder|ProjectColumn withoutTrashed() * @mixin \Eloquent */ class ProjectColumn extends AbstractModel @@ -37,7 +44,7 @@ class ProjectColumn extends AbstractModel */ public function projectTask(): \Illuminate\Database\Eloquent\Relations\HasMany { - return $this->hasMany(projectTask::class, 'column_id', 'id')->orderByDesc('id'); + return $this->hasMany(projectTask::class, 'column_id', 'id')->orderBy('sort')->orderBy('id'); } /** diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index e111e46b..8ee75a55 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -24,6 +24,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property int|null $p_level 优先级 * @property string|null $p_name 优先级名称 * @property string|null $p_color 优先级颜色 + * @property int|null $sort 排序(ASC) * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at @@ -57,6 +58,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask wherePName($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereParentId($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereProjectId($value) + * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereSort($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereStartAt($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereUserid($value) @@ -224,6 +226,7 @@ class ProjectTask extends AbstractModel $p_level = intval($params['p_level']); $p_name = $params['p_name']; $p_color = $params['p_color']; + $top = intval($params['top']); // $retPre = $parent_id ? '子任务' : '任务'; $task = self::createInstance(); @@ -263,6 +266,12 @@ class ProjectTask extends AbstractModel } // 创建人 $task->userid = User::token2userid(); + // 排序位置 + if ($top) { + $task->sort = intval(self::whereColumnId($task->column_id)->orderBy('sort')->value('sort')) - 1; + } else { + $task->sort = intval(self::whereColumnId($task->column_id)->orderByDesc('sort')->value('sort')) + 1; + } // return AbstractModel::transaction(function() use ($subtasks, $content, $owner, $task) { $task->save(); diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index d18abcc9..d62e9397 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -77,16 +77,16 @@ - +