From e6507e82f228e622ef68fbf52c1b93439e67b030 Mon Sep 17 00:00:00 2001 From: vladfo Date: Fri, 20 Sep 2024 14:36:32 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?utf8?q?=D0=BE=20=D0=B4=D0=B0=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/crud/TaskController.php | 62 +++++++++++++++--- erp24/views/crud/task/_form.php | 79 +++++++++++++++++++---- erp24/views/crud/task/view.php | 58 +++++++++++++++++ 3 files changed, 179 insertions(+), 20 deletions(-) diff --git a/erp24/controllers/crud/TaskController.php b/erp24/controllers/crud/TaskController.php index 0dd044f8..42d7f381 100644 --- a/erp24/controllers/crud/TaskController.php +++ b/erp24/controllers/crud/TaskController.php @@ -2,6 +2,9 @@ namespace yii_app\controllers\crud; +use DateTime; +use DateTimeZone; +use Exception; use Yii; use yii\web\UploadedFile; use yii_app\records\Comment; @@ -202,7 +205,7 @@ class TaskController extends Controller $model->loadDefaultValues(); $model->data_start = date("Y-m-d H:i:s"); - $model->duration = 30; + $model->duration = "30:m"; $model->name = ''; $model->description = ''; $model->task_type_id = 0; @@ -244,14 +247,26 @@ class TaskController extends Controller } } - // Обновляем и сохраняем остальные данные - $model->created_at = date("Y-m-d H:i:s"); - $model->group_id = 1; - $model->is_completed = 0; - $model->result = ''; - $model->created_by = $_SESSION['admin_id']; - $model->save(false); + + + try { + + + // Обновляем и сохраняем данные модели + $model->created_at = date("Y-m-d H:i:s"); + $model->group_id = 1; + $model->is_completed = 0; + $model->result = ''; + $model->created_by = $_SESSION['admin_id']; + + + $model->save(false); + + } catch (Exception $e) { + // Обработка исключений + echo 'Ошибка: ', $e->getMessage(); + } // Сохранение файлов $model->files = UploadedFile::getInstances($model, 'files'); @@ -415,6 +430,16 @@ class TaskController extends Controller $entities = TaskService::getEntitiesByAlias(TaskEntity::findOne($model->entity_type)->alias); + // Получаем данные из базы данных + $timestampWithTimezoneDataStart = $model->data_start; // Пример значения '2024-09-21 14:26:38+03' + $timestampWithTimezoneDataEnd = $model->data_end; // Пример значения '2024-09-30 15:30:00+03' + $timestampWithTimezoneDeadline = $model->deadline; // Пример значения '2024-09-25 12:00:00+03' + +// Преобразуем данные для формы + $model->data_start = $this->formatTimestampForInput($timestampWithTimezoneDataStart); + $model->data_end = $this->formatTimestampForInput($timestampWithTimezoneDataEnd); + $model->deadline = $this->formatTimestampForInput($timestampWithTimezoneDeadline); + return $this->render('update', compact('model', 'entities', 'taskEntity','tasksType', 'taskStatus', 'taskAlertLevels', 'comment', 'canUpdateAll', 'canUpdateStatusAndDuration')); @@ -449,4 +474,25 @@ class TaskController extends Controller throw new NotFoundHttpException('The requested page does not exist.'); } + + + // Функция для преобразования времени из формата 'timestamp with timezone' в 'yyyy-mm-dd hh:ii' + protected function formatTimestampForInput($timestampWithTimezone) { + if (empty($timestampWithTimezone)) { + // Возвращаем пустую строку, если нет входных данных + return ''; + } + + try { + // Создаем объект DateTime из строки с временной зоной + $datetime = new DateTime($timestampWithTimezone, new DateTimeZone('Europe/Moscow')); // Предположим, что временная зона UTC, можно заменить на нужную + // Форматируем в 'yyyy-mm-dd hh:ii' + return $datetime->format('Y-m-d H:i'); + } catch (Exception $e) { + // Ловим исключения и передаем сообщение об ошибке + throw new Exception("Ошибка преобразования времени: " . $e->getMessage()); + } + } + + } diff --git a/erp24/views/crud/task/_form.php b/erp24/views/crud/task/_form.php index 3bc56f37..040cae96 100755 --- a/erp24/views/crud/task/_form.php +++ b/erp24/views/crud/task/_form.php @@ -136,19 +136,61 @@ $this->registerJsFile('/js/crud/task/update.js', ['position' => \yii\web\View::P )->label(false); ?> -
- - field($model, 'duration')->textInput(['type' => 'number', 'disabled' => !$canUpdateStatusAndDuration])->label(false); ?> -
+
+ +
+
Продолжительность
+
+ duration); + $value = $paramArray[0] ?? 0; + $scale = $paramArray[1] ?? 'm'; // По умолчанию "минуты" + ?> + + + /> + + + + + + - + // Обработчики событий для изменения значения и масштаба + $durationValue.on('change', () => syncDuration()); + $durationScale.on('change', () => syncDuration()); + + // Установка начального значения + $durationScale.val(""); + +
+
+ + +
+ field($model, 'duration')->hiddenInput()->label(false) ?> +
+
+ + + +
@@ -163,6 +205,19 @@ $this->registerJsFile('/js/crud/task/update.js', ['position' => \yii\web\View::P ])->label(false); ?>
+
+ + field($model, 'data_end')->widget(DateTimePicker::class, [ + 'language' => 'ru', + 'template' => '{input}', + 'clientOptions' => [ + 'autoclose' => true, + 'format' => 'yyyy-mm-dd hh:ii', + 'todayBtn' => true + ], + ])->label(false); ?> +
+ deadline_permission != 0 || ($model->controller && ($model->controller->id == $_SESSION['admin_id']))): ?>
diff --git a/erp24/views/crud/task/view.php b/erp24/views/crud/task/view.php index a4b43a95..16249590 100755 --- a/erp24/views/crud/task/view.php +++ b/erp24/views/crud/task/view.php @@ -9,6 +9,7 @@ use yii\helpers\HtmlPurifier; use yii_app\helpers\PrintBlockHelper; use yii_app\services\FileService; use yii_app\services\DateTimeService; +use yii_app\services\TaskService; /* @var $this yii\web\View */ /* @var $model yii_app\records\Task */ @@ -110,6 +111,35 @@ $this->registerJsFile('/js/crud/task/update.js', ['position' => \yii\web\View::P Тип задачи: taskType->name ?? $model->task_type_id) ?> + + Тип сущности: + taskEntity->name ?? $model->entity_type) ?> + + + Сущность: + + taskEntity->alias); + switch ($model->taskEntity->alias) { + case 'lesson': + echo Html::encode($entities[$model->entity_id] ?? '---'); // Имя урока, если сущность - "lesson" + break; + case 'store': + echo Html::encode($entities[$model->entity_id] ?? '---'); // Имя магазина, если сущность - "store" + break; + case 'bpmn': + + echo Html::encode($entities[$model->entity_id] ?? '---'); // Имя BPMN-сущности, если алиас - "bpmn" + break; + default: + + echo Html::encode($model->entity_id ?? '---'); // Если ни один из алиасов не подошел, выводим ID сущности + } + ?> + + + Статус: statusEntity->name ?? $model->status) ?> @@ -170,6 +200,34 @@ $this->registerJsFile('/js/crud/task/update.js', ['position' => \yii\web\View::P Дата завершения: data_end) ?> + + Продолжительность: + + duration); + $value = $paramArray[0] ?? '---'; // Значение (например, 90) + $scale = isset($paramArray[1]) ? $paramArray[1] : 'm'; // Единица измерения (по умолчанию "минуты") + + // Определяем текстовое значение единицы + switch ($scale) { + case 'h': + $unit = 'Часы'; + break; + case 'd': + $unit = 'Дни'; + break; + case 'm': + default: + $unit = 'Минуты'; + break; + } + + // Выводим значение с единицей измерения + echo Html::encode($value . ' ' . $unit); + ?> + + Дедлайн: deadline) ?> -- 2.39.5