Update pdf to receive answers and images of elementary tasks
|
|
@ -538,6 +538,7 @@ public function enterWorkstation()
|
|||
|
||||
public function receiveExecutionProject($ProjectId)
|
||||
{
|
||||
|
||||
$DatasProject = CompanyProject::find($ProjectId);
|
||||
$equipmentsTypes = EquipmentType::all();
|
||||
|
||||
|
|
@ -581,7 +582,6 @@ public function receiveExecutionProject($ProjectId)
|
|||
});
|
||||
});
|
||||
|
||||
|
||||
// $allEquipmentsFullyCompleted será true se todos os equipamentos tiverem todos seus históricos com status 2
|
||||
//Deve verificar se todos os equipamentos ja foram concluidos e se for o caso, deve alterar para Obra concluido, autorizar os relatorios e dessasociar todos os equipamento da Obra atual.
|
||||
if ($allEquipmentsFullyCompleted) {
|
||||
|
|
|
|||
|
|
@ -9,11 +9,16 @@
|
|||
use App\Models\EquipmentAssociationAmbit;
|
||||
use App\Models\EquipmentComment;
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use App\Models\ReceiveImagesControlEquipmentWorkstation;
|
||||
use App\Models\TasksAssociationAmbits;
|
||||
use App\Models\Unit;
|
||||
use App\Models\workstationsTaskAnswers;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Services\PdfWrapper;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
|
||||
|
||||
use Yajra\DataTables\Facades\DataTables;
|
||||
|
||||
|
|
@ -36,6 +41,109 @@
|
|||
class ProjectoDatacontroller extends Controller
|
||||
{
|
||||
|
||||
public function createPDFforcompletedEquipment($equipmentId)
|
||||
{
|
||||
$detailsEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $equipmentId)->first();
|
||||
$detailsEquipment = Equipment::where('equipment_id', $equipmentId)->first();
|
||||
$receiveDetailsProject = CompanyProject::where('company_projects_id', $detailsEquipmentWorkHistory->company_projects_id)->first();
|
||||
$receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)->first();
|
||||
|
||||
// dd($receiveDetailsProject->plant->company->company_logo);
|
||||
|
||||
// Recebe apenas as tarefas já feitas
|
||||
$completedTasksHistory = ControlEquipmentWorkstation::with('workstationsTaskAnswers', 'receiveImages')
|
||||
->where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->whereNotNull('entry_date')
|
||||
->whereNotNull('departure_date')
|
||||
->has('workstationsTaskAnswers')
|
||||
->orderBy('elemental_tasks_id', 'asc')
|
||||
->get();
|
||||
|
||||
|
||||
// Cria uma coleção para armazenar todas as tarefas, concluídas e não concluídas
|
||||
$receiveAllTasksHistiory = collect();
|
||||
$taskImages = [];
|
||||
|
||||
foreach ($completedTasksHistory as $taskHistory) {
|
||||
$taskHistory->cardTypeStyle = 'gray';
|
||||
$taskHistory->typeStatusHistory = 'historic';
|
||||
|
||||
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
||||
|
||||
if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) {
|
||||
$answersArray = json_decode($workstationTaskAnswer->answer_json, true);
|
||||
$formattedAnswers = [];
|
||||
foreach ($answersArray as $item) {
|
||||
if (isset($item['question']) && isset($item['value'])) {
|
||||
$formattedAnswers[$item['question']] = $item['value'];
|
||||
}
|
||||
}
|
||||
$taskHistory->formatted_answers = $formattedAnswers;
|
||||
} else {
|
||||
$taskHistory->formatted_answers = [];
|
||||
}
|
||||
|
||||
if ($taskHistory->receiveImages) {
|
||||
$imagePaths = $taskHistory->receiveImages->image_paths;
|
||||
$taskImages[$taskHistory->control_equipment_workstation_id] = is_array($imagePaths) ? $imagePaths : json_decode($imagePaths, true);
|
||||
} else {
|
||||
$taskImages[$taskHistory->control_equipment_workstation_id] = [];
|
||||
}
|
||||
|
||||
$receiveAllTasksHistiory->push($taskHistory);
|
||||
}
|
||||
|
||||
// Agrupa as tarefas concluídas por elemental_tasks_id e seleciona a mais recente por departure_date
|
||||
$receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) {
|
||||
return $item->elemental_tasks_id;
|
||||
})->map(function ($group) {
|
||||
return $group->sortByDesc('departure_date')->first();
|
||||
});
|
||||
|
||||
|
||||
// // Define os caminhos das logos
|
||||
// $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg';
|
||||
|
||||
// // Verifica se a logo do projeto está definida e não está vazia
|
||||
// $projectLogoPath = !empty($receiveDetailsProject->plant->company->project_logo) ? $receiveDetailsProject->plant->company->project_logo : $defaultLogoPath;
|
||||
|
||||
// // Verifica se a logo da empresa está definida e não está vazia
|
||||
// $companyLogoPath = !empty($receiveDetailsProject->plant->company->company_logo) ? $receiveDetailsProject->plant->company->company_logo : $defaultLogoPath;
|
||||
|
||||
|
||||
// Define os caminhos das logos
|
||||
$defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg';
|
||||
|
||||
// Verifica se a logo do projeto está definida e não está vazia
|
||||
$projectLogoPath = !empty($receiveDetailsProject->plant->company->project_logo) ? $receiveDetailsProject->plant->company->project_logo : $defaultLogoPath;
|
||||
|
||||
// Verifica se a logo da empresa está definida e não está vazia
|
||||
if (!empty($receiveDetailsProject->plant->company->company_logo)) {
|
||||
$companyLogoPath = '/companies_logo/' . $receiveDetailsProject->plant->company->company_logo;
|
||||
} else {
|
||||
$companyLogoPath = $defaultLogoPath;
|
||||
}
|
||||
|
||||
// Converte as imagens para base64 usando o serviço PdfWrapper
|
||||
$pdfWrapper = new PdfWrapper();
|
||||
|
||||
// dd($receiveAllTasksHistiory);
|
||||
|
||||
// Gera e retorna o PDF
|
||||
return $pdfWrapper
|
||||
->loadView('projectsClients.pdf.testePdf', [
|
||||
'tag' => $detailsEquipment->equipment_tag,
|
||||
'numeroPanini' => $detailsEquipmentWorkHistory->ispt_number,
|
||||
'nObra' => $receiveDetailsProject->project_company_name,
|
||||
'ambito' => $receiveAmbit->ambitsEquipment->ambits_description,
|
||||
'receiveAllTasksHistiory' => $receiveAllTasksHistiory,
|
||||
'taskImages' => $taskImages,
|
||||
'projectLogoPath' => $projectLogoPath,
|
||||
'companyLogoPath' => $companyLogoPath
|
||||
])
|
||||
->stream('ispt40.pdf');
|
||||
}
|
||||
|
||||
public function viewProjectsList($orderProjectID)
|
||||
{
|
||||
|
||||
|
|
@ -43,7 +151,6 @@ public function viewProjectsList($orderProjectID)
|
|||
// $receiveProjectsForThisOrder = CompanyProject::with(['plant.user'])->where('order_project', $orderProjectID)->get();
|
||||
|
||||
// return view('projectsClients.viewProjectsList',compact('receiveProjectsForThisOrder','orderProjectID'));
|
||||
|
||||
$receiveProjectsForThisOrder = CompanyProject::with(['plant'])
|
||||
->where('order_project', $orderProjectID)
|
||||
->get();
|
||||
|
|
@ -193,12 +300,15 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
|||
->orderBy('elemental_tasks_id', 'asc')
|
||||
->get();
|
||||
|
||||
|
||||
|
||||
// Cria uma coleção para armazenar todas as tarefas, concluídas e não concluídas
|
||||
$receiveAllTasksHistiory = collect();
|
||||
|
||||
// Adiciona as tarefas concluídas à coleção principal
|
||||
foreach ($completedTasksHistory as $taskHistory) {
|
||||
$taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle'
|
||||
$taskHistory->typeStatusHistory = 'historic';
|
||||
|
||||
// Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir
|
||||
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
||||
|
|
@ -222,6 +332,14 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
|||
$taskHistory->formatted_answers = [];
|
||||
}
|
||||
|
||||
if ($taskHistory->receiveImages) {
|
||||
$imagePaths = $taskHistory->receiveImages->image_paths;
|
||||
$taskHistory->image_paths = is_array($imagePaths) ? $imagePaths : json_decode($imagePaths, true);
|
||||
} else {
|
||||
$taskHistory->image_paths = [];
|
||||
}
|
||||
|
||||
|
||||
if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) {
|
||||
// Converte para instâncias de Carbon
|
||||
$entryDate = \Carbon\Carbon::parse($taskHistory->entry_date);
|
||||
|
|
@ -254,33 +372,41 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
|||
$receiveAllTasksHistiory->push($taskHistory);
|
||||
}
|
||||
|
||||
// Agrupar tarefas por elemental_tasks_id e ordenar por departure_date
|
||||
$tasksGrouped = $completedTasksHistory->groupBy('elemental_tasks_id')->map(function ($group) {
|
||||
return $group->sortByDesc('departure_date');
|
||||
|
||||
|
||||
// Agrupa e ordena as tarefas concluídas por elemental_tasks_id e departure_date
|
||||
$receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) {
|
||||
return $item->elemental_tasks_id;
|
||||
})->map(function ($group) {
|
||||
$latest = $group->sortByDesc('departure_date')->first();
|
||||
$latest->statusHistory = 'yes';
|
||||
$history = $group->sortByDesc('departure_date')->slice(1)->map(function ($item) {
|
||||
$item->statusHistory = 'no';
|
||||
return $item;
|
||||
});
|
||||
|
||||
return [
|
||||
'latest' => $latest,
|
||||
'history' => $history->values()
|
||||
];
|
||||
});
|
||||
|
||||
// Processar tarefas concluídas
|
||||
foreach ($tasksGrouped as $elemental_tasks_id => $tasks) {
|
||||
// A tarefa mais recente
|
||||
$latestTask = $tasks->first();
|
||||
// Os históricos (excluindo a mais recente)
|
||||
$historyTasks = $tasks->slice(1);
|
||||
|
||||
$receiveAllTasksHistiory->push((object) [
|
||||
'latest' => $latestTask,
|
||||
'history' => $historyTasks,
|
||||
]);
|
||||
}
|
||||
// ->map(function ($group) {
|
||||
// return [
|
||||
// 'latest' => $group->sortByDesc('departure_date')->first(),
|
||||
// 'history' => $group->sortByDesc('departure_date')->slice(1)->values()
|
||||
// ];
|
||||
// });
|
||||
|
||||
// Adiciona as tarefas não concluídas à coleção principal
|
||||
$incompleteTasks = $equipmentTasksIds->diff($completedTasksHistory->pluck('elemental_tasks_id'));
|
||||
|
||||
|
||||
foreach ($incompleteTasks as $taskId) {
|
||||
// Busca os dados da tarefa elementar
|
||||
$elementalTask = ElementalTasks::where('elemental_tasks_id', $taskId)->first();
|
||||
|
||||
$receiveAllTasksHistiory->push((object) [
|
||||
// Adiciona à coleção principal usando o elemental_tasks_id como chave
|
||||
$receiveAllTasksHistiory->put($taskId, [
|
||||
'latest' => (object) [
|
||||
'elemental_tasks_id' => $taskId,
|
||||
'control_equipment_workstation_id' => 'N/A',
|
||||
|
|
@ -294,11 +420,11 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
|||
'elemental_tasks_description' => $elementalTask ? $elementalTask->elemental_tasks_description : null
|
||||
]
|
||||
],
|
||||
'history' => collect(), // Histórico vazio para tarefas não concluídas
|
||||
'history' => collect() // Histórico vazio para tarefas não concluídas
|
||||
]);
|
||||
}
|
||||
|
||||
dd($receiveAllTasksHistiory);
|
||||
// dd($receiveAllTasksHistiory);
|
||||
|
||||
//recebe normalmente, porem os checkbox nao conseguem buscar valor, execepto o ultimo dado.
|
||||
|
||||
|
|
@ -464,7 +590,6 @@ public function projectDetails_11($projectID, $equipmentID)
|
|||
->keyBy('elemental_tasks_id'); // Keying by elemental_tasks_id para fácil acesso
|
||||
|
||||
|
||||
|
||||
$filteredTasks = $filteredTasks->map(function ($task) use ($elementalTasksDetails, $DetailsTasks) {
|
||||
// Primeiro bloco: Adiciona detalhes da tarefa elemental
|
||||
if (isset($elementalTasksDetails[$task->elemental_tasks_id])) {
|
||||
|
|
@ -504,8 +629,6 @@ public function projectDetails_11($projectID, $equipmentID)
|
|||
|
||||
// dd($taskBeforeExecutionOrder);
|
||||
|
||||
|
||||
|
||||
// $OrdemTasks = $DetailsTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
|
||||
$OrdemTasks = $DetailsTasks->pluck('execution_order', 'elemental_tasks_id')->all();
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ public function workstationsTaskAnswers()
|
|||
{
|
||||
return $this->hasMany(workstationsTaskAnswers::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id');
|
||||
}
|
||||
|
||||
public function receiveImages()
|
||||
{
|
||||
return $this->hasOne(ReceiveImagesControlEquipmentWorkstation::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,4 +78,6 @@ public function equipmentWorkHistory()
|
|||
return $this->hasMany(EquipmentWorkHistory::class, 'equipment_id', 'equipment_id');
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
354
app/Services/PdfWrapper copy.php
Normal file
|
|
@ -0,0 +1,354 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use Spatie\Browsershot\Browsershot;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class PdfWrapper
|
||||
{
|
||||
protected Browsershot $pdfGenerator;
|
||||
protected string $html;
|
||||
protected string $headerHtml;
|
||||
protected string $footerHtml;
|
||||
public function __construct()
|
||||
{
|
||||
$this->pdfGenerator = new Browsershot();
|
||||
$this->headerHtml = view('projectsClients.pdf._header')->render();
|
||||
$this->footerHtml = view('projectsClients.pdf._footer')->render();
|
||||
}
|
||||
// Load view and render HTML
|
||||
public function loadView(string $bladeFile, array $data = []): self
|
||||
{
|
||||
$this->html = view($bladeFile, $data)->render();
|
||||
return $this;
|
||||
}
|
||||
// Load raw HTML
|
||||
public function loadHtml(string $html): self
|
||||
{
|
||||
$this->html = $html;
|
||||
return $this;
|
||||
}
|
||||
// Load HTML from a URL
|
||||
public function loadUrl(string $url): self
|
||||
{
|
||||
$this->html = file_get_contents(url($url));
|
||||
return $this;
|
||||
}
|
||||
// Generate the PDF using Browsershot
|
||||
public function generate(): Browsershot
|
||||
{
|
||||
return $this->pdfGenerator
|
||||
->html($this->html)
|
||||
->format('A4')
|
||||
->margins(10, 20, 10, 20)
|
||||
->showBrowserHeaderAndFooter()
|
||||
->headerHtml($this->headerHtml)
|
||||
->footerHtml($this->footerHtml)
|
||||
->waitUntilNetworkIdle();
|
||||
}
|
||||
// Save the PDF to the server in the public folder
|
||||
public function save(string $path): void
|
||||
{
|
||||
$this->generate()->savePdf($path);
|
||||
}
|
||||
// Download the PDF with a specified filename
|
||||
public function download(string $filename)
|
||||
{
|
||||
$pdf = $this->generate()->pdf();
|
||||
return new Response($pdf, 200, [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'attachment; filename="' . $filename . '"',
|
||||
'Content-Length' => strlen($pdf)
|
||||
]);
|
||||
}
|
||||
// Stream the PDF in the browser
|
||||
public function stream(string $filename)
|
||||
{
|
||||
$pdf = $this->generate()->pdf();
|
||||
return new Response($pdf, 200, [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'inline; filename="' . $filename . '"'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// namespace App\Services;
|
||||
// use Spatie\Browsershot\Browsershot;
|
||||
// use Illuminate\Http\Response;
|
||||
// class PdfWrapper
|
||||
// {
|
||||
// protected Browsershot $pdfGenerator;
|
||||
// protected string $html;
|
||||
// public function __construct()
|
||||
// {
|
||||
// $this->pdfGenerator = new Browsershot();
|
||||
// }
|
||||
// // Load view and render HTML
|
||||
// public function loadView(string $bladeFile, array $data = []): self
|
||||
// {
|
||||
// $this->html = view($bladeFile, $data)->render();
|
||||
// return $this;
|
||||
// }
|
||||
// // Load raw HTML
|
||||
// public function loadHtml(string $html): self
|
||||
// {
|
||||
// $this->html = $html;
|
||||
// return $this;
|
||||
// }
|
||||
// // Load HTML from a URL
|
||||
// public function loadUrl(string $url): self
|
||||
// {
|
||||
// $this->html = file_get_contents(url($url));
|
||||
// return $this;
|
||||
// }
|
||||
// // Generate the PDF using Browsershot
|
||||
// public function generate(): Browsershot
|
||||
// {
|
||||
// return $this->pdfGenerator
|
||||
// ->html($this->html)
|
||||
// ->format('A4')
|
||||
// // ->margins(10, 10, 10, 10)
|
||||
// ->scale(0.7)
|
||||
// ->fullPage()
|
||||
// ->setOption('printBackground',true)
|
||||
// ->waitUntilNetworkIdle();
|
||||
// }
|
||||
// // Save the PDF to the server in the public folder
|
||||
// public function save(string $path): void
|
||||
// {
|
||||
// $this->generate()->savePdf($path);
|
||||
// }
|
||||
// // Download the PDF with a specified filename
|
||||
// public function download(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
|
||||
// 'Content-Length' => strlen($pdf)
|
||||
// ]);
|
||||
// }
|
||||
// // Stream the PDF in the browser
|
||||
// public function stream(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'inline; filename="'.$filename.'"'
|
||||
// ]);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// namespace App\Services;
|
||||
|
||||
// use Spatie\Browsershot\Browsershot;
|
||||
// use Illuminate\Http\Response;
|
||||
// use Illuminate\Support\Facades\File;
|
||||
|
||||
// class PdfWrapper
|
||||
// {
|
||||
// protected Browsershot $pdfGenerator;
|
||||
// protected string $html;
|
||||
|
||||
// public function __construct()
|
||||
// {
|
||||
// $this->pdfGenerator = new Browsershot();
|
||||
// }
|
||||
|
||||
// // Load view and render HTML
|
||||
// public function loadView(string $bladeFile, array $data = []): self
|
||||
// {
|
||||
// // Convert image paths to base64
|
||||
// if (isset($data['imagePaths']) && is_array($data['imagePaths'])) {
|
||||
// $data['imagesBase64'] = array_map(function($path) {
|
||||
// return $this->getImageBase64($path);
|
||||
// }, $data['imagePaths']);
|
||||
// }
|
||||
|
||||
// $this->html = view($bladeFile, $data)->render();
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
// // Load raw HTML
|
||||
// public function loadHtml(string $html): self
|
||||
// {
|
||||
// $this->html = $html;
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
// // Load HTML from a URL
|
||||
// public function loadUrl(string $url): self
|
||||
// {
|
||||
// $this->html = file_get_contents(url($url));
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
// // Generate the PDF using Browsershot
|
||||
// public function generate(): Browsershot
|
||||
// {
|
||||
// return $this->pdfGenerator
|
||||
// ->html($this->html)
|
||||
// ->format('A4')
|
||||
// ->scale(0.7)
|
||||
// ->fullPage()
|
||||
// ->setOption('printBackground', true)
|
||||
// ->waitUntilNetworkIdle();
|
||||
// }
|
||||
|
||||
// // Save the PDF to the server in the public folder
|
||||
// public function save(string $path): void
|
||||
// {
|
||||
// $this->generate()->savePdf($path);
|
||||
// }
|
||||
|
||||
// // Download the PDF with a specified filename
|
||||
// public function download(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
|
||||
// 'Content-Length' => strlen($pdf)
|
||||
// ]);
|
||||
// }
|
||||
|
||||
// // Stream the PDF in the browser
|
||||
// public function stream(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'inline; filename="'.$filename.'"'
|
||||
// ]);
|
||||
// }
|
||||
|
||||
// // Function to convert image to base64
|
||||
// protected function getImageBase64($imagePath)
|
||||
// {
|
||||
// $path = public_path($imagePath);
|
||||
// $type = pathinfo($path, PATHINFO_EXTENSION);
|
||||
// $data = File::get($path);
|
||||
// $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
|
||||
|
||||
// return $base64;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// namespace App\Services;
|
||||
|
||||
// use Spatie\Browsershot\Browsershot;
|
||||
// use Illuminate\Http\Response;
|
||||
// use Illuminate\Support\Facades\File;
|
||||
|
||||
// class PdfWrapper
|
||||
// {
|
||||
// protected Browsershot $pdfGenerator;
|
||||
// protected string $html;
|
||||
|
||||
// public function __construct()
|
||||
// {
|
||||
// $this->pdfGenerator = new Browsershot();
|
||||
// }
|
||||
|
||||
// // Load view and render HTML
|
||||
// public function loadView(string $bladeFile, array $data = []): self
|
||||
// {
|
||||
// // Convert image paths to base64
|
||||
// if (isset($data['imagePaths']) && is_array($data['imagePaths'])) {
|
||||
// $data['imagesBase64'] = array_map(function ($path) {
|
||||
// return $this->getImageBase64($path);
|
||||
// }, $data['imagePaths']);
|
||||
// }
|
||||
|
||||
// $this->html = view($bladeFile, $data)->render();
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// // Load raw HTML
|
||||
// public function loadHtml(string $html): self
|
||||
// {
|
||||
// $this->html = $html;
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
// // Load HTML from a URL
|
||||
// public function loadUrl(string $url): self
|
||||
// {
|
||||
// $this->html = file_get_contents(url($url));
|
||||
// return $this;
|
||||
// }
|
||||
|
||||
// // Generate the PDF using Browsershot
|
||||
// public function generate(): Browsershot
|
||||
// {
|
||||
// return $this->pdfGenerator
|
||||
// ->html($this->html)
|
||||
// ->format('A4')
|
||||
// ->scale(0.7)
|
||||
// ->fullPage()
|
||||
// ->setOption('printBackground', true)
|
||||
// ->showBackground()
|
||||
// ->waitUntilNetworkIdle()
|
||||
// ->timeout(60000);
|
||||
// }
|
||||
|
||||
// // Save the PDF to the server in the public folder
|
||||
// public function save(string $path): void
|
||||
// {
|
||||
// $this->generate()->savePdf($path);
|
||||
// }
|
||||
|
||||
// // Download the PDF with a specified filename
|
||||
// public function download(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'attachment; filename="' . $filename . '"',
|
||||
// 'Content-Length' => strlen($pdf)
|
||||
// ]);
|
||||
// }
|
||||
|
||||
// // Stream the PDF in the browser
|
||||
// public function stream(string $filename)
|
||||
// {
|
||||
// $pdf = $this->generate()->pdf();
|
||||
// return new Response($pdf, 200, [
|
||||
// 'Content-Type' => 'application/pdf',
|
||||
// 'Content-Disposition' => 'inline; filename="' . $filename . '"'
|
||||
// ]);
|
||||
// }
|
||||
|
||||
// // Function to convert image to base64
|
||||
// protected function getImageBase64($imagePath)
|
||||
// {
|
||||
// $path = public_path($imagePath);
|
||||
// if (!File::exists($path)) {
|
||||
// return null; // Retorna null se o arquivo não existir
|
||||
// }
|
||||
|
||||
// $type = pathinfo($path, PATHINFO_EXTENSION);
|
||||
// $data = File::get($path);
|
||||
// $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
|
||||
|
||||
// return $base64;
|
||||
// }
|
||||
|
||||
// // Function to convert image paths in a collection to base64
|
||||
// public function convertImagePathsToBase64($collection)
|
||||
// {
|
||||
// foreach ($collection as $item) {
|
||||
// if (isset($item->image_paths) && is_array($item->image_paths)) {
|
||||
// $item->image_paths = array_map([$this, 'getImageBase64'], $item->image_paths);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
BIN
public/companies_logo/1718559169.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 119 KiB |
513
resources/views/components/elemental-tasks.blade.php
Normal file
|
|
@ -0,0 +1,513 @@
|
|||
<!-- TE1 - Desmontar da linha -->
|
||||
@if ($task_todo->elemental_tasks_id == 1)
|
||||
<!-- TE1 - Desmontar da linha -->
|
||||
<div class="card {{ $task_todo->cardType }} collapsed-card">
|
||||
<!-- Card-header TE1-->
|
||||
<div class="card-header clickable" style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
@if ($task_todo->typeStatusHistory === 'historic')
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button" data-card-widget="collapse">
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./Card-header TE1-->
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="controlEquipmentID"
|
||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||
|
||||
<!-- Conformidade da etiqueta -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6 icheck-primary">
|
||||
<input id="ID1[confirm_label_compliance-checkbox]" type="checkbox"
|
||||
name="ID1[confirm_label_compliance-checkbox]"
|
||||
@if (isset($task_todo->formatted_answers['confirm_label_compliance']) &&
|
||||
$task_todo->formatted_answers['confirm_label_compliance'] == 'on') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
|
||||
<label for="ID1[confirm_label_compliance-checkbox]">Conformidade da
|
||||
etiqueta <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
</div> <!-- ./ Conformidade da etiqueta -->
|
||||
|
||||
<!-- Tipo de junta existente -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label for="existing-joint">Tipo de junta existente <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select id="existing-joint" name="ID1[existing_joint-select]" class="form-control select2"
|
||||
style="width: 100%;" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
|
||||
<option value="316L OR" @if (isset($task_todo->formatted_answers['existing_joint']) &&
|
||||
$task_todo->formatted_answers['existing_joint'] == '316L OR') selected @endif>316L OR
|
||||
</option>
|
||||
<option value="316L IR/OR" @if (isset($task_todo->formatted_answers['existing_joint']) &&
|
||||
$task_todo->formatted_answers['existing_joint'] == '316L IR/OR') selected @endif>316L IR/OR
|
||||
</option>
|
||||
<option value="Monel IR/OR" @if (isset($task_todo->formatted_answers['existing_joint']) &&
|
||||
$task_todo->formatted_answers['existing_joint'] == 'Monel IR/OR') selected @endif>Monel
|
||||
IR/OR
|
||||
</option>
|
||||
<option value="Monel OR C/Gorotex" @if (isset($task_todo->formatted_answers['existing_joint']) &&
|
||||
$task_todo->formatted_answers['existing_joint'] == 'Monel OR C/Gorotex') selected @endif>
|
||||
Monel OR
|
||||
C/Gorotex
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div> <!-- ./ Tipo de junta existente -->
|
||||
|
||||
<!-- Facing type -->
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>Facing type <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select id="facing-type" name="ID1[facing_type-select]" class="form-control select2"
|
||||
style="width: 100%;" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
|
||||
<option disabled hidden value=""></option>
|
||||
<option value="RF" @if (isset($task_todo->formatted_answers['facing_type']) && $task_todo->formatted_answers['facing_type'] == 'RF') selected @endif>RF
|
||||
</option>
|
||||
<option value="RTJ" @if (isset($task_todo->formatted_answers['facing_type']) && $task_todo->formatted_answers['facing_type'] == 'RTJ') selected @endif>RTJ
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div> <!-- ./ Facing type -->
|
||||
|
||||
<!-- Diâmetro do perno -->
|
||||
<div class="row m-3">
|
||||
<div class="col-md-6">
|
||||
<label>Diâmetro do perno</label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" value="Polegadas" id="ID1[diameter-inches]"
|
||||
name="ID1[diameter-varchar]" @if (isset($task_todo->formatted_answers['diameter']) && $task_todo->formatted_answers['diameter'] == 'Polegadas') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<label for="ID1[diameter-inches]">Polegadas</label>
|
||||
</div>
|
||||
<div class="icheck-primary d-inline">
|
||||
<input type="radio" value="Milímetros" id="ID1[diameter-milimeters]"
|
||||
name="ID1[diameter-varchar]" @if (isset($task_todo->formatted_answers['diameter']) && $task_todo->formatted_answers['diameter'] == 'Milímetros') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<label for="ID1[diameter-milimeters]">Milímetros</label>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- ./ Diâmetro do perno -->
|
||||
|
||||
<!-- Medida do perno -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>Medida do perno</label>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<input id="bolt-measure1" name="ID1[bolt_measure1-number]" type="number" step="0.01"
|
||||
class="form-control" style="width: 40%;" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['bolt_measure1'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif> x
|
||||
|
||||
<input id="bolt-measure2" name="ID1[bolt_measure2-number]" type="number"
|
||||
class="form-control ml-2" style="width: 40%;" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['bolt_measure2'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
|
||||
</div>
|
||||
</div> <!-- ./ Medida do perno -->
|
||||
|
||||
|
||||
<!-- Medida da chave (mm) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>Medida da chave (mm)</label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input id="key-measure" name="ID1[key_measure-number]" type="number" class="form-control"
|
||||
placeholder="" value="{{ $task_todo->formatted_answers['key_measure'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
|
||||
</div>
|
||||
</div> <!-- ./ Medida da chave (mm) -->
|
||||
|
||||
|
||||
<!-- Tubagem obstruída -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<label>Tubagem obstruída</label>
|
||||
<i class="fas fa-info-circle ml-2" style="color: #9B9B9B;" data-toggle="tooltip"
|
||||
title="Considera-se obstruída a tubagem onde a válvula se encontra conectada, quando a obstrução é = v > a 25%"></i>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" value="TRUE" id="piping-yes" name="ID1[piping-boolean]"
|
||||
@if (isset($task_todo->formatted_answers['piping']) && $task_todo->formatted_answers['piping'] == 'TRUE') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<label for="piping-yes">Sim</label>
|
||||
</div>
|
||||
<div class="icheck-primary d-inline">
|
||||
<input type="radio" value="FALSE" id="piping-no" name="ID1[piping-boolean]"
|
||||
@if (isset($task_todo->formatted_answers['piping']) && $task_todo->formatted_answers['piping'] == 'FALSE') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<label for="piping-no">Não</label>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- ./ Tubagem obstruída -->
|
||||
|
||||
@if (!empty($task_todo->image_paths))
|
||||
<div class="row no-gutters justify-content-center">
|
||||
@foreach ($task_todo->image_paths as $image)
|
||||
<div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3">
|
||||
<img src="{{ asset($image) }}" alt="Image" class="img-fluid pdf-image mx-auto" style="border: 3px solid #00B0EA; cursor: pointer;" data-toggle="modal" data-target="#imageModal" data-src="{{ asset($image) }}">
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@if ($task_todo->statusHistory === 'yes')
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#taskModal"
|
||||
data-elemental-task-id="{{ $task_todo->elemental_tasks_id }}">
|
||||
Abrir Histórico
|
||||
</button>
|
||||
@endif
|
||||
|
||||
{{-- <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#taskModal" data-elemental-task-id="{{ $task_todo->elemental_tasks_id }}">
|
||||
Abrir Histórico
|
||||
</button> --}}
|
||||
|
||||
<!-- Verifica se for diferente de gray. ou seja se o card for green ou blue, aparece o botao -->
|
||||
@if ($task_todo->cardTypeStyle != 'gray')
|
||||
<div class="card-footer">
|
||||
<!-- Botão alinhado à direita -->
|
||||
<button type="submit" class="btn btn-primary float-right">Guardar</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
</div>
|
||||
<!-- ./card TE1 -->
|
||||
|
||||
|
||||
{{-- @if (isset($imagesBase64) && is_array($imagesBase64))
|
||||
<div class="row no-gutters">
|
||||
@foreach ($imagesBase64 as $image)
|
||||
<div class="col-4">
|
||||
<img src="{{ $image }}" alt="Image" class="pdf-image"
|
||||
style="border: 3px solid #00B0EA">
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif --}}
|
||||
|
||||
</div>
|
||||
<!-- ./TE1 - Desmontar da linha -->
|
||||
@endif
|
||||
|
||||
|
||||
{{-- <!-- TE8 - Calibrar e certificar -->
|
||||
@if ($task_todo->elemental_tasks_id == 13)
|
||||
<!-- Workstation card -->
|
||||
<div class="card {{ $task_todo->cardType }} collapsed-card">
|
||||
|
||||
<div class="card-header clickable" style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
@if ($task_todo->typeStatusHistory === 'historic')
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |
|
||||
</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button" data-card-widget="collapse">
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="form13">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<!-- Single form-group for all content -->
|
||||
|
||||
<!-- Data calibração -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>Data de calibração</label>
|
||||
<span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6 ">
|
||||
<div class="input-group date" id="reservationdate" data-target-input="nearest">
|
||||
<input name="ID13[pre_test_date-date]" type="datetime-local"
|
||||
class="form-control float-right"
|
||||
value="{{ $task_todo->formatted_answers['pre_test_date'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Data de calibração -->
|
||||
|
||||
<!-- Pressão da calibração a frio (bar) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>Pressão da calibração a frio (bar) <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input id="calibration-pressure" name="ID13[calibration_pressure-number]" type="number"
|
||||
step="0.01" class="form-control" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['calibration_pressure'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Pressão da calibração a frio (bar) -->
|
||||
|
||||
<!-- Teste de estanquicidade (bolhas/min) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>Teste de estanquicidade (bolhas/min) <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input id="ID13[bubbles-minute]" name="ID13[bubbles_minute-number]" type="number"
|
||||
class="form-control" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['bubbles_minute'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Teste de estanquicidade (bolhas/min) -->
|
||||
|
||||
<!-- Fole testado -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
<label>Fole testado <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select id="tested-bellow" name="ID13[tested_bellow-select]"
|
||||
class="form-control select2" style="width: 100%;" required>
|
||||
<option value="yes" @if ($task_todo->formatted_answers['tested_bellow'] ?? '' == 'yes') selected @endif>
|
||||
Sim</option>
|
||||
<option value="no" @if ($task_todo->formatted_answers['tested_bellow'] ?? '' == 'no') @endif>
|
||||
Não</option>
|
||||
<option value="n_a" @if ($task_todo->formatted_answers['tested_bellow'] ?? '' == 'n_a') @endif>
|
||||
N/A</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Fole testado -->
|
||||
|
||||
<!-- Teste contra-pressão (bar) -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
<label>Teste contra-pressão (bar) <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select id="back-pressure-test" name="ID13[back_pressure_test-select]"
|
||||
class="form-control select2" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<option value="yes" @if ($task_todo->formatted_answers['back_pressure_test'] ?? '' == 'yes') selected @endif>
|
||||
Sim</option>
|
||||
<option value="no" @if ($task_todo->formatted_answers['back_pressure_test'] ?? '' == 'no') @endif>
|
||||
Não</option>
|
||||
<option value="n_a" @if ($task_todo->formatted_answers['back_pressure_test'] ?? '' == 'n_a') @endif>
|
||||
N/A</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Teste contra-pressão (bar) -->
|
||||
|
||||
<!-- Padrão utilizado -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
<label>Padrão utilizado</label>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<input id="standard-used" name="ID13[standard_used-label]" type="text"
|
||||
maxlength="50" class="form-control" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['standard_used'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Padrão utilizado -->
|
||||
|
||||
<!-- Fluído utilizado na calibração -->
|
||||
<div class="row mb-3 mt-3">
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<label>Fluído utilizado na calibração <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select name="ID13[calibration_fluid-select]" id="calibration_fluid-select"
|
||||
class="form-control" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<option value="compressed_air" @if ($task_todo->formatted_answers['calibration_fluid'] ?? '' == 'compressed_air') selected @endif>Ar
|
||||
comprimido</option>
|
||||
<option value="azoto" @if ($task_todo->formatted_answers['calibration_fluid'] ?? '' == 'azoto') selected @endif>Azoto
|
||||
</option>
|
||||
<option value="water" @if ($task_todo->formatted_answers['calibration_fluid'] ?? '' == 'water') selected @endif>Água
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Fluído utilizado na calibração -->
|
||||
|
||||
<!-- Outro -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
<label>Outro</label>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<input id="other" name="ID13[other-label]" type="text" maxlength="50"
|
||||
class="form-control" placeholder=""
|
||||
value="{{ $task_todo->formatted_answers['other'] ?? '' }}"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Outro -->
|
||||
|
||||
<!-- Resultado da calibração -->
|
||||
<div class="row mb-3 mt-3">
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<label>Resultado da calibração <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select name="ID13[calibration_result-select]" id="calibration_result-select"
|
||||
class="form-control" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif>
|
||||
<option value="passed" @if ($task_todo->formatted_answers['calibration_result'] ?? '' == 'passed') selected @endif>Passou
|
||||
</option>
|
||||
<option value="fail" @if ($task_todo->formatted_answers['calibration_result'] ?? '' == 'fail') selected @endif>Chumbou
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Resultado da calibração -->
|
||||
|
||||
</div> <!-- End of single form-group -->
|
||||
|
||||
@if ($task_todo->statusHistory === 'yes')
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#taskModal"
|
||||
data-elemental-task-id="{{ $task_todo->elemental_tasks_id }}">
|
||||
Abrir Histórico
|
||||
</button>
|
||||
@endif
|
||||
|
||||
<!-- Verifica se for diferente de gray. ou seja se o card for green ou blue, aparece o botao -->
|
||||
@if ($task_todo->cardTypeStyle != 'gray')
|
||||
<div class="card-footer">
|
||||
<!-- Botão alinhado à direita -->
|
||||
<button type="submit" class="btn btn-primary float-right">Guardar</button>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Workstation card-->
|
||||
@endif --}}
|
||||
|
||||
|
||||
<!-- TE10 - Montagem na linha -->
|
||||
@if ($task_todo->elemental_tasks_id == 15)
|
||||
<!-- TE10 - Montagem na linha -->
|
||||
<div class="card {{ $task_todo->cardType }} collapsed-card">
|
||||
<!-- Card-header TE10-->
|
||||
<div class="card-header clickable" style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button" data-card-widget="collapse">
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form id="form15">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="controlEquipmentID"
|
||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||
|
||||
<!-- Conformidade da etiqueta -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6 icheck-primary">
|
||||
<input id="ID15[confirm_label_compliance-checkbox]" type="checkbox"
|
||||
name="ID15[confirm_label_compliance-checkbox]"
|
||||
@if (isset($task_todo->formatted_answers['confirm_label_compliance']) &&
|
||||
$task_todo->formatted_answers['confirm_label_compliance'] == 'on') checked @endif
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
|
||||
<label for="ID15[confirm_label_compliance-checkbox]">
|
||||
Conformidade da etiqueta <span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Conformidade da etiqueta -->
|
||||
|
||||
<!-- Tipo de junta -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
<label>Tipo de junta <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<select id="ID15[gasket_type-select]" name="ID15[gasket_type-select]"
|
||||
class="form-control select2" style="width: 100%;"
|
||||
@if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
|
||||
<option selected="selected" disabled hidden value="">
|
||||
</option>
|
||||
<option value="316L OR" @if (isset($task_todo->formatted_answers['gasket_type']) && $task_todo->formatted_answers['gasket_type'] == '316L OR') selected @endif>316L
|
||||
OR
|
||||
</option>
|
||||
<option value="316L IR/OR" @if (isset($task_todo->formatted_answers['gasket_type']) && $task_todo->formatted_answers['gasket_type'] == '316L IR/OR') selected @endif>316L
|
||||
IR/OR</option>
|
||||
<option value="Monel IR/OR" @if (isset($task_todo->formatted_answers['gasket_type']) &&
|
||||
$task_todo->formatted_answers['gasket_type'] == 'Monel IR/OR') selected @endif>Monel
|
||||
IR/OR</option>
|
||||
<option value="Monel OR C/Gorotex"
|
||||
@if (isset($task_todo->formatted_answers['gasket_type']) &&
|
||||
$task_todo->formatted_answers['gasket_type'] == 'Monel OR C/Gorotex') selected @endif>Monel
|
||||
OR
|
||||
C/Gorotex</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Tipo de junta -->
|
||||
|
||||
</div> <!-- End of single form-group -->
|
||||
|
||||
<!-- Verifica se for diferente de gray. ou seja se o card for green ou blue, aparece o botao -->
|
||||
@if ($task_todo->cardTypeStyle != 'gray')
|
||||
<div class="card-footer">
|
||||
<!-- Botão alinhado à direita -->
|
||||
<button type="submit" class="btn btn-primary float-right">Guardar</button>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
|
||||
</div><!-- card-body TE10 -->
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -1,129 +1,156 @@
|
|||
{{-- <!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 {
|
||||
size: A4;
|
||||
margin: 20mm;
|
||||
}
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.page-break {
|
||||
page-break-before: always;
|
||||
}
|
||||
header, footer {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
header {
|
||||
top: 0;
|
||||
}
|
||||
footer {
|
||||
bottom: 0;
|
||||
}
|
||||
.content {
|
||||
margin-top: 70px;
|
||||
margin-bottom: 70px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div>
|
||||
{{ $slot }}
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html> --}}
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
|
||||
{{-- <link rel="stylesheet" href="{{ url('https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css') }}"> --}}
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
@page {
|
||||
size: A4;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 50px;
|
||||
/* Ajuste conforme necessário */
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-before: always;
|
||||
}
|
||||
header, footer {
|
||||
|
||||
header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
header {
|
||||
top: 0;
|
||||
bottom: 10mm;
|
||||
margin-bottom: 100px;
|
||||
|
||||
|
||||
}
|
||||
footer {
|
||||
bottom: 0;
|
||||
}
|
||||
.content {
|
||||
margin-top: 150px;
|
||||
margin-bottom: 70px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
/* margin: 0; */
|
||||
padding: 0;
|
||||
margin-top: 170px;
|
||||
/* Aumente para dar mais espaço para o cabeçalho */
|
||||
margin-bottom: 50px;
|
||||
/* Espaço para o rodapé */
|
||||
padding: 0 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<header class="mb-3"> <!-- Certifique-se de adicionar margem abaixo do cabeçalho -->
|
||||
@include('projectsClients.pdf._header', compact('tag', 'numeroPanini', 'nObra', 'ambito'))
|
||||
<header class="mb-3">
|
||||
@include('projectsClients.pdf._header', compact('tag', 'numeroPanini', 'nObra', 'ambito', 'projectLogoPath', 'companyLogoPath'))
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
<!-- Seu conteúdo principal aqui -->
|
||||
{{ $slot }}
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
@include('projectsClients.pdf._footer')
|
||||
@include('projectsClients.pdf._footer', ['pageCounter' => $pageCounter])
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html> --}}
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
@page {
|
||||
size: A4;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 50px;
|
||||
/* Ajuste conforme necessário */
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-before: always;
|
||||
}
|
||||
|
||||
header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 170px;
|
||||
/* Aumente para dar mais espaço para o cabeçalho */
|
||||
margin-bottom: 50px;
|
||||
/* Espaço para o rodapé */
|
||||
padding: 0 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<header class="mb-3">
|
||||
@include(
|
||||
'projectsClients.pdf._header',
|
||||
compact('tag', 'numeroPanini', 'nObra', 'ambito', 'projectLogoPath', 'companyLogoPath'))
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
|
||||
{{-- <footer>
|
||||
@include('projectsClients.pdf._footer', ['pageCounter' => $pageCounter])
|
||||
@include('projectsClients.pdf._footer')
|
||||
</footer> --}}
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +1,14 @@
|
|||
<div class="footer">
|
||||
<div class="container" >
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-6 generated-at">
|
||||
Generated at: {{ \Carbon\Carbon::now()->addHour()->format('Y-m-d H:i:s') }}
|
||||
</div>
|
||||
|
||||
<div class="col-6 page-number">
|
||||
Page: 1
|
||||
|
||||
{{-- <script type="text/php">
|
||||
if (isset($pdf)) {
|
||||
$pdf->page_script(function($pageNumber, $pageCount, $pdf) {
|
||||
$text = "Page $pageNumber of $pageCount";
|
||||
$pdf->text(10, 820, $text);
|
||||
});
|
||||
}
|
||||
</script> --}}
|
||||
|
||||
{{-- Page: {{ $pageCounter }} --}}
|
||||
Page: N/A
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,89 +1,27 @@
|
|||
{{-- <div style="display: flex; align-items: center; font-size: 14px;">
|
||||
<!-- Logo -->
|
||||
<div style="flex: 0 0 auto; margin-right: 20px;">
|
||||
<img src="data:image/png;base64,{{ base64_encode(file_get_contents('http://place-hold.it/50x50?text=Logo+4.0')) }}" alt="Logo 4.0" style="width: 50px; height: 50px;">
|
||||
</div>
|
||||
|
||||
<!-- Relatório de Dados -->
|
||||
<div style="flex: 1; text-align: left;">
|
||||
<p style="margin: 0;"><strong>Tag:</strong> {{ $tag ?? 'N/A' }}</p>
|
||||
<p style="margin: 0;"><strong>Número Panini:</strong> {{ $numeroPanini ?? 'N/A' }}</p>
|
||||
<p style="margin: 0;"><strong>N. Obra:</strong> {{ $nObra ?? 'N/A' }}</p>
|
||||
<p style="margin: 0;"><strong>Âmbito:</strong> {{ $ambito ?? 'N/A' }}</p>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
|
||||
{{-- <div class="container">
|
||||
<!-- Logo -->
|
||||
<div class="row" style="background-color: blue;">
|
||||
<!-- Imagem no extremo esquerdo -->
|
||||
<div class="col-sm d-flex justify-content-start">
|
||||
<img src="data:image/png;base64,{{ base64_encode(file_get_contents('http://place-hold.it/50x50?text=Logo+4.0')) }}"
|
||||
alt="Logo 4.0" class="img-fluid">
|
||||
</div>
|
||||
|
||||
<!-- Imagem no extremo direito -->
|
||||
<div class="col-sm d-flex justify-content-end">
|
||||
<img src="data:image/png;base64,{{ base64_encode(file_get_contents('http://place-hold.it/50x50?text=Logo+4.0')) }}"
|
||||
alt="Logo 4.0" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Relatório de Dados -->
|
||||
<div style="border-style: groove;">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Tag:</strong> {{ $tag ?? 'N/A' }}</p>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Número Panini:</strong> {{ $numeroPanini ?? 'N/A' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>N. Obra:</strong> {{ $nObra ?? 'N/A' }}</p>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Âmbito:</strong> {{ $ambito ?? 'N/A' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> --}}
|
||||
|
||||
<div class="container">
|
||||
<!-- Logo -->
|
||||
<div class="row" style="height: 70px;margin-bottom : 15px;">
|
||||
<div class="row" style="height: 70px; margin-bottom: 15px;">
|
||||
<!-- Imagem no extremo esquerdo -->
|
||||
<div class="col d-flex justify-content-start align-items-center" style="height: 100%;">
|
||||
<img src="data:image/png;base64,{{ base64_encode(file_get_contents('http://place-hold.it/50x50?text=Logo+4.0')) }}"
|
||||
alt="Logo 4.0" class="img-fluid">
|
||||
<img src="{{ public_path($projectLogoPath) }}" alt="Project Logo" class="img-fluid"
|
||||
style="max-width: 70px; max-height: 70px;">
|
||||
</div>
|
||||
|
||||
<!-- Imagem no extremo direito -->
|
||||
<div class="col d-flex justify-content-end align-items-center" style="height: 100%;">
|
||||
<img src="data:image/png;base64,{{ base64_encode(file_get_contents('http://place-hold.it/50x50?text=Logo+4.0')) }}"
|
||||
alt="Logo 4.0" class="img-fluid">
|
||||
<img src="{{ public_path($companyLogoPath) }}" alt="Company Logo" class="img-fluid"
|
||||
style="max-width: 70px; max-height: 70px;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Relatório de Dados -->
|
||||
<div class="row" style="margin-left: 2px;" >
|
||||
|
||||
<div class="row" style="margin-left: 2px;">
|
||||
<div class="row">
|
||||
<!-- Defina uma altura fixa para a linha do relatório -->
|
||||
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Tag:</strong> {{ $tag ?? 'N/A' }}</p>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Número Panini:</strong>
|
||||
{{ $numeroPanini ?? 'N/A' }}
|
||||
</p>
|
||||
{{ $numeroPanini ?? 'N/A' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -91,11 +29,9 @@
|
|||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>N. Obra:</strong> {{ $nObra ?? 'N/A' }}</p>
|
||||
</div>
|
||||
<div class="col-sm" ">
|
||||
<div class="col-sm">
|
||||
<p class="mb-0" style="border-style: double;"><strong>Âmbito:</strong> {{ $ambito ?? 'N/A' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,430 +1,96 @@
|
|||
{{-- <x-pdf-layout>
|
||||
{{-- @php
|
||||
$pageCounter = 1;
|
||||
@endphp
|
||||
|
||||
<h1>{{ $card1 }}</h1>
|
||||
<p>
|
||||
ISPT4.0 Lorem ipsum dolor sit, amet consectetur adipisicing elit. Facere consequatur perferendis culpa vel magnam enim doloremque eveniet. Repudiandae quisquam earum, provident sapiente sint iure sequi delectus rerum, odit iste a?
|
||||
</p>
|
||||
|
||||
<div class="page-break"></div>
|
||||
|
||||
<h1>Card 2</h1>
|
||||
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum tenetur, asperiores cum laudantium tempore illum ducimus rem veniam officia. Dolorum quam sequi dolores earum architecto nemo temporibus, voluptatibus repudiandae tempora.
|
||||
</p>
|
||||
</x-pdf-layout> --}}
|
||||
<x-pdf-layout :tag="$tag" :numeroPanini="$numeroPanini" :nObra="$nObra" :ambito="$ambito" :projectLogoPath="$projectLogoPath"
|
||||
:pageCounter="$pageCounter" :companyLogoPath="$companyLogoPath">
|
||||
|
||||
|
||||
{{--
|
||||
<x-pdf-layout :tag="$tag" :numeroPanini="$numeroPanini" :nObra="$nObra" :ambito="$ambito">
|
||||
<h1>{{ $card1 }}</h1>
|
||||
<p>
|
||||
ISPT4.0 Lorem ipsum dolor sit, amet consectetur adipisicing elit. Facere consequatur perferendis culpa vel magnam enim doloremque eveniet. Repudiandae quisquam earum, provident sapiente sint iure sequi delectus rerum, odit iste a?
|
||||
</p>
|
||||
@foreach ($receiveAllTasksHistiory as $task_todo)
|
||||
<div class="page-break"></div>
|
||||
|
||||
<div class="page-break"></div>
|
||||
|
||||
<h1>Card 2</h1>
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum tenetur, asperiores cum laudantium tempore illum ducimus rem veniam officia. Dolorum quam sequi dolores earum architecto nemo temporibus, voluptatibus repudiandae tempora.
|
||||
</p>
|
||||
</x-pdf-layout> --}}
|
||||
|
||||
<x-pdf-layout :tag="$tag" :numeroPanini="$numeroPanini" :nObra="$nObra" :ambito="$ambito">
|
||||
|
||||
<div class="card card-danger" style="border-style: double;">
|
||||
<!-- Card-header TE3 - Pré-teste-->
|
||||
<div class="card-header clickable" style="background-color: #09255C">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h3 class="card-title mb-0" style="color: white">
|
||||
|
||||
PSV - Pré-teste</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button" data-card-widget="collapse">
|
||||
<i class="fas fa-plus"></i></button>
|
||||
<div class="content">
|
||||
@include('components.elemental-tasks', ['task_todo' => $task_todo])
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
@if (isset($taskImages[$task_todo->control_equipment_workstation_id]) && is_array($taskImages[$task_todo->control_equipment_workstation_id]))
|
||||
<div class="row no-gutters">
|
||||
@foreach ($taskImages[$task_todo->control_equipment_workstation_id] as $image)
|
||||
<div class="col-4">
|
||||
<img src="{{ public_path($image) }}" alt="Image" class="pdf-image"
|
||||
style="border: 3px solid #00B0EA">
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@php
|
||||
$pageCounter++;
|
||||
@endphp
|
||||
@endforeach
|
||||
|
||||
</x-pdf-layout> --}}
|
||||
|
||||
|
||||
|
||||
|
||||
<x-pdf-layout :tag="$tag" :numeroPanini="$numeroPanini" :nObra="$nObra" :ambito="$ambito" :projectLogoPath="$projectLogoPath"
|
||||
:companyLogoPath="$companyLogoPath">
|
||||
|
||||
|
||||
@php
|
||||
$pageCounter = 1;
|
||||
@endphp
|
||||
|
||||
@foreach ($receiveAllTasksHistiory as $task_todo)
|
||||
<div class="page-break"></div>
|
||||
|
||||
<div class="container">
|
||||
<header class="mb-3">
|
||||
@include(
|
||||
'projectsClients.pdf._header',
|
||||
compact('tag', 'numeroPanini', 'nObra', 'ambito', 'projectLogoPath', 'companyLogoPath'))
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
@include('components.elemental-tasks', ['task_todo' => $task_todo])
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
@if (isset($taskImages[$task_todo->control_equipment_workstation_id]) &&
|
||||
is_array($taskImages[$task_todo->control_equipment_workstation_id]))
|
||||
<div class="row no-gutters">
|
||||
@foreach ($taskImages[$task_todo->control_equipment_workstation_id] as $image)
|
||||
<div class="col-4">
|
||||
<img src="{{ public_path($image) }}" alt="Image" class="pdf-image"
|
||||
style="border: 3px solid #00B0EA">
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card-header TE3 - Pré-teste-->
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group"> <!-- Single form-group for all content -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<!-- First card column -->
|
||||
<div class="col-md">
|
||||
|
||||
<!-- Validar especificações técnicas -->
|
||||
<div class="row mb">
|
||||
|
||||
|
||||
<div class="icheck-primary">
|
||||
<input id="ID3[validate-technical-specifications]" type="checkbox"
|
||||
name="ID3[validate-technical-specifications-checkbox]" value="on" checked>
|
||||
|
||||
<label for="ID3[validate-technical-specifications]">
|
||||
Validar especificações técnicas
|
||||
<span style="color: red;">*</span>
|
||||
</label>
|
||||
<footer>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-6 generated-at">
|
||||
Generated at: {{ \Carbon\Carbon::now()->addHour()->format('Y-m-d H:i:s') }}
|
||||
</div>
|
||||
<div class="col-6 page-number">
|
||||
Page: {{ $pageCounter }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Validar especificações técnicas -->
|
||||
|
||||
<!-- Especificações técnicas -->
|
||||
|
||||
<!-- ./ Especificações técnicas -->
|
||||
|
||||
<!-- Data de pré-teste -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-4 d-flex align-items-center">
|
||||
<label>Data de calibração</label>
|
||||
<span style="color: red;">*</span></label>
|
||||
<span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-8 d-flex align-items-center">
|
||||
<div class="input-group date" id="reservationdate" data-target-input="nearest">
|
||||
<input name="ID3[pre_test_data-datetime]" type="datetime-local"
|
||||
class="form-control float-right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Data de pré-teste -->
|
||||
|
||||
<!-- API RP 576 -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md d-flex align-items-center">
|
||||
<label for="apirp576-select">Pré-teste efetuado de acordo
|
||||
com o API RP 576</label>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<select id="apirp576-select" name="ID3[apirp576-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ API RP 576 -->
|
||||
|
||||
<!-- Pré-teste em bancada -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md d-flex align-items-center">
|
||||
<label for="bench-pretest-select">
|
||||
Foi efetuado o pré-teste em bancada <span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="bench-pretest-select" name="ID3[bench_pretest-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Pré-teste em bancada -->
|
||||
|
||||
<!-- Conforme recebida da unidade -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-9 d-flex align-items-center">
|
||||
<label for="unit-received-select">Conforme recebida da unidade</label>
|
||||
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="unit-received-select" name="ID3[unit_received-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Conforme recebida da unidade -->
|
||||
|
||||
<!-- Após limpeza -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-9 d-flex align-items-center">
|
||||
<label for="after-cleaning-select">Após limpeza</label>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="after-cleaning-select" name="ID3[after_cleaning-select]"
|
||||
class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Após limpeza -->
|
||||
|
||||
<!-- Apresenta fuga -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-9 d-flex align-items-center">
|
||||
<label for="shows-leak-select">Apresenta fuga</label>
|
||||
<i class="fas fa-info-circle ml-2" style="color: #9B9B9B;" data-toggle="tooltip"
|
||||
title="Considera-se com fuga no teste de 'POP', em bancada ou na instalação, quando o início da passagem é inferior a 90% relativamente ao 'set pressure', (95% para válvulas pilotadas). Para testes de inspeção visual considera-se com fuga se houver evidência de danos excessivos ou cortes nas faces de vedação"></i>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="shows-leak-select" name="ID3[shows_leak-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Apresenta fuga -->
|
||||
</div>
|
||||
<!-- ./First card column -->
|
||||
|
||||
<!-- Second card column -->
|
||||
<div class="col-md">
|
||||
|
||||
<!-- Pressão a que se inicia a passagem (bar) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
<label>Pressão a que se inicia a passagem (bar) <span
|
||||
style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-5 d-flex align-items-center">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Pressão a que se inicia a passagem (bar) -->
|
||||
|
||||
<!-- Pressão a que volta a fechar "assentar" (bar) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
<label>Pressão a que volta a fechar "assentar" (bar) <span
|
||||
style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-5 d-flex align-items-center">
|
||||
<input id="pressure-flow-stops" name="ID3[pressure_flow_stops-number]" type="number"
|
||||
step="0.01" class="form-control" style="width: 100%;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Pressão a que volta a fechar "assentar" (bar) -->
|
||||
|
||||
<!-- Pressão de abertura POP (bar) -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
<label>Pressão de abertura POP (bar) <span style="color: red;">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-5 d-flex align-items-center">
|
||||
<input id="POP_opening_pressure" name="ID3[POP_opening_pressure-number]"
|
||||
type="number" step="0.01" class="form-control" style="width: 100%;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Pressão de abertura POP (bar) -->
|
||||
|
||||
<!-- A válvula está colada -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-9 d-flex align-items-center">
|
||||
<label for="stuck-valve-select">
|
||||
A válvula está colada <span style="color: red;">*</span>
|
||||
</label>
|
||||
<i class="fas fa-info-circle ml-2" style="color: #9B9B9B;" data-toggle="tooltip"
|
||||
title="Considera-se válvula colada quando se eleva a pressão até 30% da Pressão de Teste e não abre"></i>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="stuck_valve-select" name="ID3[stuck_valve-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ A válvula está colada -->
|
||||
|
||||
<!-- Indicar se a válvula volta a assentar durante o teste -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7 d-flex align-items-center">
|
||||
<label for="valve-reseats-select">
|
||||
Indicar se a válvula volta a assentar durante o teste
|
||||
<span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<select id="valve_reseats-select" name="ID3[valve_reseats-select]"
|
||||
class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
<option value="not applicable">
|
||||
Não aplicável</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ./ Indicar se a válvula volta a assentar durante o teste -->
|
||||
|
||||
<!-- Reparada -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-8 d-flex align-items-center">
|
||||
<label for="repaired-select">
|
||||
Reparada <span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<select id="repaired-select" name="ID3[repaired-select]" class="form-control">
|
||||
<option value="yes">
|
||||
Sim</option>
|
||||
<option value="no">
|
||||
Não</option>
|
||||
<option value="new">
|
||||
Nova</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Reparada -->
|
||||
|
||||
<!-- Resultado do pré-teste -->
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-8 d-flex align-items-center">
|
||||
<label for="pre-test-result-select">
|
||||
Resultado do pré-teste
|
||||
<span style="color: red;">*</span>
|
||||
</label>
|
||||
<i class="fas fa-info-circle ml-2" style="color: #9B9B9B;" data-toggle="tooltip"
|
||||
title="Considera-se que passou o teste de 'POP', em bancada ou na instalação, quando a abertura se dá num intervalo de 30% relativamente ao 'set pressure'. Para testes de inspeção visual considera-se que passou se não houver evidências de mola danificada, corrosão excessiva e/ou gripagem das peças móveis (haste/guia/obturador)."></i>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<select id="pre_test_result-select" name="ID3[pre_test_result-select]"
|
||||
class="form-control" X>
|
||||
<option value="passed" X>
|
||||
Passou</option>
|
||||
<option value="plunked">
|
||||
Chumbou</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ./ Resultado do pré-teste -->
|
||||
|
||||
<!-- Resumo -->
|
||||
<label>Resumo</label>
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">Falha ao abrir</th>
|
||||
<th style="width: 50%">Falha de estanquicidade (Fuga)
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<!-- FTO -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="fto-lpv-fto"
|
||||
name="fto_lpv-select" checked>
|
||||
<label value="FTO" for="fto-lpv-fto">
|
||||
Preso ou Falha a Abrir (FTO)
|
||||
<span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- ./ FTO -->
|
||||
</td>
|
||||
<td>
|
||||
<!-- LPV -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="fto-lpv-lpv"
|
||||
name="fto_lpv-select">
|
||||
<label value="FTO" for="fto-lpv-lpv">
|
||||
Fuga Superior à Permitida (LPV)
|
||||
<span style="color: red;">**</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- ./ LPV -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<!-- VPO -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="vpo-spo-vpo"
|
||||
name="vpo_spo-select">
|
||||
<label value="VPO" for="vpo-spo-vpo">
|
||||
Válvula Parcialmente Aberta (VPO)
|
||||
<span style="color: red;">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- ./ VPO -->
|
||||
</td>
|
||||
<td>
|
||||
<!-- SPO -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="vpo-spo-spo"
|
||||
name="vpo_spo-select">
|
||||
<label value="SPO" for="vpo-spo-spo">
|
||||
Abre Antes da Pressão de Teste (SPO)
|
||||
<span style="color: red;">**</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- ./ SPO -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<!-- OASP -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="oasp-vso-oasp"
|
||||
name="oasp_vso-select">
|
||||
<label value="OASP" for="oasp-vso-oasp">
|
||||
Abre Acima da Pressão de Teste (OASP)
|
||||
<span style="color: red;">*</span></label>
|
||||
|
||||
</div>
|
||||
<!-- ./ OASP -->
|
||||
</td>
|
||||
<td>
|
||||
<!-- VSO -->
|
||||
<div class="icheck-primary d-inline mr-2">
|
||||
<input type="radio" class="toggle-radio" id="oasp-vso-vso"
|
||||
name="oasp_vso-select">
|
||||
<label value="VSO" for="oasp-vso-vso">Válvula
|
||||
Colada
|
||||
(VSO)
|
||||
<span style="color: red;">**</span></label>
|
||||
</div>
|
||||
<!-- ./ VSO -->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ./Resumo -->
|
||||
|
||||
</div>
|
||||
<!-- ./ Second card column -->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div> <!-- End of single form-group -->
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<br><br><br><br>
|
||||
|
||||
@if (isset($imagesBase64) && is_array($imagesBase64))
|
||||
<div class="row no-gutters">
|
||||
@foreach ($imagesBase64 as $image)
|
||||
<div class="col-4">
|
||||
<img src="{{ $image }}" alt="Image" class="pdf-image" style="border: 3px solid #00B0EA">
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
@php
|
||||
$pageCounter++;
|
||||
@endphp
|
||||
@endforeach
|
||||
|
||||
</x-pdf-layout>
|
||||
|
|
|
|||
|
|
@ -153,15 +153,15 @@ class="fas fa-plus"></i></button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -352,15 +352,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -595,15 +595,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -679,15 +679,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -1157,15 +1157,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -1589,15 +1589,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -2063,15 +2063,15 @@ class="form-control select2" style="width: 100%;" required
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -2652,15 +2652,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -2998,15 +2998,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -3065,15 +3065,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -3165,15 +3165,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -3502,15 +3502,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -4475,15 +4475,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5064,15 +5064,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5280,15 +5280,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5345,15 +5345,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5443,15 +5443,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5539,15 +5539,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5612,15 +5612,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -5688,15 +5688,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -6182,15 +6182,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
@ -6351,15 +6351,15 @@ class="btn btn-primary float-right">Guardar</button>
|
|||
<div class="card-header clickable"
|
||||
style="background-color: {{ $task_todo->cardTypeStyle }}">
|
||||
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
||||
<h5 class="card-title mb-0">
|
||||
<h5 class="card-title mb-0" style="color:white;">
|
||||
{{ $task_todo->elementalTask->elemental_tasks_code }} -
|
||||
{{ $task_todo->elementalTask->elemental_tasks_description }}
|
||||
</h5>
|
||||
<div class="d-flex justify-content-center align-items-center flex-grow-1">
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-center">
|
||||
<p class="mb-0 text-center mx-auto">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
<p class="mb-0 text-center mx-auto" style="color:white;">Data:{{ $task_todo->entry_date }} |</p>
|
||||
<p class="mb-0" style="color:white;"> Tempo de execução: {{ $task_todo->runtime }}</p>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@
|
|||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item active"><a href="{{ route('reportingDataClient') }}">Obras Concluidas</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active"><a
|
||||
href="{{ route('showDataDetailsProjectClient', ['projectID' => $projectId]) }}">Relatorios
|
||||
Gerais</a></li>
|
||||
<li class="breadcrumb-item active">
|
||||
<a href="{{ route('showDataDetailsProjectClient', ['projectID' => $projectId]) }}">Relatorios Gerais</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">Relatório geral Ambito</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
|
@ -34,9 +34,9 @@
|
|||
<h3 class="card-title ">{{ $dataAmbit->ambits_description }}</h3>
|
||||
</div>
|
||||
<div class="col-sm text-right">
|
||||
<a
|
||||
href="{{ route('showReportingForAmbitsProjectPdf', ['ambitId' => $ambitId, 'projectId' => $projectId]) }}"><i
|
||||
class="fa-solid fa-file-pdf fa-2x"></i></a>
|
||||
<a href="{{ route('showReportingForAmbitsProjectPdf', ['ambitId' => $ambitId, 'projectId' => $projectId]) }}">
|
||||
<i class="fa-solid fa-file-pdf fa-2x"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -83,6 +83,9 @@
|
|||
|
||||
Route::get('equipmentTaskDetailsPdf', [ProjectoDatacontroller::class, 'equipmentTaskDetailsPdf'])->name('equipmentTaskDetailsPdf');
|
||||
|
||||
Route::get('createPDFforcompletedEquipment/{equipmentId}', [ProjectoDatacontroller::class, 'createPDFforcompletedEquipment'])->name('createPDFforcompletedEquipment');
|
||||
|
||||
|
||||
Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment');
|
||||
Route::get('getDetailsEquipmentQrcode', [ExecutionProjectController::class, 'getDetailsEquipmentQrcode'])->name('getDetailsEquipmentQrcode');
|
||||
|
||||
|
|
@ -135,10 +138,6 @@
|
|||
|
||||
Route::get('teste1', function () {
|
||||
$imagePaths = [
|
||||
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img1.png',
|
||||
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img2.png',
|
||||
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img3.png'
|
||||
|
||||
'receiveImagesControlEquipmentWorkstation/1926_3781/img1.png',
|
||||
'receiveImagesControlEquipmentWorkstation/1926_3781/img2.png',
|
||||
'receiveImagesControlEquipmentWorkstation/1926_3781/img3.png',
|
||||
|
|
@ -184,6 +183,7 @@
|
|||
|
||||
Route::get('showReportingForAmbitsProjectPdf/{ambitId}/{projectId}', [ClientController::class, 'showReportingForAmbitsProjectPdf'])->name('showReportingForAmbitsProjectPdf'); //ok
|
||||
|
||||
|
||||
Route::get('getDataAllEquipmentsForAmbitOfProject', [ClientController::class, 'getDataAllEquipmentsForAmbitOfProject'])->name('getDataAllEquipmentsForAmbitOfProject');
|
||||
// Route::get('test/{id}',[ExecutionProjectController::class, 'projectDetails_11'])->name('projectDetails_11');
|
||||
|
||||
|
|
|
|||