diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php
index 417e289d2..0c2faddf7 100755
--- a/app/Http/Controllers/Api/ProjectController.php
+++ b/app/Http/Controllers/Api/ProjectController.php
@@ -916,6 +916,7 @@ class ProjectController extends AbstractController
$time_before = Request::input('time_before');
$complete = Request::input('complete', 'all');
$archived = Request::input('archived', 'no');
+ $deleted = Request::input('deleted');
$keys = Request::input('keys');
$sorts = Request::input('sorts');
$keys = is_array($keys) ? $keys : [];
@@ -970,6 +971,10 @@ class ProjectController extends AbstractController
$builder->whereNull('project_tasks.archived_at');
}
//
+ if ($deleted == 'yes') {
+ $builder->onlyTrashed();
+ }
+ //
foreach ($sorts as $column => $direction) {
if (!in_array($column, ['complete_at', 'archived_at', 'end_at'])) continue;
if (!in_array($direction, ['asc', 'desc'])) continue;
@@ -1524,6 +1529,9 @@ class ProjectController extends AbstractController
$task_id = intval($data['task_id']);
//
$task = ProjectTask::userTask($task_id, true, 2);
+ if ($task->deleted_at) {
+ throw new ApiException('任务已删除');
+ }
// 更新任务
$updateMarking = [];
$task->updateTask($data, $updateMarking);
@@ -1643,8 +1651,21 @@ class ProjectController extends AbstractController
User::auth();
//
$task_id = intval(Request::input('task_id'));
+ $type = Request::input('type');
//
$task = ProjectTask::userTask($task_id, null, true);
+ if($type == 'recovery'){
+ $task->deleted_at = null;
+ $task->deleted_userid = 0;
+ $task->save();
+ return Base::retSuccess('操作成功', ['id' => $task->id]);
+ }
+ if($type == 'completely_delete'){
+ $task->forceDelete();
+ return Base::retSuccess('彻底删除成功', ['id' => $task->id]);
+ }
+ $task->deleted_userid = User::userid();
+ $task->save();
//
$task->deleteTask();
return Base::retSuccess('删除成功', ['id' => $task->id]);
diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php
index 3a4bea77f..97e23d7bd 100644
--- a/app/Models/ProjectTask.php
+++ b/app/Models/ProjectTask.php
@@ -42,6 +42,7 @@ use Request;
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property int|null $deleted_userid 删除会员
* @property-read \App\Models\ProjectTaskContent|null $content
* @property-read int $file_num
* @property-read int $msg_num
@@ -60,7 +61,7 @@ use Request;
* @property-read int|null $task_user_count
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask allData($userid = null)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask authData($userid = null, $owner = null)
- * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask betweenTime($start, $end)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask betweenTime($start, $end, $type)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery()
* @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed()
@@ -73,6 +74,7 @@ use Request;
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereCompleteAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDeletedUserid($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDesc($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDialogId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereEndAt($value)
@@ -1192,6 +1194,7 @@ class ProjectTask extends AbstractModel
public static function userTask($task_id, $archived = true, $permission = 0, $with = [])
{
$task = self::with($with)->allData()->where("project_tasks.id", intval($task_id))->first();
+ $task = $task ?: ProjectTask::where("project_tasks.id", intval($task_id))->onlyTrashed()->first();
//
if (empty($task)) {
throw new ApiException('任务不存在', [ 'task_id' => $task_id ], -4002);
diff --git a/app/Models/ProjectTaskMailLog.php b/app/Models/ProjectTaskMailLog.php
index 984be8c2d..3d852dcc2 100644
--- a/app/Models/ProjectTaskMailLog.php
+++ b/app/Models/ProjectTaskMailLog.php
@@ -21,6 +21,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property \Illuminate\Support\Carbon|null $deleted_at
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog newQuery()
+ * @method static \Illuminate\Database\Query\Builder|ProjectTaskMailLog onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog query()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog whereDeletedAt($value)
@@ -31,6 +32,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskMailLog whereUserid($value)
+ * @method static \Illuminate\Database\Query\Builder|ProjectTaskMailLog withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|ProjectTaskMailLog withoutTrashed()
* @mixin \Eloquent
*/
class ProjectTaskMailLog extends AbstractModel
diff --git a/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php b/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php
new file mode 100644
index 000000000..7e4602ff0
--- /dev/null
+++ b/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php
@@ -0,0 +1,34 @@
+bigInteger('deleted_userid')->nullable()->default(0)->after('deleted_at')->comment('删除会员');
+ }
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('project_tasks', function (Blueprint $table) {
+ $table->dropColumn("deleted_userid");
+ });
+ }
+}
diff --git a/resources/assets/js/pages/manage/calendar.vue b/resources/assets/js/pages/manage/calendar.vue
index b9f07447b..1a0559a8e 100644
--- a/resources/assets/js/pages/manage/calendar.vue
+++ b/resources/assets/js/pages/manage/calendar.vue
@@ -359,7 +359,7 @@ export default {
content: '你确定要删除任务【' + data.name + '】吗?',
loading: true,
onOk: () => {
- this.$store.dispatch("removeTask", data.id).then(({msg}) => {
+ this.$store.dispatch("removeTask", {task_id: data.id}).then(({msg}) => {
$A.messageSuccess(msg);
this.$Modal.remove();
}).catch(({msg}) => {
diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue
index 75d1b3273..092472d4a 100644
--- a/resources/assets/js/pages/manage/components/ProjectList.vue
+++ b/resources/assets/js/pages/manage/components/ProjectList.vue
@@ -57,6 +57,7 @@
+
+
+