From 7eb50ed503065d4277031de28d4491402099db60 Mon Sep 17 00:00:00 2001 From: Falknat Date: Tue, 13 Jan 2026 11:27:44 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D0=B0=20=D0=90=D1=80=D1=85=D0=B8=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Добавлены новые методы 2. Добавлена страница архивных задач. --- backend/app/class/enity/class_task.php | 31 +- front_vue/src/components/ArchiveCard.vue | 372 ++++++++++++++++ front_vue/src/components/Sidebar.vue | 7 +- front_vue/src/components/TaskPanel.vue | 44 +- front_vue/src/router.js | 7 + front_vue/src/views/ArchivePage.vue | 538 +++++++++++++++++++++++ 6 files changed, 986 insertions(+), 13 deletions(-) create mode 100644 front_vue/src/components/ArchiveCard.vue create mode 100644 front_vue/src/views/ArchivePage.vue diff --git a/backend/app/class/enity/class_task.php b/backend/app/class/enity/class_task.php index d64513b..4b304d1 100644 --- a/backend/app/class/enity/class_task.php +++ b/backend/app/class/enity/class_task.php @@ -100,22 +100,25 @@ class Task extends BaseEntity { return $errors; } - // Проверка что задача существует и получаем текущую колонку - $task = Database::get($this->db_name, ['id', 'column_id'], ['id' => $this->id]); + // Проверка что задача существует и получаем текущие данные + $task = Database::get($this->db_name, ['id', 'column_id', 'order'], ['id' => $this->id]); if (!$task) { $this->addError('task', 'Задача не найдена'); return $this->getErrors(); } + // Получаем текущую колонку $old_column_id = (int)$task['column_id']; - $new_column_id = (int)$this->column_id; + + // Если column_id не передан — оставляем текущий + $new_column_id = $this->column_id !== null ? (int)$this->column_id : $old_column_id; // Формируем данные для обновления $update_data = [ 'id_department' => $this->id_department, 'id_label' => $this->id_label, - 'order' => $this->order, - 'column_id' => $this->column_id, + 'order' => $this->order ?? $task['order'], + 'column_id' => $new_column_id, 'date' => $this->date ?: null, 'id_account' => $this->id_account, 'title' => $this->title, @@ -168,10 +171,12 @@ class Task extends BaseEntity { $task = self::check_task($id); $old_column_id = (int)$task['column_id']; $new_column_id = (int)$column_id; + $archive = (int)$task['archive']; - // Получаем все карточки целевой колонки (кроме перемещаемой) + // Получаем все карточки целевой колонки с тем же статусом архивации (кроме перемещаемой) $cards = Database::select('cards_task', ['id', 'order'], [ 'column_id' => $column_id, + 'archive' => $archive, 'id[!]' => $id, 'ORDER' => ['order' => 'ASC'] ]) ?? []; @@ -297,10 +302,18 @@ class Task extends BaseEntity { ], 400); } - // Обновляем archive - Database::update('cards_task', [ + // Данные для обновления + $update_data = [ 'archive' => $archive ? 1 : 0 - ], [ + ]; + + // При разархивировании — возвращаем в колонку "Готово" + if (!$archive) { + $update_data['column_id'] = COLUMN_DONE_ID; + } + + // Обновляем в БД + Database::update('cards_task', $update_data, [ 'id' => $id ]); diff --git a/front_vue/src/components/ArchiveCard.vue b/front_vue/src/components/ArchiveCard.vue new file mode 100644 index 0000000..fe6863e --- /dev/null +++ b/front_vue/src/components/ArchiveCard.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/front_vue/src/components/Sidebar.vue b/front_vue/src/components/Sidebar.vue index bb61553..e89c401 100644 --- a/front_vue/src/components/Sidebar.vue +++ b/front_vue/src/components/Sidebar.vue @@ -7,10 +7,13 @@ diff --git a/front_vue/src/components/TaskPanel.vue b/front_vue/src/components/TaskPanel.vue index 24d6f38..6558149 100644 --- a/front_vue/src/components/TaskPanel.vue +++ b/front_vue/src/components/TaskPanel.vue @@ -99,9 +99,12 @@ - +