add views

This commit is contained in:
amazuecos
2025-04-22 09:43:25 +02:00
parent 946527cc1a
commit 62a95a0ca8
20 changed files with 377 additions and 43 deletions

View File

@ -782,6 +782,10 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
$routes->group('maquinista', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
$routes->get('maquinas/view', 'Ordentrabajo::maquinista_maquinas_view', ['as' => 'viewProduccionMaquinistaMaquinas']);
$routes->get('maquinas/view/(:num)', 'Ordentrabajo::maquinista_maquina_tareas_list/$1', ['as' => 'viewProduccionMaquinaTareasList']);
$routes->get('maquinas/view/tarea/(:num)', 'Ordentrabajo::maquinista_maquina_tarea_view/$1', ['as' => 'viewProduccionMaquinistaTareaView']);
$routes->get('colas/view', 'Ordentrabajo::maquinista_colas_view', ['as' => 'viewProduccionMaquinistaColas']);
});
});

View File

@ -3,6 +3,7 @@
namespace App\Controllers\Produccion;
use App\Controllers\BaseController;
use App\Models\Configuracion\MaquinaModel;
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
use App\Models\OrdenTrabajo\OrdenTrabajoUser;
@ -27,6 +28,7 @@ class Ordentrabajo extends BaseController
protected OrdenTrabajoModel $otModel;
protected OrdenTrabajoUser $otUserModel;
protected OrdenTrabajoTarea $otTarea;
protected MaquinaModel $maquinaModel;
protected UserModel $userModel;
protected Validation $validation;
protected static $viewPath = 'themes/vuexy/form/produccion/';
@ -42,6 +44,7 @@ class Ordentrabajo extends BaseController
$this->userModel = model(UserModel::class);
$this->produccionService = new ProductionService();
$this->otTarea = model(OrdenTrabajoTarea::class);
$this->maquinaModel = model(MaquinaModel::class);
$this->validation = service("validation");
helper("time");
parent::initController($request, $response, $logger);
@ -452,7 +455,42 @@ class Ordentrabajo extends BaseController
->setHeader('Content-Disposition', "attachment; filename=CodigoBarrasOT_{$orden_trabajo_id}.png")
->setBody($barcode);
}
public function maquinista_maquinas_view(){}
public function maquinista_colas_view(){}
public function maquinista_maquinas_view()
{
// Breadcrumbs
$this->viewData['breadcrumb'] = [
['title' => lang("Produccion.maquinista.maquinas"), 'route' =>route_to("viewProduccionMaquinistaMaquinas"), 'active' => true],
];
$data = [
"impresion" => $this->maquinaModel->queryViewMaquinistaMaquinas('impresion')->get()->getResultArray(),
"manipulado" => $this->maquinaModel->queryViewMaquinistaMaquinas('manipulado')->get()->getResultArray(),
"acabado" => $this->maquinaModel->queryViewMaquinistaMaquinas('acabado')->get()->getResultArray(),
];
$this->viewData["maquinas"] = $data;
return view(static::$viewPath . '/maquinista/viewMaquinistaMaquinaList', $this->viewData);
}
public function maquinista_maquina_tareas_list(int $maquina_id)
{
$maquina = $this->maquinaModel->find($maquina_id);
$this->viewData['breadcrumb'] = [
['title' => lang("Produccion.maquinista.maquinas"), 'route' =>route_to("viewProduccionMaquinistaMaquinas"), 'active' => false],
['title' => $maquina->nombre, 'route' =>route_to("viewProduccionMaquinistaMaquina",$maquina_id), 'active' => true],
];
$this->viewData["maquinaEntity"] = $maquina;
return view(static::$viewPath . '/maquinista/viewMaquinistaMaquinaTareas', $this->viewData);
}
public function maquinista_maquina_tarea_view(int $orden_trabajo_tarea_id)
{
return view(static::$viewPath . '/maquinista/viewMaquinistaMaquinaTarea', $this->viewData);
}
public function maquinista_colas_view(){
return view(static::$viewPath . '/maquinista/viewMaquinistaPlanningList', $this->viewData);
}
}

View File

