Updating graphics on work in progress and equipment history
This commit is contained in:
parent
02281f4892
commit
19eaa4ce18
2
.env
2
.env
|
|
@ -1,7 +1,7 @@
|
|||
APP_NAME="ISPT4.0"
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:ahx5/AvVGu/iHQx1mjX/EQg4m1NHLvtjzb6pFa49TlE=
|
||||
APP_DEBUG=true
|
||||
APP_DEBUG=false
|
||||
APP_URL=http://localhost
|
||||
APP_VERSION = "1.0.0"
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@ public function getEquipmentsOfAmbit(Request $request)
|
|||
public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
|
||||
{
|
||||
// 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');
|
||||
|
||||
// Pega a data e hora atual
|
||||
|
|
@ -236,18 +238,30 @@ public function getDataEquipmentsOfProject(Request $request)
|
|||
$dataEquipentProject = $query->get();
|
||||
|
||||
|
||||
// Retornar a resposta para o DataTables
|
||||
return Datatables::of($dataEquipentProject)
|
||||
// // Retornar a resposta para o DataTables
|
||||
// return Datatables::of($dataEquipentProject)
|
||||
|
||||
->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>';
|
||||
// // ->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>';
|
||||
// // 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;
|
||||
})
|
||||
|
||||
->make(true);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function showDataDetailsProjectClient($projectID)
|
||||
|
|
@ -374,7 +388,7 @@ public function reportingDataClient($clientID = null)
|
|||
->orderBy('year', 'desc')
|
||||
->pluck('year');
|
||||
|
||||
return view('userClient.reportingDataClient', compact('clientID','allPlantsClient', 'yearsProjects'));
|
||||
return view('userClient.reportingDataClient', compact('clientID', 'allPlantsClient', 'yearsProjects'));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -706,54 +706,27 @@ public function showStep1($company_projects_id)
|
|||
// Se forem alterados dados dos Detalhes da Obra, vai ser alterado
|
||||
public function EditprocessStep1(Request $request)
|
||||
{
|
||||
dd($request);
|
||||
// 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->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_ispt_responsible = $request->input('responsible_project_ispt');
|
||||
$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 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
|
||||
//Verifica se exsite uma nova data, se existe atualiza o projecto com a nova, se nao existir usa a antiga
|
||||
if($request->date_started <> null){
|
||||
$project->date_started = $request->input('date_started');
|
||||
|
||||
$project->plant_id = $receiveDetailsPlant->plant_id;
|
||||
$project->order_project = 1;
|
||||
} else {
|
||||
$project->date_started = $request->input('date_started_present');
|
||||
}
|
||||
|
||||
$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])
|
||||
->with('success', 'Detalhes do Project atualizados!');
|
||||
}
|
||||
|
|
@ -807,11 +780,17 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id)
|
|||
|
||||
public function processStep1(Request $request)
|
||||
{
|
||||
|
||||
dd($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)
|
||||
// Dito isto vamos sempre pensar que o Cliente ja deve estar criado , para ser feita uma Obra para o mesmo.
|
||||
// dd($request);
|
||||
// Validação...
|
||||
|
||||
if ($request->input('installation_id')) {
|
||||
|
||||
$installationId = $request->input('installation_id');
|
||||
|
||||
|
||||
//Para criar uma nova instalacao
|
||||
if ($installationId <> null && $installationId == 'new_install') {
|
||||
|
||||
// Criar uma nova instalação...
|
||||
|
|
@ -826,38 +805,24 @@ public function processStep1(Request $request)
|
|||
// Use o id da nova instalação.
|
||||
$installationId = $newInstallation->plant_id;
|
||||
}
|
||||
}
|
||||
$receiveDetailsPlant = Plant::where('plant_id', $installationId)->first();
|
||||
|
||||
$receiveDetailsPlant = Plant::where('plant_name', $request->plant_id_present)->first();
|
||||
|
||||
// $project = new CompanyProject;
|
||||
$project = CompanyProject::where('company_projects_id', $request->projectId)->first();
|
||||
|
||||
//Code apenas para criacao de Obra sem criar instlacao ou empresa
|
||||
$project = new CompanyProject;
|
||||
$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_ispt_responsible = $request->input('responsible_project_ispt');
|
||||
$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->order_project = 1;
|
||||
$project->date_started = $request->input('date_started');
|
||||
|
||||
$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])
|
||||
->with('success', 'Detalhes do Project atualizados!');
|
||||
->with('success', 'Project criado com sucesso!');
|
||||
}
|
||||
|
||||
public function showStep2($company_projects_id)
|
||||
|
|
|
|||
|
|
@ -14,15 +14,30 @@
|
|||
use App\Models\Unit;
|
||||
use App\Models\AmbitsEquipment;
|
||||
|
||||
use PDF;
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
$numberProject = CompanyProject::find($ProjectId);
|
||||
|
||||
$equipmentsProjects = Equipment::all()->where('company_projects_id', $ProjectId);
|
||||
|
||||
$equipmentsTypes = EquipmentType::all();
|
||||
|
||||
//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)
|
||||
->get();
|
||||
|
||||
// dd($equipmentsProjects);
|
||||
return view('projectsClients/preparedProject')
|
||||
// ->with('equipmentsProjects', $equipmentsProjects)
|
||||
->with('equipmentsTypes', $equipmentsTypes)
|
||||
|
|
|
|||
|
|
@ -3,11 +3,13 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\AmbitsEquipment;
|
||||
use App\Models\ControlEquipmentWorkstation;
|
||||
use App\Models\ElementalTasks;
|
||||
use App\Models\EquipmentAssociationAmbit;
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use App\Models\TasksAssociationAmbits;
|
||||
use App\Models\Unit;
|
||||
use App\Models\workstationsTaskAnswers;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
|
|
@ -34,13 +36,19 @@ class ProjectoDatacontroller extends Controller
|
|||
|
||||
public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
|
||||
{
|
||||
|
||||
$detailsProject = CompanyProject::where('company_projects_id', $projectID)->first();
|
||||
|
||||
$detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID)
|
||||
->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::with('elementalTask')
|
||||
|
|
@ -56,16 +64,77 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
|
|||
$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'.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//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'));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Livewire\Execução;
|
||||
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use Livewire\Component;
|
||||
use Livewire\Exceptions\PublicPropertyNotFoundException;
|
||||
use App\Models\Equipment;
|
||||
|
|
@ -93,7 +94,11 @@ public function refreshDataEquipments($datasProject)
|
|||
$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
|
||||
$this->totalEquipmentsCount = $totalEquipments->count();
|
||||
|
||||
|
|
@ -102,13 +107,13 @@ public function refreshDataEquipments($datasProject)
|
|||
foreach ($totalEquipments as $equipment) {
|
||||
|
||||
// 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']
|
||||
$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
|
||||
$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
|
||||
// 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
|
||||
// ) {
|
||||
|
||||
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
|
||||
|
||||
->whereNotNull('id_workstations')
|
||||
|
|
@ -135,7 +140,7 @@ public function refreshDataEquipments($datasProject)
|
|||
$this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array
|
||||
|
||||
$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->equivalentInProgress += $equipmentCounts[$equipment->equipment_id];
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Livewire\Execução;
|
||||
|
||||
use App\Models\Equipment;
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use App\Models\OrderEquipmentTasks;
|
||||
use App\Models\ControlEquipmentWorkstation;
|
||||
use App\Models\ElementalTasks;
|
||||
|
|
@ -17,7 +18,7 @@ class TasksDashboard extends Component
|
|||
// protected $receiveTasksRepository;
|
||||
|
||||
public $receiveElementalTasks; // Recebe todas as acoes ja feitas atualmente por tarefa
|
||||
public $receiveElementalTasksAll;// Recebe o total de tarefas que vamos fazer
|
||||
public $receiveElementalTasksAll; // Recebe o total de tarefas que vamos fazer
|
||||
|
||||
public $countElementalTasks;
|
||||
public $countElementalTasksAll;
|
||||
|
|
@ -61,7 +62,7 @@ public function showPercentageElementalTasks()
|
|||
$this->dispatch('refreshPercentageElementalTasks', [
|
||||
'receiveElementalTasks' => $this->receiveElementalTasks,
|
||||
'receiveElementalTasksAll' => $this->receiveElementalTasksAll,
|
||||
'countElementalTasksAll'=> $this->countElementalTasksAll
|
||||
'countElementalTasksAll' => $this->countElementalTasksAll
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +71,7 @@ public function mount($datasProject)
|
|||
$this->datasProject = $datasProject;
|
||||
|
||||
// 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();
|
||||
$furtherTasks = collect();
|
||||
|
|
@ -80,7 +81,7 @@ public function mount($datasProject)
|
|||
|
||||
foreach ($receiveEquipmentsProject as $equipment) {
|
||||
// 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
|
||||
$elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique();
|
||||
|
|
@ -99,13 +100,22 @@ public function mount($datasProject)
|
|||
}
|
||||
$this->receiveElementalTasksAll = $elementalTasksCountsAll;
|
||||
|
||||
|
||||
// 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');
|
||||
|
||||
$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 = [];
|
||||
|
||||
foreach ($elementalTasksCount1 as $taskId => $count) {
|
||||
foreach ($tasksCount as $taskId => $count) {
|
||||
$task = ElementalTasks::find($taskId);
|
||||
if ($task) {
|
||||
$newArray[$task->elemental_tasks_code] = $count;
|
||||
|
|
@ -128,14 +138,13 @@ public function mount($datasProject)
|
|||
|
||||
|
||||
// Criar o contador para receber o valor total.
|
||||
$this->countElementalTasksAll =array_sum($this->receiveElementalTasksAll);
|
||||
$this->countElementalTasksAll = array_sum($this->receiveElementalTasksAll);
|
||||
|
||||
|
||||
$this->lastUpdated = now()->format('Y-m-d H:i');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function refreshDataEquipments($datasProject)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,20 +22,24 @@ public function equipment()
|
|||
return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id');
|
||||
}
|
||||
|
||||
public function equipmentWorkHistory(){
|
||||
return $this->belongsTo(EquipmentWorkHistory::class,'equipmentWorkHistorys_id','equipmentWorkHistorys_id');
|
||||
public function equipmentWorkHistory()
|
||||
{
|
||||
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||
}
|
||||
|
||||
public function elementalTask()
|
||||
{
|
||||
return $this->belongsTo(ElementalTasks::class,'elemental_tasks_id','elemental_tasks_id');
|
||||
return $this->belongsTo(ElementalTasks::class, 'elemental_tasks_id', 'elemental_tasks_id');
|
||||
}
|
||||
|
||||
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');
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,12 @@
|
|||
</div>
|
||||
|
||||
<div class="row text-center">
|
||||
<div class="col-sm">
|
||||
<div class="col-sm-6">
|
||||
<h6>Equipamentos da Obra</h6>
|
||||
<p style="color:gray; font-size:13px">Total de ações para concluir todos os equipamentos da obra.</p>
|
||||
<canvas id="myPieChart"></canvas>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="col-sm-6">
|
||||
<h6>Equivalente de equipamentos da Obra</h6>
|
||||
<p style="color:gray; font-size:13px">Total de equipamentos e os seus estados actuais.</p>
|
||||
<canvas id="myPieChart1"></canvas>
|
||||
|
|
|
|||
|
|
@ -18,110 +18,170 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row text-center">
|
||||
<div class="col-sm">
|
||||
{{-- <div class="row text-center">
|
||||
<div class="col-sm-6">
|
||||
<h6>Quantidade Tarefas Concluidas</h6>
|
||||
<p style="color:gray; font-size:13px">Total de acções já realizadas de acordo com a tarefa.</p>
|
||||
<canvas id="myPieChart2" width="50" height="50"></canvas>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="col-sm-6">
|
||||
<h6>Quantidade tarefas Acumuladas</h6>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
<script>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<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 grafico2 = document.getElementById('myPieChart2').getContext('2d');
|
||||
|
||||
var labels = Object.keys(elementalTasksCount);
|
||||
var data = Object.values(elementalTasksCount);
|
||||
|
||||
var myPieChart2 = new Chart(grafico2, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
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
|
||||
var elementalTasksCountAll = @json($receiveElementalTasksAll);
|
||||
|
||||
var grafico3 = document.getElementById('myPieChart3').getContext('2d');
|
||||
|
||||
// Inicializa as variáveis para os dados concluídos e restantes
|
||||
var dataConcluidas = [];
|
||||
var dataRestantes = [];
|
||||
var labels = Object.keys(elementalTasksCountAll);
|
||||
var data = Object.values(elementalTasksCountAll);
|
||||
|
||||
var myPieChart3 = new Chart(grafico3, {
|
||||
// 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];
|
||||
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
|
||||
window.stackedBarChartInstance = new Chart(canvas, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels.map(label => label),
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: 'Total de Acções da Obra"',
|
||||
data: data,
|
||||
backgroundColor: [
|
||||
'rgb(117,210,240)', //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
|
||||
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: {
|
||||
animation: false,
|
||||
scales: {
|
||||
x: {
|
||||
stacked: true
|
||||
},
|
||||
y: {
|
||||
stacked: true
|
||||
}
|
||||
},
|
||||
plugins: {
|
||||
legend: {
|
||||
display: false
|
||||
display: true
|
||||
},
|
||||
tooltip: {
|
||||
enabled: false
|
||||
enabled: true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</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>
|
||||
});
|
||||
</script>
|
||||
|
||||
{{-- Scrip de atualizacao da tabela --}}
|
||||
<script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{{-- Scrip de atualizacao da tabela --}}
|
||||
{{-- <script>
|
||||
window.addEventListener('refreshData', event => {
|
||||
|
||||
var data = event.detail[0];
|
||||
|
|
@ -201,10 +261,10 @@
|
|||
},
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script> --}}
|
||||
|
||||
{{-- Script de Gradico em porcentagem , para proxima implementacao e ADD+ Esforco --}}
|
||||
{{-- <script>
|
||||
{{-- Script de Gradico em porcentagem , para proxima implementacao e ADD+ Esforco --}}
|
||||
{{-- <script>
|
||||
window.addEventListener('refreshPercentageElementalTasks', event => {
|
||||
var data = event.detail[0];
|
||||
// Tarefas ja feitas
|
||||
|
|
|
|||
|
|
@ -699,33 +699,28 @@ class="form-control card_inputs" id="isolationEquipment"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<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>
|
||||
<span style="color:red;"">*</span>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="tag"
|
||||
class="form-control card_inputs" id="equipmentTag"
|
||||
placeholder="Tag..." aria-label="Tag Equipment"
|
||||
aria-describedby="form-tagEquipment" required>
|
||||
<label>Tag <span class="required">*</span></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<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"
|
||||
style="color: #00B0EA;"></i>
|
||||
<span style="color:red;"">*</span>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="equipmentDescription"
|
||||
class="form-control card_inputs" id="equipmentDescription"
|
||||
placeholder="Descrição Equipamento..."
|
||||
aria-label="equipmentDescription"
|
||||
aria-describedby="form-equipmentDescription" required>
|
||||
<label>Descrição Equipamento <span
|
||||
class="required">*</span></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -735,45 +730,36 @@ class="required">*</span></label>
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="serialNumberEquipment"
|
||||
class="form-control card_inputs" id="equipmentSerialNumber"
|
||||
placeholder="Número de série"
|
||||
aria-label="Serial Number Equipment"
|
||||
aria-describedby="form-serialNumberEquipment">
|
||||
<label>Número de série </label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="equipmentBrand"
|
||||
class="form-control card_inputs" id="equipmentBrand"
|
||||
placeholder="Modelo" aria-label="Marca Equipamento"
|
||||
placeholder="Marca" aria-label="Marca Equipamento"
|
||||
aria-describedby="form-equipmentBrand">
|
||||
<label>Marca</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="equipmentModel"
|
||||
class="form-control card_inputs" id="equipmentModel"
|
||||
placeholder="Modelo" aria-label="Modelo Equipamento"
|
||||
aria-describedby="form-equipmentModel">
|
||||
<label>Modelo</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -783,46 +769,37 @@ class="form-control card_inputs" id="equipmentModel"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="dimension"
|
||||
class="form-control card_inputs" id="dimension"
|
||||
placeholder="Dimensão" aria-label="Dimensao Equipamento"
|
||||
aria-describedby="form-dimension">
|
||||
<label>Dimensão</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="rating"
|
||||
class="form-control card_inputs" id="rating"
|
||||
placeholder="Rating..." aria-label="Rating Equipamento"
|
||||
aria-describedby="form-rating">
|
||||
<label>Rating</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-dim_certa">
|
||||
<i class="fa-sharp fa-regular fa-square-poll-vertical"></i>
|
||||
<span class="input-group-text" id="form-dim_certa" data-toggle="tooltip" title="Dim certa">
|
||||
<i class="fa-solid fa-ruler-vertical" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="dim_certa"
|
||||
class="form-control card_inputs" id="dim_certa"
|
||||
placeholder="Dim certa..." aria-label="Dim certa Equipamento"
|
||||
aria-describedby="form-dim_certa">
|
||||
<label>Dim certa</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -832,44 +809,35 @@ class="form-control card_inputs" id="dim_certa"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-main_equipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-main_equipment" data-toggle="tooltip" title="Main Equipment">
|
||||
<i class="fa-solid fa-sliders" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="main_equipment"
|
||||
class="form-control card_inputs" id="main_equipment"
|
||||
placeholder="Main Equipment" aria-label="Main Equipment"
|
||||
aria-describedby="form-main_equipment">
|
||||
<label>Main Equipment</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-P_IidEquipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-P_IidEquipment" data-toggle="tooltip" title="P&ID">
|
||||
<i class="fa-solid fa-map-location-dot" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="p&id"
|
||||
class="form-control card_inputs" id="p&id"
|
||||
placeholder="P&ID" aria-label="P&ID"
|
||||
aria-describedby="form-P_IidEquipment">
|
||||
<label>P&ID</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-NumberSapEquipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-NumberSapEquipment" data-toggle="tooltip" title="Nº SAP">
|
||||
<i class="fa-solid fa-hashtag" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="sap_number"
|
||||
class="form-control card_inputs" id="sap_number"
|
||||
placeholder="Nº SAP" aria-label="Numero SAP Equipamento"
|
||||
aria-describedby="form-NumberSapEquipment">
|
||||
<label>Nº SAP</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -879,44 +847,36 @@ class="form-control card_inputs" id="sap_number"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-materialEquipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-materialEquipment" data-toggle="tooltip" title="Material">
|
||||
<i class="fa-brands fa-codepen" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="material"
|
||||
class="form-control card_inputs" id="material"
|
||||
placeholder="Material" aria-label="Material Equipamento"
|
||||
aria-describedby="form-materialEquipment">
|
||||
<label>Material</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-manufacturerEquipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-manufacturerEquipment" data-toggle="tooltip" title="Fabricante">
|
||||
<i class="fa-solid fa-building" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
|
||||
<input type="text" name="manufacturer"
|
||||
class="form-control card_inputs" id="manufacturerEquipment"
|
||||
placeholder="Fabricante" aria-label="Fabricante Equipamento"
|
||||
aria-describedby="form-manufacturerEquipment">
|
||||
<label>Fabricante</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="form-isolationEquipment">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" id="form-isolationEquipment" data-toggle="tooltip" title="Isolamento">
|
||||
<i class="fa-solid fa-lock" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="isolation"
|
||||
class="form-control card_inputs" id="isolation"
|
||||
placeholder="Isolamento" aria-label="Isolamento Equipamento"
|
||||
aria-describedby="form-isolationEquipment">
|
||||
<label>Isolamento</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -926,46 +886,37 @@ class="form-control card_inputs" id="isolation"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="actuatorManufacturer"
|
||||
class="form-control card_inputs" id="actuatorManufacturer"
|
||||
placeholder="Fabricante do atuador"
|
||||
aria-label="Fabricante do Atuador"
|
||||
aria-describedby="form-actuatorManufacturer">
|
||||
<label>Fabricante do atuador</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="ActuatorModel"
|
||||
class="form-control card_inputs" id="ActuatorModel"
|
||||
placeholder="Modelo do atuador" aria-label="Modelo do atuador"
|
||||
aria-describedby="form-ActuatorModel">
|
||||
<label>Modelo do atuador</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="actuatorSerialNumber"
|
||||
class="form-control card_inputs" id="actuatorSerialNumber"
|
||||
placeholder="N.º de série do atuador"
|
||||
aria-label="Numero de série do atuado"
|
||||
aria-describedby="form-actuatorSerialNumber">
|
||||
<label>N.º de série do atuador</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -975,32 +926,26 @@ class="form-control card_inputs" id="actuatorSerialNumber"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="PositionerManufacturer"
|
||||
class="form-control card_inputs" id="PositionerManufacturer"
|
||||
placeholder="Fabricante do posicionador"
|
||||
aria-label="Fabricante do posicionador"
|
||||
aria-describedby="form-PositionerManufacturer">
|
||||
<label>Fabricante do posicionador</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<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>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<input type="text" name="PositionerSerialNumber"
|
||||
class="form-control card_inputs" id="PositionerSerialNumber"
|
||||
placeholder="N.º de série do posicionador"
|
||||
aria-label="Numero de série do posicionador"
|
||||
aria-describedby="form-PositionerSerialNumber">
|
||||
<label>N.º de série do posicionador</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1010,30 +955,24 @@ class="form-control card_inputs" id="PositionerSerialNumber"
|
|||
<div class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" data-toggle="tooltip" title="Andaime">
|
||||
<i class="fa-solid fa-stairs" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<select class="form-control card_inputs" name="scaffold">
|
||||
<option value="Sim">Sim</option>
|
||||
<option value="Nao" selected>Nao</option>
|
||||
</select>
|
||||
<label>Andaime?</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fa-solid fa-cubes" style="color: #00B0EA;"></i>
|
||||
<span class="input-group-text" data-toggle="tooltip" title="Grua">
|
||||
<i class="fa-solid fa-truck-arrow-right" style="color: #00B0EA;"></i>
|
||||
</span>
|
||||
<div class="has-float-label">
|
||||
<select class="form-control card_inputs" name="crane">
|
||||
<option value="Sim">Sim</option>
|
||||
<option value="Nao" selected>Nao</option>
|
||||
</select>
|
||||
<label>Grua?</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -87,8 +87,9 @@
|
|||
<label>{{ __('messages.createProject.select_company.contracting_company') }} <b
|
||||
style="color:red">*</b></label>
|
||||
<select class="form-control" name="user_id" id="company_select">
|
||||
<option>{{ __('messages.createProject.select_plant.plant') }} ...</option>
|
||||
<option value="new_company">Criar Empresa ...</option>
|
||||
{{-- <option>{{ __('messages.createProject.select_plant.plant') }} ...</option> --}}
|
||||
<option value="#">Selecione Uma Empresa …</option>
|
||||
{{-- <option value="new_company">Criar Empresa …</option> --}}
|
||||
@foreach ($companies as $company)
|
||||
<option value="{{ $company->user_id }}">{{ $company->user_name }}</option>
|
||||
@endforeach
|
||||
|
|
@ -99,23 +100,23 @@
|
|||
<div class="form-group col-sm" id="installationField" hidden>
|
||||
<label>{{ __('messages.createProject.select_plant.plant') }} <b
|
||||
style="color:red">*</b></label>
|
||||
<select class="form-control" name="installation_id" id="installationSelect"
|
||||
required>
|
||||
|
||||
<select class="form-control" name="installation_id" id="installationSelect" required>
|
||||
<!-- As opções de instalação serão preenchidas dinamicamente -->
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div> <!-- /Row -->
|
||||
|
||||
{{-- Criar uma nova instalacao / Empresa --}}
|
||||
<!-- Criar uma nova instalacao / Empresa -->
|
||||
<div class="row" id="new_company_div">
|
||||
{{-- Vai ser a criacao do Projecto --}}
|
||||
<div class="form-group col-sm" id="new_company_input">
|
||||
<!-- Vai ser a criacao do Projecto -->
|
||||
|
||||
{{-- 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>
|
||||
<input type="text" class="form-control" name="new_company"
|
||||
placeholder="Nova Empresa…">
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
<!-- Selecionar ou criar instalacoes -->
|
||||
<div class="form-group col-sm">
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
<!-- Main content -->
|
||||
<section class="content">
|
||||
|
||||
{{-- Foreach para criar varios qrcodes para os equipamentos --}}
|
||||
{{-- @foreach ($equipmentsProjects as $equipment)
|
||||
<div class="print-container">
|
||||
|
|
@ -92,15 +93,15 @@
|
|||
<form>
|
||||
<div class="row">
|
||||
<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>
|
||||
</div>
|
||||
<div class="col-sm-6" id="BotaoArticulado">
|
||||
<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 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>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -154,13 +155,21 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
|
|||
</div>
|
||||
<!-- /.card-body -->
|
||||
|
||||
<div class="card-footer">
|
||||
{{-- <div class="card-footer">
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-test" data-toggle="modal"
|
||||
data-target="#ModalTransferForArticulated">
|
||||
Editar
|
||||
</button>
|
||||
</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>
|
||||
<!-- /.card -->
|
||||
|
|
@ -189,7 +198,7 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
|
|||
<div class="table-responsive">
|
||||
<div class="row text-center">
|
||||
|
||||
<div class="form-group col-sm-3">
|
||||
<div class="form-group col-sm">
|
||||
<label>Tipo de Equipamento </label>
|
||||
<select id="tipo_valvulasList" name="equipmentTypeId"
|
||||
class="form-control">
|
||||
|
|
@ -201,7 +210,7 @@ class="form-control">
|
|||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div class="col-sm">
|
||||
<div class="form-group">
|
||||
<label> Fabricas </label>
|
||||
<select id="UnitsList" class="form-control">
|
||||
|
|
@ -214,7 +223,7 @@ class="form-control">
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div class="col-sm">
|
||||
<div class="form-group">
|
||||
<label>Âmbitos </label>
|
||||
<select class="form-control" name="EquipmentAmbit"
|
||||
|
|
@ -224,7 +233,7 @@ class="form-control">
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
{{-- <div class="col-sm-3">
|
||||
<div class="form-group">
|
||||
<label>Inspeção de Equipamentos </label>
|
||||
<select id="inspecValvula" class="form-control">
|
||||
|
|
@ -233,7 +242,7 @@ class="form-control">
|
|||
<option value="Nao">Nao </option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
</div>
|
||||
<br>
|
||||
|
|
@ -261,7 +270,7 @@ class="form-control">
|
|||
<th>Tipo Equipamento</th>
|
||||
<th>Fabrica</th>
|
||||
<th>Âmbito</th>
|
||||
<th>Acao</th>
|
||||
<th>Imprimir QR</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -270,7 +279,9 @@ class="form-control">
|
|||
<td>{{ $equipment->equipment_tag }}</td>
|
||||
<td>{{ $equipment->equipment_type_id }}</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><a href="#" data-toggle="modal"
|
||||
data-target="#yourModalId-{{ $equipment->equipment_id }}"
|
||||
|
|
@ -278,7 +289,7 @@ class="form-control">
|
|||
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>
|
||||
{{-- Por algum motivo se tirar esta modal, ele nao encontra o qrcode do componente ?????????????? WHY????????? --}}
|
||||
<div class="modal fade"
|
||||
|
|
@ -373,13 +384,13 @@ function printCard() {
|
|||
<!--/table obra-->
|
||||
</div>
|
||||
<!-- /.card-body -->
|
||||
|
||||
<div class="card-footer">
|
||||
{{-- Botao para criar os Multiplos Qrcodes nas Folhas --}}
|
||||
{{-- <div class="float-left">
|
||||
<!-- Botao para criar os Multiplos Qrcodes nas Folhas -->
|
||||
<!-- <div class="float-left">
|
||||
<button class="btn btn-outline-secondary " onclick="printCard()">Imprimir Códigos
|
||||
QR</button>
|
||||
|
||||
</div> --}}
|
||||
</div> -->
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal"
|
||||
data-target="#ModalTransferForArticulated">
|
||||
|
|
@ -387,6 +398,7 @@ function printCard() {
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- ./card -->
|
||||
</div>
|
||||
|
|
@ -458,8 +470,8 @@ class="table table-bordered table-striped">
|
|||
<thead>
|
||||
<tr>
|
||||
<th>Postos de Trabalho</th>
|
||||
<th>Nome do Posto de Trabalho</th>
|
||||
<th>Tarefas Elementares</th>
|
||||
<th>Tarefas Complementares</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('processStep1') }}" id="idDoFormulario">
|
||||
<form method="POST" action="{{ route('EditprocessStep1') }}" id="idDoFormulario">
|
||||
|
||||
@csrf
|
||||
|
||||
|
|
@ -176,7 +176,7 @@ class="form-control float-right">
|
|||
</div>
|
||||
</div>
|
||||
{{-- /.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>
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -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>
|
||||
|
||||
|
|
@ -2091,323 +2091,7 @@
|
|||
</section>
|
||||
@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 --}}
|
||||
@if ($task_todo->elemental_tasks_id == 8)
|
||||
|
|
@ -2602,290 +2286,7 @@
|
|||
</section>
|
||||
@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 --}}
|
||||
@if ($task_todo->elemental_tasks_id == 11)
|
||||
|
|
@ -5578,7 +4979,6 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
{{-- TE15 - Empancar --}}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -41,6 +41,11 @@
|
|||
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('showAllClientsForProjectReports', [ProjectoDatacontroller::class, 'showAllClientsForProjectReports'])->name('showAllClientsForProjectReports');
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user