Updating graphics on work in progress and equipment history

This commit is contained in:
ygbanzato 2024-02-05 12:47:59 +00:00
parent 02281f4892
commit 19eaa4ce18
19 changed files with 10765 additions and 1029 deletions

2
.env
View File

@ -1,7 +1,7 @@
APP_NAME="ISPT4.0" APP_NAME="ISPT4.0"
APP_ENV=local APP_ENV=local
APP_KEY=base64:ahx5/AvVGu/iHQx1mjX/EQg4m1NHLvtjzb6pFa49TlE= APP_KEY=base64:ahx5/AvVGu/iHQx1mjX/EQg4m1NHLvtjzb6pFa49TlE=
APP_DEBUG=true APP_DEBUG=false
APP_URL=http://localhost APP_URL=http://localhost
APP_VERSION = "1.0.0" APP_VERSION = "1.0.0"

View File

@ -71,6 +71,8 @@ public function getEquipmentsOfAmbit(Request $request)
public function showReportingForAmbitsProjectPdf($ambitId, $projectId) public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
{ {
// Obter o caminho da imagem do usuário ou uma imagem padrão // Obter o caminho da imagem do usuário ou uma imagem padrão
// Primeiro precisa identificar se quem esta a visualizar o relatorio e o Admin ou o Cliente
$userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg'); $userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg');
// Pega a data e hora atual // Pega a data e hora atual
@ -236,18 +238,30 @@ public function getDataEquipmentsOfProject(Request $request)
$dataEquipentProject = $query->get(); $dataEquipentProject = $query->get();
// Retornar a resposta para o DataTables // // Retornar a resposta para o DataTables
return Datatables::of($dataEquipentProject) // return Datatables::of($dataEquipentProject)
->addColumn('action', function ($dataEquipment) { // // ->addColumn('action', function ($dataEquipment) {
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showReportingEquipmentProject', ['dataEquipment' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>'; // // $actionBtn = '<a title="Detalhes do equipamento" href="' . route('showReportingEquipmentProject', ['dataEquipment' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
// // return $actionBtn;
// // })
// ->addColumn('action', function ($dataEquipment) {
// $actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['projectID' => $projectId,'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
// return $actionBtn;
// })
// ->make(true);
return Datatables::of($dataEquipentProject)
->addColumn('action', function ($dataEquipment) use ($projectId) { // Use a palavra-chave 'use' para passar $projectId
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['projectID' => $projectId,'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
return $actionBtn; return $actionBtn;
}) })
->make(true); ->make(true);
} }
public function showDataDetailsProjectClient($projectID) public function showDataDetailsProjectClient($projectID)

View File

@ -706,54 +706,27 @@ public function showStep1($company_projects_id)
// Se forem alterados dados dos Detalhes da Obra, vai ser alterado // Se forem alterados dados dos Detalhes da Obra, vai ser alterado
public function EditprocessStep1(Request $request) public function EditprocessStep1(Request $request)
{ {
dd($request);
// Validação... // Validação...
$installationId = $request->input('installation_id');
if ($installationId <> null && $installationId == 'new_install') {
// Criar uma nova instalação...
$newInstallation = new Plant;
$newInstallation->plant_name = $request->input('new_company_name');
$newInstallation->plant_address = $request->input('new_company_address');
$newInstallation->user_id = $request->input('user_id');
$newInstallation->save();
// Use o id da nova instalação.
$installationId = $newInstallation->plant_id;
}
$receiveDetailsPlant = Plant::where('plant_name', $request->plant_id_present)->first();
// $project = new CompanyProject;
$project = CompanyProject::where('company_projects_id', $request->projectId)->first(); $project = CompanyProject::where('company_projects_id', $request->projectId)->first();
$project->company_project_description = $request->input('description_project'); $project->company_project_description = $request->input('description_project');
$project->project_ispt_number = $request->input('n_project_ispt');
$project->project_company_number = $request->input('project_company_number'); $project->project_company_number = $request->input('project_company_number');
$project->project_ispt_responsible = $request->input('responsible_project_ispt');
$project->project_company_responsible = $request->input('responsible_project_company'); $project->project_company_responsible = $request->input('responsible_project_company');
$project->project_ispt_number = $request->input('n_project_ispt');
$project->project_ispt_responsible = $request->input('responsible_project_ispt');
//Verifica se exsite uma nova data, se existe atualiza o projecto com a nova, se nao existir usa a antiga
// Verifica se e igual a nulo , se for usa a data ja existente if($request->date_started <> null){
if ($request->date_started === null) {
$project->date_started = $request->input('date_started_present');
} else
$project->date_started = $request->input('date_started'); $project->date_started = $request->input('date_started');
} else {
$project->plant_id = $receiveDetailsPlant->plant_id; $project->date_started = $request->input('date_started_present');
$project->order_project = 1; }
$project->save(); $project->save();
session(['form_data.step1' => $request->all()]); session(['form_data.step1' => $request->all()]);
// // Redirecione o Utilizador para a próxima etapa
// return redirect('/articulated_2')
// ->with('project', $project)
// ->with('success', 'Dados guardados com sucesso');
return redirect()->route('articulated_2', ['id' => $project->company_projects_id]) return redirect()->route('articulated_2', ['id' => $project->company_projects_id])
->with('success', 'Detalhes do Project atualizados!'); ->with('success', 'Detalhes do Project atualizados!');
} }
@ -807,11 +780,17 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id)
public function processStep1(Request $request) public function processStep1(Request $request)
{ {
//NAO DEVE SER CRIAR UMA NOVA EMPRESA NA CRIACAO DA OBRA (era uma boa ideia para facilitar ao Admin ter que criar a empresa para Depois a Obra, mas e necessario pelo facto da autentificao de 2 factores e envio e email , entao devido essa adicoes, nao preciso atualmente fazer sentido criar isto)
dd($request); // Dito isto vamos sempre pensar que o Cliente ja deve estar criado , para ser feita uma Obra para o mesmo.
// dd($request);
// Validação... // Validação...
if ($request->input('installation_id')) {
$installationId = $request->input('installation_id'); $installationId = $request->input('installation_id');
//Para criar uma nova instalacao
if ($installationId <> null && $installationId == 'new_install') { if ($installationId <> null && $installationId == 'new_install') {
// Criar uma nova instalação... // Criar uma nova instalação...
@ -826,38 +805,24 @@ public function processStep1(Request $request)
// Use o id da nova instalação. // Use o id da nova instalação.
$installationId = $newInstallation->plant_id; $installationId = $newInstallation->plant_id;
} }
}
$receiveDetailsPlant = Plant::where('plant_id', $installationId)->first();
$receiveDetailsPlant = Plant::where('plant_name', $request->plant_id_present)->first(); //Code apenas para criacao de Obra sem criar instlacao ou empresa
$project = new CompanyProject;
// $project = new CompanyProject;
$project = CompanyProject::where('company_projects_id', $request->projectId)->first();
$project->company_project_description = $request->input('description_project'); $project->company_project_description = $request->input('description_project');
$project->project_ispt_number = $request->input('n_project_ispt'); $project->project_ispt_number = $request->input('n_project_ispt');
$project->project_company_number = $request->input('project_company_number'); $project->project_company_number = $request->input('project_company_number');
$project->project_ispt_responsible = $request->input('responsible_project_ispt'); $project->project_ispt_responsible = $request->input('responsible_project_ispt');
$project->project_company_responsible = $request->input('responsible_project_company'); $project->project_company_responsible = $request->input('responsible_project_company');
// Verifica se e igual a nulo , se for usa a data ja existente
if ($request->date_started === null) {
$project->date_started = $request->input('date_started_present');
} else
$project->date_started = $request->input('date_started');
$project->plant_id = $receiveDetailsPlant->plant_id; $project->plant_id = $receiveDetailsPlant->plant_id;
$project->order_project = 1; $project->order_project = 1;
$project->date_started = $request->input('date_started');
$project->save(); $project->save();
session(['form_data.step1' => $request->all()]);
// // Redirecione o Utilizador para a próxima etapa
// return redirect('/articulated_2')
// ->with('project', $project)
// ->with('success', 'Dados guardados com sucesso');
return redirect()->route('articulated_2', ['id' => $project->company_projects_id]) return redirect()->route('articulated_2', ['id' => $project->company_projects_id])
->with('success', 'Detalhes do Project atualizados!'); ->with('success', 'Project criado com sucesso!');
} }
public function showStep2($company_projects_id) public function showStep2($company_projects_id)

View File

