updating the visualization and creation of qrcodes by type of equipment, creation of a qrcode visualization modal with livewire component
This commit is contained in:
parent
f9c6cec070
commit
2ddc55eeed
|
|
@ -27,6 +27,8 @@
|
||||||
use App\Models\FurtherTasks;
|
use App\Models\FurtherTasks;
|
||||||
use App\Models\WorkstationsAssociationTasks;
|
use App\Models\WorkstationsAssociationTasks;
|
||||||
use App\Models\TasksAssociationAmbits;
|
use App\Models\TasksAssociationAmbits;
|
||||||
|
use App\Models\QrcodesAssociatedEquipment;
|
||||||
|
|
||||||
use LengthException;
|
use LengthException;
|
||||||
|
|
||||||
// use DataTables;
|
// use DataTables;
|
||||||
|
|
@ -189,7 +191,6 @@ function () use ($writer) {
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function finishCreatingProject($numberProject)
|
public function finishCreatingProject($numberProject)
|
||||||
{
|
{
|
||||||
// recebe atraves de sessao toda a vez quem entra no componente 'SelectElementalTasksInWonkstation' para selecionar as tarefas de cada Workstation
|
// recebe atraves de sessao toda a vez quem entra no componente 'SelectElementalTasksInWonkstation' para selecionar as tarefas de cada Workstation
|
||||||
|
|
@ -1000,11 +1001,50 @@ public function processStep2(Request $request)
|
||||||
|
|
||||||
public function showStep3($company_projects_id)
|
public function showStep3($company_projects_id)
|
||||||
{
|
{
|
||||||
//Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra.
|
|
||||||
$listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get();
|
|
||||||
$equipments = Equipment::where('company_projects_id', $company_projects_id)
|
$equipments = Equipment::where('company_projects_id', $company_projects_id)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
foreach ($equipments as $equipment) {
|
||||||
|
$tags = [];
|
||||||
|
if ($equipment->equipment_type_id == 3) {
|
||||||
|
$tags = ['@Corpo', '@Flange', '@Obturador'];
|
||||||
|
} elseif ($equipment->equipment_type_id == 1) {
|
||||||
|
$tags = ['@Corpo', '@Flange'];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($tags as $tag) {
|
||||||
|
$associatedEquipment = QrcodesAssociatedEquipment::where('equipment_id', $equipment->equipment_id)
|
||||||
|
->where('component_tag', 'LIKE', '%' . $tag)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($associatedEquipment) {
|
||||||
|
// Atualizar a coluna component_tag para ser igual à equipment_tag, mantendo a parte após o "@"
|
||||||
|
$newComponentTag = $equipment->equipment_tag . $tag;
|
||||||
|
$associatedEquipment->component_tag = $newComponentTag;
|
||||||
|
$associatedEquipment->save();
|
||||||
|
} else {
|
||||||
|
// Criar uma nova entrada
|
||||||
|
QrcodesAssociatedEquipment::create([
|
||||||
|
'equipment_id' => $equipment->equipment_id,
|
||||||
|
'component_tag' => $equipment->equipment_tag . $tag
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Verificar se há algum equipment_id em QrcodesAssociatedEquipment que não existe mais em Equipment e, se sim, excluí-lo.
|
||||||
|
$allEquipmentIds = Equipment::where('company_projects_id', $company_projects_id)->pluck('equipment_id')->toArray();
|
||||||
|
$orphanedEntries = QrcodesAssociatedEquipment::whereNotIn('equipment_id', $allEquipmentIds)->get();
|
||||||
|
|
||||||
|
foreach ($orphanedEntries as $orphanedEntry) {
|
||||||
|
$orphanedEntry->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra.
|
||||||
|
$listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get();
|
||||||
|
|
||||||
$futherTasks = FurtherTasks::where('company_projects_id', $company_projects_id)
|
$futherTasks = FurtherTasks::where('company_projects_id', $company_projects_id)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
|
|
||||||
68
app/Livewire/ManagementDashboard/WorkManagement.php
Normal file
68
app/Livewire/ManagementDashboard/WorkManagement.php
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire\ManagementDashboard;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
|
||||||
|
use App\Models\Equipment;
|
||||||
|
use App\Models\ControlEquipmentWorkstation;
|
||||||
|
use App\Models\OrderEquipmentTasks;
|
||||||
|
|
||||||
|
|
||||||
|
class WorkManagement extends Component
|
||||||
|
{
|
||||||
|
public $totalEquipments;
|
||||||
|
public $type1Count;
|
||||||
|
public $type2Count;
|
||||||
|
public $type3Count;
|
||||||
|
|
||||||
|
public function mount()
|
||||||
|
{
|
||||||
|
$this->refreshData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function refreshData()
|
||||||
|
|
||||||
|
{
|
||||||
|
$this->totalEquipments = Equipment::count();
|
||||||
|
|
||||||
|
// Inicializar type3Count como 0
|
||||||
|
$this->type3Count = 0;
|
||||||
|
|
||||||
|
// Obter todos os equipamentos
|
||||||
|
$equipments = Equipment::all();
|
||||||
|
|
||||||
|
foreach ($equipments as $equipment) {
|
||||||
|
|
||||||
|
// conta quantos dados existem na model OrderEquipmentTasks, referente ao equipamento indicado
|
||||||
|
$tasksCount = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->count();
|
||||||
|
// Verifica quantos dados tem ao mesmo equipamento
|
||||||
|
$controlCount = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->count();
|
||||||
|
|
||||||
|
if ($controlCount >= $tasksCount) {
|
||||||
|
$isValid = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)
|
||||||
|
->whereNotNull('entry_date')
|
||||||
|
->whereNotNull('departure_date')
|
||||||
|
->count() >= $tasksCount;
|
||||||
|
|
||||||
|
if ($isValid) {
|
||||||
|
$this->type3Count++;
|
||||||
|
$type3EquipmentIds[] = $equipment->equipment_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Atualizar type2Count
|
||||||
|
$this->type2Count = Equipment::whereIn('equipment_id', ControlEquipmentWorkstation::select('equipment_id'))
|
||||||
|
->whereNotIn('equipment_id', $type3EquipmentIds)
|
||||||
|
->count();
|
||||||
|
|
||||||
|
// Contar equipamentos que NÃO estão em ControlEquipmentWorkstation
|
||||||
|
$this->type1Count = Equipment::whereNotIn('equipment_id', ControlEquipmentWorkstation::select('equipment_id'))->count();
|
||||||
|
|
||||||
|
}
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.management-dashboard.work-management');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,19 +5,33 @@
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
|
|
||||||
use App\Models\Equipment;
|
use App\Models\Equipment;
|
||||||
|
use App\Models\QrcodesAssociatedEquipment;
|
||||||
|
|
||||||
class ShowQrcodeAndDetallsEquipment extends Component
|
class ShowQrcodeAndDetallsEquipment extends Component
|
||||||
{
|
{
|
||||||
public $equipment;
|
public $equipment;
|
||||||
|
|
||||||
public function mount($equipment){
|
public function mount($equipment)
|
||||||
|
{
|
||||||
$this->equipment = $equipment;
|
$this->equipment = $equipment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
|
|
||||||
// $this->equipment = Equipment::find($this->equipment->id);
|
// $this->equipment = Equipment::find($this->equipment->id);
|
||||||
return view('livewire.preparadas.show-qrcode-and-detalls-equipment');
|
// return view('livewire.preparadas.show-qrcode-and-detalls-equipment');
|
||||||
|
|
||||||
|
// $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $this->equipment->equipment_id)->get();
|
||||||
|
// return view('livewire.preparadas.show-qrcode-and-detalls-equipment', ['associatedEquipments' => $associatedEquipments]);
|
||||||
|
|
||||||
|
$associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $this->equipment->equipment_id)->get();
|
||||||
|
|
||||||
|
$associatedArray = [];
|
||||||
|
foreach ($associatedEquipments as $associatedEquipment) {
|
||||||
|
$associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return view('livewire.preparadas.show-qrcode-and-detalls-equipment', ['associatedArray' => $associatedArray,'associatedEquipments' => $associatedEquipments]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,5 +63,8 @@ public function hasInspectionYes()
|
||||||
return $this->orderEquipmentTasks()->where('inspection', 'Sim')->exists();
|
return $this->orderEquipmentTasks()->where('inspection', 'Sim')->exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function QrcodesAssociatedEquipment(){
|
||||||
|
return $this->hasMany(QrcodesAssociatedEquipment::class,'equipment_id','equipment_id');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
app/Models/QrcodesAssociatedEquipment.php
Normal file
26
app/Models/QrcodesAssociatedEquipment.php
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class QrcodesAssociatedEquipment extends Model
|
||||||
|
{
|
||||||
|
protected $fillable = ['equipment_id', 'component_tag'];
|
||||||
|
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
|
||||||
|
protected $table = 'qrcodes_associated_equipment';
|
||||||
|
|
||||||
|
protected $primaryKey = 'id';
|
||||||
|
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
public function equipment()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
78
public/assets/dist/css/adminlte.css
vendored
78
public/assets/dist/css/adminlte.css
vendored
|
|
@ -83,10 +83,13 @@ @font-face {
|
||||||
/* Estilo para dimencionar o cartao do qrcode */
|
/* Estilo para dimencionar o cartao do qrcode */
|
||||||
.modal-content-center {
|
.modal-content-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
/* Isso garante que os cartões sejam exibidos em uma linha horizontal */
|
||||||
|
flex-wrap: wrap;
|
||||||
|
/* Isso permite que os cartões se envolvam para a próxima linha se não houver espaço suficiente */
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
/* Isso garante que o container ocupe toda a altura da modal */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-to-print {
|
.card-to-print {
|
||||||
|
|
@ -97,6 +100,8 @@ .card-to-print {
|
||||||
border: 1px solid #09255C;
|
border: 1px solid #09255C;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transform-origin: top left;
|
transform-origin: top left;
|
||||||
|
margin: 10px;
|
||||||
|
/* Isso adiciona uma margem ao redor de cada cartão */
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-row {
|
.custom-row {
|
||||||
|
|
@ -114,7 +119,6 @@ .custom-row {
|
||||||
/* Remove a margem negativa padrão da classe row do Bootstrap */
|
/* Remove a margem negativa padrão da classe row do Bootstrap */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
@ -154,15 +158,69 @@ .custom-rowAll {
|
||||||
/* Estilos para impressão */
|
/* Estilos para impressão */
|
||||||
@media print {
|
@media print {
|
||||||
|
|
||||||
body * {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
/* body,
|
/* body,
|
||||||
html {
|
html {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
body * {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .modal,
|
||||||
|
.modal * {
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content-center,
|
||||||
|
.modal-content-center * {
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-to-print,
|
||||||
|
.card-to-print * {
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content-center {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-to-print {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 2mm;
|
||||||
|
margin-bottom: 3mm;
|
||||||
|
} */
|
||||||
|
|
||||||
|
/* Mostra apenas o conteúdo da div .modal-content-center dentro de modais que têm um ID que começa com 'yourModalId-' */
|
||||||
|
[id^="yourModalId-"] .modal-content-center,
|
||||||
|
[id^="yourModalId-"] .modal-content-center .card-to-print,
|
||||||
|
[id^="yourModalId-"] .modal-content-center .card-to-print * {
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
[id^="yourModalId-"] .modal-content-center {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
[id^="yourModalId-"] .modal-content-center .card-to-print {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 2mm;
|
||||||
|
margin-bottom: 3mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.print-container,
|
.print-container,
|
||||||
.print-container * {
|
.print-container * {
|
||||||
visibility: visible !important;
|
visibility: visible !important;
|
||||||
|
|
@ -180,7 +238,13 @@ @media print {
|
||||||
page-break-inside: avoid;
|
page-break-inside: avoid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-to-print,
|
/* .card-to-print {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 2mm;
|
||||||
|
margin-bottom: 3mm;
|
||||||
|
} */
|
||||||
|
|
||||||
|
/* .card-to-print,
|
||||||
.card-to-print * {
|
.card-to-print * {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
@ -189,7 +253,7 @@ @media print {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>Total de Equipamentos: {{ $totalEquipments }}</h1>
|
||||||
|
<canvas id="myPieChart" width="400" height="400"></canvas>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Obtenha o contexto do elemento canvas
|
||||||
|
var ctx = document.getElementById('myPieChart').getContext('2d');
|
||||||
|
|
||||||
|
// Dados do componente Livewire
|
||||||
|
var type1Count = {{ $type1Count }};
|
||||||
|
var type2Count = {{ $type2Count }};
|
||||||
|
var type3Count = {{ $type3Count }};
|
||||||
|
|
||||||
|
// Crie um novo gráfico circular
|
||||||
|
var myPieChart = new Chart(ctx, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: {
|
||||||
|
labels: ['Nao Iniciados', 'Em progresso', 'Finalizadas'],
|
||||||
|
datasets: [{
|
||||||
|
data: [type1Count, type2Count, type3Count], // Dados do componente Livewire
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(255, 99, 132, 0.5)',
|
||||||
|
'rgba(54, 162, 235, 0.5)',
|
||||||
|
'rgba(255, 206, 86, 0.5)'
|
||||||
|
],
|
||||||
|
borderColor: [
|
||||||
|
'rgba(255, 99, 132, 1)',
|
||||||
|
'rgba(54, 162, 235, 1)',
|
||||||
|
'rgba(255, 206, 86, 1)'
|
||||||
|
],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{{-- <script src="{{ asset('assets/dist/js/qrcode.js') }}"></script> --}}
|
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<td><a href="#" data-toggle="modal" data-target="#yourModalId-{{ $equipment->equipment_id }}"
|
<td><a href="#" data-toggle="modal" data-target="#yourModalId-{{ $equipment->equipment_id }}"
|
||||||
|
|
@ -7,8 +7,10 @@
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<div class="modal fade" id="yourModalId-{{ $equipment->equipment_id }}" tabindex="-1" role="dialog">
|
{{-- <div class="modal fade" id="yourModalId-{{ $equipment->equipment_id }}" tabindex="-1" role="dialog" data-equipment-id="{{ $equipment->equipment_id }}"> --}}
|
||||||
<div class="modal-dialog">
|
<div class="modal fade" id="yourModalId-{{ $equipment->equipment_id }}" tabindex="-1" role="dialog"
|
||||||
|
data-equipment-id="{{ $equipment->equipment_id }}">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
|
|
@ -19,7 +21,16 @@
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
{{-- ID do Equipamento: <span>{{ $equipment->equipment_id }}</span> --}}
|
{{-- ID do Equipamento: <span>{{ $equipment->equipment_id }}</span> --}}
|
||||||
<input hidden type="text" id="valor" value="{{ $equipment->equipment_tag }}">
|
<input hidden type="text" id="valor" value="{{ $equipment->equipment_tag }}">
|
||||||
|
|
||||||
|
{{-- Para guardar id sem mostrar no HTML --}}
|
||||||
|
<div id="associatedData" style="display: none;"
|
||||||
|
data-associated="{{ json_encode($associatedArray) }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="modal-content-center">
|
<div class="modal-content-center">
|
||||||
|
@foreach ($associatedEquipments as $associatedEquipment)
|
||||||
|
|
||||||
<div class="card-to-print">
|
<div class="card-to-print">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -40,10 +51,13 @@
|
||||||
<div class="custom-row" style="margin-top: 10px;">
|
<div class="custom-row" style="margin-top: 10px;">
|
||||||
|
|
||||||
<div class="col-sm qrcode-output" style="padding-left: 13px;"
|
<div class="col-sm qrcode-output" style="padding-left: 13px;"
|
||||||
data-equipment-id="{{ $equipment->equipment_id }}">
|
data-equipment-id="{{ $associatedEquipment->id }}"
|
||||||
|
data-component-tag="{{ $associatedEquipment->component_tag }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="custom-row">
|
<div class="custom-row">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA"><b>TAG</b>
|
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA"><b>TAG</b>
|
||||||
|
|
@ -51,6 +65,15 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{-- Serve para receber o conteudo que tem apos a @ --}}
|
||||||
|
<div class="custom-row">
|
||||||
|
<div class="col-sm text-center">
|
||||||
|
<div style="font-size: 1.1rem;color: #00B0EA">
|
||||||
|
{{ explode('@', $associatedEquipment->component_tag)[1] }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="custom-row">
|
<div class="custom-row">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
|
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
|
||||||
|
|
@ -62,18 +85,23 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="custom-row" style="margin-top: 23px;">
|
<div class="custom-row" style="margin-top: 10px;">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<img style="width: 35px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
|
<img style="width: 25px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
|
||||||
alt="Imagem nao encontrada galp ">
|
alt="Imagem nao encontrada galp ">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<img style="width: 30px;" src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
|
<img style="width: 20px;"
|
||||||
|
src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
|
||||||
alt="Imagem nao contrada Ispt">
|
alt="Imagem nao contrada Ispt">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Cartão</button>
|
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Cartão</button>
|
||||||
|
|
@ -88,3 +116,46 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#yourModalId-{{ $equipment->equipment_id }}').on('shown.bs.modal', function() {
|
||||||
|
|
||||||
|
// Limpar QR codes antigos
|
||||||
|
$('.qrcode-output').empty();
|
||||||
|
|
||||||
|
// Para cada associatedEquipmentId na modal
|
||||||
|
$('.qrcode-output', this).each(function() {
|
||||||
|
var associatedEquipmentId = $(this).data('equipment-id');
|
||||||
|
var componentTag = $(this).data('component-tag');
|
||||||
|
|
||||||
|
console.log("associatedEquipmentId:",
|
||||||
|
associatedEquipmentId); // Log para verificar
|
||||||
|
console.log("componentTag:", componentTag); // Log para verificar
|
||||||
|
|
||||||
|
// Se o componentTag existir, crie o QR code
|
||||||
|
if (componentTag) {
|
||||||
|
new QRCode(this, {
|
||||||
|
text: componentTag,
|
||||||
|
width: 140,
|
||||||
|
height: 140,
|
||||||
|
colorDark: '#09255C',
|
||||||
|
colorLight: "white",
|
||||||
|
correctLevel: QRCode.CorrectLevel.H
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function printEquipments() {
|
||||||
|
// Acione a impressão
|
||||||
|
window.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
function printCard() {
|
||||||
|
window.print();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1774,6 +1774,9 @@ class="form-control card_inputs"
|
||||||
<input type="checkbox" name="">
|
<input type="checkbox" name="">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>TE11</td>
|
<td>TE11</td>
|
||||||
<td>Inspeção Final</td>
|
<td>Inspeção Final</td>
|
||||||
|
|
@ -2924,6 +2927,24 @@ class="form-control card_inputs"
|
||||||
<input type="checkbox" name="">
|
<input type="checkbox" name="">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>TE10.1</td>
|
||||||
|
<td>Confirmação de ligação</td>
|
||||||
|
{{-- Apenas para ver se recebe um on ou off, o hidden serve para devolver valor se o checkbox não estiver a 'checked' --}}
|
||||||
|
<td class="text-center">
|
||||||
|
<input type="hidden"
|
||||||
|
name="ordemTasks[24]"
|
||||||
|
value="off">
|
||||||
|
<input type="checkbox"
|
||||||
|
name="ordemTasks[24]" value="on"
|
||||||
|
{{ old('ordemTasks[24]') == 'on' ? 'checked' : '' }}>
|
||||||
|
</td>
|
||||||
|
<td class="text-center">
|
||||||
|
<input type="checkbox" name="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>TE11</td>
|
<td>TE11</td>
|
||||||
<td>Inspeção Final</td>
|
<td>Inspeção Final</td>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1>{{ $numberProject->company_project_description }}</h1>
|
<h1>{{ $numberProject->company_project_description }}</h1>
|
||||||
<input type="hidden" value="{{$numberProject->company_projects_id}}" id="receiveNumberProject">
|
<input type="hidden" value="{{ $numberProject->company_projects_id }}" id="receiveNumberProject">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
|
|
@ -24,8 +24,8 @@
|
||||||
|
|
||||||
<!-- Main content -->
|
<!-- Main content -->
|
||||||
<section class="content">
|
<section class="content">
|
||||||
|
{{-- Foreach para criar varios qrcodes para os equipamentos --}}
|
||||||
@foreach ($equipmentsProjects as $equipment)
|
{{-- @foreach ($equipmentsProjects as $equipment)
|
||||||
<div class="print-container">
|
<div class="print-container">
|
||||||
<div class="card-to-printAll">
|
<div class="card-to-printAll">
|
||||||
|
|
||||||
|
|
@ -51,8 +51,7 @@
|
||||||
|
|
||||||
<div class="custom-rowAll">
|
<div class="custom-rowAll">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<div
|
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA">
|
||||||
style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA">
|
|
||||||
<b>TAG</b>
|
<b>TAG</b>
|
||||||
{{ $equipment->equipment_tag }}
|
{{ $equipment->equipment_tag }}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -61,33 +60,29 @@
|
||||||
|
|
||||||
<div class="custom-rowAll">
|
<div class="custom-rowAll">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<h6
|
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
|
||||||
style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
|
|
||||||
{{ $equipment->equipmentType->equipment_type_name }}
|
{{ $equipment->equipmentType->equipment_type_name }}
|
||||||
</h6>
|
</h6>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<h6
|
<h6 style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
|
||||||
style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
|
|
||||||
{{ $equipment->unit->unit_name }}</h6>
|
{{ $equipment->unit->unit_name }}</h6>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="custom-rowAll" style="margin-top: 23px;">
|
<div class="custom-rowAll" style="margin-top: 23px;">
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<img style="width: 35px;"
|
<img style="width: 35px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
|
||||||
src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
|
|
||||||
alt="Imagem nao encontrada galp ">
|
alt="Imagem nao encontrada galp ">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm text-center">
|
<div class="col-sm text-center">
|
||||||
<img style="width: 30px;"
|
<img style="width: 30px;" src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
|
||||||
src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
|
|
||||||
alt="Imagem nao contrada Ispt">
|
alt="Imagem nao contrada Ispt">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach --}}
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
|
|
@ -122,14 +117,7 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
|
||||||
|
|
||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
{{-- Nao tem motivos para funcionar nestas sutiacao, MAS FUNCIONA SEM ELE NAO APARECE OS QRCODES !!!! --}}
|
{{-- Nao tem motivos para funcionar nestas sutiacao, MAS FUNCIONA SEM ELE NAO APARECE OS QRCODES !!!! --}}
|
||||||
<script>
|
|
||||||
// Gere os QR Codes automaticamente assim que a página é carregada
|
|
||||||
document.addEventListener("DOMContentLoaded", function() {
|
|
||||||
@foreach ($equipmentsProjects as $equipment)
|
|
||||||
createQrCode('{{ $equipment->equipment_id }}');
|
|
||||||
@endforeach
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<table class="table table-striped text-center">
|
<table class="table table-striped text-center">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
@ -327,18 +315,10 @@ class="btn btn-secondary"
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Botão para acionar a impressão -->
|
<!-- Botão para acionar a impressão -->
|
||||||
{{-- <button onclick="printEquipments()">Imprimir Equipamentos</button> --}}
|
{{-- <button onclick="printEquipments()">Imprimir Equipamentos</button> --}}
|
||||||
|
|
||||||
|
{{-- <script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
function createQrCode(equipmentId) {
|
function createQrCode(equipmentId) {
|
||||||
var userInput = document.querySelector('.valor-input[data-equipment-id="' + equipmentId + '"]').value;
|
var userInput = document.querySelector('.valor-input[data-equipment-id="' + equipmentId + '"]').value;
|
||||||
|
|
@ -361,6 +341,15 @@ function createQrCode(equipmentId) {
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Gere os QR Codes automaticamente assim que a página é carregada
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
@foreach ($equipmentsProjects as $equipment)
|
||||||
|
createQrCode('{{ $equipment->equipment_id }}');
|
||||||
|
@endforeach
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function printEquipments() {
|
function printEquipments() {
|
||||||
// Acione a impressão
|
// Acione a impressão
|
||||||
|
|
@ -370,7 +359,10 @@ function printEquipments() {
|
||||||
function printCard() {
|
function printCard() {
|
||||||
window.print();
|
window.print();
|
||||||
}
|
}
|
||||||
</script>
|
</script> --}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -382,10 +374,12 @@ function printCard() {
|
||||||
</div>
|
</div>
|
||||||
<!-- /.card-body -->
|
<!-- /.card-body -->
|
||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
<div class="float-left">
|
{{-- Botao para criar os Multiplos Qrcodes nas Folhas --}}
|
||||||
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos QR</button>
|
{{-- <div class="float-left">
|
||||||
|
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos
|
||||||
|
QR</button>
|
||||||
|
|
||||||
</div>
|
</div> --}}
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
<button type="button" class="btn btn-primary" data-toggle="modal"
|
<button type="button" class="btn btn-primary" data-toggle="modal"
|
||||||
data-target="#ModalTransferForArticulated">
|
data-target="#ModalTransferForArticulated">
|
||||||
|
|
|
||||||
|
|
@ -274,6 +274,9 @@
|
||||||
{{-- <script src="{{ asset('assets/plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script> --}}
|
{{-- <script src="{{ asset('assets/plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script> --}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@livewire('management-dashboard.work-management')
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,11 @@
|
||||||
use App\Http\Controllers\WorkstationsJobsController;
|
use App\Http\Controllers\WorkstationsJobsController;
|
||||||
|
|
||||||
|
|
||||||
Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register');
|
|
||||||
|
|
||||||
|
route::get('testt', function () {
|
||||||
|
return view('test');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -38,27 +42,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
|
|
||||||
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
|
|
||||||
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| CRUD -Instalation
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Here is where you can register web routes for your application. These
|
|
||||||
| routes are loaded by the RouteServiceProvider and all of them will
|
|
||||||
| be assigned to the "web" middleware group. Make something great!
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets');
|
|
||||||
|
|
||||||
// Mostrar Instalação click
|
|
||||||
Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit');
|
|
||||||
|
|
||||||
Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home');
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
|
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
|
||||||
|
|
@ -108,12 +93,12 @@
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
// Route::middleware(['auth', 'verified', 'checksuperadmin', 'checkAdmin'])->group(function () {
|
// Route::middleware(['auth', 'verified', 'checksuperadmin', 'checkAdmin'])->group(function () {
|
||||||
// Profile page
|
// Profile page
|
||||||
Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles');
|
Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles');
|
||||||
|
|
||||||
|
|
||||||
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| CRUD - users
|
| CRUD - users
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
@ -121,7 +106,7 @@
|
||||||
| Definition routes to implement the CRUD model
|
| Definition routes to implement the CRUD model
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Create Users with Super Admin, Admin
|
| Create Users with Super Admin, Admin
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
@ -130,7 +115,7 @@
|
||||||
|however the Admin will not have access to the data of the SupersAdmins only.
|
|however the Admin will not have access to the data of the SupersAdmins only.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
Route::controller(userController::class)
|
Route::controller(userController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
|
|
||||||
Route::get('users/listUsers', 'listUsers')->name('users.list');
|
Route::get('users/listUsers', 'listUsers')->name('users.list');
|
||||||
|
|
@ -142,6 +127,26 @@
|
||||||
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
|
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Create Users with Super Admin
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here is where you can register web routes for your application. These
|
||||||
|
| routes are loaded by the RouteServiceProvider and all of them will
|
||||||
|
| be assigned to the "web" middleware group. Make something great!
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
Route::middleware(['auth', 'checkUserType'])->group(function () {
|
||||||
|
|
||||||
|
// Rotas protegidas que exigem verificação de e-mail
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Create Projects with Super Admin and Admin
|
| Create Projects with Super Admin and Admin
|
||||||
|
|
@ -158,8 +163,8 @@
|
||||||
Route::get('test3/{id}', 'showStep3')->name('test3');
|
Route::get('test3/{id}', 'showStep3')->name('test3');
|
||||||
|
|
||||||
// Para adicionar uma tarefa Complementar
|
// Para adicionar uma tarefa Complementar
|
||||||
Route::post('addFurtherTasks','addFurtherTasks')->name('addFurtherTasks');
|
Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks');
|
||||||
Route::post('deleteFurtherTasks','deleteFurtherTasks')->name('deleteFurtherTasks');
|
Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks');
|
||||||
|
|
||||||
Route::get('createProject', 'createProjectForStep1')->name('createProject');
|
Route::get('createProject', 'createProjectForStep1')->name('createProject');
|
||||||
|
|
||||||
|
|
@ -185,18 +190,27 @@
|
||||||
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
|
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
|
||||||
Route::get('equipments/{id}/attributes', 'getAttributes');
|
Route::get('equipments/{id}/attributes', 'getAttributes');
|
||||||
});
|
});
|
||||||
// });
|
|
||||||
|
|
||||||
|
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
|
||||||
|
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
|
||||||
|
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
||||||
|
|
||||||
|
|
||||||
|
Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('formulario', function () {
|
|
||||||
return view('email/FormAdmin');
|
|
||||||
})->name('formulario');
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Create Users with Super Admin
|
| CRUD -Instalation
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| Here is where you can register web routes for your application. These
|
| Here is where you can register web routes for your application. These
|
||||||
|
|
@ -204,14 +218,17 @@
|
||||||
| be assigned to the "web" middleware group. Make something great!
|
| be assigned to the "web" middleware group. Make something great!
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets');
|
||||||
|
|
||||||
|
// Mostrar Instalação click
|
||||||
|
Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit');
|
||||||
|
|
||||||
Route::middleware(['auth', 'checkUserType'])->group(function () {
|
Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home');
|
||||||
// Rotas protegidas que exigem verificação de e-mail
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Template Excel
|
| Template Excel
|
||||||
|
|
@ -222,6 +239,9 @@
|
||||||
| be assigned to the "web" middleware group. Make something great!
|
| be assigned to the "web" middleware group. Make something great!
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
Route::get('formulario', function () {
|
||||||
|
return view('email/FormAdmin');
|
||||||
|
})->name('formulario');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user