@ -28,7 +28,8 @@ return [
"metros" => "Metros",
"corte" => "Corte",
"pliegos" => "Pliegos",
"pliegos_libro" => "Pliegos"
"pliegos_libro" => "Pliegos",
"fecha" => "fecha"
],
@ -121,8 +122,11 @@ return [
"progress_preimpresion" => "Preimpresión",
"progress_logistica" => "Ferro/Logística",
"progress_impresion" => "Impresión",
"progress_manipulado" => "Manipulado/Acabado"
"progress_manipulado" => "Manipulado/Acabado",
"maquinista" => [
"maquinas" => "Máquinas",
"tareas_hoy" => "Tareas para HOY",
]
];

View File

@ -20,7 +20,8 @@ class MaquinaModel extends \App\Models\BaseModel
3 => "t1.ancho_impresion",
4 => "t1.alto_impresion",
5 => "t1.min",
6 => "t1.max", ];
6 => "t1.max",
];
protected $allowedFields = [
"nombre",
@ -249,7 +250,7 @@ class MaquinaModel extends \App\Models\BaseModel
return $result;
}
public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa , $inkjet)
public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa, $inkjet)
{
$builder = $this->db
->table($this->table . " t1")
@ -262,7 +263,8 @@ class MaquinaModel extends \App\Models\BaseModel
return $builder;
}
public function getVelocidad($maquina_id){
public function getVelocidad($maquina_id)
{
$builder = $this->db
->table($this->table . " t1")
->select(
@ -272,9 +274,9 @@ class MaquinaModel extends \App\Models\BaseModel
$resultObject = $builder->get()->getResultObject();
if(count($resultObject)>0)
if (count($resultObject) > 0)
return $resultObject[0]->velocidad;
else{
else {
return -1;
}
}
@ -318,7 +320,7 @@ class MaquinaModel extends \App\Models\BaseModel
}
}
public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $uso_tarifa , $tirada, $papel_impresion_id = -1)
public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $uso_tarifa, $tirada, $papel_impresion_id = -1)
{
/*
1.-> tarifa_Tipo impresion
@ -351,25 +353,25 @@ class MaquinaModel extends \App\Models\BaseModel
->where("t1.min <=", $tirada)
->where("t1.max >=", $tirada);
if(is_array($tarifa_tipo)){
foreach($tarifa_tipo as $tarifa){
$builder->where("EXISTS (SELECT * FROM lg_maquinas_tarifas_impresion t2 WHERE t1.id=t2.maquina_id AND t2.tipo='{$tarifa}' AND t2.uso='{$uso_tarifa}' AND t2.is_deleted=0)");
}
}
else{
$builder->where("t2.tipo", $tarifa_tipo);
$builder->where("t2.uso", $uso_tarifa);
if (is_array($tarifa_tipo)) {
foreach ($tarifa_tipo as $tarifa) {
$builder->where("EXISTS (SELECT * FROM lg_maquinas_tarifas_impresion t2 WHERE t1.id=t2.maquina_id AND t2.tipo='{$tarifa}' AND t2.uso='{$uso_tarifa}' AND t2.is_deleted=0)");
}
} else {
$builder->where("t2.tipo", $tarifa_tipo);
$builder->where("t2.uso", $uso_tarifa);
}
return $builder;
}
public function getNombre($id){
public function getNombre($id)
{
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.nombre AS text");
"t1.nombre AS text"
);
$builder->where("t1.id", $id);
@ -383,16 +385,32 @@ class MaquinaModel extends \App\Models\BaseModel
* @param string|null $type Tipo de maquina impresion,manipulado,acabado
* @return array
*/
public function getSelectQuery(?string $q = null, ?string $type = null) : array
public function getSelectQuery(?string $q = null, ?string $type = null): array
{
$query = $this->builder()->select(["id","nombre","tipo as description"])
->where("deleted_at",null);
if($q){
$query->like("nombre",$q);
$query = $this->builder()->select(["id", "nombre", "tipo as description"])
->where("deleted_at", null);
if ($q) {
$query->like("nombre", $q);
}
if($type){
$query->where("tipo",$type);
if ($type) {
$query->where("tipo", $type);
}
return $query->get()->getResultArray();
}
public function queryViewMaquinistaMaquinas($maquina_tipo = "impresion")
{
$query = $this->builder()
->select([
'lg_maquinas.id as maquinaId',
'lg_maquinas.nombre',
'COUNT(orden_trabajo_tareas.id) as countTareas'
])
->join('orden_trabajo_tareas','orden_trabajo_tareas.maquina_id = lg_maquinas.id','left')
->where('lg_maquinas.tipo', $maquina_tipo)
->where('lg_maquinas.deleted_at',null)
->groupBy('lg_maquinas.id');
return $query;
}
}

View File

@ -0,0 +1,27 @@
<div class="card h-100">
<div class="card-header pb-0 d-flex justify-content-between">
<div class="card-title mb-0">
<small class="text-muted">Titulo</small>
<h5 class="mb-0"><?= $presupuesto->titulo ?></h5>
</div>
</div>
<div class="card-body row">
<div class="col-6">
<div class="mt-lg-4 mt-lg-2 mb-lg-4 mb-2 pt-1 w-100">
<p class="mb-0">OT ID</p>
<h1 class="mb-0"><?= $ot->id ?></h1>
</div>
</div>
<div class="col-6">
<div class="mt-lg-4 mt-lg-2 mb-lg-4 mb-2 pt-1 w-100">
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
</div>
</div>
<div class="col-12">
<div class="d-flex flex-row justify-content-end align-item-center gap-2">
<button type="button" id="ot-messages-show" class="maquina-btn btn btn-primary w-100"><span class="ti ti-message ti-lg"></span></button>
<a href="<?=route_to("viewOrdenTrabajoEdit",$ot->id)?>" type="button" class="maquina-btn btn btn-primary w-100"><span class="ti ti-eye ti-lg"></span></a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,18 @@
<div class="card h-100">
<div class="card-body row">
<div class="col-6">
<div class="mt-lg-4 mt-lg-2 mb-lg-4 mb-2 pt-1 w-100">
<p class="mb-0">Tirada</p>
<h1 class="mb-0" id="tirada-info"></h1>
</div>
</div>
<div class="col-6">
<div class="d-flex flex-column justify-content-center align-item-center gap-2">
<button type="button" id="btn-start-tarea" class="maquina-btn btn btn-success w-100"><span class="ti ti-player-play ti-lg"></span></button>
<button type="button" id="btn-stop-tarea" class="maquina-btn btn btn-danger w-100"><span class="ti ti-player-stop ti-lg"></span></button>
<button type="button" id="btn-pause-tarea" class="maquina-btn btn btn-warning w-100"><span class="ti ti-player-pause ti-lg"></span></button>
<button type="button" id="btn-finish-tarea" class="maquina-btn btn btn-primary w-100"><span class="ti ti-player-eject ti-lg"></span></button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,18 @@
<div class="table-responsive">
<table id="maquinista-tarea-table" class="table table-hover text-dark" style="width: 100%;">
<thead>
<tr>
<th><?= lang('ID') ?></th>
<th><?= lang('Produccion.datatable.titulo') ?></th>
<th><?= lang('Produccion.datatable.papel') ?></th>
<th><?= lang('Produccion.datatable.gramaje') ?></th>
<th><?= lang('Produccion.datatable.fecha') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>

View File

@ -0,0 +1,90 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row text-center">
<h4>Seleccione una máquina</h4>
</div>
<div class="row">
<div class="col-md-12">
<div class="row text-start">
<h4>Máquinas impresión</h4>
</div>
<div class="row" id="maquinas-impresion">
<?php foreach ($maquinas["impresion"] as $key => $maquina): ?>
<div class="col-md-3 col-lg-3 col-xs-12 mb-2 h-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<span class="d-none d-sm-inline-flex align-items-center gap-2">
<i class="icon-base ti tabler-home icon-sm me-1_5"></i><?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>
<span class="badge rounded-pill badge-center h-px-20 w-px-20 bg-secondary ms-1_5"><?= $maquina["countTareas"] ?></span>
<? endif; ?>
</span>
</a>
</div>
<? endforeach; ?>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row text-start">
<h4>Máquinas acabado</h4>
</div>
<div class="row" id="maquinas-acabado">
<?php foreach ($maquinas["acabado"] as $key => $maquina): ?>
<div class="col-md-3 col-lg-3 col-xs-12 mb-2 h-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<span class="d-none d-sm-inline-flex align-items-center gap-2">
<i class="icon-base ti tabler-home icon-sm me-1_5"></i><?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>
<span class="badge rounded-pill badge-center h-px-20 w-px-20 bg-secondary ms-1_5"><?= $maquina["countTareas"] ?></span>
<? endif; ?>
</span>
</a>
</div>
<? endforeach; ?>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row text-start">
<h4>Máquinas manipulado</h4>
</div>
<div class="row" id="maquinas-manipulado">
<?php foreach ($maquinas["manipulado"] as $key => $maquina): ?>
<div class="col-md-3 col-lg-3 col-xs-12 mb-2 h-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<span class="d-none d-sm-inline-flex align-items-center gap-2">
<i class="icon-base ti tabler-home icon-sm me-1_5"></i><?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>
<span class="badge rounded-pill badge-center h-px-20 w-px-20 bg-secondary ms-1_5"><?= $maquina["countTareas"] ?></span>
<? endif; ?>
</span>
</a>
</div>
<? endforeach; ?>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,35 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">
<div class="container-fluid h-100">
<div class="row mb-2 h-100 d-flex flex-wrap">
<div class="col-md-6">
<?= view("/themes/vuexy/components/cards/tarea_card.php") ?>
</div>
<div class="col-md-6">
<?= view("/themes/vuexy/components/cards/tarea_card_actions.php") ?>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/configuracion/maquinista/viewTareaView.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,39 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">
<div class="col-md-12">
<div class="card vh-100">
<div class="card-body">
<div class="row mb-2">
<div class="d-flex flex-row justify-content-between align-content-center">
<button type="button" class="btn btn-primary"><?= lang('Produccion.maquinista.tareas_hoy') ?></button>
<div class="d-flex flex-row justify-content-end align-content-center gap-2">
<button type="button" class="btn btn-primary"><?= lang('Produccion.maquinista.maquinas') ?></button>
</div>
</div>
</div>
<?= view("/themes/vuexy/components/tables/maquinista_tarea_table.php") ?>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/configuracion/maquinista/viewTareaList.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,27 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/ot.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -4,12 +4,6 @@
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">

View File

@ -13,17 +13,17 @@ if (auth()->user()->inGroup('maquina')) {
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= site_url("viewProduccionMaquinistaMaquinas") ?>" class="menu-link beta">
<a href="<?= route_to("viewProduccionMaquinistaMaquinas") ?>" class="menu-link beta">
<div><?= lang("App.menu_maquinista_maquinas") ?></div>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("viewProduccionMaquinistaColas") ?>" class="menu-link beta">
<a href="<?= route_to("viewProduccionMaquinistaColas") ?>" class="menu-link beta">
<div><?= lang("App.menu_maquinista_colas") ?></div>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("viewProduccionMaquinistaMantenimiento") ?>" class="menu-link beta">
<a href="<?= route_to("viewProduccionMaquinistaMantenimiento") ?>" class="menu-link beta">
<div><?= lang("App.menu_maquinista_mantenimiento") ?></div>
</a>
</li>

View File

@ -0,0 +1,4 @@
class MaquinistaTareaList{}
export default MaquinistaTareaList;

View File

@ -0,0 +1,4 @@
class MaquinistaTareaView{}
export default MaquinistaTareaView;

View File

@ -0,0 +1,5 @@
import maquinistaTareaList from "./maquinistaTareaList.js";
$(() => {
console.info("MAQUINISTA TAREA LIST")
})

View File

@ -0,0 +1,5 @@
import MaquinistaTareaView from "./maquinistaTareaView.js";
$(() => {
console.info("MAQUINISTA TAREA VIEW")
})

View File

@ -0,0 +1,4 @@
.maquina-btn
{
height : 5rem;
}