From a6ab9a797d13e0bbf0a3e56e4cd13d793932c8aa Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 9 Jun 2021 00:47:18 +0800 Subject: [PATCH] no message --- .../Controllers/Api/ProjectController.php | 68 +++------ app/Models/ProjectTask.php | 129 +++++++++--------- app/Module/Base.php | 2 +- .../pages/manage/components/ProjectList.vue | 4 +- resources/assets/sass/project-list.scss | 37 +++-- 5 files changed, 118 insertions(+), 122 deletions(-) diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index a625675e..5adb4d22 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -14,6 +14,7 @@ use App\Models\User; use App\Models\WebSocketDialogMsg; use App\Module\Base; use Carbon\Carbon; +use Illuminate\Support\Arr; use Request; /** @@ -578,9 +579,8 @@ class ProjectController extends AbstractController $user = User::IDE($user['data']); } // - $column_id = intval(Request::input('column_id')); - $name = trim(Request::input('name')); - $color = trim(Request::input('color')); + $data = Request::all(); + $column_id = intval($data['column_id']); // 列表 $column = ProjectColumn::whereId($column_id)->first(); if (empty($column)) { @@ -596,8 +596,8 @@ class ProjectController extends AbstractController return Base::retError('项目不存在或不在成员列表内'); } // - if ($name) $column->name = $name; - if ($color) $column->color = $color; + if (Arr::exists($data, 'name')) $column->name = $data['name']; + if (Arr::exists($data, 'color')) $column->color = $data['color']; $column->save(); return Base::retSuccess('修改成功', $column); } @@ -659,17 +659,9 @@ class ProjectController extends AbstractController } else { $user = User::IDE($user['data']); } - $project_id = Base::getPostInt('project_id'); - $column_id = Base::getPostValue('column_id'); - $name = Base::getPostValue('name'); - $content = Base::getPostValue('content'); - $times = Base::getPostValue('times'); - $owner = Base::getPostValue('owner'); - $subtasks = Base::getPostValue('subtasks'); - $p_level = Base::getPostValue('p_level'); - $p_name = Base::getPostValue('p_name'); - $p_color = Base::getPostValue('p_color'); - $top = Base::getPostInt('top'); + parse_str(Request::getContent(), $data); + $project_id = intval($data['project_id']); + $column_id = $data['column_id']; // 项目 $project = Project::select($this->projectSelect) ->join('project_users', 'projects.id', '=', 'project_users.project_id') @@ -701,20 +693,11 @@ class ProjectController extends AbstractController return Base::retError('任务列表不存在或已被删除'); } // - $result = ProjectTask::addTask([ + $result = ProjectTask::addTask(array_merge($data, [ 'parent_id' => 0, 'project_id' => $project->id, 'column_id' => $column->id, - 'name' => $name, - 'content' => $content, - 'times' => $times, - 'owner' => $owner, - 'subtasks' => $subtasks, - 'p_level' => $p_level, - 'p_name' => $p_name, - 'p_color' => $p_color, - 'top' => $top, - ]); + ])); if (Base::isSuccess($result)) { $result['data'] = ProjectTask::with(['taskUser', 'taskTag'])->whereId($result['data']['id'])->first(); } @@ -742,13 +725,8 @@ class ProjectController extends AbstractController $user = User::IDE($user['data']); } // - $task_id = Base::getPostInt('task_id'); - $name = Base::getPostValue('name'); - $color = Base::getPostValue('color'); - $content = Base::getPostValue('content'); - $times = Base::getPostValue('times'); - $owner = Base::getPostValue('owner'); - $complete_at = Base::getPostValue('complete_at'); + parse_str(Request::getContent(), $data); + $task_id = intval($data['task_id']); // 任务 $task = ProjectTask::whereId($task_id)->first(); if (empty($task)) { @@ -764,27 +742,21 @@ class ProjectController extends AbstractController return Base::retError('项目不存在或不在成员列表内'); } // - if ($complete_at === false || $complete_at === "false") { - // 标记未完成 - if (!$task->complete_at) { - return Base::retError('未完成任务'); - } - $result = $task->completeTask(null); - } elseif (Base::isDate($complete_at)) { + if (Base::isDate($data['complete_at'])) { // 标记已完成 if ($task->complete_at) { return Base::retError('任务已完成'); } $result = $task->completeTask(Carbon::now()); + } elseif (Arr::exists($data, 'complete_at')) { + // 标记未完成 + if (!$task->complete_at) { + return Base::retError('未完成任务'); + } + $result = $task->completeTask(null); } else { // 更新任务 - $result = $task->updateTask([ - 'name' => $name, - 'color' => $color, - 'content' => $content, - 'times' => $times, - 'owner' => $owner, - ]); + $result = $task->updateTask($data); } if (Base::isSuccess($result)) { $result['data'] = $task->toArray(); diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 3bf53693..4c688df6 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Module\Base; +use Arr; use Carbon\Carbon; use Illuminate\Database\Eloquent\SoftDeletes; @@ -210,32 +211,33 @@ class ProjectTask extends AbstractModel /** * 添加任务 - * @param $params + * @param $data * @return array|bool */ - public static function addTask($params) + public static function addTask($data) { - $parent_id = intval($params['parent_id']); - $project_id = intval($params['project_id']); - $column_id = intval($params['column_id']); - $name = $params['name']; - $content = $params['content']; - $times = $params['times']; - $owner = $params['owner']; - $subtasks = $params['subtasks']; - $p_level = intval($params['p_level']); - $p_name = $params['p_name']; - $p_color = $params['p_color']; - $top = intval($params['top']); + $parent_id = intval($data['parent_id']); + $project_id = intval($data['project_id']); + $column_id = intval($data['column_id']); + $name = $data['name']; + $content = $data['content']; + $times = $data['times']; + $owner = $data['owner']; + $subtasks = $data['subtasks']; + $p_level = intval($data['p_level']); + $p_name = $data['p_name']; + $p_color = $data['p_color']; + $top = intval($data['top']); // $retPre = $parent_id ? '子任务' : '任务'; - $task = self::createInstance(); - $task->parent_id = $parent_id; - $task->project_id = $project_id; - $task->column_id = $column_id; - $task->p_level = $p_level; - $task->p_name = $p_name; - $task->p_color = $p_color; + $task = self::createInstance([ + 'parent_id' => $parent_id, + 'project_id' => $project_id, + 'column_id' => $column_id, + 'p_level' => $p_level, + 'p_name' => $p_name, + 'p_color' => $p_color, + ]); if ($content) { $task->desc = Base::getHtml($content); } @@ -310,53 +312,31 @@ class ProjectTask extends AbstractModel }); } - /** - * 标记已完成、未完成 - * @param Carbon|null $complete_at 完成时间 - * @return array|bool - */ - public function completeTask($complete_at) - { - return AbstractModel::transaction(function () use ($complete_at) { - if ($complete_at === null) { - // 标记未完成 - $this->complete_at = null; - } else { - // 标记已完成 - if ($this->parent_id == 0) { - if (self::whereParentId($this->id)->whereCompleteAt(null)->exists()) { - return Base::retError('子任务未完成'); - } - } - $this->complete_at = $complete_at; - } - $this->save(); - return Base::retSuccess('修改成功'); - }); - } - /** * 修改任务 - * @param $params + * @param $data * @return array */ - public function updateTask($params) + public function updateTask($data) { - return AbstractModel::transaction(function () use ($params) { - $name = $params['name']; - $color = $params['color']; - $content = $params['content']; - $times = $params['times']; - $owner = $params['owner']; - // 子任务禁止修改项 - if ($this->parent_id > 0) { - $color = null; - $content = null; + return AbstractModel::transaction(function () use ($data) { + $content = $data['content']; + $times = $data['times']; + $owner = $data['owner']; + // 标题 + if (Arr::exists($data, 'name')) { + if (empty($data['name'])) { + return Base::retError('任务描述不能为空'); + } elseif (mb_strlen($data['name']) > 255) { + return Base::retError('任务描述最多只能设置255个字'); + } + $this->name = $data['name']; } - // 名称、背景色 - if ($name) $this->name = $name; - if ($color) $this->color = $color; - if ($content) { + // 背景色 + if (Arr::exists($data, 'color')) { + $this->color = $data['color']; + } + if ($content && $this->parent_id === 0) { ProjectTaskContent::updateInsert([ 'project_id' => $this->parent_id, 'task_id' => $this->id, @@ -396,4 +376,29 @@ class ProjectTask extends AbstractModel return Base::retSuccess('修改成功'); }); } + + /** + * 标记已完成、未完成 + * @param Carbon|null $complete_at 完成时间 + * @return array|bool + */ + public function completeTask($complete_at) + { + return AbstractModel::transaction(function () use ($complete_at) { + if ($complete_at === null) { + // 标记未完成 + $this->complete_at = null; + } else { + // 标记已完成 + if ($this->parent_id == 0) { + if (self::whereParentId($this->id)->whereCompleteAt(null)->exists()) { + return Base::retError('子任务未完成'); + } + } + $this->complete_at = $complete_at; + } + $this->save(); + return Base::retSuccess('修改成功'); + }); + } } diff --git a/app/Module/Base.php b/app/Module/Base.php index 77c41b6d..39afa96b 100755 --- a/app/Module/Base.php +++ b/app/Module/Base.php @@ -1955,7 +1955,7 @@ class Base public static function getPostValue($key, $default = null) { $value = self::getContentValue($key, $default); - if (empty($value)) { + if (!isset($value)) { $value = Request::post($key, $default); } return $value; diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index 757d41be..cff299f1 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -122,7 +122,7 @@ @remove="sortUpdate">
{{item.name}}
@@ -177,7 +177,7 @@ :class="['task-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']" :open-delay="600" :content="item.end_at"> -
{{ expiresFormat(item.end_at) }}
+
{{ expiresFormat(item.end_at) }}
diff --git a/resources/assets/sass/project-list.scss b/resources/assets/sass/project-list.scss index c97ff5d9..2781b072 100644 --- a/resources/assets/sass/project-list.scss +++ b/resources/assets/sass/project-list.scss @@ -290,7 +290,7 @@ background-color: #ffffff; border-radius: 12px; padding: 12px; - transition: box-shadow 0.3s; + transition: box-shadow 0.3s, opacity 0.3s; position: relative; &:hover { box-shadow: 0 0 10px #e6ecfa; @@ -298,14 +298,6 @@ &:first-child { margin-top: 16px; } - .priority-color { - position: absolute; - top: 12px; - left: 0; - width: 3px; - height: 42px; - border-radius: 2px; - } .task-head { display: flex; align-items: flex-start; @@ -422,6 +414,33 @@ } } } + .priority-color { + position: absolute; + top: 12px; + left: 0; + width: 3px; + height: 42px; + max-height: 50%; + border-radius: 2px; + } + &.complete { + opacity: 0.5; + &:hover { + opacity: 0.8; + } + .task-head { + .task-title { + text-decoration: line-through; + } + } + .task-desc, + .task-tags, + .task-users, + .task-progress, + .priority-color { + display: none; + } + } } } }