update qrcodes
This commit is contained in:
parent
580809be26
commit
bb616e62b5
|
|
@ -1218,6 +1218,7 @@ public function receiveIdEquipment(Equipment $equipment)
|
||||||
|
|
||||||
public function processStep2(Request $request)
|
public function processStep2(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Valide e processe os dados do formulário
|
// Valide e processe os dados do formulário
|
||||||
$file = $request->file('documento');
|
$file = $request->file('documento');
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
use App\Models\Unit;
|
use App\Models\Unit;
|
||||||
use App\Models\AmbitsEquipment;
|
use App\Models\AmbitsEquipment;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use App\Services\PdfWrapper;
|
||||||
|
|
||||||
// use PDF;
|
// use PDF;
|
||||||
|
|
||||||
|
|
@ -174,23 +175,12 @@ public function showAllEquipmentsInProjectForQrCode($projectId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public function showDetailsEquipmentForQrCode($equipmentId, $projectId)
|
// public function showDetailsEquipmentForQrCode($equipmentId, $projectId)
|
||||||
// {
|
// {
|
||||||
// $detailsEquipment = Equipment::find($equipmentId);
|
// $detailsEquipment = Equipment::find($equipmentId);
|
||||||
|
|
||||||
// // Gera o QR Code
|
|
||||||
// $qrCode = new QrCode($detailsEquipment->equipment_tag);
|
|
||||||
// $writer = new PngWriter();
|
|
||||||
|
|
||||||
// // Converte o QR Code para base64 para incorporar na página
|
|
||||||
// $qrCodeImage = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString());
|
|
||||||
|
|
||||||
// $detailsCompanyProject = CompanyProject::find($projectId);
|
// $detailsCompanyProject = CompanyProject::find($projectId);
|
||||||
// $detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first();
|
// $detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first();
|
||||||
|
|
||||||
// $detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first();
|
// $detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first();
|
||||||
|
|
||||||
// $logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg'));
|
// $logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg'));
|
||||||
|
|
||||||
// if (!file_exists($logoPath)) {
|
// if (!file_exists($logoPath)) {
|
||||||
|
|
@ -198,61 +188,94 @@ public function showAllEquipmentsInProjectForQrCode($projectId)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get();
|
// $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get();
|
||||||
|
|
||||||
// $associatedArray = [];
|
// $associatedArray = [];
|
||||||
|
// $qrCodeImages = [];
|
||||||
|
|
||||||
// foreach ($associatedEquipments as $associatedEquipment) {
|
// foreach ($associatedEquipments as $associatedEquipment) {
|
||||||
// $associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag;
|
// $associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag;
|
||||||
|
// $qrCode = new QrCode($associatedEquipment->component_tag);
|
||||||
|
// $writer = new PngWriter();
|
||||||
|
// $qrCodeImages[$associatedEquipment->id] = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString());
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// $html = view('projectsClients.showDetailsEquipmentForQrCodePdf', [
|
// $html = view('projectsClients.showDetailsEquipmentForQrCodePdf', [
|
||||||
// 'detailsEquipment' => $detailsEquipment,
|
// 'detailsEquipment' => $detailsEquipment,
|
||||||
// 'logoPath' => $logoPath,
|
// 'logoPath' => $logoPath,
|
||||||
// 'qrCodeImage' => $qrCodeImage,
|
// 'qrCodeImages' => $qrCodeImages,
|
||||||
// 'associatedArray' => $associatedArray
|
// 'associatedArray' => $associatedArray
|
||||||
// ])->render();
|
// ])->render();
|
||||||
|
|
||||||
// // Define a orientação da folha como horizontal (Landscape)
|
// $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']);
|
||||||
// $mpdf = new \Mpdf\Mpdf([
|
|
||||||
// 'mode' => 'utf-8',
|
|
||||||
// 'format' => 'A4' // Define o formato como A4 e orientação como Landscape (horizontal)
|
|
||||||
// ]);
|
|
||||||
// $mpdf->WriteHTML($html);
|
// $mpdf->WriteHTML($html);
|
||||||
// $mpdf->Output('nome_do_arquivo.pdf', 'I');
|
// $mpdf->Output('nome_do_arquivo.pdf', 'I');
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
public function showDetailsEquipmentForQrCode($equipmentId, $projectId)
|
public function showDetailsEquipmentForQrCode($equipmentId, $projectId)
|
||||||
{
|
{
|
||||||
|
// Busca os detalhes do equipamento, projeto e empresa
|
||||||
$detailsEquipment = Equipment::find($equipmentId);
|
$detailsEquipment = Equipment::find($equipmentId);
|
||||||
$detailsCompanyProject = CompanyProject::find($projectId);
|
$detailsCompanyProject = CompanyProject::find($projectId);
|
||||||
$detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first();
|
$detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first();
|
||||||
$detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first();
|
$detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first();
|
||||||
|
|
||||||
|
// Definir o caminho da logo da empresa
|
||||||
$logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg'));
|
$logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg'));
|
||||||
|
|
||||||
|
|
||||||
|
// Verificar se o caminho do logo existe, se não, usa um logo padrão
|
||||||
if (!file_exists($logoPath)) {
|
if (!file_exists($logoPath)) {
|
||||||
$logoPath = public_path('companies_logo/logoISPT4.0.jpg');
|
$logoPath = public_path('companies_logo/logoISPT4.0.jpg');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$isptLogoPath = public_path('/img/ispt/ispt.jpg');
|
||||||
|
|
||||||
|
// Associar equipamentos ao QR Code
|
||||||
$associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get();
|
$associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get();
|
||||||
$associatedArray = [];
|
$associatedArray = [];
|
||||||
$qrCodeImages = [];
|
$qrCodeImages = [];
|
||||||
|
|
||||||
|
|
||||||
|
// Gerar QR Codes para cada equipamento associado
|
||||||
foreach ($associatedEquipments as $associatedEquipment) {
|
foreach ($associatedEquipments as $associatedEquipment) {
|
||||||
$associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag;
|
// Extrair o texto após o '@'
|
||||||
|
$componentParts = explode('@', $associatedEquipment->component_tag);
|
||||||
|
$associatedArray[$associatedEquipment->id] = isset($componentParts[1]) ? $componentParts[1] : $associatedEquipment->component_tag;
|
||||||
|
|
||||||
|
// Gerar QR Code
|
||||||
$qrCode = new QrCode($associatedEquipment->component_tag);
|
$qrCode = new QrCode($associatedEquipment->component_tag);
|
||||||
$writer = new PngWriter();
|
$writer = new PngWriter();
|
||||||
|
|
||||||
|
// Converter o QR Code para imagem base64
|
||||||
$qrCodeImages[$associatedEquipment->id] = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString());
|
$qrCodeImages[$associatedEquipment->id] = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString());
|
||||||
}
|
}
|
||||||
|
|
||||||
$html = view('projectsClients.showDetailsEquipmentForQrCodePdf', [
|
// dd($detailsEquipment->equipmentType->equipment_type_id);
|
||||||
|
|
||||||
|
return view('projectsClients.showDetailsEquipmentForQrCodePdf', [
|
||||||
'detailsEquipment' => $detailsEquipment,
|
'detailsEquipment' => $detailsEquipment,
|
||||||
'logoPath' => $logoPath,
|
'logoPath' => $logoPath,
|
||||||
'qrCodeImages' => $qrCodeImages,
|
'qrCodeImages' => $qrCodeImages,
|
||||||
'associatedArray' => $associatedArray
|
'associatedArray' => $associatedArray,
|
||||||
])->render();
|
'isptLogoPath'=> $isptLogoPath
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
// // Usar PdfWrapper para gerar o PDF
|
||||||
|
// $pdfWrapper = new PdfWrapper();
|
||||||
|
// // Gera e retorna o PDF com os detalhes e QR Codes
|
||||||
|
// return $pdfWrapper
|
||||||
|
// ->loadView('projectsClients.showDetailsEquipmentForQrCodePdf', [
|
||||||
|
// 'detailsEquipment' => $detailsEquipment,
|
||||||
|
// 'logoPath' => $logoPath,
|
||||||
|
// 'qrCodeImages' => $qrCodeImages,
|
||||||
|
// 'associatedArray' => $associatedArray,
|
||||||
|
// 'isptLogoPath'=> $isptLogoPath
|
||||||
|
// ])
|
||||||
|
// ->setOrientation('landscape')
|
||||||
|
// ->stream('nome_do_arquivo.pdf'); // Exibe o PDF diretamente no navegador
|
||||||
|
|
||||||
$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']);
|
|
||||||
$mpdf->WriteHTML($html);
|
|
||||||
$mpdf->Output('nome_do_arquivo.pdf', 'I');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,6 @@
|
||||||
|
|
||||||
use ZipArchive;
|
use ZipArchive;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
use Yajra\DataTables\Facades\DataTables;
|
use Yajra\DataTables\Facades\DataTables;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,13 +43,6 @@ public function specificAttributes()
|
||||||
->orderBy('general_attributes_equipaments.general_attributes_equipment_description', 'asc');
|
->orderBy('general_attributes_equipaments.general_attributes_equipment_description', 'asc');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Trocar para EquipmentWorkHistory
|
|
||||||
public function equipmentAssociationAmbit()
|
|
||||||
{
|
|
||||||
//Antiga hasMany , apenas colocado hasOne para funcionar o datatables
|
|
||||||
return $this->hasOne(EquipmentAssociationAmbit::class, 'equipment_id', 'equipment_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function orderEquipmentTasks()
|
public function orderEquipmentTasks()
|
||||||
{
|
{
|
||||||
return $this->hasMany(OrderEquipmentTasks::class, 'equipment_id', 'equipment_id');
|
return $this->hasMany(OrderEquipmentTasks::class, 'equipment_id', 'equipment_id');
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,8 @@ public function Equipment(){
|
||||||
return $this->belongsTo(Equipment::class,'equipment_id', 'equipment_id');
|
return $this->belongsTo(Equipment::class,'equipment_id', 'equipment_id');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public function equipmentWorkHistory()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,20 @@ class PdfWrapper
|
||||||
{
|
{
|
||||||
protected Browsershot $pdfGenerator;
|
protected Browsershot $pdfGenerator;
|
||||||
protected string $html;
|
protected string $html;
|
||||||
|
protected $orientation = 'portrait';
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->pdfGenerator = new Browsershot();
|
$this->pdfGenerator = new Browsershot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Método para configurar a orientação (paisagem ou retrato)
|
||||||
|
public function setOrientation($orientation): self
|
||||||
|
{
|
||||||
|
$this->orientation = $orientation;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
// Load view and render HTML
|
// Load view and render HTML
|
||||||
public function loadView(string $bladeFile, array $data = []): self
|
public function loadView(string $bladeFile, array $data = []): self
|
||||||
{
|
{
|
||||||
|
|
@ -50,6 +58,7 @@ public function generate(): Browsershot
|
||||||
return $this->pdfGenerator
|
return $this->pdfGenerator
|
||||||
->html($this->html)
|
->html($this->html)
|
||||||
->format('A4')
|
->format('A4')
|
||||||
|
->landscape($this->orientation === 'landscape') // Verifica se deve ser paisagem
|
||||||
->scale(0.7)
|
->scale(0.7)
|
||||||
->fullPage()
|
->fullPage()
|
||||||
->setOption('printBackground', true)
|
->setOption('printBackground', true)
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,176 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>Document</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.page-break {
|
||||||
|
page-break-before: always;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-pai {
|
||||||
|
width: 50%;
|
||||||
|
margin: 2mm;
|
||||||
|
float: left;
|
||||||
|
width: 65mm;
|
||||||
|
height: 95mm;
|
||||||
|
border: 3px solid #09255C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
background-color: #09255C;
|
||||||
|
height: 11mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col {
|
||||||
|
width: 32.50%;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col2 {
|
||||||
|
width: 35%;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col2-img {
|
||||||
|
width: 40%;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-1 {
|
||||||
|
margin-top: 2mm;
|
||||||
|
color: #09255C;
|
||||||
|
padding-left: 2mm;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-2 {
|
||||||
|
color: #09255C;
|
||||||
|
margin-left: 10mm;
|
||||||
|
padding-left: 6mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-1-img {
|
||||||
|
margin-top: 2mm;
|
||||||
|
margin-right: 20mm;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-2-img {
|
||||||
|
margin-left: 11mm;
|
||||||
|
padding-left: 10mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-center {
|
||||||
|
padding-top: 4mm;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.circle {
|
||||||
|
margin-top: 1mm;
|
||||||
|
width: 8mm;
|
||||||
|
height: 8mm;
|
||||||
|
/* border: 1px solid blue; */
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-logo {
|
||||||
|
margin-top: 0.5mm;
|
||||||
|
padding-left: 11mm;
|
||||||
|
width: 10mm;
|
||||||
|
height: 10mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr-code {
|
||||||
|
margin-top: 1mm;
|
||||||
|
margin-left: 13mm;
|
||||||
|
width: 40mm;
|
||||||
|
height: 40mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-tag {
|
||||||
|
margin-left: 20mm;
|
||||||
|
font-size: 5mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type-tag {
|
||||||
|
margin-left: 25mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-company {
|
||||||
|
margin-top: 4mm;
|
||||||
|
padding-left: 3mm;
|
||||||
|
width: 15mm;
|
||||||
|
height: 15mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-istp {
|
||||||
|
margin-top: 4mm;
|
||||||
|
width: 15mm;
|
||||||
|
height: 15mm;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
@php $contador = 0; @endphp
|
||||||
|
@foreach ($associatedArray as $id => $componentTag)
|
||||||
|
<!-- Como cada pagina A4 so tem espaco para 4 cartoes, quando chega no 4 a pagina quebra para a proxima-->
|
||||||
|
@if ($contador % 4 == 0 && $contador != 0)
|
||||||
|
<div class="page-break"></div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@php
|
||||||
|
$parts = explode('@', $componentTag);
|
||||||
|
$tagName = $parts[0]; // a parte antes do '@'
|
||||||
|
$tagType = $parts[1]; // a parte depois do '@'
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div class="box-pai">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="circle"></div>
|
||||||
|
</div>
|
||||||
|
<div class="col col-center">
|
||||||
|
ISPT 4.0
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<img class="img-logo"
|
||||||
|
src="{{ public_path('/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
|
||||||
|
alt="Logo Esquerdo">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="box-principal">
|
||||||
|
<img class="qr-code" src="{{ $qrCodeImages[$id] }}" alt="QR Code">
|
||||||
|
<div class="title-tag"><b>Tag :</b> {{ $tagName }}</div>
|
||||||
|
<div class="type-tag">{{$tagType}}</div>
|
||||||
|
|
||||||
|
<div class="col2 col-1">{{ $detailsEquipment->equipmentType->equipment_type_name }}</div>
|
||||||
|
<div class="col2 col-2">{{ $detailsEquipment->unit->unit_name }}</div>
|
||||||
|
|
||||||
|
<div class="col2-img col-1-img">
|
||||||
|
<img class="img-company" src="{{ public_path('/img/ispt/ispt.jpg') }}"
|
||||||
|
alt="Logo Esquerdo">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col2-img col-2-img">
|
||||||
|
<img class="img-istp" src="{{ $logoPath }}" alt="Logo da Empresa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@php $contador++; @endphp
|
||||||
|
@endforeach
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -4,113 +4,27 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
<title>Card Example</title>
|
||||||
<title>Document</title>
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.page-break {
|
@page {
|
||||||
page-break-before: always;
|
margin-top: 15mm;
|
||||||
|
margin-bottom: 15mm;
|
||||||
|
margin-left: 15mm;
|
||||||
|
margin-right: 15mm;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-pai {
|
.card-layout {
|
||||||
width: 50%;
|
font-size: 10px;
|
||||||
margin: 2mm;
|
/* width: 80mm;
|
||||||
float: left;
|
height: 45mm; */
|
||||||
width: 65mm;
|
width: 115mm;
|
||||||
height: 95mm;
|
height: 65mm;
|
||||||
border: 3px solid #09255C;
|
display: flex;
|
||||||
}
|
flex-direction: column;
|
||||||
|
/* Organiza os filhos verticalmente */
|
||||||
.row {
|
border: 1px solid black;
|
||||||
background-color: #09255C;
|
|
||||||
height: 11mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col {
|
|
||||||
width: 32.50%;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.col2 {
|
|
||||||
width: 35%;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.col2-img {
|
|
||||||
width: 40%;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-1 {
|
|
||||||
margin-top: 2mm;
|
|
||||||
color: #09255C;
|
|
||||||
padding-left: 2mm;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-2 {
|
|
||||||
color: #09255C;
|
|
||||||
margin-left: 10mm;
|
|
||||||
padding-left: 6mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-1-img {
|
|
||||||
margin-top: 2mm;
|
|
||||||
margin-right: 20mm;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-2-img {
|
|
||||||
margin-left: 11mm;
|
|
||||||
padding-left: 10mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-center {
|
|
||||||
padding-top: 4mm;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.circle {
|
|
||||||
margin-top: 1mm;
|
|
||||||
width: 8mm;
|
|
||||||
height: 8mm;
|
|
||||||
/* border: 1px solid blue; */
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-logo {
|
|
||||||
margin-top: 0.5mm;
|
|
||||||
padding-left: 11mm;
|
|
||||||
width: 10mm;
|
|
||||||
height: 10mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.qr-code {
|
|
||||||
margin-top: 1mm;
|
|
||||||
margin-left: 13mm;
|
|
||||||
width: 40mm;
|
|
||||||
height: 40mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-tag {
|
|
||||||
margin-left: 20mm;
|
|
||||||
font-size: 5mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.type-tag {
|
|
||||||
margin-left: 25mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-company {
|
|
||||||
margin-top: 4mm;
|
|
||||||
padding-left: 3mm;
|
|
||||||
width: 15mm;
|
|
||||||
height: 15mm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.img-istp {
|
.img-istp {
|
||||||
|
|
@ -118,59 +32,290 @@
|
||||||
width: 15mm;
|
width: 15mm;
|
||||||
height: 15mm;
|
height: 15mm;
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
flex-basis: 40%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0;
|
||||||
|
/* Remove qualquer padding adicional */
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-card {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-footer {
|
||||||
|
flex-basis: 60%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* Stack rows vertically */
|
||||||
|
justify-content: space-between;
|
||||||
|
/* Distribute space evenly */
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer .row {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin-left: 0.4px;
|
||||||
|
/* flex-grow: 1; */
|
||||||
|
/* Make each row grow equally to fill the space */
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid gray;
|
||||||
|
/* Optional: add some separation between rows */
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr-code {
|
||||||
|
/* margin-top: 5px; */
|
||||||
|
width: 15mm;
|
||||||
|
height: 15mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag-name-qrcode {
|
||||||
|
font-size: 10px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-company {
|
||||||
|
margin-top: 7px;
|
||||||
|
width: 12mm;
|
||||||
|
height: 12mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blue {
|
||||||
|
background-color: #09255C;
|
||||||
|
color: white;
|
||||||
|
/* border-radius: 5px; */
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gray {
|
||||||
|
background-color: #EAF3F6;
|
||||||
|
color: black;
|
||||||
|
/* border-radius: 5px; */
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-blue {
|
||||||
|
background-color: #00B0EA;
|
||||||
|
color: white;
|
||||||
|
/* border-radius: 5px; */
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@foreach ($associatedArray as $key => $value)
|
||||||
@php $contador = 0; @endphp
|
<!-- psv -->
|
||||||
@foreach ($associatedArray as $id => $componentTag)
|
@if ($detailsEquipment->equipmentType->equipment_type_id == 3)
|
||||||
<!-- Como cada pagina A4 so tem espaco para 4 cartoes, quando chega no 4 a pagina quebra para a proxima-->
|
<div class="card-layout" style="border:1px solid black">
|
||||||
@if ($contador % 4 == 0 && $contador != 0)
|
<div class="card-header">
|
||||||
<div class="page-break"></div>
|
<div class="row" style="width: 100%; height:100%;">
|
||||||
@endif
|
<div class="col-sm p-0 " style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
@php
|
<img class="img-company" src="{{ $isptLogoPath }}" alt="Logo da Empresa">
|
||||||
$parts = explode('@', $componentTag);
|
</div>
|
||||||
$tagName = $parts[0]; // a parte antes do '@'
|
<div class="col-sm">
|
||||||
$tagType = $parts[1]; // a parte depois do '@'
|
<img class="img-company" src="{{ $logoPath }}" alt="Logo da Empresa">
|
||||||
@endphp
|
</div>
|
||||||
|
</div>
|
||||||
<div class="box-pai">
|
<div class="col-sm-6 p-0 title-card blue" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm " style="padding-top: 15px;">Paragem ###</div>
|
||||||
|
<div class="col-sm">N.Ispt ###</div>
|
||||||
|
<div class="col-sm">Tag ###</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm p-0" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="qr-code" src="{{ $qrCodeImages[$key] }}" alt="QR Code">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<p class="tag-name-qrcode">{{ $associatedArray[$key] }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- .Card-header -->
|
||||||
|
<div class="card-footer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col-sm-4 blue">Dim.Ent:</div>
|
||||||
<div class="circle"></div>
|
<div class="col-sm">###</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-center">
|
<div class="row">
|
||||||
ISPT 4.0
|
<div class="col-sm-4 blue">Dim.Sai:</div>
|
||||||
|
<div class="col-sm">###</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="row">
|
||||||
<img class="img-logo"
|
<div class="col-sm-4 blue">Equip:</div>
|
||||||
src="{{ public_path('/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
|
<div class="col-sm">###</div>
|
||||||
alt="Logo Esquerdo">
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 blue" style="padding-right: 1px;">T.Fluido:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 blue">Pressao:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 blue">C.Pressao</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 blue" style="padding-right: 0.5px;">T.Val:</div>
|
||||||
|
<div class="col-sm-2">PSV</div>
|
||||||
|
<div class="col-sm-2 blue">Ambito:</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
<div class="col-sm-2 blue">Area:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-principal">
|
<!-- .Card-footer -->
|
||||||
<img class="qr-code" src="{{ $qrCodeImages[$id] }}" alt="QR Code">
|
</div>
|
||||||
<div class="title-tag"><b>Tag :</b> {{ $tagName }}</div>
|
<!-- .Card-layout -->
|
||||||
<div class="type-tag">{{$tagType}}</div>
|
|
||||||
|
|
||||||
<div class="col2 col-1">{{ $detailsEquipment->equipmentType->equipment_type_name }}</div>
|
<!-- CV -->
|
||||||
<div class="col2 col-2">{{ $detailsEquipment->unit->unit_name }}</div>
|
@elseif($detailsEquipment->equipmentType->equipment_type_id == 1)
|
||||||
|
<div class="card-layout" style="border:1px solid black">
|
||||||
<div class="col2-img col-1-img">
|
<div class="card-header">
|
||||||
<img class="img-company" src="{{ public_path('/img/ispt/ispt.jpg') }}"
|
<div class="row" style="width: 100%; height:100%;">
|
||||||
alt="Logo Esquerdo">
|
<div class="col-sm p-0 " style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="img-company" src="{{ $isptLogoPath }}" alt="Logo da Empresa">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="img-company" src="{{ $logoPath }}" alt="Logo da Empresa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 p-0 title-card gray" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm " style="padding-top: 15px;">Paragem ###</div>
|
||||||
|
<div class="col-sm">N.Ispt ###</div>
|
||||||
|
<div class="col-sm">Tag ###</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm p-0" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="qr-code" src="{{ $qrCodeImages[$key] }}" alt="QR Code">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<p class="tag-name-qrcode">{{ $associatedArray[$key] }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- .Card-header -->
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 gray" style="width: 50%;">Dim.Ent:</div>
|
||||||
|
<div class="col-sm">###</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 gray">Equip:</div>
|
||||||
|
<div class="col-sm">###</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 gray" style="padding-right: 1px;">T.Fluido:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 gray">Pressao:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 gray">C.Pressao</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 gray" style="padding-right: 0.5px;">T.Val:</div>
|
||||||
|
<div class="col-sm-2">CV</div>
|
||||||
|
<div class="col-sm-2 gray">Ambito:</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
<div class="col-sm-2 gray">Area:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- .Card-footer -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col2-img col-2-img">
|
|
||||||
<img class="img-istp" src="{{ $logoPath }}" alt="Logo da Empresa">
|
|
||||||
|
<!-- ISV -->
|
||||||
|
@elseif($detailsEquipment->equipmentType->equipment_type_id == 2)
|
||||||
|
<div class="card-layout" style="border:1px solid black">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="row" style="width: 100%; height:100%;">
|
||||||
|
<div class="col-sm p-0 " style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="img-company" src="{{ $isptLogoPath }}" alt="Logo da Empresa">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="img-company" src="{{ $logoPath }}" alt="Logo da Empresa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 p-0 title-card dark-blue" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm " style="padding-top: 15px;">Paragem ###</div>
|
||||||
|
<div class="col-sm">N.Ispt ###</div>
|
||||||
|
<div class="col-sm">Tag ###</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm p-0" style="border: 1px solid gray;">
|
||||||
|
<div class="col-sm">
|
||||||
|
<img class="qr-code" src="{{ $qrCodeImages[$key] }}" alt="QR Code">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<p class="tag-name-qrcode">{{ $associatedArray[$key] }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@php $contador++; @endphp
|
</div>
|
||||||
|
<!-- .Card-header -->
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="row" ">
|
||||||
|
<div class="col-sm-6 dark-blue" style="margin: 0;padding:0;background-color:blue;">Dim.Ent:</div>
|
||||||
|
<div class="col-sm">###</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 dark-blue">Equip:</div>
|
||||||
|
<div class="col-sm">###</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 dark-blue" style="padding-right: 1px;">T.Fluido:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 dark-blue">Pressao:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
<div class="col-sm-2 dark-blue">C.Pressao</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 dark-blue" style="padding-right: 0.5px;">T.Val:</div>
|
||||||
|
<div class="col-sm-2">ISV</div>
|
||||||
|
<div class="col-sm-2 dark-blue">Ambito:</div>
|
||||||
|
<div class="col-sm-2">##</div>
|
||||||
|
<div class="col-sm-2 dark-blue">Area:</div>
|
||||||
|
<div class="col-sm-2">N/A</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- .Card-footer -->
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL
|
|
||||||
CREATE DATABASE IF NOT EXISTS testing;
|
|
||||||
GRANT ALL PRIVILEGES ON \`testing%\`.* TO '$MYSQL_USER'@'%';
|
|
||||||
EOSQL
|
|
||||||
20
vendor/laravel/sail/stubs/mysql.stub
vendored
20
vendor/laravel/sail/stubs/mysql.stub
vendored
|
|
@ -1,20 +0,0 @@
|
||||||
mysql:
|
|
||||||
image: 'mysql/mysql-server:8.0'
|
|
||||||
ports:
|
|
||||||
- '${FORWARD_DB_PORT:-3306}:3306'
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
|
|
||||||
MYSQL_ROOT_HOST: "%"
|
|
||||||
MYSQL_DATABASE: '${DB_DATABASE}'
|
|
||||||
MYSQL_USER: '${DB_USERNAME}'
|
|
||||||
MYSQL_PASSWORD: '${DB_PASSWORD}'
|
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
|
||||||
volumes:
|
|
||||||
- 'sail-mysql:/var/lib/mysql'
|
|
||||||
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
|
|
||||||
networks:
|
|
||||||
- sail
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
|
|
||||||
retries: 3
|
|
||||||
timeout: 5s
|
|
||||||
Loading…
Reference in New Issue
Block a user