@ -14,15 +14,30 @@
use App\Models\Unit; use App\Models\Unit;
use App\Models\AmbitsEquipment; use App\Models\AmbitsEquipment;
use PDF;
class PreparedProjectController extends Controller class PreparedProjectController extends Controller
{ {
public function showDetailsEquipmentForQrCode($equipmentId,$projectId){
// dd($equipmentId);
$detailsEquipment = Equipment::find($equipmentId);
// dd($detailsEquipment);
$pdf = PDF::loadView('projectsClients.showDetailsEquipmentForQrCodePdf',[
'detailsEquipment' => $detailsEquipment
])
->setPaper('a4');
return $pdf->stream('teste.pdf');
}
public function PreparedProject($ProjectId) public function PreparedProject($ProjectId)
{ {
$numberProject = CompanyProject::find($ProjectId); $numberProject = CompanyProject::find($ProjectId);
$equipmentsProjects = Equipment::all()->where('company_projects_id', $ProjectId); $equipmentsProjects = Equipment::all()->where('company_projects_id', $ProjectId);
$equipmentsTypes = EquipmentType::all(); $equipmentsTypes = EquipmentType::all();
//Retorna todas as Fabricas Unit, com base na Instalação //Retorna todas as Fabricas Unit, com base na Instalação
@ -33,6 +48,7 @@ public function PreparedProject($ProjectId)
->where('company_projects.company_projects_id', '=', $numberProject->company_projects_id) ->where('company_projects.company_projects_id', '=', $numberProject->company_projects_id)
->get(); ->get();
// dd($equipmentsProjects);
return view('projectsClients/preparedProject') return view('projectsClients/preparedProject')
// ->with('equipmentsProjects', $equipmentsProjects) // ->with('equipmentsProjects', $equipmentsProjects)
->with('equipmentsTypes', $equipmentsTypes) ->with('equipmentsTypes', $equipmentsTypes)

View File

@ -3,11 +3,13 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\AmbitsEquipment; use App\Models\AmbitsEquipment;
use App\Models\ControlEquipmentWorkstation;
use App\Models\ElementalTasks; use App\Models\ElementalTasks;
use App\Models\EquipmentAssociationAmbit; use App\Models\EquipmentAssociationAmbit;
use App\Models\EquipmentWorkHistory; use App\Models\EquipmentWorkHistory;
use App\Models\TasksAssociationAmbits; use App\Models\TasksAssociationAmbits;
use App\Models\Unit; use App\Models\Unit;
use App\Models\workstationsTaskAnswers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -34,13 +36,19 @@ class ProjectoDatacontroller extends Controller
public function showAmbitDetailsProjectHistory($projectID, $equipmentID) public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
{ {
$detailsProject = CompanyProject::where('company_projects_id', $projectID)->first(); $detailsProject = CompanyProject::where('company_projects_id', $projectID)->first();
$detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID) $detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID)
->where('company_projects_id', $projectID)->first(); ->where('company_projects_id', $projectID)->first();
$receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->first(); $detalsEquipment = Equipment::where('equipment_id',$equipmentID)->first();
$receiveAllTasksHistiory = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get();
$receiveAllTasksEquipmentInHistory = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get();
$receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->first();
// $tasksAssociatedWithAmbit = TasksAssociationAmbits::where('ambits_equipment_id', $receiveAmbit->ambits_id)->get(); // $tasksAssociatedWithAmbit = TasksAssociationAmbits::where('ambits_equipment_id', $receiveAmbit->ambits_id)->get();
$tasksAssociatedWithAmbit = TasksAssociationAmbits::with('elementalTask') $tasksAssociatedWithAmbit = TasksAssociationAmbits::with('elementalTask')
@ -56,16 +64,77 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
$taskAssociation->elemental_task_description = null; $taskAssociation->elemental_task_description = null;
} }
} }
$receiveAllTasksHistiory = ControlEquipmentWorkstation::with('workstationsTaskAnswers')
->where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)
->whereNotNull('entry_date') // Verifica se 'entry_date' não é null
->whereNotNull('departure_date') // Verifica se 'departure_date' não é null
->has('workstationsTaskAnswers') // Garante que haja pelo menos uma 'workstationsTaskAnswers' relacionada
->get();
foreach ($receiveAllTasksHistiory as $taskHistory) {
$taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle'
// Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) {
// Decodifica o JSON para um array
$answersArray = json_decode($workstationTaskAnswer->answer_json, true);
// Cria um array associativo onde as chaves são as perguntas e os valores são as respostas
$formattedAnswers = [];
foreach ($answersArray as $item) {
if (isset($item['question']) && isset($item['value'])) {
$formattedAnswers[$item['question']] = $item['value'];
}
}
// Atribui o array formatado ao taskHistory
$taskHistory->formatted_answers = $formattedAnswers;
} else {
// Se não houver respostas, define formatted_answers como um array vazio ou null
$taskHistory->formatted_answers = [];
}
if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) {
// Converte para instâncias de Carbon
$entryDate = \Carbon\Carbon::parse($taskHistory->entry_date);
$departureDate = \Carbon\Carbon::parse($taskHistory->departure_date);
// Calcula a diferença em minutos, horas e dias
$diffInMinutes = $entryDate->diffInMinutes($departureDate);
$diffInHours = $entryDate->diffInHours($departureDate);
$diffInDays = $entryDate->diffInDays($departureDate);
// Se a diferença for menos de uma hora
if ($diffInMinutes < 60) {
$taskHistory->runtime = $diffInMinutes . ' minutos';
}
// Se a diferença for menos de 24 horas mas mais que uma hora
else if ($diffInHours < 24) {
$taskHistory->runtime = $diffInHours . ' horas';
}
// Se for mais de 24 horas
else {
// Calcula horas restantes após contar os dias
$remainingHours = $diffInHours % 24;
$taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas';
}
} else {
$taskHistory->runtime = 'N/A'; // Ou qualquer valor padrão que você prefira
}
}
// Nao esta a receber itens
// dd($allWorkstationsTaskAnswers);
// Agora cada objeto dentro de $tasksAssociatedWithAmbit tem uma propriedade 'elemental_task_description'. // Agora cada objeto dentro de $tasksAssociatedWithAmbit tem uma propriedade 'elemental_task_description'.
//buscar Tarfas e tempo de execussao pelo control, assim como suas respostas. //buscar Tarfas e tempo de execussao pelo control, assim como suas respostas.
// dd($receiveAmbit);
return view('projectsClients.showAmbitDetailProjectHistory', compact('detailsProject','receiveAmbit')); return view('projectsClients.showAmbitDetailProjectHistory', compact('detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory','detalsEquipment'));
} }

View File

