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:
ygbanzato 2023-09-25 15:48:43 +01:00
parent f9c6cec070
commit 2ddc55eeed
13 changed files with 588 additions and 225 deletions

View File

@ -27,6 +27,8 @@
use App\Models\FurtherTasks;
use App\Models\WorkstationsAssociationTasks;
use App\Models\TasksAssociationAmbits;
use App\Models\QrcodesAssociatedEquipment;
use LengthException;
// use DataTables;
@ -189,7 +191,6 @@ function () use ($writer) {
return $response;
}
public function finishCreatingProject($numberProject)
{
// 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)
{
//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)
->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)
->get();

View 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');
}
}

View File

@ -5,19 +5,33 @@
use Livewire\Component;
use App\Models\Equipment;
use App\Models\QrcodesAssociatedEquipment;
class ShowQrcodeAndDetallsEquipment extends Component
{
public $equipment;
public function mount($equipment){
public function mount($equipment)
{
$this->equipment = $equipment;
}
public function render()
{
// $this->equipment = Equipment::find($this->equipment->id);
return view('livewire.preparadas.show-qrcode-and-detalls-equipment');
}
// $this->equipment = Equipment::find($this->equipment->id);
// 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]);
}
}

View File

@ -63,5 +63,8 @@ public function hasInspectionYes()
return $this->orderEquipmentTasks()->where('inspection', 'Sim')->exists();
}
public function QrcodesAssociatedEquipment(){
return $this->hasMany(QrcodesAssociatedEquipment::class,'equipment_id','equipment_id');
}
}

View 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');
}
}

View File

