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 @@
-