@ -2,6 +2,7 @@
namespace App\Livewire\Execução; namespace App\Livewire\Execução;
use App\Models\EquipmentWorkHistory;
use Livewire\Component; use Livewire\Component;
use Livewire\Exceptions\PublicPropertyNotFoundException; use Livewire\Exceptions\PublicPropertyNotFoundException;
use App\Models\Equipment; use App\Models\Equipment;
@ -93,7 +94,11 @@ public function refreshDataEquipments($datasProject)
$this->equivalentUnstarted = 0; $this->equivalentUnstarted = 0;
$totalEquipments = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get(); $totalEquipments = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get();
// $detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID)
// ->where('company_projects_id', $projectID)->first();
// Busca o valor total de todos os equipamentos encontrados // Busca o valor total de todos os equipamentos encontrados
$this->totalEquipmentsCount = $totalEquipments->count(); $this->totalEquipmentsCount = $totalEquipments->count();
@ -102,13 +107,13 @@ public function refreshDataEquipments($datasProject)
foreach ($totalEquipments as $equipment) { foreach ($totalEquipments as $equipment) {
// Conta quantas vezes o equipamento aparece em OrderEquipmentTasks // Conta quantas vezes o equipamento aparece em OrderEquipmentTasks
$tasksCount = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->count(); $tasksCount = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count();
// ira receber varios dados para o array sendo array[key:equipment_id,valor:quantidade de vezes que o equipment_id se repete na tabela 'OrderEquipmentTasks'] // ira receber varios dados para o array sendo array[key:equipment_id,valor:quantidade de vezes que o equipment_id se repete na tabela 'OrderEquipmentTasks']
$equipmentCounts[$equipment->equipment_id] = $tasksCount; $equipmentCounts[$equipment->equipment_id] = $tasksCount;
// Verifica quantos dados tem para o mesmo equipamento, resumindo quantas tarefas ja vez e seu circuito ao longo de seu Ambito // Verifica quantos dados tem para o mesmo equipamento, resumindo quantas tarefas ja vez e seu circuito ao longo de seu Ambito
$controlCount = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->count(); $controlCount = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count();
// Verifica inicialmente se a quantido de vezes que tal equipamento apacere na ControlEquipmentWorkstation e o mesmo numero de vezes que aparece na tabela : OrderEquipmentTasks // Verifica inicialmente se a quantido de vezes que tal equipamento apacere na ControlEquipmentWorkstation e o mesmo numero de vezes que aparece na tabela : OrderEquipmentTasks
// Isto para ver se o ciclo foi correto sem retornos se os 2 valores forem iguais significa que o equipamento foi concluido. // Isto para ver se o ciclo foi correto sem retornos se os 2 valores forem iguais significa que o equipamento foi concluido.
@ -120,7 +125,7 @@ public function refreshDataEquipments($datasProject)
// ->count() >= $tasksCount // ->count() >= $tasksCount
// ) { // ) {
if (ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id) if (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)
// apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido // apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido
->whereNotNull('id_workstations') ->whereNotNull('id_workstations')
@ -135,7 +140,7 @@ public function refreshDataEquipments($datasProject)
$this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array $this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array
$this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id]; $this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id];
} elseif (ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->exists()) { } elseif (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->exists()) {
$this->inProgress++; $this->inProgress++;
$this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id]; $this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id];
} else { } else {

View File

@ -3,6 +3,7 @@
namespace App\Livewire\Execução; namespace App\Livewire\Execução;
use App\Models\Equipment; use App\Models\Equipment;
use App\Models\EquipmentWorkHistory;
use App\Models\OrderEquipmentTasks; use App\Models\OrderEquipmentTasks;
use App\Models\ControlEquipmentWorkstation; use App\Models\ControlEquipmentWorkstation;
use App\Models\ElementalTasks; use App\Models\ElementalTasks;
@ -70,7 +71,7 @@ public function mount($datasProject)
$this->datasProject = $datasProject; $this->datasProject = $datasProject;
// Obter todos os equipamentos relacionados ao projeto // Obter todos os equipamentos relacionados ao projeto
$receiveEquipmentsProject = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get(); $receiveEquipmentsProject = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get();
$elementalTasks = collect(); $elementalTasks = collect();
$furtherTasks = collect(); $furtherTasks = collect();
@ -80,7 +81,7 @@ public function mount($datasProject)
foreach ($receiveEquipmentsProject as $equipment) { foreach ($receiveEquipmentsProject as $equipment) {
// Obter todas as OrderEquipmentTasks relacionadas a este equipamento // Obter todas as OrderEquipmentTasks relacionadas a este equipamento
$relatedTasks = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->get(); $relatedTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->get();
// Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id // Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id
$elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique(); $elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique();
@ -99,13 +100,22 @@ public function mount($datasProject)
} }
$this->receiveElementalTasksAll = $elementalTasksCountsAll; $this->receiveElementalTasksAll = $elementalTasksCountsAll;
// Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation // Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation
$elementalTasksCount1 = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks)->get()->countBy('elemental_tasks_id');
$furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id'); $furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id');
$tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks)
->distinct('equipmentWorkHistorys_id', 'elemental_tasks_id') // Obter combinações únicas
->get(['equipmentWorkHistorys_id', 'elemental_tasks_id']) // Selecionar apenas os campos necessários
->groupBy('elemental_tasks_id') // Agrupar pelo ID da tarefa elemental
->map(function ($group) {
return $group->unique('equipmentWorkHistorys_id')->count(); // Contar ocorrências únicas por equipmentWorkHistorys_id
});
$newArray = []; $newArray = [];
foreach ($elementalTasksCount1 as $taskId => $count) { foreach ($tasksCount as $taskId => $count) {
$task = ElementalTasks::find($taskId); $task = ElementalTasks::find($taskId);
if ($task) { if ($task) {
$newArray[$task->elemental_tasks_code] = $count; $newArray[$task->elemental_tasks_code] = $count;
@ -135,7 +145,6 @@ public function mount($datasProject)
} }
public function refreshDataEquipments($datasProject) public function refreshDataEquipments($datasProject)
{ {
} }

View File

@ -22,7 +22,8 @@ public function equipment()
return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id'); return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id');
} }
public function equipmentWorkHistory(){ public function equipmentWorkHistory()
{
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id'); return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
} }
@ -35,7 +36,10 @@ public function furtherTasks()
{ {
return $this->belongsTo(FurtherTasks::class, 'further_tasks_id', 'further_tasks_id'); return $this->belongsTo(FurtherTasks::class, 'further_tasks_id', 'further_tasks_id');
} }
public function workstationsTaskAnswers()
{
return $this->hasMany(workstationsTaskAnswers::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id');
}
} }

View File

@ -18,12 +18,12 @@
</div> </div>
<div class="row text-center"> <div class="row text-center">
<div class="col-sm"> <div class="col-sm-6">
<h6>Equipamentos da Obra</h6> <h6>Equipamentos da Obra</h6>
<p style="color:gray; font-size:13px">Total de ações para concluir todos os equipamentos da obra.</p> <p style="color:gray; font-size:13px">Total de ações para concluir todos os equipamentos da obra.</p>
<canvas id="myPieChart"></canvas> <canvas id="myPieChart"></canvas>
</div> </div>
<div class="col-sm"> <div class="col-sm-6">
<h6>Equivalente de equipamentos da Obra</h6> <h6>Equivalente de equipamentos da Obra</h6>
<p style="color:gray; font-size:13px">Total de equipamentos e os seus estados actuais.</p> <p style="color:gray; font-size:13px">Total de equipamentos e os seus estados actuais.</p>
<canvas id="myPieChart1"></canvas> <canvas id="myPieChart1"></canvas>

View File