@ -83,10 +83,13 @@ @font-face {
/* Estilo para dimencionar o cartao do qrcode */
.modal-content-center {
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;
align-items: center;
height: 100%;
/* Isso garante que o container ocupe toda a altura da modal */
}
.card-to-print {
@ -97,6 +100,8 @@ .card-to-print {
border: 1px solid #09255C;
box-sizing: border-box;
transform-origin: top left;
margin: 10px;
/* Isso adiciona uma margem ao redor de cada cartão */
}
.custom-row {
@ -114,7 +119,6 @@ .custom-row {
/* Remove a margem negativa padrão da classe row do Bootstrap */
}
.top {
display: flex;
justify-content: center;
@ -154,15 +158,69 @@ .custom-rowAll {
/* Estilos para impressão */
@media print {
body * {
visibility: hidden;
}
/* body,
html {
margin: 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 * {
visibility: visible !important;
@ -180,7 +238,13 @@ @media print {
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 * {
visibility: visible;
}
@ -189,7 +253,7 @@ @media print {
position: absolute;
left: 0;
top: 0;
}
} */
}

View File

@ -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>

View File

@ -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>
<td><a href="#" data-toggle="modal" data-target="#yourModalId-{{ $equipment->equipment_id }}"
@ -7,8 +7,10 @@
</a>
</td>
<div class="modal fade" id="yourModalId-{{ $equipment->equipment_id }}" tabindex="-1" role="dialog">
<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 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-header">
@ -19,61 +21,87 @@
<div class="modal-body">
{{-- ID do Equipamento: <span>{{ $equipment->equipment_id }}</span> --}}
<input hidden type="text" id="valor" value="{{ $equipment->equipment_tag }}">
<div class="modal-content-center">
<div class="card-to-print">
<div class="top">
</div>
<div class="custom-row">
<div class="col-sm text-center"
style="display: flex; align-items: center; justify-content: center; background-color: #09255C; position: relative;">
<div id="circulo"
style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%);">
</div>
<img style="width:50px;"
src="{{ asset('img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
alt="imagem nao encontrada">
<div style="line-height: 2.5; color: white;">ISPT 4.0</div>
</div>
</div>
<div class="custom-row" style="margin-top: 10px;">
<div class="col-sm qrcode-output" style="padding-left: 13px;"
data-equipment-id="{{ $equipment->equipment_id }}">
</div>
</div>
<div class="custom-row">
<div class="col-sm text-center">
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA"><b>TAG</b>
{{ $equipment->equipment_tag }}</div>
</div>
</div>
<div class="custom-row">
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
{{ $equipment->equipmentType->equipment_type_name }}</h6>
</div>
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
{{ $equipment->unit->unit_name }}</h6>
</div>
</div>
<div class="custom-row" style="margin-top: 23px;">
<div class="col-sm text-center">
<img style="width: 35px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
alt="Imagem nao encontrada galp ">
</div>
<div class="col-sm text-center">
<img style="width: 30px;" src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
alt="Imagem nao contrada Ispt">
</div>
</div>
</div>
{{-- Para guardar id sem mostrar no HTML --}}
<div id="associatedData" style="display: none;"
data-associated="{{ json_encode($associatedArray) }}">
</div>
<div class="modal-content-center">
@foreach ($associatedEquipments as $associatedEquipment)
<div class="card-to-print">
<div class="top">
</div>
<div class="custom-row">
<div class="col-sm text-center"
style="display: flex; align-items: center; justify-content: center; background-color: #09255C; position: relative;">
<div id="circulo"
style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%);">
</div>
<img style="width:50px;"
src="{{ asset('img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
alt="imagem nao encontrada">
<div style="line-height: 2.5; color: white;">ISPT 4.0</div>
</div>
</div>
<div class="custom-row" style="margin-top: 10px;">
<div class="col-sm qrcode-output" style="padding-left: 13px;"
data-equipment-id="{{ $associatedEquipment->id }}"
data-component-tag="{{ $associatedEquipment->component_tag }}">
</div>
</div>
<div class="custom-row">
<div class="col-sm text-center">
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA"><b>TAG</b>
{{ $equipment->equipment_tag }}</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="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
{{ $equipment->equipmentType->equipment_type_name }}</h6>
</div>
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
{{ $equipment->unit->unit_name }}</h6>
</div>
</div>
<div class="custom-row" style="margin-top: 10px;">
<div class="col-sm text-center">
<img style="width: 25px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
alt="Imagem nao encontrada galp ">
</div>
<div class="col-sm text-center">
<img style="width: 20px;"
src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
alt="Imagem nao contrada Ispt">
</div>
</div>
</div>
@endforeach
</div>
<br>
<div class="text-center">
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Cartão</button>
@ -88,3 +116,46 @@
</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>

View File

@ -1774,6 +1774,9 @@ class="form-control card_inputs"
<input type="checkbox" name="">
</td>
</tr>
<tr>
<td>TE11</td>
<td>Inspeção Final</td>
@ -2924,6 +2927,24 @@ class="form-control card_inputs"
<input type="checkbox" name="">
</td>
</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>
<td>TE11</td>
<td>Inspeção Final</td>

View File

@ -7,7 +7,7 @@
<div class="row mb-2">
<div class="col-sm-6">
<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 class="col-sm-6">
<ol class="breadcrumb float-sm-right">
@ -24,70 +24,65 @@
<!-- Main content -->
<section class="content">
{{-- Foreach para criar varios qrcodes para os equipamentos --}}
{{-- @foreach ($equipmentsProjects as $equipment)
<div class="print-container">
<div class="card-to-printAll">
@foreach ($equipmentsProjects as $equipment)
<div class="print-container">
<div class="card-to-printAll">
<div class="custom-rowAll">
<div class="col-sm text-center"
style="display: flex; align-items: center; justify-content: center; background-color: #09255C; position: relative;">
<div id="circulo"
style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%);">
</div>
<img style="width:50px;"
src="{{ asset('img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
alt="imagem nao encontrada">
<div style="line-height: 2.5; color: white;">
ISPT 4.0</div>
</div>
</div>
<div class="custom-rowAll" style="margin-top: 10px;">
<div class="col-sm qrcode-output" style="padding-left: 13px;"
data-equipment-id="{{ $equipment->equipment_id }}">
</div>
</div>
<div class="custom-rowAll">
<div class="col-sm text-center">
<div
style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA">
<b>TAG</b>
{{ $equipment->equipment_tag }}
<div class="custom-rowAll">
<div class="col-sm text-center"
style="display: flex; align-items: center; justify-content: center; background-color: #09255C; position: relative;">
<div id="circulo"
style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%);">
</div>
<img style="width:50px;"
src="{{ asset('img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
alt="imagem nao encontrada">
<div style="line-height: 2.5; color: white;">
ISPT 4.0</div>
</div>
</div>
</div>
<div class="custom-rowAll">
<div class="col-sm text-center">
<h6
style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
{{ $equipment->equipmentType->equipment_type_name }}
</h6>
<div class="custom-rowAll" style="margin-top: 10px;">
<div class="col-sm qrcode-output" style="padding-left: 13px;"
data-equipment-id="{{ $equipment->equipment_id }}">
</div>
</div>
<div class="col-sm text-center">
<h6
style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
{{ $equipment->unit->unit_name }}</h6>
</div>
</div>
<div class="custom-rowAll" style="margin-top: 23px;">
<div class="col-sm text-center">
<img style="width: 35px;"
src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
alt="Imagem nao encontrada galp ">
<div class="custom-rowAll">
<div class="col-sm text-center">
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA">
<b>TAG</b>
{{ $equipment->equipment_tag }}
</div>
</div>
</div>
<div class="col-sm text-center">
<img style="width: 30px;"
src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
alt="Imagem nao contrada Ispt">
<div class="custom-rowAll">
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
{{ $equipment->equipmentType->equipment_type_name }}
</h6>
</div>
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
{{ $equipment->unit->unit_name }}</h6>
</div>
</div>
<div class="custom-rowAll" style="margin-top: 23px;">
<div class="col-sm text-center">
<img style="width: 35px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
alt="Imagem nao encontrada galp ">
</div>
<div class="col-sm text-center">
<img style="width: 30px;" src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
alt="Imagem nao contrada Ispt">
</div>
</div>
</div>
</div>
</div>
@endforeach
@endforeach --}}
<div class="container-fluid">
<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">
{{-- 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">
<tbody>
@ -327,18 +315,10 @@ class="btn btn-secondary"
@endforeach
</div>
<!-- Botão para acionar a impressão -->
{{-- <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>
function createQrCode(equipmentId) {
var userInput = document.querySelector('.valor-input[data-equipment-id="' + equipmentId + '"]').value;
@ -361,6 +341,15 @@ function createQrCode(equipmentId) {
});
</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>
function printEquipments() {
// Acione a impressão
@ -370,7 +359,10 @@ function printEquipments() {
function printCard() {
window.print();
}
</script>
</script> --}}
</tbody>
@ -382,10 +374,12 @@ function printCard() {
</div>
<!-- /.card-body -->
<div class="card-footer">
<div class="float-left">
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos QR</button>
{{-- Botao para criar os Multiplos Qrcodes nas Folhas --}}
{{-- <div class="float-left">
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos
QR</button>
</div>
</div> --}}
<div class="float-right">
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#ModalTransferForArticulated">
@ -412,8 +406,8 @@ function printCard() {
<div class="card-tools">
<!-- <button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button> -->
<i class="fas fa-plus"></i>
</button> -->
</div>
<!-- /.card-tools -->
</div>
@ -659,7 +653,7 @@ class="checkboxChoseTasksOficesCV"
</div>
</div>
<!-- /.modal-content --
/.modal-dialog -->
/.modal-dialog -->
</div>
<!-- /.modal remover-->
@ -761,30 +755,30 @@ class="checkboxChoseTasksOficesCV"
<script type="Text/javascript">
$(document).ready(function() {
$('#TablePreparedProjectWorkstation').DataTable({
autoWidth: false,
processing: true,
serverSide: true,
ajax: {
url: '/api/receiveWorkstationProject/' + $('#receiveNumberProject').val()
},
columns: [{
data: 'name_workstations',
name: 'name_workstations'
$('#TablePreparedProjectWorkstation').DataTable({
autoWidth: false,
processing: true,
serverSide: true,
ajax: {
url: '/api/receiveWorkstationProject/' + $('#receiveNumberProject').val()
},
{
data: 'nomenclature_workstation',
name: 'nomenclature_workstation'
},
{
data: 'workstations_Association_Tasks',
name: 'workstations_Association_Tasks'
}
]
})
})
columns: [{
data: 'name_workstations',
name: 'name_workstations'
},
{
data: 'nomenclature_workstation',
name: 'nomenclature_workstation'
},
{
data: 'workstations_Association_Tasks',
name: 'workstations_Association_Tasks'
}
]
})
})
</script>
</script>
{{-- Script para funcionar com dataTables yajra, futura implementacao com livewire --}}
{{-- <script>

View File

@ -274,6 +274,9 @@
{{-- <script src="{{ asset('assets/plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script> --}}
@livewire('management-dashboard.work-management')
</body>
</html>

View File

@ -30,7 +30,11 @@
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');
@ -108,12 +93,12 @@
|
*/
// Route::middleware(['auth', 'verified', 'checksuperadmin', 'checkAdmin'])->group(function () {
// Profile page
Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles');
// Profile page
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
|--------------------------------------------------------------------------
@ -121,7 +106,7 @@
| Definition routes to implement the CRUD model
|
*/
/*
/*
|--------------------------------------------------------------------------
| Create Users with Super Admin, Admin
|--------------------------------------------------------------------------
@ -130,26 +115,46 @@
|however the Admin will not have access to the data of the SupersAdmins only.
|
*/
Route::controller(userController::class)
->group(function () {
Route::controller(userController::class)
->group(function () {
Route::get('users/listUsers', 'listUsers')->name('users.list');
Route::get('users/listCompanies', 'listCompanies')->name('users.company');
Route::get('users/{id}', 'show')->name('users.Show');
Route::get('users/{id}/edit', 'edit')->name('users.edit');
Route::put('users/{user}', 'update')->name('users.update');
Route::delete('users/{user}', 'destroy')->name('users.destroy');
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
});
Route::get('users/listUsers', 'listUsers')->name('users.list');
Route::get('users/listCompanies', 'listCompanies')->name('users.company');
Route::get('users/{id}', 'show')->name('users.Show');
Route::get('users/{id}/edit', 'edit')->name('users.edit');
Route::put('users/{user}', 'update')->name('users.update');
Route::delete('users/{user}', 'destroy')->name('users.destroy');
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
});
/*
|--------------------------------------------------------------------------
| Create Projects with Super Admin and Admin
|--------------------------------------------------------------------------
|
|Crud model for the application's projects, where both their creation and the indication of project statuses are handled.
|
*/
/*
|--------------------------------------------------------------------------
| 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
|--------------------------------------------------------------------------
|
|Crud model for the application's projects, where both their creation and the indication of project statuses are handled.
|
*/
Route::controller(CreateProjectController::class)
->group(function () {
// indication of progress bar to projects that are in 'Planning'
@ -158,8 +163,8 @@
Route::get('test3/{id}', 'showStep3')->name('test3');
// Para adicionar uma tarefa Complementar
Route::post('addFurtherTasks','addFurtherTasks')->name('addFurtherTasks');
Route::post('deleteFurtherTasks','deleteFurtherTasks')->name('deleteFurtherTasks');
Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks');
Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks');
Route::get('createProject', 'createProjectForStep1')->name('createProject');
@ -185,18 +190,27 @@
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
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
@ -204,14 +218,17 @@
| 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 () {
// Rotas protegidas que exigem verificação de e-mail
Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home');
});
/*
|--------------------------------------------------------------------------
| Template Excel
@ -222,6 +239,9 @@
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('formulario', function () {
return view('email/FormAdmin');
})->name('formulario');