@ -18,110 +18,170 @@
</div> </div>
</div> </div>
<div class="row text-center"> {{-- <div class="row text-center">
<div class="col-sm"> <div class="col-sm-6">
<h6>Quantidade Tarefas Concluidas</h6> <h6>Quantidade Tarefas Concluidas</h6>
<p style="color:gray; font-size:13px">Total de acções realizadas de acordo com a tarefa.</p> <p style="color:gray; font-size:13px">Total de acções realizadas de acordo com a tarefa.</p>
<canvas id="myPieChart2" width="50" height="50"></canvas> <canvas id="myPieChart2" width="50" height="50"></canvas>
</div> </div>
<div class="col-sm"> <div class="col-sm-6">
<h6>Quantidade tarefas Acumuladas</h6> <h6>Quantidade tarefas Acumuladas</h6>
<p style="color:gray; font-size:13px"> Total de acções a serem realizadas por tarefa.</p> <p style="color:gray; font-size:13px"> Total de acções a serem realizadas por tarefa.</p>
<canvas id="myPieChart3" width="50" height="50"></canvas> <canvas id="myPieChart3" width="50" height="50"></canvas>
</div> </div>
</div> </div>
</div> --}}
<div class="row text-center">
<div class="col-sm-12">
<h6>Quantidade Tarefas</h6>
<p style="color:gray; font-size:13px">Total de ações realizadas e a serem realizadas por tarefa.</p>
<canvas id="stackedBarChart" width="100" height="50"></canvas>
</div>
</div> </div>
<script> <script>
// Suponha que as variáveis abaixo estão corretamente definidas em PHP e passadas para o JavaScript
var elementalTasksCountAll = @json($receiveElementalTasksAll);
var elementalTasksCount = @json($receiveElementalTasks); var elementalTasksCount = @json($receiveElementalTasks);
var grafico2 = document.getElementById('myPieChart2').getContext('2d'); // Inicializa as variáveis para os dados concluídos e restantes
var dataConcluidas = [];
var dataRestantes = [];
var labels = Object.keys(elementalTasksCountAll);
var labels = Object.keys(elementalTasksCount); // Preenche os arrays de dados
var data = Object.values(elementalTasksCount); labels.forEach(function(label) {
// Se existir um valor para a label em 'elementalTasksCount', usa-o, caso contrário, usa 0
var valorConcluido = elementalTasksCount[label] || 0;
dataConcluidas.push(valorConcluido);
var myPieChart2 = new Chart(grafico2, { // Calcula o valor restante
type: 'bar', var valorTotal = elementalTasksCountAll[label];
data: { dataRestantes.push(valorTotal - valorConcluido);
labels: labels.map(label => label),
datasets: [{
data: data,
backgroundColor: [
'rgba(0,80,0,0.5)', //green color
'rgb(9, 37, 92)', //Azul escuro ISPT
'rgb(0, 176, 234)', // Azull Claro ISPT
'rgb(5, 107, 163)', // Azul parecido
],
borderColor: [
'rgba(0,80,0,0.5)',
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)'
// ... (adicionar mais cores se necessário)
],
borderWidth: 1
}]
},
options: {
animation: false,
plugins: {
legend: {
display: false
},
tooltip: {
enabled: false
}
}
},
}); });
// Grafico de Script 2 // Elemento canvas onde o gráfico será renderizado
var elementalTasksCountAll = @json($receiveElementalTasksAll); var canvas = document.getElementById('stackedBarChart').getContext('2d');
var grafico3 = document.getElementById('myPieChart3').getContext('2d'); // Destrói o gráfico anterior se ele existir
if (window.stackedBarChartInstance) {
window.stackedBarChartInstance.destroy();
}
var labels = Object.keys(elementalTasksCountAll); // Cria o gráfico de barras empilhadas
var data = Object.values(elementalTasksCountAll); window.stackedBarChartInstance = new Chart(canvas, {
var myPieChart3 = new Chart(grafico3, {
type: 'bar', type: 'bar',
data: { data: {
labels: labels.map(label => label), labels: labels,
datasets: [{ datasets: [{
label: 'Total de Acções da Obra"', label: 'Concluídas',
data: data, data: dataConcluidas,
backgroundColor: [ backgroundColor: 'rgb(9,37,92)' // Cor para as concluídas
'rgb(117,210,240)', //green color }, {
'rgb(9, 37, 92)', //Azul escuro ISPT label: 'Restantes',
'rgb(0, 176, 234)', // Azull Claro ISPT data: dataRestantes,
'rgb(5, 107, 163)', // Azul parecido backgroundColor: 'rgba(168,168,168)' // Cor para as restantes
],
borderColor: [
'rgba(0,80,0,0.5)',
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)'
// ... (adicionar mais cores se necessário)
],
borderWidth: 1
}] }]
}, },
options: { options: {
animation: false, scales: {
x: {
stacked: true
},
y: {
stacked: true
}
},
plugins: { plugins: {
legend: { legend: {
display: false display: true
}, },
tooltip: { tooltip: {
enabled: false enabled: true
}
} }
} }
},
}); });
</script> </script>
{{-- Scrip de atualizacao da tabela --}}
<script> <script>
window.addEventListener('refreshData', event => {
// Obter os dados detalhados do evento
var data = event.detail[0];
var elementalTasksCount = data.receiveElementalTasks;
var elementalTasksCountAll = data.receiveElementalTasksAll;
// Inicializa as variáveis para os dados concluídos e restantes
var dataConcluidas = [];
var dataRestantes = [];
var labels = Object.keys(elementalTasksCountAll);
// Preenche os arrays de dados
labels.forEach(function(label) {
// Se existir um valor para a label em 'elementalTasksCount', usa-o, caso contrário, usa 0
var valorConcluido = elementalTasksCount[label] || 0;
dataConcluidas.push(valorConcluido);
// Calcula o valor restante
var valorTotal = elementalTasksCountAll[label] || 0;
dataRestantes.push(valorTotal - valorConcluido);
});
// Elemento canvas onde o gráfico será renderizado
var canvas = document.getElementById('stackedBarChart').getContext('2d');
// Destrói o gráfico anterior se ele existir
if (window.stackedBarChartInstance) {
window.stackedBarChartInstance.destroy();
}
// Cria o gráfico de barras empilhadas com os novos dados
window.stackedBarChartInstance = new Chart(canvas, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Concluídas',
data: dataConcluidas,
backgroundColor: 'rgb(9,37,92)' // Cor para as concluídas
}, {
label: 'Restantes',
data: dataRestantes,
backgroundColor: 'rgba(168,168,168)' // Cor para as restantes
}]
},
options: {
scales: {
x: {
stacked: true
},
y: {
stacked: true
}
},
plugins: {
legend: {
display: true
},
tooltip: {
enabled: true
}
}
}
});
});
</script>
{{-- Scrip de atualizacao da tabela --}}
{{-- <script>
window.addEventListener('refreshData', event => { window.addEventListener('refreshData', event => {
var data = event.detail[0]; var data = event.detail[0];
@ -201,7 +261,7 @@
}, },
}); });
}); });
</script> </script> --}}
{{-- Script de Gradico em porcentagem , para proxima implementacao e ADD+ Esforco --}} {{-- Script de Gradico em porcentagem , para proxima implementacao e ADD+ Esforco --}}
{{-- <script> {{-- <script>

View File

@ -699,33 +699,28 @@ class="form-control card_inputs" id="isolationEquipment"
<div class="row"> <div class="row">
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-tagEquipment"> <span class="input-group-text" id="form-tagEquipment" data-toggle="tooltip" title="Tag">
<i class="fa-sharp fa-solid fa-tag" style="color: #00B0EA;"></i> <i class="fa-sharp fa-solid fa-tag" style="color: #00B0EA;"></i>
<span style="color:red;"">*</span>
</span> </span>
<div class="has-float-label">
<input type="text" name="tag" <input type="text" name="tag"
class="form-control card_inputs" id="equipmentTag" class="form-control card_inputs" id="equipmentTag"
placeholder="Tag..." aria-label="Tag Equipment" placeholder="Tag..." aria-label="Tag Equipment"
aria-describedby="form-tagEquipment" required> aria-describedby="form-tagEquipment" required>
<label>Tag <span class="required">*</span></label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-equipmentDescription"> <span class="input-group-text" id="form-equipmentDescription" data-toggle="tooltip" title="Descrição Equipamento">
<i class="fa-sharp fa-regular fa-newspaper" <i class="fa-sharp fa-regular fa-newspaper"
style="color: #00B0EA;"></i> style="color: #00B0EA;"></i>
<span style="color:red;"">*</span>
</span> </span>
<div class="has-float-label">
<input type="text" name="equipmentDescription" <input type="text" name="equipmentDescription"
class="form-control card_inputs" id="equipmentDescription" class="form-control card_inputs" id="equipmentDescription"
placeholder="Descrição Equipamento..." placeholder="Descrição Equipamento..."
aria-label="equipmentDescription" aria-label="equipmentDescription"
aria-describedby="form-equipmentDescription" required> aria-describedby="form-equipmentDescription" required>
<label>Descrição Equipamento <span
class="required">*</span></label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -735,45 +730,36 @@ class="required">*</span></label>
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-serialNumberEquipment"> <span class="input-group-text" id="form-serialNumberEquipment" data-toggle="tooltip" title="Número de série">
<i class="fa-solid fa-barcode" style="color: #00B0EA;"></i> <i class="fa-solid fa-barcode" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="serialNumberEquipment" <input type="text" name="serialNumberEquipment"
class="form-control card_inputs" id="equipmentSerialNumber" class="form-control card_inputs" id="equipmentSerialNumber"
placeholder="Número de série" placeholder="Número de série"
aria-label="Serial Number Equipment" aria-label="Serial Number Equipment"
aria-describedby="form-serialNumberEquipment"> aria-describedby="form-serialNumberEquipment">
<label>Número de série </label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-equipmentBrand"> <span class="input-group-text" id="form-equipmentBrand" data-toggle="tooltip" title="Marca">
<i class="fa-solid fa-object-group" style="color: #00B0EA;"></i> <i class="fa-solid fa-object-group" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="equipmentBrand" <input type="text" name="equipmentBrand"
class="form-control card_inputs" id="equipmentBrand" class="form-control card_inputs" id="equipmentBrand"
placeholder="Modelo" aria-label="Marca Equipamento" placeholder="Marca" aria-label="Marca Equipamento"
aria-describedby="form-equipmentBrand"> aria-describedby="form-equipmentBrand">
<label>Marca</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-equipmentModel"> <span class="input-group-text" id="form-equipmentModel" data-toggle="tooltip" title="Modelo">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="equipmentModel" <input type="text" name="equipmentModel"
class="form-control card_inputs" id="equipmentModel" class="form-control card_inputs" id="equipmentModel"
placeholder="Modelo" aria-label="Modelo Equipamento" placeholder="Modelo" aria-label="Modelo Equipamento"
aria-describedby="form-equipmentModel"> aria-describedby="form-equipmentModel">
<label>Modelo</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -783,46 +769,37 @@ class="form-control card_inputs" id="equipmentModel"
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-dimension"> <span class="input-group-text" id="form-dimension" data-toggle="tooltip" title="Dimensão">
<i class="fa-solid fa-ruler " style="color: #00B0EA;"></i> <i class="fa-solid fa-ruler " style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="dimension" <input type="text" name="dimension"
class="form-control card_inputs" id="dimension" class="form-control card_inputs" id="dimension"
placeholder="Dimensão" aria-label="Dimensao Equipamento" placeholder="Dimensão" aria-label="Dimensao Equipamento"
aria-describedby="form-dimension"> aria-describedby="form-dimension">
<label>Dimensão</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-rating"> <span class="input-group-text" id="form-rating" data-toggle="tooltip" title="Rating">
<i class="fa-solid fa-ranking-star" style="color: #00B0EA;"></i> <i class="fa-solid fa-ranking-star" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="rating" <input type="text" name="rating"
class="form-control card_inputs" id="rating" class="form-control card_inputs" id="rating"
placeholder="Rating..." aria-label="Rating Equipamento" placeholder="Rating..." aria-label="Rating Equipamento"
aria-describedby="form-rating"> aria-describedby="form-rating">
<label>Rating</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-dim_certa"> <span class="input-group-text" id="form-dim_certa" data-toggle="tooltip" title="Dim certa">
<i class="fa-sharp fa-regular fa-square-poll-vertical"></i> <i class="fa-solid fa-ruler-vertical" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="dim_certa" <input type="text" name="dim_certa"
class="form-control card_inputs" id="dim_certa" class="form-control card_inputs" id="dim_certa"
placeholder="Dim certa..." aria-label="Dim certa Equipamento" placeholder="Dim certa..." aria-label="Dim certa Equipamento"
aria-describedby="form-dim_certa"> aria-describedby="form-dim_certa">
<label>Dim certa</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -832,44 +809,35 @@ class="form-control card_inputs" id="dim_certa"
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-main_equipment"> <span class="input-group-text" id="form-main_equipment" data-toggle="tooltip" title="Main Equipment">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-sliders" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="main_equipment" <input type="text" name="main_equipment"
class="form-control card_inputs" id="main_equipment" class="form-control card_inputs" id="main_equipment"
placeholder="Main Equipment" aria-label="Main Equipment" placeholder="Main Equipment" aria-label="Main Equipment"
aria-describedby="form-main_equipment"> aria-describedby="form-main_equipment">
<label>Main Equipment</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-P_IidEquipment"> <span class="input-group-text" id="form-P_IidEquipment" data-toggle="tooltip" title="P&ID">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-map-location-dot" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="p&id" <input type="text" name="p&id"
class="form-control card_inputs" id="p&id" class="form-control card_inputs" id="p&id"
placeholder="P&ID" aria-label="P&ID" placeholder="P&ID" aria-label="P&ID"
aria-describedby="form-P_IidEquipment"> aria-describedby="form-P_IidEquipment">
<label>P&ID</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-NumberSapEquipment"> <span class="input-group-text" id="form-NumberSapEquipment" data-toggle="tooltip" title="Nº SAP">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-hashtag" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="sap_number" <input type="text" name="sap_number"
class="form-control card_inputs" id="sap_number" class="form-control card_inputs" id="sap_number"
placeholder="Nº SAP" aria-label="Numero SAP Equipamento" placeholder="Nº SAP" aria-label="Numero SAP Equipamento"
aria-describedby="form-NumberSapEquipment"> aria-describedby="form-NumberSapEquipment">
<label> SAP</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -879,44 +847,36 @@ class="form-control card_inputs" id="sap_number"
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-materialEquipment"> <span class="input-group-text" id="form-materialEquipment" data-toggle="tooltip" title="Material">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-brands fa-codepen" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="material" <input type="text" name="material"
class="form-control card_inputs" id="material" class="form-control card_inputs" id="material"
placeholder="Material" aria-label="Material Equipamento" placeholder="Material" aria-label="Material Equipamento"
aria-describedby="form-materialEquipment"> aria-describedby="form-materialEquipment">
<label>Material</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-manufacturerEquipment"> <span class="input-group-text" id="form-manufacturerEquipment" data-toggle="tooltip" title="Fabricante">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-building" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="manufacturer" <input type="text" name="manufacturer"
class="form-control card_inputs" id="manufacturerEquipment" class="form-control card_inputs" id="manufacturerEquipment"
placeholder="Fabricante" aria-label="Fabricante Equipamento" placeholder="Fabricante" aria-label="Fabricante Equipamento"
aria-describedby="form-manufacturerEquipment"> aria-describedby="form-manufacturerEquipment">
<label>Fabricante</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-isolationEquipment"> <span class="input-group-text" id="form-isolationEquipment" data-toggle="tooltip" title="Isolamento">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-lock" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="isolation" <input type="text" name="isolation"
class="form-control card_inputs" id="isolation" class="form-control card_inputs" id="isolation"
placeholder="Isolamento" aria-label="Isolamento Equipamento" placeholder="Isolamento" aria-label="Isolamento Equipamento"
aria-describedby="form-isolationEquipment"> aria-describedby="form-isolationEquipment">
<label>Isolamento</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -926,46 +886,37 @@ class="form-control card_inputs" id="isolation"
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-actuatorManufacturer"> <span class="input-group-text" id="form-actuatorManufacturer" data-toggle="tooltip" title="Fabricante do atuador">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="actuatorManufacturer" <input type="text" name="actuatorManufacturer"
class="form-control card_inputs" id="actuatorManufacturer" class="form-control card_inputs" id="actuatorManufacturer"
placeholder="Fabricante do atuador" placeholder="Fabricante do atuador"
aria-label="Fabricante do Atuador" aria-label="Fabricante do Atuador"
aria-describedby="form-actuatorManufacturer"> aria-describedby="form-actuatorManufacturer">
<label>Fabricante do atuador</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-ActuatorModel"> <span class="input-group-text" id="form-ActuatorModel" data-toggle="tooltip" title="Modelo do atuador">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="ActuatorModel" <input type="text" name="ActuatorModel"
class="form-control card_inputs" id="ActuatorModel" class="form-control card_inputs" id="ActuatorModel"
placeholder="Modelo do atuador" aria-label="Modelo do atuador" placeholder="Modelo do atuador" aria-label="Modelo do atuador"
aria-describedby="form-ActuatorModel"> aria-describedby="form-ActuatorModel">
<label>Modelo do atuador</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-actuatorSerialNumber"> <span class="input-group-text" id="form-actuatorSerialNumber" data-toggle="tooltip" title="N.º de série do atuador">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="actuatorSerialNumber" <input type="text" name="actuatorSerialNumber"
class="form-control card_inputs" id="actuatorSerialNumber" class="form-control card_inputs" id="actuatorSerialNumber"
placeholder="N.º de série do atuador" placeholder="N.º de série do atuador"
aria-label="Numero de série do atuado" aria-label="Numero de série do atuado"
aria-describedby="form-actuatorSerialNumber"> aria-describedby="form-actuatorSerialNumber">
<label>N.º de série do atuador</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -975,32 +926,26 @@ class="form-control card_inputs" id="actuatorSerialNumber"
<div class="row"> <div class="row">
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-PositionerManufacturer"> <span class="input-group-text" id="form-PositionerManufacturer" data-toggle="tooltip" title="Fabricante do posicionador">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="PositionerManufacturer" <input type="text" name="PositionerManufacturer"
class="form-control card_inputs" id="PositionerManufacturer" class="form-control card_inputs" id="PositionerManufacturer"
placeholder="Fabricante do posicionador" placeholder="Fabricante do posicionador"
aria-label="Fabricante do posicionador" aria-label="Fabricante do posicionador"
aria-describedby="form-PositionerManufacturer"> aria-describedby="form-PositionerManufacturer">
<label>Fabricante do posicionador</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="form-PositionerSerialNumber"> <span class="input-group-text" id="form-PositionerSerialNumber" data-toggle="tooltip" title="N.º de série do posicionador">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<input type="text" name="PositionerSerialNumber" <input type="text" name="PositionerSerialNumber"
class="form-control card_inputs" id="PositionerSerialNumber" class="form-control card_inputs" id="PositionerSerialNumber"
placeholder="N.º de série do posicionador" placeholder="N.º de série do posicionador"
aria-label="Numero de série do posicionador" aria-label="Numero de série do posicionador"
aria-describedby="form-PositionerSerialNumber"> aria-describedby="form-PositionerSerialNumber">
<label>N.º de série do posicionador</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -1010,30 +955,24 @@ class="form-control card_inputs" id="PositionerSerialNumber"
<div class="row"> <div class="row">
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text"> <span class="input-group-text" data-toggle="tooltip" title="Andaime">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-stairs" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<select class="form-control card_inputs" name="scaffold"> <select class="form-control card_inputs" name="scaffold">
<option value="Sim">Sim</option> <option value="Sim">Sim</option>
<option value="Nao" selected>Nao</option> <option value="Nao" selected>Nao</option>
</select> </select>
<label>Andaime?</label>
</div>
</div> </div>
</div> </div>
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text"> <span class="input-group-text" data-toggle="tooltip" title="Grua">
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i> <i class="fa-solid fa-truck-arrow-right" style="color: #00B0EA;"></i>
</span> </span>
<div class="has-float-label">
<select class="form-control card_inputs" name="crane"> <select class="form-control card_inputs" name="crane">
<option value="Sim">Sim</option> <option value="Sim">Sim</option>
<option value="Nao" selected>Nao</option> <option value="Nao" selected>Nao</option>
</select> </select>
<label>Grua?</label>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -87,8 +87,9 @@
<label>{{ __('messages.createProject.select_company.contracting_company') }} <b <label>{{ __('messages.createProject.select_company.contracting_company') }} <b
style="color:red">*</b></label> style="color:red">*</b></label>
<select class="form-control" name="user_id" id="company_select"> <select class="form-control" name="user_id" id="company_select">
<option>{{ __('messages.createProject.select_plant.plant') }} ...</option> {{-- <option>{{ __('messages.createProject.select_plant.plant') }} ...</option> --}}
<option value="new_company">Criar Empresa ...</option> <option value="#">Selecione Uma Empresa &hellip;</option>
{{-- <option value="new_company">Criar Empresa &hellip;</option> --}}
@foreach ($companies as $company) @foreach ($companies as $company)
<option value="{{ $company->user_id }}">{{ $company->user_name }}</option> <option value="{{ $company->user_id }}">{{ $company->user_name }}</option>
@endforeach @endforeach
@ -99,23 +100,23 @@
<div class="form-group col-sm" id="installationField" hidden> <div class="form-group col-sm" id="installationField" hidden>
<label>{{ __('messages.createProject.select_plant.plant') }} <b <label>{{ __('messages.createProject.select_plant.plant') }} <b
style="color:red">*</b></label> style="color:red">*</b></label>
<select class="form-control" name="installation_id" id="installationSelect" <select class="form-control" name="installation_id" id="installationSelect" required>
required>
<!-- As opções de instalação serão preenchidas dinamicamente --> <!-- As opções de instalação serão preenchidas dinamicamente -->
</select> </select>
</div> </div>
</div> <!-- /Row --> </div> <!-- /Row -->
{{-- Criar uma nova instalacao / Empresa --}} <!-- Criar uma nova instalacao / Empresa -->
<div class="row" id="new_company_div"> <div class="row" id="new_company_div">
{{-- Vai ser a criacao do Projecto --}} <!-- Vai ser a criacao do Projecto -->
<div class="form-group col-sm" id="new_company_input">
{{-- Nao vai ser implementado (AINDA) pois retirar se ser mais complexo devido a criacao de um novo User, nao parece valer a pena tentar criar nesta parte --}}
{{-- <div class="form-group col-sm" id="new_company_input">
<label>Nova Empresa</label> <label>Nova Empresa</label>
<input type="text" class="form-control" name="new_company" <input type="text" class="form-control" name="new_company"
placeholder="Nova Empresa&hellip;"> placeholder="Nova Empresa&hellip;">
</div> </div> --}}
<!-- Selecionar ou criar instalacoes --> <!-- Selecionar ou criar instalacoes -->
<div class="form-group col-sm"> <div class="form-group col-sm">

View File

@ -24,6 +24,7 @@
<!-- Main content --> <!-- Main content -->
<section class="content"> <section class="content">
{{-- Foreach para criar varios qrcodes para os equipamentos --}} {{-- Foreach para criar varios qrcodes para os equipamentos --}}
{{-- @foreach ($equipmentsProjects as $equipment) {{-- @foreach ($equipmentsProjects as $equipment)
<div class="print-container"> <div class="print-container">
@ -92,15 +93,15 @@
<form> <form>
<div class="row"> <div class="row">
<div class="col-sm-6" id="BotaoDetalhesObra"> <div class="col-sm-6" id="BotaoDetalhesObra">
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg">Detalhes <a href="#" type="button" class="btn btn-block bg-primary btn-lg">Detalhes
da Obra</a> da Obra</a>
</div> </div>
<div class="col-sm-6" id="BotaoArticulado"> <div class="col-sm-6" id="BotaoArticulado">
<a href="#" type="button" <a href="#" type="button"
class="btn btn-block bg-gradient-primary btn-lg">Articulado</a> class="btn btn-block bg-primary btn-lg">Articulado</a>
</div> </div>
<div class="col-sm-6" id="BotaoPostosDeTrabalho"> <div class="col-sm-6" id="BotaoPostosDeTrabalho">
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg">Postos de <a href="#" type="button" class="btn btn-block bg-primary btn-lg">Postos de
Trabalho</a> Trabalho</a>
</div> </div>
</div> </div>
@ -154,13 +155,21 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
</div> </div>
<!-- /.card-body --> <!-- /.card-body -->
<div class="card-footer"> {{-- <div class="card-footer">
<div class="float-right"> <div class="float-right">
<button type="button" class="btn btn-test" data-toggle="modal" <button type="button" class="btn btn-test" data-toggle="modal"
data-target="#ModalTransferForArticulated"> data-target="#ModalTransferForArticulated">
Editar Editar
</button> </button>
</div> </div>
</div> --}}
<div class="card-footer">
<div class="float-right">
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#ModalTransferForArticulated">
Editar
</button>
</div>
</div> </div>
</div> </div>
<!-- /.card --> <!-- /.card -->
@ -189,7 +198,7 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
<div class="table-responsive"> <div class="table-responsive">
<div class="row text-center"> <div class="row text-center">
<div class="form-group col-sm-3"> <div class="form-group col-sm">
<label>Tipo de Equipamento </label> <label>Tipo de Equipamento </label>
<select id="tipo_valvulasList" name="equipmentTypeId" <select id="tipo_valvulasList" name="equipmentTypeId"
class="form-control"> class="form-control">
@ -201,7 +210,7 @@ class="form-control">
</select> </select>
</div> </div>
<div class="col-sm-3"> <div class="col-sm">
<div class="form-group"> <div class="form-group">
<label> Fabricas </label> <label> Fabricas </label>
<select id="UnitsList" class="form-control"> <select id="UnitsList" class="form-control">
@ -214,7 +223,7 @@ class="form-control">
</div> </div>
</div> </div>
<div class="col-sm-3"> <div class="col-sm">
<div class="form-group"> <div class="form-group">
<label>Âmbitos </label> <label>Âmbitos </label>
<select class="form-control" name="EquipmentAmbit" <select class="form-control" name="EquipmentAmbit"
@ -224,7 +233,7 @@ class="form-control">
</div> </div>
</div> </div>
<div class="col-sm-3"> {{-- <div class="col-sm-3">
<div class="form-group"> <div class="form-group">
<label>Inspeção de Equipamentos </label> <label>Inspeção de Equipamentos </label>
<select id="inspecValvula" class="form-control"> <select id="inspecValvula" class="form-control">
@ -233,7 +242,7 @@ class="form-control">
<option value="Nao">Nao </option> <option value="Nao">Nao </option>
</select> </select>
</div> </div>
</div> </div> --}}
</div> </div>
<br> <br>
@ -261,7 +270,7 @@ class="form-control">
<th>Tipo Equipamento</th> <th>Tipo Equipamento</th>
<th>Fabrica</th> <th>Fabrica</th>
<th>Âmbito</th> <th>Âmbito</th>
<th>Acao</th> <th>Imprimir QR</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -270,7 +279,9 @@ class="form-control">
<td>{{ $equipment->equipment_tag }}</td> <td>{{ $equipment->equipment_tag }}</td>
<td>{{ $equipment->equipment_type_id }}</td> <td>{{ $equipment->equipment_type_id }}</td>
<td>{{ $equipment->unit->unit_name }}</td> <td>{{ $equipment->unit->unit_name }}</td>
<td>{{ $equipment->equipmentAssociationAmbit->ambitsEquipment->ambits_description }} <td><a href="{{ route('showDetailsEquipmentForQrCode', ['equipmentId' => $equipment->equipment_id, 'projectId' => $numberProject]) }}"><i class="fa-solid fa-file-pdf fa-2x"></i></a>
</td>
{{-- <td>{{ $equipment->equipmentAssociationAmbit->ambitsEquipment->ambits_description }} --}}
</td> </td>
{{-- <td><a href="#" data-toggle="modal" {{-- <td><a href="#" data-toggle="modal"
data-target="#yourModalId-{{ $equipment->equipment_id }}" data-target="#yourModalId-{{ $equipment->equipment_id }}"
@ -278,7 +289,7 @@ class="form-control">
style="color:rgb(62, 62, 62)"></i></a></td> style="color:rgb(62, 62, 62)"></i></a></td>
--}} --}}
@livewire('preparadas.show-qrcode-and-detalls-equipment', ['equipment' => $equipment], key($equipment->equipment_id)) {{-- @livewire('preparadas.show-qrcode-and-detalls-equipment', ['equipment' => $equipment], key($equipment->equipment_id)) --}}
</tr> </tr>
{{-- Por algum motivo se tirar esta modal, ele nao encontra o qrcode do componente ?????????????? WHY????????? --}} {{-- Por algum motivo se tirar esta modal, ele nao encontra o qrcode do componente ?????????????? WHY????????? --}}
<div class="modal fade" <div class="modal fade"
@ -373,13 +384,13 @@ function printCard() {
<!--/table obra--> <!--/table obra-->
</div> </div>
<!-- /.card-body --> <!-- /.card-body -->
<div class="card-footer"> <div class="card-footer">
{{-- Botao para criar os Multiplos Qrcodes nas Folhas --}} <!-- Botao para criar os Multiplos Qrcodes nas Folhas -->
{{-- <div class="float-left"> <!-- <div class="float-left">
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos <button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos
QR</button> QR</button>
</div> -->
</div> --}}
<div class="float-right"> <div class="float-right">
<button type="button" class="btn btn-primary" data-toggle="modal" <button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#ModalTransferForArticulated"> data-target="#ModalTransferForArticulated">
@ -387,6 +398,7 @@ function printCard() {
</button> </button>
</div> </div>
</div> </div>
</div> </div>
<!-- ./card --> <!-- ./card -->
</div> </div>
@ -458,8 +470,8 @@ class="table table-bordered table-striped">
<thead> <thead>
<tr> <tr>
<th>Postos de Trabalho</th> <th>Postos de Trabalho</th>
<th>Nome do Posto de Trabalho</th>
<th>Tarefas Elementares</th> <th>Tarefas Elementares</th>
<th>Tarefas Complementares</th>
</tr> </tr>
</thead> </thead>
</table> </table>

View File

@ -25,7 +25,7 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<form method="POST" action="{{ route('processStep1') }}" id="idDoFormulario"> <form method="POST" action="{{ route('EditprocessStep1') }}" id="idDoFormulario">
@csrf @csrf
@ -176,7 +176,7 @@ class="form-control float-right">
</div> </div>
</div> </div>
{{-- /.card card-primary --}} {{-- /.card card-primary --}}
<a href="{{ route('articulated_2', ['id' => $projects]) }}" class="btn btn-primary next float-right">Seguinte</a> <a href="{{ route('articulated_2', ['id' => $projects]) }}" class="btn btn-primary next float-right mt-3">Articulado</a>
</fieldset> </fieldset>

View File

@ -0,0 +1,144 @@
<!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>
body {
font-family: 'Arial', sans-serif;
margin: 0;
padding: 0;
}
.card-to-print {
max-width: 3391px; /* 90cm */
max-height: 1512px; /* 40cm */
background-color: #fff;
margin: auto;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
position: relative;
padding: 20px;
}
#circulo {
width: 20px; /*Largura do círculo */
height: 20px; /* Altura do círculo */
background-color: red; /* Cor do círculo */
border-radius: 50%; /* Faz com que os cantos sejam totalmente arredondados, criando um círculo */
/* position: absolute; */
/* top: 100px; */
/* padding-top: 10px; */
/* left: 20px; */
/* top: 30%; */
/* transform: translateY(50%); */
}
.top {
/* Estilos para a div top */
}
.custom-row {
display: flex;
flex-wrap: wrap;
margin-top: 10px;
}
.col-sm {
flex: 0 0 auto;
width: 33.33333%;
text-align: center;
}
.text-center {
text-align: center;
}
</style>
</head>
<body>
<div class="card-to-print">
<div class="top">
</div>
<div class="custom-row">
{{-- <div class="col-sm text-center" style="position: relative; background-color: #09255C;">
<div id="circulo"></div>
<!-- Restante do seu HTML -->
</div> --}}
<div class="col-sm text-center"
style="display: flex; align-items: center; justify-content: center; background-color: #09255C; position: relative;">
<div id="circulo"></div>
{{-- <img style="width:50px;"
src="{{ asset('img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
alt="imagem nao encontrada"> --}}
<div style="line-height: 2.5; color: white;">ISPT 4.0</div>
</div>
</div>
<div class="custom-row" style="margin-top: 10px;">
<div class="col-sm qrcode-output" style="padding-left: 13px;"
Qr-Code
{{-- data-equipment-id="{{ $associatedEquipment->id }}" --}}
{{-- data-component-tag="{{ $associatedEquipment->component_tag }}"> --}}
</div>
</div>
<div class="custom-row">
<div class="col-sm text-center">
<div style="margin-bottom: 13px;font-size: 1.1rem;color: #00B0EA">
<b>TAG</b>
</div>
</div>
</div>
{{-- Serve para receber o conteudo que tem apos a @ --}}
<div class="custom-row">
<div class="col-sm text-center">
<div style="font-size: 1.1rem;color: #00B0EA">
{{ $detailsEquipment->equipment_tag }}
Parte do Equipamento (Corpo)
{{-- {{ explode('@', $associatedEquipment->component_tag)[1] }} --}}
</div>
</div>
</div>
<div class="custom-row">
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0;color: #00B0EA;">
Tipo de Equipamento
{{-- {{ $equipment->equipmentType->equipment_type_name }} --}}
</h6>
</div>
<div class="col-sm text-center">
<h6 style="line-height: 2.5;margin-block-end: 0; color: #00B0EA;">
Fabrica
{{-- {{ $equipment->unit->unit_name }} --}}
</h6>
</div>
</div>
{{-- Imagens demoram muito a carregar , ver oque da para fazer --}}
<div class="custom-row" style="margin-top: 10px;">
<div class="col-sm text-center">
{{ $detailsEquipment->equipment_tag }}
Logo ISPT
{{-- <img style="width: 25px;" src="{{ asset('img/ispt/4.0/galpLogo1.png') }}"
alt="Imagem nao encontrada galp "> --}}
</div>
<div class="col-sm text-center">
{{ $detailsEquipment->equipment_tag }}
Logo Empresa
{{-- <img style="width: 20px;"
src="{{ asset('img/ispt/4.0/isptLogoVertical.png') }}"
alt="Imagem nao contrada Ispt"> --}}
</div>
</div>
</div>
</body>
</html>

View File

@ -2091,323 +2091,7 @@
</section> </section>
@endif @endif
{{-- TE4(2)-ISV - Abertura da válvula, análise e controle dos componentes --}}
@if ($task_todo->elemental_tasks_id == 7)
<section class="content">
<div class="row justify-content-center align-items-center">
<div class="col-10">
<!-- Workstation card -->
<div class="card card-info">
<div class="card-header">
<div class="d-flex justify-content-between align-items-center"
style="width: 100%;">
{{-- <h3 class="card-title mb-0">TE4 - ISV - Abertura de válvula, análise e controle dos
componentes
</h3> --}}
<h3 class="card-title mb-0">
{{$task_todo->elemental_tasks_id}} </h3>
</div>
</div>
<form action="{{ route('receiveAnswersEquipment') }}" method="POST"
id="form7">
@csrf
<div class="card-body">
<div class="form-group">
<!-- Single form-group for all content -->
<div class="row">
<!-- First card column -->
<div class="col-md-6">
<!-- Conformidade da etiqueta -->
<div class="row mb-3">
<div class="icheck-primary">
<input id="confirm-checkbox" type="checkbox"
name="confirm-checkbox" value="on"
required>
<label for="confirm-checkbox">Validar
especificações técnicas <span
style="color: red;">*</span></label>
</div>
</div>
<!-- ./ Conformidade da etiqueta -->
<!-- Especificações técnicas -->
<div class="row mb-3">
<label>Especificações técnicas</label>
<textarea name="technical_specs-text" class="form-control" rows="3" placeholder=""></textarea>
</div>
<!-- ./ Especificações técnicas -->
<div class="row mb-3">
<label>Os componentes estão OK?</label>
</div>
<!-- Placa de identificação -->
<div class="row mt-2">
<div class="col-md-6">
<label>Placa de identificação <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-id-plate"
name="components_id_plate-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Placa de identificação -->
<!-- Corpo -->
<div class="row mt-2">
<div class="col-md-6">
<label>Corpo <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-body"
name="components_body-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Corpo -->
<!-- Sede -->
<div class="row mt-2">
<div class="col-md-6">
<label>Sede <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-seat"
name="components_seat-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Sede -->
</div>
<!-- ./ First card column -->
<!-- Second card column -->
<div class="col-md-6">
<!-- Obturador -->
<div class="row mt-2">
<div class="col-md-6">
<label>Obturador <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-shutter"
name="components_shutter-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Obturador -->
<!-- Haste -->
<div class="row mt-2">
<div class="col-md-6">
<label>Haste <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-rod"
name="components_rod-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Haste -->
<!-- Castelo -->
<div class="row mt-2">
<div class="col-md-6">
<label>Castelo <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-castle"
name="components_castle-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Castelo -->
<!-- Empanque -->
<div class="row mt-2">
<div class="col-md-6">
<label>Empanque <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-seal"
name="components_seal-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Empanque -->
<!-- Bucim -->
<div class="row mt-2">
<div class="col-md-6">
<label>Bucim <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-bushing"
name="components_bushing-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Bucim -->
<!-- Manípulo/Volante -->
<div class="row mt-2">
<div class="col-md-6">
<label>Manípulo/Volante <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-knob"
name="components_knob-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Manípulo/Volante -->
<!-- Flanges -->
<div class="row mt-2">
<div class="col-md-6">
<label>Flanges <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="components-rims"
name="components_rims-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled
hidden value="">
</option>
<option value="Sim">Sim</option>
<option value="Não">Não</option>
<option value="N/A">N/A</option>
</select>
</div>
</div>
<!-- ./ Flanges -->
</div>
<!-- ./ Second card column -->
</div>
</div> <!-- End of single form-group -->
</div>
<div class="card-footer d-flex justify-content-between">
<!-- Center-aligned button (using `mx-auto` to push it to the center) -->
<!-- Botão alinhado à esquerda -->
<button type="submit" data-action="cancel" value="cancel"
name="stateEquipment"
class="btn btn-danger">Cancelar</button>
<!-- Botão centralizado -->
<button type="submit" data-action="finish" value="finish"
name="stateEquipment"
class="btn btn-success mx-auto">Finalizar</button>
<!-- Botão alinhado à direita -->
<button type="submit"data-action="next" value="next"
name="stateEquipment"
class="btn btn-primary">Seguinte</button>
</div>
</form>
</div>
<!-- ./ Workstation card-->
</div>
</div>
</section>
@endif
{{-- TE5 - Limpeza e lavagem dos componentes --}} {{-- TE5 - Limpeza e lavagem dos componentes --}}
@if ($task_todo->elemental_tasks_id == 8) @if ($task_todo->elemental_tasks_id == 8)
@ -2602,290 +2286,7 @@
</section> </section>
@endif @endif
{{-- TE7 - Fecho da válvula e substituição de componentes --}}
@if ($task_todo->elemental_tasks_id == 10)
<section class="content">
<div class="row justify-content-center align-items-center">
<div class="col-6">
<!-- Workstation card -->
<div class="card card-info">
<div class="card-header">
<div class="d-flex justify-content-between align-items-center"
style="width: 100%;">
{{-- <h3 class="card-title mb-0">TE7 - PSV - Fecho da válvula e substituição de componentes
</h3> --}}
<h3 class="card-title mb-0">
{{$task_todo->elemental_tasks_id}} </h3>
</div>
</div>
<form action="{{ route('receiveAnswersEquipment') }}" method="POST"
id="form10">
@csrf
<div class="card-body">
<div class="form-group">
<!-- Single form-group for all content -->
<!-- Perno de calibração -->
<div class="row mt-3">
<div class="col-md-6">
<label>Perno de calibração <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="calibration-bolt"
name="calibration_bolt-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Perno de calibração -->
<!-- Corpo da válvula -->
<div class="row mt-3">
<div class="col-md-6">
<label>Corpo da válvula <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="valve-body" name="valve_body-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Corpo da válvula -->
<!-- Castelo/Capacete -->
<div class="row mt-3">
<div class="col-md-6">
<label>Castelo/Capacete <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="castle" name="castle-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Castelo/Capacete -->
<!-- Flanges -->
<div class="row mt-3">
<div class="col-md-6">
<label>Flanges <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="rims" name="rims-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Flanges -->
<!-- Mola -->
<div class="row mt-3">
<div class="col-md-6">
<label>Mola <span style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="spring" name="spring-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Mola -->
<!-- Haste -->
<div class="row mt-3">
<div class="col-md-6">
<label>Haste <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="rod" name="rod-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Haste -->
<!-- Obturador -->
<div class="row mt-3">
<div class="col-md-6">
<label>Obturador <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="shutter" name="shutter-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Obturador -->
<!-- Sede -->
<div class="row mt-3">
<div class="col-md-6">
<label>Sede <span style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="seat" name="seat-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Sede -->
<!-- Anéis de regulação -->
<div class="row mt-3">
<div class="col-md-6">
<label>Anéis de regulação <span
style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="adjustment-rings"
name="adjustment_rings-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Anéis de regulação -->
<!-- Fole -->
<div class="row mt-3 mb-3">
<div class="col-md-6">
<label>Fole <span style="color: red;">*</span></label>
</div>
<div class="col-md-6">
<select id="bellows" name="bellows-select"
class="form-control select2"
style="width: 100%;" required>
<option selected="selected" disabled hidden
value=""></option>
<option value="Foi substituído">Foi substituído
</option>
<option value="Reparado">Reparado</option>
<option value="Beneficiado">Beneficiado</option>
<option value="Aceite">Aceite</option>
</select>
</div>
</div>
<!-- ./ Fole -->
<!-- Conformidade da etiqueta -->
<div class="row mb-3">
<div class="icheck-primary">
<input id="confirm-checkbox" type="checkbox"
name="confirm-checkbox" value="1" required>
<label for="confirm-checkbox">Conformidade da etiqueta
<span style="color: red;">*</span></label>
</div>
</div>
<!-- ./ Conformidade da etiqueta -->
</div> <!-- End of single form-group -->
</div>
<div class="card-footer d-flex justify-content-between">
<!-- Center-aligned button (using `mx-auto` to push it to the center) -->
<!-- Botão alinhado à esquerda -->
<button type="submit" data-action="cancel" value="cancel"
name="stateEquipment"
class="btn btn-danger">Cancelar</button>
<!-- Botão centralizado -->
<button type="submit" data-action="finish" value="finish"
name="stateEquipment"
class="btn btn-success mx-auto">Finalizar</button>
<!-- Botão alinhado à direita -->
<button type="submit"data-action="next" value="next"
name="stateEquipment"
class="btn btn-primary">Seguinte</button>
</div>
</form>
</div>
<!-- ./ Workstation card-->
</div>
</div>
</section>
@endif
{{-- TE7(2)-CV - Fecho da válvula e substituição de componentes --}} {{-- TE7(2)-CV - Fecho da válvula e substituição de componentes --}}
@if ($task_todo->elemental_tasks_id == 11) @if ($task_todo->elemental_tasks_id == 11)
@ -5578,7 +4979,6 @@
</div> </div>
</div> </div>
@endif @endif
{{-- TE15 - Empancar --}} {{-- TE15 - Empancar --}}

File diff suppressed because it is too large Load Diff

View File

@ -41,6 +41,11 @@
Route::post('deletePendingEquipments', [CreateProjectController::class, 'deletePendingEquipments'])->name('deletePendingEquipments'); Route::post('deletePendingEquipments', [CreateProjectController::class, 'deletePendingEquipments'])->name('deletePendingEquipments');
Route::get('showDetailsEquipmentForQrCode/{equipmentId}/{projectId}', [PreparedProjectController::class, 'showDetailsEquipmentForQrCode'])->name('showDetailsEquipmentForQrCode');
Route::get('testRelatorio', [ProjectoDatacontroller::class, 'testRelatorio'])->name('testRelatorio'); Route::get('testRelatorio', [ProjectoDatacontroller::class, 'testRelatorio'])->name('testRelatorio');
Route::get('showAllClientsForProjectReports', [ProjectoDatacontroller::class, 'showAllClientsForProjectReports'])->name('showAllClientsForProjectReports'); Route::get('showAllClientsForProjectReports', [ProjectoDatacontroller::class, 'showAllClientsForProjectReports'])->name('showAllClientsForProjectReports');