create components, portfolio and elemental tasks, update datatabels , for works in execution
3
.env
|
|
@ -11,6 +11,7 @@ LOG_LEVEL=debug
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
|
|
||||||
# DB_HOST=127.0.0.1
|
# DB_HOST=127.0.0.1
|
||||||
# DB_DATABASE=ispt_4.0
|
# DB_DATABASE=ispt_4.0
|
||||||
# DB_USERNAME=root
|
# DB_USERNAME=root
|
||||||
|
|
@ -18,7 +19,7 @@ DB_PORT=3306
|
||||||
|
|
||||||
# Alteracoes para funcionar com o servidor, porem não funciona na firma
|
# Alteracoes para funcionar com o servidor, porem não funciona na firma
|
||||||
DB_HOST=ispt-innovation.com
|
DB_HOST=ispt-innovation.com
|
||||||
DB_DATABASE=ispt40_version01_BK
|
DB_DATABASE=ispt40_version01
|
||||||
DB_USERNAME=ispt40
|
DB_USERNAME=ispt40
|
||||||
DB_PASSWORD=qu3ro3ntr@r
|
DB_PASSWORD=qu3ro3ntr@r
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public function changeStateProject($projectId)
|
||||||
$detailsPrpject->order_project = 3;
|
$detailsPrpject->order_project = 3;
|
||||||
$detailsPrpject->save();
|
$detailsPrpject->save();
|
||||||
|
|
||||||
// Redireciona para a rota 'home' após alterar o estado para Execussao
|
// Redireciona para a rota 'home' após alterar o estado para execução
|
||||||
return redirect()->route('home');
|
return redirect()->route('home');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -411,12 +411,16 @@ public function receiveUnitsForExcelTemplate($numberProject)
|
||||||
// Dados das Fabricas
|
// Dados das Fabricas
|
||||||
$receveUnits = Unit::where('plant_id', $recevePlant->plant_id)->get();
|
$receveUnits = Unit::where('plant_id', $recevePlant->plant_id)->get();
|
||||||
|
|
||||||
// dd($receveUnits);
|
|
||||||
$filePath = public_path('templateExcel/Valves_Template.xlsx');
|
$filePath = public_path('templateExcel/Valves_Template.xlsx');
|
||||||
// Load the spreadsheet
|
// Load the spreadsheet
|
||||||
$spreadsheet = IOFactory::load($filePath);
|
$spreadsheet = IOFactory::load($filePath);
|
||||||
// Get the second sheet
|
// Get the second sheet
|
||||||
$sheet = $spreadsheet->getSheet(1); // Sheet index starts from 0
|
$sheet = $spreadsheet->getSheet(1); // Sheet index starts from 0
|
||||||
|
|
||||||
|
// Define o valor de $numberProject na célula E2
|
||||||
|
$sheet->setCellValue('E2', $numberProject);
|
||||||
|
|
||||||
$row = 2; // Row number where you want to start inserting data
|
$row = 2; // Row number where you want to start inserting data
|
||||||
foreach ($receveUnits as $unit) {
|
foreach ($receveUnits as $unit) {
|
||||||
// Set value for column D
|
// Set value for column D
|
||||||
|
|
@ -537,7 +541,7 @@ public function finishCreatingProject($numberProject)
|
||||||
return redirect()->back()->with('errors', $allMissingTasks);
|
return redirect()->back()->with('errors', $allMissingTasks);
|
||||||
|
|
||||||
} else if ($receiveDetailsProject->order_project == 5) {
|
} else if ($receiveDetailsProject->order_project == 5) {
|
||||||
// Se for igual a 5 significa que forem adicionados apenas equipamentos extras e sendo assim precisa voltar para a Obra em execussao
|
// Se for igual a 5 significa que forem adicionados apenas equipamentos extras e sendo assim precisa voltar para a Obra Em execução
|
||||||
$receiveDetailsProject->order_project = 3;
|
$receiveDetailsProject->order_project = 3;
|
||||||
$receiveDetailsProject->save();
|
$receiveDetailsProject->save();
|
||||||
return redirect()->route('home');
|
return redirect()->route('home');
|
||||||
|
|
@ -613,6 +617,9 @@ public function removeProjectEquipment(Request $request)
|
||||||
}
|
}
|
||||||
public function EditEquipment(Request $request)
|
public function EditEquipment(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// dd($request);
|
||||||
|
|
||||||
// Localiza o equipment pelo numberProject
|
// Localiza o equipment pelo numberProject
|
||||||
$dataEquipment = Equipment::where('equipment_id', $request->equipmentID)->first();
|
$dataEquipment = Equipment::where('equipment_id', $request->equipmentID)->first();
|
||||||
|
|
||||||
|
|
@ -669,6 +676,7 @@ public function EditEquipment(Request $request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()->with('success', 'Equipamento Atualizado!');
|
return back()->with('success', 'Equipamento Atualizado!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1213,8 +1221,7 @@ public function processStep2(Request $request)
|
||||||
{
|
{
|
||||||
// Valide e processe os dados do formulário
|
// Valide e processe os dados do formulário
|
||||||
$file = $request->file('documento');
|
$file = $request->file('documento');
|
||||||
// Criar o array para adicionar o HashMap
|
|
||||||
// $uniqueRowsHashmap = [];
|
|
||||||
// Recebe a id do Projecto criado
|
// Recebe a id do Projecto criado
|
||||||
$company_projects_id = $request->numberProject;
|
$company_projects_id = $request->numberProject;
|
||||||
// Recebe mais detalhes da Obra Atual.
|
// Recebe mais detalhes da Obra Atual.
|
||||||
|
|
@ -1230,6 +1237,38 @@ public function processStep2(Request $request)
|
||||||
$originalFileName = $file->getClientOriginalName();
|
$originalFileName = $file->getClientOriginalName();
|
||||||
// Carregue o arquivo Excel
|
// Carregue o arquivo Excel
|
||||||
$spreadsheet = IOFactory::load($file->path());
|
$spreadsheet = IOFactory::load($file->path());
|
||||||
|
|
||||||
|
// Verifica se existe uma sheet chamada 'list'
|
||||||
|
if ($spreadsheet->sheetNameExists('lists')) {
|
||||||
|
$listSheet = $spreadsheet->getSheetByName('lists');
|
||||||
|
|
||||||
|
// Verifica o valor da célula E2 na sheet 'list'
|
||||||
|
$sheetValueE2 = $listSheet->getCell('E2')->getValue();
|
||||||
|
|
||||||
|
// Compara com o valor de $request->numberProject
|
||||||
|
if ($sheetValueE2 != $request->numberProject) {
|
||||||
|
|
||||||
|
// Decide a rota de redirecionamento com base em 'order_project' se osnumeros da Obra nao forem o mesmo
|
||||||
|
if ($detailsCompanyProject->order_project == 5) {
|
||||||
|
return redirect()->route('changeFromExecutionToPlanning', ['projectID' => $request->numberProject])
|
||||||
|
->with('danger', 'Arquivo ignorado, Template de outra Obra');
|
||||||
|
} else {
|
||||||
|
return redirect()->route('articulated_2', ['projectID' => $request->numberProject])
|
||||||
|
->with('danger', 'Arquivo ignorado, Template de outra Obra');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Decide a rota de redirecionamento se a sheet 'lists' não existir
|
||||||
|
if ($detailsCompanyProject->order_project == 5) {
|
||||||
|
return redirect()->route('changeFromExecutionToPlanning', ['projectID' => $request->numberProject])
|
||||||
|
->with('danger', 'Arquivo ignorado, por não ser compatível com a template 4.0');
|
||||||
|
} else {
|
||||||
|
return redirect()->route('articulated_2', ['projectID' => $request->numberProject])
|
||||||
|
->with('danger', 'Arquivo ignorado, por não ser compatível com a template 4.0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Obtenha a primeira planilha, onde fica os nomes chaves para associar as tabelas : 'general_attributes_equipaments' ,'equipments' e 'equipmentWorkHistorys'
|
// Obtenha a primeira planilha, onde fica os nomes chaves para associar as tabelas : 'general_attributes_equipaments' ,'equipments' e 'equipmentWorkHistorys'
|
||||||
$worksheet = $spreadsheet->getSheet(0);
|
$worksheet = $spreadsheet->getSheet(0);
|
||||||
// Transforme os dados da planilha em um array
|
// Transforme os dados da planilha em um array
|
||||||
|
|
@ -1254,7 +1293,7 @@ public function processStep2(Request $request)
|
||||||
$documentType = $parts[2]; // 98
|
$documentType = $parts[2]; // 98
|
||||||
$timestamp = $parts[3]; // 2024-01-14_14-33
|
$timestamp = $parts[3]; // 2024-01-14_14-33
|
||||||
|
|
||||||
|
//Funcao para padronizar as respostas, como eliminar espacos em branco e reduzir o texto sempre para minisculas
|
||||||
function normalize($value)
|
function normalize($value)
|
||||||
{
|
{
|
||||||
// Remove espaços em branco no início e no fim da string
|
// Remove espaços em branco no início e no fim da string
|
||||||
|
|
@ -1296,7 +1335,6 @@ function normalize($value)
|
||||||
// Em cada um das linhas horizontais do excel, vai se guardar a 'key' vinculada ao valor do campo preenchido ou seja a 'key' vai ter o mesmo nome de um dos dados da tabela 'general_attributes_equipaments' na coluna : general_attributes_equipment_description, assim sendo mais facil implementar na tabela : specific_attributes_equipament_types
|
// Em cada um das linhas horizontais do excel, vai se guardar a 'key' vinculada ao valor do campo preenchido ou seja a 'key' vai ter o mesmo nome de um dos dados da tabela 'general_attributes_equipaments' na coluna : general_attributes_equipment_description, assim sendo mais facil implementar na tabela : specific_attributes_equipament_types
|
||||||
$joinArrays = array_combine($columnNames, $dataLines);
|
$joinArrays = array_combine($columnNames, $dataLines);
|
||||||
|
|
||||||
|
|
||||||
// vai guardar todos os campos de possiveis novos equipamentos, cada um em um array para multiplos inserts, na base de dados
|
// vai guardar todos os campos de possiveis novos equipamentos, cada um em um array para multiplos inserts, na base de dados
|
||||||
$datas = array_filter($joinArrays, function ($chave) {
|
$datas = array_filter($joinArrays, function ($chave) {
|
||||||
return !empty($chave);
|
return !empty($chave);
|
||||||
|
|
@ -1493,7 +1531,7 @@ function normalize($value)
|
||||||
// Caso a linha nao se enquadre em nenhuma das verificacoes anteriores, ele sera considerado um equipamento novo.
|
// Caso a linha nao se enquadre em nenhuma das verificacoes anteriores, ele sera considerado um equipamento novo.
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
//Novo equipamento
|
//--------- Novo equipamento
|
||||||
$newEquipament = new Equipment;
|
$newEquipament = new Equipment;
|
||||||
$newEquipament->unit_id = $detailsUnit->unit_id;
|
$newEquipament->unit_id = $detailsUnit->unit_id;
|
||||||
$newEquipament->equipment_type_id = $equipmentType->equipment_type_id;
|
$newEquipament->equipment_type_id = $equipmentType->equipment_type_id;
|
||||||
|
|
@ -1512,7 +1550,9 @@ function normalize($value)
|
||||||
//Criar 'specific_attributes_equipament_types' de acordo com o escrito, na linha do excel
|
//Criar 'specific_attributes_equipament_types' de acordo com o escrito, na linha do excel
|
||||||
$generalAttributes = GeneralAttributesEquipment::all();
|
$generalAttributes = GeneralAttributesEquipment::all();
|
||||||
|
|
||||||
|
|
||||||
foreach ($generalAttributes as $generalAttribute) {
|
foreach ($generalAttributes as $generalAttribute) {
|
||||||
|
|
||||||
// Verifica se a chave existe em $datas
|
// Verifica se a chave existe em $datas
|
||||||
if (isset($datas[$generalAttribute->general_attributes_equipment_description])) {
|
if (isset($datas[$generalAttribute->general_attributes_equipment_description])) {
|
||||||
$specificAttribute = new SpecificAttributesEquipmentType;
|
$specificAttribute = new SpecificAttributesEquipmentType;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\EquipmentWorkHistory;
|
use App\Models\EquipmentWorkHistory;
|
||||||
|
use App\Models\OrderEquipmentTasks;
|
||||||
use App\Models\PendingEquipment;
|
use App\Models\PendingEquipment;
|
||||||
use App\Models\Plant;
|
use App\Models\Plant;
|
||||||
use App\Models\ProjectExcelLog;
|
use App\Models\ProjectExcelLog;
|
||||||
|
|
@ -598,7 +599,7 @@ public function receiveExecutionProject($ProjectId)
|
||||||
return redirect()->route('home');
|
return redirect()->route('home');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//Caso nem todos os equipamento tenham-se concluidos, deve voltar a pagina de Execussao normalmente
|
//Caso nem todos os equipamento tenham-se concluidos, deve voltar a pagina de execução normalmente
|
||||||
// Retornando a view com os dados necessários
|
// Retornando a view com os dados necessários
|
||||||
|
|
||||||
return view('projectsClients/executionProjectNew', [
|
return view('projectsClients/executionProjectNew', [
|
||||||
|
|
@ -734,69 +735,52 @@ public function showQrcodesInProject($projectNumber)
|
||||||
->with('equipmentsProjects', $equipmentsProjects);
|
->with('equipmentsProjects', $equipmentsProjects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public function receiveDetailsEquipmentsProject(Request $request)
|
|
||||||
// {
|
|
||||||
// $numberProject = $request->input('receiveNumberProject');
|
|
||||||
// $tableType = $request->input('tableType'); // Captura o tipo de tabela
|
|
||||||
|
|
||||||
// // Para
|
|
||||||
// if ($tableType == 'pending') {
|
|
||||||
|
|
||||||
// $initialQuery = Equipment::where('company_projects_id', $numberProject);
|
|
||||||
|
|
||||||
// } else {
|
|
||||||
// // Lógica para a tabela 'normal'
|
|
||||||
// $initialQuery = Equipment::where('company_projects_id', $numberProject);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $query = $initialQuery->get(); // Certifique-se de usar get() para retornar uma coleção
|
|
||||||
|
|
||||||
// return DataTables::of($query)
|
|
||||||
// ->addColumn('equipment_type_name', function ($query) {
|
|
||||||
// // Retorna 'equipment_type_name' do relacionamento 'equipmentType'
|
|
||||||
// return $query->equipmentType ? $query->equipmentType->equipment_type_name : 'N/A';
|
|
||||||
// })
|
|
||||||
// ->addColumn('unit_name', function ($query) {
|
|
||||||
// // Retorna 'unit_name' do relacionamento 'unit'
|
|
||||||
// return $query->unit ? $query->unit->unit_name : 'N/A';
|
|
||||||
// })
|
|
||||||
// ->addColumn('ambit_name', function ($query) {
|
|
||||||
// $firstEquipmentWorkHistory = $query->equipmentWorkHistory->first();
|
|
||||||
// return $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description;
|
|
||||||
// })
|
|
||||||
// ->make(true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
public function receiveDetailsEquipmentsProject(Request $request)
|
public function receiveDetailsEquipmentsProject(Request $request)
|
||||||
{
|
{
|
||||||
$numberProject = $request->input('receiveNumberProject');
|
$numberProject = $request->input('receiveNumberProject');
|
||||||
$tableType = $request->input('tableType'); // Captura o tipo de tabela
|
$tableType = $request->input('tableType'); // Captura o tipo de tabela
|
||||||
|
// query inicial dependendo se estamos buscando equipamentos pendentes ou normais.
|
||||||
// Ajusta a query inicial dependendo se estamos buscando equipamentos pendentes ou normais.
|
|
||||||
$initialQuery = Equipment::where('company_projects_id', $numberProject)
|
$initialQuery = Equipment::where('company_projects_id', $numberProject)
|
||||||
->whereHas('equipmentWorkHistory', function ($query) use ($tableType) {
|
->whereHas('equipmentWorkHistory', function ($query) use ($tableType) {
|
||||||
//Para a tabela com status = pending' deve ir equipamentos com status = 1 pois estao pendentes para Aprovar
|
// Para a tabela 'pending' devem ir equipamentos com status = 1 ou 4 (por rever) pois estão pendentes para aprovação
|
||||||
// Para os restantes equipamentos vao para a tabela que lista os equipamentos da Obra,porem apenas os equipmentos com status = 0
|
|
||||||
//Equipamentos concluidos e aprovados,vao ter o status = 2 e servir apenas para visualizar
|
|
||||||
|
|
||||||
// Definir o status com base no tipo de tabela
|
|
||||||
if ($tableType === 'pending') {
|
if ($tableType === 'pending') {
|
||||||
$statuses = [1, 4]; // Equipamentos pendentes para aprovação
|
$statuses = [1, 4]; // Equipamentos pendentes para aprovação
|
||||||
$query->whereIn('equipment_status_project', $statuses);
|
$query->whereIn('equipment_status_project', $statuses);
|
||||||
} else if ($tableType === 'completed') {
|
}
|
||||||
|
// Para a tabela 'completed', apenas equipamentos concluídos e aprovados (status = 2)
|
||||||
|
else if ($tableType === 'completed') {
|
||||||
$status = 2; // Equipamentos concluídos e aprovados
|
$status = 2; // Equipamentos concluídos e aprovados
|
||||||
$query->where('equipment_status_project', $status);
|
$query->where('equipment_status_project', $status);
|
||||||
} else {
|
}
|
||||||
$status = 0; // Outros equipamentos em andamento (normal)
|
// Para as tabelas 'start' e 'execution', primeiro filtramos equipamentos em andamento (status = 0)
|
||||||
$query->where('equipment_status_project', $status);
|
else if (in_array($tableType, ['start', 'execution'])) {
|
||||||
|
$query->where('equipment_status_project', 0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$query = $initialQuery->get(); // Obtém a coleção de equipamentos com base nos critérios
|
// lógica para 'start' e 'execution' diretamente com a relação entre equipmentWorkHistory e controlEquipmentWorkstation
|
||||||
|
if ($tableType === 'start') {
|
||||||
|
// Equipamentos que ainda não iniciaram (sem registros no ControlEquipmentWorkstation)
|
||||||
|
$initialQuery->whereHas('equipmentWorkHistory', function ($query) {
|
||||||
|
$query->whereDoesntHave('controlEquipmentWorkstation', function ($subQuery) {
|
||||||
|
$subQuery->whereNotNull('equipmentWorkHistorys_id'); // Equipamentos que ainda não iniciaram
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else if ($tableType === 'execution') {
|
||||||
|
// Equipamentos já iniciados (com registros no ControlEquipmentWorkstation)
|
||||||
|
$initialQuery->whereHas('equipmentWorkHistory', function ($query) {
|
||||||
|
$query->whereHas('controlEquipmentWorkstation', function ($subQuery) {
|
||||||
|
$subQuery->whereNotNull('equipmentWorkHistorys_id'); // Equipamentos que já iniciaram
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = $initialQuery->get(); // Obtém a coleção de equipamentos com base nos critérios
|
||||||
return DataTables::of($query)
|
return DataTables::of($query)
|
||||||
|
->addColumn('ispt_number', function ($equipment) {
|
||||||
|
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
||||||
|
return $firstEquipmentWorkHistory ? $firstEquipmentWorkHistory->ispt_number : 'N/A';
|
||||||
|
})
|
||||||
->addColumn('equipment_type_name', function ($equipment) {
|
->addColumn('equipment_type_name', function ($equipment) {
|
||||||
// Retorna 'equipment_type_name' do relacionamento 'equipmentType'
|
// Retorna 'equipment_type_name' do relacionamento 'equipmentType'
|
||||||
return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A';
|
return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A';
|
||||||
|
|
@ -809,7 +793,6 @@ public function receiveDetailsEquipmentsProject(Request $request)
|
||||||
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
||||||
return $firstEquipmentWorkHistory ? $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description : 'N/A';
|
return $firstEquipmentWorkHistory ? $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description : 'N/A';
|
||||||
})
|
})
|
||||||
|
|
||||||
->addColumn('extra_equipment', function ($equipment) {
|
->addColumn('extra_equipment', function ($equipment) {
|
||||||
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
||||||
if ($firstEquipmentWorkHistory) {
|
if ($firstEquipmentWorkHistory) {
|
||||||
|
|
@ -818,14 +801,78 @@ public function receiveDetailsEquipmentsProject(Request $request)
|
||||||
return 'N/A'; // Retorna 'N/A' se não houver registros na relação equipmentWorkHistory
|
return 'N/A'; // Retorna 'N/A' se não houver registros na relação equipmentWorkHistory
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ->addColumn('status', function ($equipment) {
|
||||||
|
// // Pegue o primeiro equipmentWorkHistory do equipamento
|
||||||
|
// $firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
||||||
|
// if (!$firstEquipmentWorkHistory) {
|
||||||
|
// return 'N/A'; // Se não houver histórico de trabalho
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Pegue os valores de 'elemental_tasks_id' da tabela OrderEquipmentTasks com base no equipmentWorkHistorys_id
|
||||||
|
// $elementalTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $firstEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||||
|
// ->pluck('elemental_tasks_id')
|
||||||
|
// ->toArray(); // Armazena todos os elemental_tasks_id em um array
|
||||||
|
|
||||||
|
// // Se não houver tarefas elementares, retorna '0 / 0'
|
||||||
|
// if (empty($elementalTasks)) {
|
||||||
|
// return '0 / 0';
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Busque correspondências na tabela control_equipment_workstation com base nos mesmos 'elemental_tasks_id'
|
||||||
|
// $correspondencias = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $firstEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||||
|
// ->whereIn('elemental_tasks_id', $elementalTasks) // Verifica as correspondências
|
||||||
|
// ->count(); // Conta quantas correspondências existem
|
||||||
|
|
||||||
|
// // Total de tarefas é o número de 'elemental_tasks_id' que encontramos na tabela OrderEquipmentTasks
|
||||||
|
// $totalDeTarefas = count($elementalTasks);
|
||||||
|
|
||||||
|
// // Retorne a string com o formato 'contador de tarefas / total de tarefas'
|
||||||
|
// return $correspondencias . ' / ' . $totalDeTarefas;
|
||||||
|
// })
|
||||||
|
|
||||||
|
->addColumn('status', function ($equipment) {
|
||||||
|
// Pegue o primeiro equipmentWorkHistory do equipamento
|
||||||
|
$firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first();
|
||||||
|
if (!$firstEquipmentWorkHistory) {
|
||||||
|
return 'N/A'; // Se não houver histórico de trabalho
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pegue os valores de 'elemental_tasks_id' da tabela OrderEquipmentTasks com base no equipmentWorkHistorys_id
|
||||||
|
$elementalTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $firstEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||||
|
->pluck('elemental_tasks_id')
|
||||||
|
->toArray(); // Armazena todos os elemental_tasks_id em um array
|
||||||
|
|
||||||
|
// Se não houver tarefas elementares, retorna '0 / 0'
|
||||||
|
if (empty($elementalTasks)) {
|
||||||
|
return '0 / 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Busque correspondências na tabela control_equipment_workstation com base nos mesmos 'elemental_tasks_id',
|
||||||
|
// usando distinct para contar apenas valores únicos de 'elemental_tasks_id'
|
||||||
|
$correspondencias = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $firstEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||||
|
->whereIn('elemental_tasks_id', $elementalTasks) // Verifica as correspondências
|
||||||
|
->distinct('elemental_tasks_id') // Garante que só tarefas únicas sejam contadas
|
||||||
|
->count(); // Conta quantas correspondências existem
|
||||||
|
|
||||||
|
// Total de tarefas é o número de 'elemental_tasks_id' que encontramos na tabela OrderEquipmentTasks
|
||||||
|
$totalDeTarefas = count($elementalTasks);
|
||||||
|
|
||||||
|
// Retorne a string com o formato 'contador de tarefas / total de tarefas'
|
||||||
|
return $correspondencias . ' / ' . $totalDeTarefas;
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
->addColumn('action', function ($dataEquipment) use ($numberProject, $tableType) {
|
->addColumn('action', function ($dataEquipment) use ($numberProject, $tableType) {
|
||||||
$equipmentStatus = ($tableType === 'pending' ? 1 : ($tableType === 'completed' ? 2 : 0));
|
$equipmentStatus = ($tableType === 'pending' ? 1 : ($tableType === 'completed' ? 2 : 0));
|
||||||
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['equipmentStatus' => $equipmentStatus, 'projectID' => $numberProject, 'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
|
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['equipmentStatus' => $equipmentStatus, 'projectID' => $numberProject, 'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
|
||||||
return $actionBtn;
|
return $actionBtn;
|
||||||
})
|
})
|
||||||
|
|
||||||
->make(true);
|
->make(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
use Yajra\DataTables\Facades\DataTables;
|
use Yajra\DataTables\Facades\DataTables;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
use App\Models\Equipment;
|
use App\Models\Equipment;
|
||||||
use App\Models\Plant;
|
use App\Models\Plant;
|
||||||
|
|
@ -79,7 +80,7 @@ public function completedEquipmentInProject(Request $request)
|
||||||
OrderEquipmentTasks::whereIn('id', $tasksToDelete->pluck('id'))->delete();
|
OrderEquipmentTasks::whereIn('id', $tasksToDelete->pluck('id'))->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Voltar home da Obra em execussao
|
// Voltar home da Obra Em execução
|
||||||
return redirect()->route('ExecutionProject', ['projectID' => $equipmentHistoryDetails->company_projects_id])
|
return redirect()->route('ExecutionProject', ['projectID' => $equipmentHistoryDetails->company_projects_id])
|
||||||
->with('success', 'Equipamento ' . $equipmentHistoryDetails->equipment->equipment_tag . 'foi alterado para "Concluido"');
|
->with('success', 'Equipamento ' . $equipmentHistoryDetails->equipment->equipment_tag . 'foi alterado para "Concluido"');
|
||||||
|
|
||||||
|
|
@ -143,8 +144,8 @@ public function createPDFforcompletedEquipment($equipmentId)
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Caso não haja dados, defina datas nulas
|
// Caso não haja dados, defina datas nulas
|
||||||
$oldestDate = null;
|
$startDate = null;
|
||||||
$latestDate = null;
|
$endDate = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -181,7 +182,7 @@ public function createPDFforcompletedEquipment($equipmentId)
|
||||||
if ($tasksByAmbit->has($ambitId)) {
|
if ($tasksByAmbit->has($ambitId)) {
|
||||||
$tasksForAmbit = $tasksByAmbit->get($ambitId);
|
$tasksForAmbit = $tasksByAmbit->get($ambitId);
|
||||||
|
|
||||||
|
// Loop para associar a ultima tarefa feita de acordo com o ambito relacionado com ela.
|
||||||
foreach ($tasksForAmbit as $taskHistory) {
|
foreach ($tasksForAmbit as $taskHistory) {
|
||||||
if ($ambitId == $latestAmbitHistory->history_of_equipment_ambits_id) {
|
if ($ambitId == $latestAmbitHistory->history_of_equipment_ambits_id) {
|
||||||
|
|
||||||
|
|
@ -204,9 +205,17 @@ public function createPDFforcompletedEquipment($equipmentId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
// Verifica se há um comentário associado e adiciona ao taskHistory
|
||||||
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
if ($taskHistory->taskEquipmentComment) {
|
||||||
|
$taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
// else {
|
||||||
|
// $taskHistory->taskComment = 'N/A'; // Ou qualquer outro valor padrão caso não tenha comentário
|
||||||
|
// }
|
||||||
|
|
||||||
|
//recebe os dados do id da workstations_task_answers_id, control_equipment_workstation_id e as respostar : answer_json
|
||||||
|
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
||||||
|
|
||||||
if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) {
|
if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) {
|
||||||
$answersArray = json_decode($workstationTaskAnswer->answer_json, true);
|
$answersArray = json_decode($workstationTaskAnswer->answer_json, true);
|
||||||
|
|
@ -245,7 +254,9 @@ public function createPDFforcompletedEquipment($equipmentId)
|
||||||
|
|
||||||
|
|
||||||
// Define os caminhos das logos- Simbolo ISPT_4.0
|
// Define os caminhos das logos- Simbolo ISPT_4.0
|
||||||
$defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg';
|
// $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg';
|
||||||
|
|
||||||
|
$defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-8.png';
|
||||||
|
|
||||||
$isptLogoPath = '/img/ispt/ispt.jpg';
|
$isptLogoPath = '/img/ispt/ispt.jpg';
|
||||||
|
|
||||||
|
|
@ -279,6 +290,10 @@ public function createPDFforcompletedEquipment($equipmentId)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dd($receiveDetailsProject);
|
||||||
|
//Deve devolver com Observacoes se existir.
|
||||||
|
|
||||||
//Precisamos receber o Tipo de equipamento e detalhes da Obra, alem do atributos especificos de acordo com o tipo de equipamento.
|
//Precisamos receber o Tipo de equipamento e detalhes da Obra, alem do atributos especificos de acordo com o tipo de equipamento.
|
||||||
// Converte as imagens para base64 usando o serviço PdfWrapper
|
// Converte as imagens para base64 usando o serviço PdfWrapper
|
||||||
$pdfWrapper = new PdfWrapper();
|
$pdfWrapper = new PdfWrapper();
|
||||||
|
|
@ -477,6 +492,13 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
||||||
$taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle'
|
$taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle'
|
||||||
$taskHistory->typeStatusHistory = 'historic';
|
$taskHistory->typeStatusHistory = 'historic';
|
||||||
|
|
||||||
|
// Verifica se há um comentário associado e adiciona ao taskHistory
|
||||||
|
if ($taskHistory->taskEquipmentComment) {
|
||||||
|
$taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir
|
// Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir
|
||||||
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
$workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first();
|
||||||
|
|
||||||
|
|
@ -531,7 +553,7 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
||||||
$taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas';
|
$taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$taskHistory->runtime = 'N/A'; // Ou qualquer valor padrão que você prefira
|
$taskHistory->runtime = 'N/A'; // valor padrão
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adiciona o taskHistory à coleção principal
|
// Adiciona o taskHistory à coleção principal
|
||||||
|
|
@ -583,10 +605,6 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// dd($receiveAllTasksHistiory);
|
|
||||||
|
|
||||||
//recebe normalmente, porem os checkbox nao conseguem buscar valor, execepto o ultimo dado.
|
|
||||||
|
|
||||||
return view('projectsClients.showAmbitDetailProjectHistory', compact('receiveComments', 'equipmentStatus', 'detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory', 'detalsEquipment', 'detailsEquipmentWorkProject'));
|
return view('projectsClients.showAmbitDetailProjectHistory', compact('receiveComments', 'equipmentStatus', 'detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory', 'detalsEquipment', 'detailsEquipmentWorkProject'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -721,7 +739,6 @@ public function projectDetails_11($projectID, $equipmentID)
|
||||||
->where('company_projects_id', $projectID)
|
->where('company_projects_id', $projectID)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
|
||||||
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
|
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
|
||||||
|
|
||||||
// $DetailsTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->get(); // Todas as tarefas que o equipamento vai realizar :
|
// $DetailsTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->get(); // Todas as tarefas que o equipamento vai realizar :
|
||||||
|
|
@ -803,10 +820,11 @@ public function projectDetails_11($projectID, $equipmentID)
|
||||||
foreach ($specificAttributes as $attribute) {
|
foreach ($specificAttributes as $attribute) {
|
||||||
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
|
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes
|
||||||
|
$portfolioOnlyreadOrEditToo = 3;
|
||||||
//filteredTasks', 'OrdemTasks', 'DetailsTasks' campos vazios para ISV.
|
//filteredTasks', 'OrdemTasks', 'DetailsTasks' campos vazios para ISV.
|
||||||
|
return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment', 'filteredTasks', 'OrdemTasks', 'DetailsTasks', 'specificAttributesArray', 'receiveEquipmentWorkHistorys','portfolioOnlyreadOrEditToo'));
|
||||||
|
|
||||||
return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment', 'filteredTasks', 'OrdemTasks', 'DetailsTasks', 'specificAttributesArray', 'receiveEquipmentWorkHistorys'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Funcao que recebe a Acoes do dataTables do portifolio.
|
//Funcao que recebe a Acoes do dataTables do portifolio.
|
||||||
|
|
@ -850,7 +868,10 @@ public function articulated_22($equipmentID)
|
||||||
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
|
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('projectsClients.testRoute', compact('dataEquipment', 'receiveAlldetailsEquipmentWorkHistory', 'specificAttributesArray'));
|
// Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes
|
||||||
|
$portfolioOnlyreadOrEditToo = 3;
|
||||||
|
|
||||||
|
return view('projectsClients.testRoute', compact('dataEquipment', 'receiveAlldetailsEquipmentWorkHistory', 'specificAttributesArray', 'portfolioOnlyreadOrEditToo'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -329,10 +329,10 @@ public function getEquipmentData($equipment_id, $component_tag)
|
||||||
// Busca os dados da Ws com base no Login
|
// Busca os dados da Ws com base no Login
|
||||||
$receiveDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first();
|
$receiveDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first();
|
||||||
// Recebe os dados do Equipamento
|
// Recebe os dados do Equipamento
|
||||||
$receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first();
|
$dataEquipment = Equipment::where('equipment_id', $equipment_id)->first();
|
||||||
|
|
||||||
//Recebe os atributos especificos
|
//Recebe os atributos especificos
|
||||||
$specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $receiveDataEquipment->equipment_id)->get();
|
$specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $dataEquipment->equipment_id)->get();
|
||||||
|
|
||||||
$specificAttributesArray = [];
|
$specificAttributesArray = [];
|
||||||
|
|
||||||
|
|
@ -345,8 +345,8 @@ public function getEquipmentData($equipment_id, $component_tag)
|
||||||
|
|
||||||
|
|
||||||
// Busca os dados do equipamento
|
// Busca os dados do equipamento
|
||||||
$receiveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $receiveDataEquipment->equipment_id)
|
$receiveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $dataEquipment->equipment_id)
|
||||||
->where('company_projects_id', $receiveDataEquipment->company_projects_id)
|
->where('company_projects_id', $dataEquipment->company_projects_id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
//Recebe os dados do Ambito para o equipamento atual
|
//Recebe os dados do Ambito para o equipamento atual
|
||||||
|
|
@ -612,7 +612,7 @@ public function getEquipmentData($equipment_id, $component_tag)
|
||||||
|
|
||||||
$receiveComments = EquipmentComment::with(['user'])
|
$receiveComments = EquipmentComment::with(['user'])
|
||||||
->where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
->where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||||
->where('company_projects_id', $receiveDataEquipment->company_projects_id)
|
->where('company_projects_id', $dataEquipment->company_projects_id)
|
||||||
->get()
|
->get()
|
||||||
->transform(function ($comment) {
|
->transform(function ($comment) {
|
||||||
// Adiciona uma nova propriedade ao objeto de comentário
|
// Adiciona uma nova propriedade ao objeto de comentário
|
||||||
|
|
@ -620,17 +620,21 @@ public function getEquipmentData($equipment_id, $component_tag)
|
||||||
return $comment;
|
return $comment;
|
||||||
});
|
});
|
||||||
|
|
||||||
$receiveDataEquipment->istp_number = $receiveEquipmentWorkHistory->ispt_number;
|
$dataEquipment->istp_number = $receiveEquipmentWorkHistory->ispt_number;
|
||||||
$receiveDataEquipment->equipment_ambit = $receiveAmbit->ambitsEquipment->ambits_description;
|
$dataEquipment->equipment_ambit = $receiveAmbit->ambitsEquipment->ambits_description;
|
||||||
|
|
||||||
|
// Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes
|
||||||
|
$portfolioOnlyreadOrEditToo = 3;
|
||||||
|
|
||||||
return view('workstations.workstations', [
|
return view('workstations.workstations', [
|
||||||
// Deve receber o atual COntrol ID ? tudo a vez que atualizar ??
|
// Deve receber o atual COntrol ID ? tudo a vez que atualizar ??
|
||||||
'receiveComments' => $receiveComments,
|
'receiveComments' => $receiveComments,
|
||||||
'dataControlEquipment' => $receiveDataControlEquipment,
|
'dataControlEquipment' => $receiveDataControlEquipment,
|
||||||
'receiveDataEquipment' => $receiveDataEquipment,
|
'dataEquipment' => $dataEquipment,
|
||||||
'specificAttributesArray' => $specificAttributesArray,
|
'specificAttributesArray' => $specificAttributesArray,
|
||||||
'recebeTasksForEquipment' => $recebeTasksForEquipment,
|
'recebeTasksForEquipment' => $recebeTasksForEquipment,
|
||||||
'receiveComponentTag' => $component_tag
|
'receiveComponentTag' => $component_tag,
|
||||||
|
'portfolioOnlyreadOrEditToo' => $portfolioOnlyreadOrEditToo,
|
||||||
// 'divisionElementalTasks' => $divisionElementalTasks,
|
// 'divisionElementalTasks' => $divisionElementalTasks,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,10 +54,10 @@ protected function getAllowedRoutesForUserType($userType)
|
||||||
|
|
||||||
switch ($userType) {
|
switch ($userType) {
|
||||||
case 5: // Técnico
|
case 5: // Técnico
|
||||||
return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment','sendTaskComment'];
|
return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment','sendTaskComment','editEquipment'];
|
||||||
case 3: // Empresa
|
case 3: // Empresa
|
||||||
return ['dashboardClient','reportingDataClient', 'manageAssetsClient','usersProfiles',
|
return ['dashboardClient','reportingDataClient', 'manageAssetsClient','usersProfiles',
|
||||||
// Obras em Execussao
|
// Obras Em execução
|
||||||
'ExecutionProject',
|
'ExecutionProject',
|
||||||
//Relatorios
|
//Relatorios
|
||||||
'showDataDetailsProjectClient','showReportingForAmbitsProject',
|
'showDataDetailsProjectClient','showReportingForAmbitsProject',
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public function compose(View $view)
|
||||||
|
|
||||||
|
|
||||||
$equipmentToReview = collect(); // Coleção para armazenar equipamentos para revisão
|
$equipmentToReview = collect(); // Coleção para armazenar equipamentos para revisão
|
||||||
$executionEquipment = collect();// Coleção para armazenar equipamentos em execussao
|
$executionEquipment = collect();// Coleção para armazenar equipamentos Em execução
|
||||||
$completedEquipments = collect(); // Coleção para armazenar equipamentos concluídos
|
$completedEquipments = collect(); // Coleção para armazenar equipamentos concluídos
|
||||||
|
|
||||||
// Verifica equipamentos que tenho 2 dados com o departure_date = NULL e especificamente um dado tem o elemental_tasks_id = 9 e o outro igual a NULL.
|
// Verifica equipamentos que tenho 2 dados com o departure_date = NULL e especificamente um dado tem o elemental_tasks_id = 9 e o outro igual a NULL.
|
||||||
|
|
@ -129,8 +129,8 @@ public function compose(View $view)
|
||||||
// Se não houver registros, considera como valor 0 (nenhuma tarefa ativa)
|
// Se não houver registros, considera como valor 0 (nenhuma tarefa ativa)
|
||||||
$equipmentStatus[$equipment->equipment_id] = 0;
|
$equipmentStatus[$equipment->equipment_id] = 0;
|
||||||
} else {
|
} else {
|
||||||
//Caso ja tenha dados sobre o equipamento no control, significa que ja e um equipamento 'Em execussao'
|
//Caso ja tenha dados sobre o equipamento no control, significa que ja e um equipamento 'Em execução'
|
||||||
//Ao colocar aqui a adicao a execussao, ele apenas considera os equipamentos que estao em algum posto de trabalho, sem considerar as tarefas ja feitas.
|
//Ao colocar aqui a adicao a execução, ele apenas considera os equipamentos que estao em algum posto de trabalho, sem considerar as tarefas ja feitas.
|
||||||
$executionEquipment->push($equipment);
|
$executionEquipment->push($equipment);
|
||||||
|
|
||||||
//Deve verificar se o departure_date e NULL e o id_workstations <> null, e status = 0
|
//Deve verificar se o departure_date e NULL e o id_workstations <> null, e status = 0
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,11 @@ public function equipmentWorkHistory()
|
||||||
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function taskEquipmentComment()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(TaskEquipmentComment::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function elementalTask()
|
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');
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,12 @@ public function controlEquipmentWorkstation()
|
||||||
return $this->hasMany(ControlEquipmentWorkstation::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
return $this->hasMany(ControlEquipmentWorkstation::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function OrderEquipmentTasks()
|
||||||
|
{
|
||||||
|
return $this->hasMany(OrderEquipmentTasks::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function taskEquipmentComment()
|
public function taskEquipmentComment()
|
||||||
{
|
{
|
||||||
return $this->hasMany(TaskEquipmentComment::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
return $this->hasMany(TaskEquipmentComment::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,11 @@ 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 equipmentWorkHistory()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
|
}
|
||||||
|
|
||||||
// public function furtherTasks()
|
// 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');
|
||||||
|
|
|
||||||
|
|
@ -23,4 +23,9 @@ public function equipmentWorkHistory()
|
||||||
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function controlEquipmentWorkstation()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(ControlEquipmentWorkstation::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,9 @@
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'timezone' => 'UTC',
|
// 'timezone' => 'UTC',
|
||||||
|
'timezone' => 'Europe/Lisbon',
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
BIN
public/companies_logo/1726759230.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-8.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/img/ispt/The-Navigator-Company-group-Logotip.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/img/ispt/galpLogo1.png
Executable file
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 132 KiB |
BIN
public/templateExcel/.~Valves_Template.xlsx
Normal file
|
|
@ -35,6 +35,12 @@
|
||||||
<!-- summernote -->
|
<!-- summernote -->
|
||||||
<link rel="stylesheet" href="{{ URL::asset('assets/plugins/summernote/summernote-bs4.min.css') }}">
|
<link rel="stylesheet" href="{{ URL::asset('assets/plugins/summernote/summernote-bs4.min.css') }}">
|
||||||
|
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
{{-- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> --}}
|
||||||
|
|
||||||
|
<!-- Bootstrap JS Bundle (inclui Popper) -->
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
[class*=sidebar-dark] .btn-sidebar2,
|
[class*=sidebar-dark] .btn-sidebar2,
|
||||||
[class*=sidebar-dark] .form-control-sidebar2 {
|
[class*=sidebar-dark] .form-control-sidebar2 {
|
||||||
|
|
@ -151,7 +157,8 @@
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
|
||||||
<div class="nav-link" style="color:#1f2d3d">{{ $receiveDataWs->nomenclature_workstation }}</div>
|
<div class="nav-link" style="color:#1f2d3d">{{ $receiveDataWs->nomenclature_workstation }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<form id="logout-form" action="{{ route('logout') }}" method="POST">
|
<form id="logout-form" action="{{ route('logout') }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
@ -186,12 +193,11 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
|
||||||
|
|
||||||
<!-- SidebarSearch Form -->
|
<!-- SidebarSearch Form -->
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
|
|
||||||
<div class="input-group" data-widget="sidebar-search">
|
<div class="input-group" data-widget="sidebar-search">
|
||||||
<input id="qrtextleft" class="form-control form-control-sidebar text-white" type="search"
|
<input id="qrtextleft" class="form-control form-control-sidebar text-white" type="search"
|
||||||
placeholder="Tag/Equipamento" aria-label="Search">
|
placeholder="Tag/Equipamento" aria-label="Search">
|
||||||
<div class="input-group-append">
|
<div class="input-group-append">
|
||||||
<button class="btn btn-sidebar">
|
<button class="btn btn-sidebar" onclick="triggerSearchFromInput()">
|
||||||
<i class="fas fa-search fa-fw text-white"></i>
|
<i class="fas fa-search fa-fw text-white"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -201,8 +207,8 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-5">
|
<nav class="mt-5">
|
||||||
|
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column searchable" data-widget="treeview" role="menu"
|
<ul class="nav nav-pills nav-sidebar flex-column searchable" data-widget="treeview"
|
||||||
data-accordion="false">
|
role="menu" data-accordion="false">
|
||||||
|
|
||||||
<!-- Por iniciar -->
|
<!-- Por iniciar -->
|
||||||
<li class="nav-item has-treeview menu-closed">
|
<li class="nav-item has-treeview menu-closed">
|
||||||
|
|
@ -227,13 +233,13 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<!-- Em execussao -->
|
<!-- Em execução -->
|
||||||
<li class="nav-item has-treeview menu-closed mt-1">
|
<li class="nav-item has-treeview menu-closed mt-1">
|
||||||
<a href="#" class="nav-link text-white" style="background-color: #1b4cad;">
|
<a href="#" class="nav-link text-white" style="background-color: #1b4cad;">
|
||||||
{{-- <i class="fa-solid fa-rotate-left"></i> --}}
|
{{-- <i class="fa-solid fa-rotate-left"></i> --}}
|
||||||
<i class="fa-solid fa-hourglass-start"></i>
|
<i class="fa-solid fa-hourglass-start"></i>
|
||||||
<p>
|
<p>
|
||||||
Em execussao : {{ count($executionEquipment) }}
|
Em execução : {{ count($executionEquipment) }}
|
||||||
<i class="right fas fa-angle-left"></i>
|
<i class="right fas fa-angle-left"></i>
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -302,14 +308,10 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
|
||||||
|
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column searchable" id="qrcode-equipment-list"
|
<ul class="nav nav-pills nav-sidebar flex-column searchable" id="qrcode-equipment-list"
|
||||||
style="display: none;">
|
style="display: none;">
|
||||||
|
|
||||||
<!-- Add icons to the links using the .nav-icon class
|
|
||||||
with font-awesome or any other icon font library -->
|
|
||||||
<li class="nav-item menu-closed">
|
<li class="nav-item menu-closed">
|
||||||
<a href="#" class="nav-link text-white" style="background-color: #007BFF;">
|
<a href="#" class="nav-link text-white" style="background-color: #007BFF;">
|
||||||
<i class="nav-icon fas fa-play"></i>
|
<i class="nav-icon fas fa-play"></i>
|
||||||
<p> {{ count($receiveQrcodeEquipmentsProject) }}
|
<p> {{ count($receiveQrcodeEquipmentsProject) }} a iniciar QrCodes
|
||||||
a iniciar QrCodes
|
|
||||||
<i class="right fas fa-angle-left"></i>
|
<i class="right fas fa-angle-left"></i>
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -327,6 +329,7 @@ class="nav-link text-white">
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
<!-- /.sidebar-menu -->
|
<!-- /.sidebar-menu -->
|
||||||
|
|
||||||
|
|
@ -425,20 +428,34 @@ class="nav-link text-white">
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
// Função para simular uma pesquisa manual ao escanear o QR Code
|
||||||
|
function simulateManualSearch(value) {
|
||||||
|
var searchInput = document.getElementById("qrtextleft"); // Campo de busca
|
||||||
|
searchInput.value = value; // Insere o valor do QR code no campo de busca
|
||||||
|
|
||||||
|
// Simula o evento de digitação no campo de busca para ativar o search
|
||||||
|
var event = new Event('input', {
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
|
});
|
||||||
|
searchInput.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Função para realizar a busca e navegação (após a leitura do QR code ou busca manual)
|
||||||
function searchForValueAndNavigate(value, itemsSelector, containerSelector) {
|
function searchForValueAndNavigate(value, itemsSelector, containerSelector) {
|
||||||
var searchQuery = value.toLowerCase();
|
var searchQuery = value.toLowerCase();
|
||||||
var found = false; // Variable to track if any item is found
|
var found = false; // Variável para verificar se encontrou o item
|
||||||
|
|
||||||
$(itemsSelector).each(function() {
|
$(itemsSelector).each(function() {
|
||||||
var itemText = $(this).text().toLowerCase();
|
var itemText = $(this).text().toLowerCase();
|
||||||
if (itemText.includes(searchQuery)) {
|
if (itemText.includes(searchQuery)) {
|
||||||
found = true;
|
found = true;
|
||||||
window.location.href = $(this).attr('href');
|
window.location.href = $(this).attr('href'); // Navegar para a URL correspondente
|
||||||
return false; // Exit the .each loop after attempting navigation
|
return false; // Sair do loop após encontrar a correspondência
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// If no item is found, change the class of <li> elements
|
// Se não encontrar correspondência, fecha os itens abertos
|
||||||
if (!found) {
|
if (!found) {
|
||||||
$(containerSelector + ' .nav-item.menu-open').each(function() {
|
$(containerSelector + ' .nav-item.menu-open').each(function() {
|
||||||
$(this).removeClass('menu-open').addClass('menu-closed');
|
$(this).removeClass('menu-open').addClass('menu-closed');
|
||||||
|
|
@ -446,14 +463,107 @@ function searchForValueAndNavigate(value, itemsSelector, containerSelector) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Função de busca manual por input (usada no botão de busca)
|
||||||
|
function triggerSearchFromInput() {
|
||||||
|
let searchInput = document.getElementById("qrtextleft").value;
|
||||||
|
searchForValueAndNavigate(searchInput, '#qrcode-equipment-list li a', '#qrcode-equipment-list');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configuração do QR Code Scanner
|
||||||
let scanner = new Html5Qrcode("reader");
|
let scanner = new Html5Qrcode("reader");
|
||||||
let startScan = document.getElementById("startScan");
|
let startScan = document.getElementById("startScan");
|
||||||
let reader = document.getElementById("reader");
|
let reader = document.getElementById("reader");
|
||||||
let qrtextleft = document.getElementById("qrtextleft");
|
|
||||||
let qrtextright = document.getElementById("qrtextright");
|
|
||||||
|
|
||||||
startScan.addEventListener('click', function() {
|
startScan.addEventListener('click', function() {
|
||||||
// Hiding the startScan button and showing the reader
|
// Esconde o botão de início e exibe o leitor de QR Code
|
||||||
|
startScan.style.display = "none";
|
||||||
|
reader.style.display = "block";
|
||||||
|
|
||||||
|
scanner.start({
|
||||||
|
facingMode: "environment"
|
||||||
|
}, {
|
||||||
|
fps: 20,
|
||||||
|
qrbox: {
|
||||||
|
width: 250,
|
||||||
|
height: 250
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function(qrCodeMessage) {
|
||||||
|
// Ao escanear o QR Code, simula a pesquisa
|
||||||
|
scanner.stop().then(() => {
|
||||||
|
simulateManualSearch(
|
||||||
|
qrCodeMessage); // Preenche o campo de busca e simula a digitação
|
||||||
|
reader.style.display = "none";
|
||||||
|
startScan.style.display = "block";
|
||||||
|
|
||||||
|
// Aciona a navegação automática se encontrar o valor correspondente
|
||||||
|
searchForValueAndNavigate(qrCodeMessage, '#qrcode-equipment-list li a',
|
||||||
|
'#qrcode-equipment-list');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(errorMessage) {
|
||||||
|
// Em caso de erro no scan
|
||||||
|
console.log(errorMessage);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Função para lidar com a pesquisa no campo de input e exibir resultados dinamicamente
|
||||||
|
function handleSearch(inputSelector, itemsSelector, containerSelector) {
|
||||||
|
$(inputSelector).on('keyup', function() {
|
||||||
|
var searchQuery = $(this).val().toLowerCase();
|
||||||
|
var found = false; // Variável para verificar se encontrou algum item
|
||||||
|
|
||||||
|
$(itemsSelector).each(function() {
|
||||||
|
var itemText = $(this).text().toLowerCase();
|
||||||
|
if (itemText.includes(searchQuery)) {
|
||||||
|
$(this).show();
|
||||||
|
found = true;
|
||||||
|
} else {
|
||||||
|
$(this).hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Altera a classe dos itens <li> quando o item é encontrado ou não
|
||||||
|
if (found) {
|
||||||
|
$(containerSelector + ' .nav-item.menu-closed').each(function() {
|
||||||
|
$(this).removeClass('menu-closed').addClass('menu-open');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(containerSelector + ' .nav-item.menu-open').each(function() {
|
||||||
|
$(this).removeClass('menu-open').addClass('menu-closed');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aplicando a funcionalidade de pesquisa ao campo de pesquisa principal
|
||||||
|
handleSearch('#qrtextleft', '.searchable .nav.nav-pills.nav-sidebar.flex-column li.tags', '.searchable');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{{-- <script>
|
||||||
|
function simulateManualSearch(value) {
|
||||||
|
var searchInput = document.getElementById("qrtextleft"); // O campo de busca
|
||||||
|
searchInput.value = value; // Insere o valor do QR code no campo de busca
|
||||||
|
|
||||||
|
// Simula o evento de digitação no campo de busca para ativar o search
|
||||||
|
var event = new Event('input', {
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
|
});
|
||||||
|
searchInput.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
let scanner = new Html5Qrcode("reader");
|
||||||
|
let startScan = document.getElementById("startScan");
|
||||||
|
let reader = document.getElementById("reader");
|
||||||
|
|
||||||
|
startScan.addEventListener('click', function() {
|
||||||
|
// Hide the startScan button and show the reader
|
||||||
startScan.style.display = "none";
|
startScan.style.display = "none";
|
||||||
reader.style.display = "block";
|
reader.style.display = "block";
|
||||||
|
|
||||||
|
|
@ -469,26 +579,18 @@ function searchForValueAndNavigate(value, itemsSelector, containerSelector) {
|
||||||
function(qrCodeMessage) {
|
function(qrCodeMessage) {
|
||||||
// This is called when a QR Code is scanned
|
// This is called when a QR Code is scanned
|
||||||
|
|
||||||
// Suppress every text in front of "@" including it
|
|
||||||
|
|
||||||
scanner.stop().then(() => {
|
scanner.stop().then(() => {
|
||||||
qrtextleft.value = qrCodeMessage;
|
// Simula a digitação manual com o valor do QR code
|
||||||
qrtextright.value = qrCodeMessage;
|
simulateManualSearch(qrCodeMessage);
|
||||||
|
|
||||||
reader.style.display = "none";
|
reader.style.display = "none";
|
||||||
startScan.style.display = "block";
|
startScan.style.display = "block";
|
||||||
|
|
||||||
// Trigger the search functionality for both sidebars
|
|
||||||
searchForValueAndNavigate(qrCodeMessage,
|
|
||||||
'#qrcode-equipment-list li a',
|
|
||||||
'#qrcode-equipment-list');
|
|
||||||
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function(errorMessage) {
|
function(errorMessage) {
|
||||||
// In case of errors
|
// In case of errors
|
||||||
console.log(errorMessage);
|
console.log(errorMessage);
|
||||||
}
|
})
|
||||||
)
|
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
|
@ -497,188 +599,80 @@ function(errorMessage) {
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
// Função para realizar a busca e navegação
|
||||||
let scannerCheck = new Html5Qrcode("readerUnique");
|
function searchForValueAndNavigate(value, itemsSelector, containerSelector) {
|
||||||
let startScanCheck = document.getElementById("startScanUnique");
|
var searchQuery = value.toLowerCase();
|
||||||
let readerCheck = document.getElementById("readerUnique");
|
var found = false;
|
||||||
let ModalForConfirmManual = document.getElementById('exampleModalSmall');
|
|
||||||
const btnConfirmManual = document.getElementById('btnConfirmManual');
|
|
||||||
|
|
||||||
let currentFormId = ''; // Variável global para armazenar o ID do formulário ativo
|
$(itemsSelector).each(function() {
|
||||||
|
var itemText = $(this).text().toLowerCase();
|
||||||
// Captura cliques em botões que abrem a primeira modal e extrai o ID do formulário
|
if (itemText.includes(searchQuery)) {
|
||||||
document.querySelectorAll('[data-toggle="modal"]').forEach(button => {
|
found = true;
|
||||||
button.addEventListener('click', function() {
|
window.location.href = $(this).attr('href'); // Navegar para a URL correspondente
|
||||||
if (this.dataset.target ===
|
return false; // Sair do loop após encontrar a correspondência
|
||||||
"#exampleModal") { // Verifica se o botão abre a primeira modal
|
|
||||||
currentFormId = this.getAttribute('data-form-id');
|
|
||||||
console.log(`Current Form ID: ${currentFormId}`);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Se não encontrar correspondência, fecha os itens abertos
|
||||||
|
if (!found) {
|
||||||
|
$(containerSelector + ' .nav-item.menu-open').each(function() {
|
||||||
|
$(this).removeClass('menu-open').addClass('menu-closed');
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Evento de clique para iniciar a leitura do QR Code
|
// Função de busca manual por input
|
||||||
startScanCheck.addEventListener('click', function() {
|
function triggerSearchFromInput() {
|
||||||
startScanCheck.style.display = "none";
|
let searchInput = document.getElementById("searchInput").value;
|
||||||
readerCheck.style.display = "block";
|
searchForValueAndNavigate(searchInput, '#qrcode-equipment-list li a', '#qrcode-equipment-list');
|
||||||
|
}
|
||||||
|
|
||||||
// Inicia o scanner de QR Code com configurações específicas
|
// Configuração do QR Code Scanner
|
||||||
scannerCheck.start({
|
let scanner = new Html5Qrcode("reader");
|
||||||
facingMode: "environment" // Usa a câmera traseira
|
let startScan = document.getElementById("startScan");
|
||||||
|
let reader = document.getElementById("reader");
|
||||||
|
let qrtextleft = document.getElementById("qrtextleft");
|
||||||
|
|
||||||
|
startScan.addEventListener('click', function() {
|
||||||
|
// Esconder o botão de início e mostrar o leitor
|
||||||
|
startScan.style.display = "none";
|
||||||
|
reader.style.display = "block";
|
||||||
|
|
||||||
|
scanner.start({
|
||||||
|
facingMode: "environment"
|
||||||
}, {
|
}, {
|
||||||
fps: 10,
|
fps: 20,
|
||||||
qrbox: 250
|
qrbox: {
|
||||||
}, function(qrCodeMessage) {
|
width: 250,
|
||||||
// Chamada quando um QR Code é detectado
|
height: 250
|
||||||
processQRCode(qrCodeMessage, currentFormId);
|
|
||||||
// startScan(currentFormId); // Inicia a leitura com base no formulário ativo
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function processQRCode(qrCodeMessage, currentFormId) {
|
|
||||||
scannerCheck.stop().then(() => {
|
|
||||||
// Separa o valor do QR code.
|
|
||||||
const parts = qrCodeMessage.split('@');
|
|
||||||
const valor = parts[0];
|
|
||||||
const componente = parts[1];
|
|
||||||
|
|
||||||
//verica se existe $receiveComponentTag e se nao e vazio, se nao for separa a varaivel e guarda o valor antes do @
|
|
||||||
@if (isset($receiveComponentTag) && !empty($receiveComponentTag))
|
|
||||||
var expectedTag = "{{ $receiveComponentTag }}".split('@');
|
|
||||||
@endif
|
|
||||||
|
|
||||||
//Verifica se o form atual espera receber o valor : Obturador ou Flange
|
|
||||||
const expectedComponente = (currentFormId == "form10") ? "Obturador" : "Flange";
|
|
||||||
|
|
||||||
const expectedValor = expectedTag[0];
|
|
||||||
let receiveValueValidateQRcode; //
|
|
||||||
// Seleciona os elementos específicos do formulário ativo.
|
|
||||||
const formSelector = `#${currentFormId}`;
|
|
||||||
|
|
||||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
|
||||||
const qrCodeErrorText = document.querySelector(`${formSelector} #qrCodeErrorText`);
|
|
||||||
const verificationStatusP = document.querySelector(
|
|
||||||
`${formSelector} #verificationStatus`);
|
|
||||||
|
|
||||||
const confirmCheckbox = document.querySelector(
|
|
||||||
`${formSelector} input[name^='ID'][name$='[confirm_label_compliance-checkbox]']`
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// const btnConfirmManual = document.getElementById('btnConfirmManual');
|
|
||||||
// Processa a leitura do QR Code.
|
|
||||||
if (valor == expectedValor && componente == expectedComponente) {
|
|
||||||
receiveValueValidateQRcode = 1; // Atualiza para 1 (confirmado).
|
|
||||||
verificationStatusP.textContent = 'Verificado com sucesso !!!';
|
|
||||||
verificationStatusP.style.color = 'green';
|
|
||||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação.
|
|
||||||
qrCodeError.style.display = 'none';
|
|
||||||
} else {
|
|
||||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação.
|
|
||||||
verificationStatusP.textContent =
|
|
||||||
'Tags não correspondem ao mesmo equipamento, tente novamente com a Tag correta !!!';
|
|
||||||
verificationStatusP.style.color = 'red';
|
|
||||||
qrCodeErrorText.textContent =
|
|
||||||
`QR Lido: ${valor}@${componente} ||| Esperado: ${expectedValor}@${expectedComponente}`;
|
|
||||||
qrCodeErrorText.style.color = 'red';
|
|
||||||
qrCodeError.style.display = 'block';
|
|
||||||
}
|
}
|
||||||
// Apos finalizar a leitura, deve voltar a poder utilizar a leitura do QrCode se necessario.
|
},
|
||||||
readerCheck.style.display = "none";
|
function(qrCodeMessage) {
|
||||||
startScanCheck.style.display = "block";
|
// Ao escanear o QR Code
|
||||||
// Atualiza o valor do input no formulário com o resultado da verificação.
|
scanner.stop().then(() => {
|
||||||
confirmCheckbox.value = receiveValueValidateQRcode;
|
qrtextleft.value = qrCodeMessage; // Preenche o campo com o valor escaneado
|
||||||
|
reader.style.display = "none";
|
||||||
|
startScan.style.display = "block";
|
||||||
|
|
||||||
// Ajusta o estado do botão de submit com base no resultado da verificação.
|
// Aciona a busca automaticamente
|
||||||
const submitButton = document.querySelector(
|
searchForValueAndNavigate(qrCodeMessage, '#qrcode-equipment-list li a',
|
||||||
`${formSelector} #checkValidateQrCode`); // Ajuste o seletor conforme necessário.
|
'#qrcode-equipment-list');
|
||||||
|
|
||||||
console.log(submitButton);
|
|
||||||
|
|
||||||
submitButton.disabled = receiveValueValidateQRcode !== 1;
|
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
function(errorMessage) {
|
||||||
|
// Em caso de erro no scan
|
||||||
|
console.log(errorMessage);
|
||||||
}
|
}
|
||||||
|
).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
|
||||||
// Configura o evento de clique para o botão que para a leitura do QR Code
|
|
||||||
document.getElementById('stopQrcodeRead').addEventListener('click', function() {
|
|
||||||
// Para o scanner de QR Code e executa ações de limpeza da interface
|
|
||||||
stopScan(currentFormId);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//Função para parar a leitura do QR Code e limpar a interface
|
|
||||||
function stopScan(currentFormId) {
|
|
||||||
scannerCheck.stop().then(() => {
|
|
||||||
readerCheck.style.display = "none";
|
|
||||||
startScanCheck.style.display = "block";
|
|
||||||
//Recebe o form atual
|
|
||||||
const formSelector = `#${currentFormId}`;
|
|
||||||
|
|
||||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
|
||||||
const verificationStatusP = document.querySelector(
|
|
||||||
`${formSelector} #verificationStatus`);
|
|
||||||
|
|
||||||
//De acordo com o form atual, devolve o nome do input referente ao numero do form atual
|
|
||||||
const confirmCheckbox = document.querySelector(
|
|
||||||
`${formSelector} input[name^='ID'][name$='[confirm_label_compliance-checkbox]']`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Tratar equipamentos feitos Manualmente.
|
|
||||||
// Adiciona listener para quando o botão da segunda modal for clicado
|
|
||||||
document.querySelector('[data-toggle="modal"][data-target="#exampleModalSmall"]').addEventListener(
|
|
||||||
'click',
|
|
||||||
function() {
|
|
||||||
// Aqui você garante que o currentFormId ainda esteja correto e pode fazer o que precisar antes de abrir a segunda modal
|
|
||||||
console.log(`Passing Current Form ID to second modal: ${currentFormId}`);
|
|
||||||
});
|
|
||||||
btnConfirmManual.addEventListener('click', function() {
|
|
||||||
// Agora, currentFormId deve estar correto e acessível aqui
|
|
||||||
confirmManually(currentFormId);
|
|
||||||
});
|
|
||||||
|
|
||||||
function confirmManually(formId) {
|
|
||||||
const formSelector = `#${formId}`;
|
|
||||||
// Operações baseadas no formId...
|
|
||||||
console.log(`Manual Confirmation for Form ID: ${formId}`);
|
|
||||||
|
|
||||||
const confirmCheckbox = document.querySelector(
|
|
||||||
`${formSelector} input[name^='ID'][name$='[confirm_label_compliance-checkbox]']`);
|
|
||||||
|
|
||||||
// Define 'receiveValueValidateQRcode' para 0.
|
|
||||||
let receiveValueValidateQRcode = 0;
|
|
||||||
confirmCheckbox.value =
|
|
||||||
receiveValueValidateQRcode; // Atualiza o valor do checkbox para refletir a confirmação manual.
|
|
||||||
|
|
||||||
const verificationStatusP = document.querySelector(`${formSelector} #verificationStatus`);
|
|
||||||
verificationStatusP.textContent = 'Etiquetas confirmadas manualmente';
|
|
||||||
verificationStatusP.style.color = 'orange'; // Altera a cor do texto conforme necessário.
|
|
||||||
|
|
||||||
// Ajusta o estado do botão de submit com base no resultado da verificação.
|
|
||||||
const submitButton = document.querySelector(`${formSelector} #checkValidateQrCode`);
|
|
||||||
submitButton.disabled = receiveValueValidateQRcode !== 0;
|
|
||||||
|
|
||||||
$('#exampleModalSmall').modal('hide'); // Fecha a segunda modal.
|
|
||||||
$('#exampleModal').modal('hide'); // Fecha a primeira modal.
|
|
||||||
// Para o scanner de QR Code (se necessário)
|
|
||||||
scannerCheck.stop().then(() => {
|
|
||||||
// Esconde o leitor de QR Code e mostra o botão para iniciar a leitura
|
|
||||||
readerCheck.style.display = "none";
|
|
||||||
startScanCheck.style.display = "block";
|
|
||||||
// Fecha modais após confirmação
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$(document).on('click', '[data-widget="control-treeview"] .nav-link', function(event) {
|
$(document).on('click', '[data-widget="control-treeview"] .nav-link', function(event) {
|
||||||
|
|
@ -749,7 +743,7 @@ function handleSearch(inputSelector, itemsSelector, containerSelector) {
|
||||||
|
|
||||||
// Apply the search functionality for the control sidebar
|
// Apply the search functionality for the control sidebar
|
||||||
// handleSearch('#qrtextright', '.control-sidebar .nav.nav-pills.nav-sidebar.flex-column li', '.control-sidebar');
|
// handleSearch('#qrtextright', '.control-sidebar .nav.nav-pills.nav-sidebar.flex-column li', '.control-sidebar');
|
||||||
</script>
|
</script> --}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,33 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
<input type="hidden" name="controlEquipmentID"
|
<input type="hidden" name="controlEquipmentID"
|
||||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 100%;">
|
||||||
|
<h3 class="card-title">Observações</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="4" placeholder="Escreva sua observação aqui..." readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Conformidade da etiqueta -->
|
<!-- Conformidade da etiqueta -->
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-6 icheck-primary">
|
<div class="col-md-6 icheck-primary">
|
||||||
|
|
@ -294,6 +318,29 @@ class="form-control ml-2" style="width: 40%;" placeholder=""
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 100%;">
|
||||||
|
<h3 class="card-title">Observações</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="4" placeholder="Escreva sua observação aqui..." readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Identificação da válvula em bom estado -->
|
<!-- Identificação da válvula em bom estado -->
|
||||||
<div class="row mt-3">
|
<div class="row mt-3">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
@ -638,6 +685,30 @@ class="form-control select2" style="width: 100%;"
|
||||||
<input type="hidden" name="controlEquipmentID"
|
<input type="hidden" name="controlEquipmentID"
|
||||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 100%;">
|
||||||
|
<h3 class="card-title">Observações</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="4" placeholder="Escreva sua observação aqui..." readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Decontamination -->
|
<!-- Decontamination -->
|
||||||
<div class="row mb-3 mt-4">
|
<div class="row mb-3 mt-4">
|
||||||
<div class="col-md-6 d-flex align-items-center">
|
<div class="col-md-6 d-flex align-items-center">
|
||||||
|
|
@ -766,6 +837,29 @@ class="form-control select2" style="width: 100%;"
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 100%;">
|
||||||
|
<h3 class="card-title">Observações</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="4" placeholder="Escreva sua observação aqui..." readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="form-group"> <!-- Single form-group for all content -->
|
<div class="form-group"> <!-- Single form-group for all content -->
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
@ -1275,6 +1369,29 @@ class="form-control" @if ($task_todo->cardTypeStyle == 'gray' || $task_todo->car
|
||||||
|
|
||||||
<div class="form-group"> <!-- Single form-group for all content -->
|
<div class="form-group"> <!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<!-- First card column -->
|
<!-- First card column -->
|
||||||
|
|
@ -1763,6 +1880,29 @@ class="form-control" @if ($task_todo->cardTypeStyle == 'gray' || $task_todo->car
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<!-- First card column -->
|
<!-- First card column -->
|
||||||
|
|
@ -2196,6 +2336,29 @@ class="form-control select2" style="width: 100%;"
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<button data-form-id type="button" class="btn btn-primary float-left mb-3"
|
<button data-form-id type="button" class="btn btn-primary float-left mb-3"
|
||||||
data-toggle="modal" data-target="#AddPhoneInElementalTaskModal">
|
data-toggle="modal" data-target="#AddPhoneInElementalTaskModal">
|
||||||
|
|
@ -2809,6 +2972,29 @@ class="form-control" @if ($task_todo->cardTypeStyle == 'gray' || $task_todo->car
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<!-- First card column -->
|
<!-- First card column -->
|
||||||
|
|
@ -3158,6 +3344,29 @@ class="form-control select2"
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Executado -->
|
<!-- Executado -->
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md d-flex align-items-center">
|
<div class="col-md d-flex align-items-center">
|
||||||
|
|
@ -3277,6 +3486,29 @@ class="form-control" required @if ($task_todo->cardTypeStyle == 'gray' || $task_
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
<div class="row mb-3 mt-3 col-md-12">
|
<div class="row mb-3 mt-3 col-md-12">
|
||||||
<label>Sede</label>
|
<label>Sede</label>
|
||||||
|
|
@ -3415,6 +3647,29 @@ class="img-fluid pdf-image mx-auto"
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<input id="inputReceiveErrors" class="confirm_component_joints-boolean" type="hidden"
|
<input id="inputReceiveErrors" class="confirm_component_joints-boolean" type="hidden"
|
||||||
name="ID10[confirm_label_compliance-checkbox]">
|
name="ID10[confirm_label_compliance-checkbox]">
|
||||||
|
|
||||||
|
|
@ -3681,6 +3936,29 @@ class="form-control select2" @if ($task_todo->cardTypeStyle == 'gray' || $task_t
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 100%;">
|
||||||
|
<h3 class="card-title">Observações</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="4" placeholder="Escreva sua observação aqui..." readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
|
@ -4754,6 +5032,29 @@ class="img-fluid pdf-image mx-auto"
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
@ -5245,6 +5546,29 @@ class="img-fluid pdf-image mx-auto"
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Data calibração -->
|
<!-- Data calibração -->
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
@ -5475,6 +5799,30 @@ class="img-fluid pdf-image mx-auto"
|
||||||
|
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Executado -->
|
<!-- Executado -->
|
||||||
<div class="row mb-3 mt-3">
|
<div class="row mb-3 mt-3">
|
||||||
<div class="col-md-6 d-flex align-items-center">
|
<div class="col-md-6 d-flex align-items-center">
|
||||||
|
|
@ -5590,6 +5938,30 @@ class="img-fluid pdf-image mx-auto"
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<input type="hidden" name="controlEquipmentID"
|
<input type="hidden" name="controlEquipmentID"
|
||||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||||
|
|
||||||
|
|
@ -5718,6 +6090,29 @@ class="form-control select2" style="width: 100%;"
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Tipo de junta -->
|
<!-- Tipo de junta -->
|
||||||
<div class="row mt-2">
|
<div class="row mt-2">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
@ -5813,6 +6208,29 @@ class="form-control select2" style="width: 100%;"
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Verificar o aperto das flanges -->
|
<!-- Verificar o aperto das flanges -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-6 icheck-primary">
|
<div class="col-md-6 icheck-primary">
|
||||||
<input id="ID17[check_flanges_tightness]" type="checkbox"
|
<input id="ID17[check_flanges_tightness]" type="checkbox"
|
||||||
|
|
@ -5942,6 +6360,29 @@ class="img-fluid pdf-image mx-auto"
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<!-- Single form-group for all content -->
|
<!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<!-- First card column -->
|
<!-- First card column -->
|
||||||
|
|
@ -6407,6 +6848,29 @@ class="img-fluid pdf-image mx-auto"
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Foi efetuado o teste de acordo com o API RP 598 -->
|
<!-- Foi efetuado o teste de acordo com o API RP 598 -->
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
@ -6592,6 +7056,29 @@ class="btn btn-primary float-right">Guardar</button>
|
||||||
|
|
||||||
<div class="form-group"> <!-- Single form-group for all content -->
|
<div class="form-group"> <!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
|
|
||||||
<!-- Validar especificações técnicas -->
|
<!-- Validar especificações técnicas -->
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="icheck-primary">
|
<div class="icheck-primary">
|
||||||
|
|
@ -6791,6 +7278,29 @@ class="form-control" placeholder=""
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<div class="form-group"> <!-- Single form-group for all content -->
|
<div class="form-group"> <!-- Single form-group for all content -->
|
||||||
|
|
||||||
|
<!-- Apenas se existir o $task_todo->taskComment deve mostrar -->
|
||||||
|
@if (isset($task_todo->taskComment) && $task_todo->taskComment)
|
||||||
|
<!-- Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
<div class="card card-success collapsed-card">
|
||||||
|
<div class="card-header clickable" style="background-color:gray;color:white;">
|
||||||
|
<div class="d-flex justify-content-between align-items-center"
|
||||||
|
style="width: 70%">
|
||||||
|
<h5 class="card-title" >Observações</h5>
|
||||||
|
<div class="card-tools">
|
||||||
|
<button type="button" class="btn btn-tool collapse-button"
|
||||||
|
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<!-- Novo formulário para comentários -->
|
||||||
|
<textarea name="comment" id="comment" class="form-control" rows="2" placeholder="Escreva sua observação aqui..." disabled readonly>{{ $task_todo->taskComment }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./Criar Observaoces a Tarefa atual do equipamento -->
|
||||||
|
@endif
|
||||||
<input type="hidden" name="controlEquipmentID"
|
<input type="hidden" name="controlEquipmentID"
|
||||||
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
value="{{ $receiveDataControlEquipment->control_equipment_workstation_id ?? '' }}">
|
||||||
|
|
||||||
|
|
|
||||||
4434
resources/views/components/layouts/elementalTasksOfficial.blade.php
Normal file
|
|
@ -1,92 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@page {
|
|
||||||
size: A4;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
/* Ajuste conforme necessário */
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-break {
|
|
||||||
page-break-before: always;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
height: 50px;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
height: 50px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
margin-top: 170px;
|
|
||||||
/* Aumente para dar mais espaço para o cabeçalho */
|
|
||||||
margin-bottom: 50px;
|
|
||||||
/* Espaço para o rodapé */
|
|
||||||
/* padding: 0 5px; */
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{{-- <div class="container">
|
|
||||||
<header class="mb-3">
|
|
||||||
@include(
|
|
||||||
'projectsClients.pdf._header',
|
|
||||||
compact('tag', 'numeroPanini', 'nObra', 'ambito', 'projectLogoPath', 'companyLogoPath'))
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
{{ $slot }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <footer>
|
|
||||||
@include('projectsClients.pdf._footer', ['pageCounter' => $pageCounter])
|
|
||||||
@include('projectsClients.pdf._footer')
|
|
||||||
</footer> -->
|
|
||||||
</div> --}}
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
|
|
||||||
<!-- Conteúdo específico da primeira página -->
|
|
||||||
{{-- <div class="first-page"> --}}
|
|
||||||
@yield('firstPage')
|
|
||||||
|
|
||||||
<!-- Conteúdo para o restante das páginas -->
|
|
||||||
{{-- <div class="loop-pages">
|
|
||||||
@yield('loopPages')
|
|
||||||
</div> --}}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
@ -104,7 +104,8 @@
|
||||||
@if ((auth()->user() && auth()->user()->type_users == 2) || (auth()->user() && auth()->user()->type_users == 1))
|
@if ((auth()->user() && auth()->user()->type_users == 2) || (auth()->user() && auth()->user()->type_users == 1))
|
||||||
<div class="row m-3 justify-content-between">
|
<div class="row m-3 justify-content-between">
|
||||||
<div>
|
<div>
|
||||||
<button class="btn btn-info" data-toggle="modal" data-target="#exampleModal">Adicionar
|
<button class="btn btn-info" data-toggle="modal"
|
||||||
|
data-target="#exampleModal">Adicionar
|
||||||
equipamentos Extras</button>
|
equipamentos Extras</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -165,7 +166,36 @@ class="btn btn-danger">Imprimir Qrcodes</a>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
@if ((auth()->user() && auth()->user()->type_users == 2) || (auth()->user() && auth()->user()->type_users == 1))
|
@if ((auth()->user() && auth()->user()->type_users == 2) || (auth()->user() && auth()->user()->type_users == 1))
|
||||||
{{-- Faça algo específico para esse tipo de usuário --}}
|
<div class="card card-info mt-4">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Lista de equipamentos da Obra - Por iniciar</h3>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-header -->
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<table id="TableListEquipmentInProjectForInit"
|
||||||
|
class="table table-bordered table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>N.Ispt</th>
|
||||||
|
<th>Tag</th>
|
||||||
|
<th>Descrição</th>
|
||||||
|
<th>Tipo Equipamento</th>
|
||||||
|
<th>Fabrica</th>
|
||||||
|
<th>Equipamento Extra</th>
|
||||||
|
<th>Âmbito</th>
|
||||||
|
<th>status</th>
|
||||||
|
<th>Ação</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ./card card-info -->
|
||||||
|
|
||||||
<div class="card card-info mt-4">
|
<div class="card card-info mt-4">
|
||||||
|
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
|
@ -178,12 +208,14 @@ class="btn btn-danger">Imprimir Qrcodes</a>
|
||||||
<table id="TableListEquipmentInProject" class="table table-bordered table-striped">
|
<table id="TableListEquipmentInProject" class="table table-bordered table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th>N.Ispt</th>
|
||||||
<th>Tag</th>
|
<th>Tag</th>
|
||||||
<th>Descrição</th>
|
<th>Descrição</th>
|
||||||
<th>Tipo Equipamento</th>
|
<th>Tipo Equipamento</th>
|
||||||
<th>Fabrica</th>
|
<th>Fabrica</th>
|
||||||
<th>Equipamento Extra</th>
|
<th>Equipamento Extra</th>
|
||||||
<th>Âmbito</th>
|
<th>Âmbito</th>
|
||||||
|
<th>status</th>
|
||||||
<th>Ação</th>
|
<th>Ação</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
@ -206,12 +238,14 @@ class="btn btn-danger">Imprimir Qrcodes</a>
|
||||||
class="table table-bordered table-striped">
|
class="table table-bordered table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th>N.Ispt</th>
|
||||||
<th>Tag</th>
|
<th>Tag</th>
|
||||||
<th>Descrição</th>
|
<th>Descrição</th>
|
||||||
<th>Tipo Equipamento</th>
|
<th>Tipo Equipamento</th>
|
||||||
<th>Fabrica</th>
|
<th>Fabrica</th>
|
||||||
<th>Equipamento Extra</th>
|
<th>Equipamento Extra</th>
|
||||||
<th>Âmbito</th>
|
<th>Âmbito</th>
|
||||||
|
<th>status</th>
|
||||||
<th>Ação</th>
|
<th>Ação</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
@ -234,12 +268,14 @@ class="table table-bordered table-striped">
|
||||||
class="table table-bordered table-striped">
|
class="table table-bordered table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th>N.Ispt</th>
|
||||||
<th>Tag</th>
|
<th>Tag</th>
|
||||||
<th>Descrição</th>
|
<th>Descrição</th>
|
||||||
<th>Tipo Equipamento</th>
|
<th>Tipo Equipamento</th>
|
||||||
<th>Fabrica</th>
|
<th>Fabrica</th>
|
||||||
<th>Equipamento Extra</th>
|
<th>Equipamento Extra</th>
|
||||||
<th>Âmbito</th>
|
<th>Âmbito</th>
|
||||||
|
<th>status</th>
|
||||||
<th>Ação</th>
|
<th>Ação</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
@ -342,6 +378,7 @@ class="table table-bordered table-striped">
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scriptsTemplateAdmin')
|
@section('scriptsTemplateAdmin')
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// Inicialize as tabelas deequipamentos
|
// Inicialize as tabelas deequipamentos
|
||||||
function setupDataTable(tableSelector, tableType) { // Adiciona tableType como um parâmetro
|
function setupDataTable(tableSelector, tableType) { // Adiciona tableType como um parâmetro
|
||||||
|
|
@ -357,7 +394,12 @@ function setupDataTable(tableSelector, tableType) { // Adiciona tableType como u
|
||||||
d.tableType = tableType; // Agora está definido corretamente
|
d.tableType = tableType; // Agora está definido corretamente
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
columns: [{
|
columns: [
|
||||||
|
{
|
||||||
|
data: 'ispt_number',
|
||||||
|
name: 'ispt_number'
|
||||||
|
},
|
||||||
|
{
|
||||||
data: 'equipment_tag',
|
data: 'equipment_tag',
|
||||||
name: 'equipment_tag'
|
name: 'equipment_tag'
|
||||||
},
|
},
|
||||||
|
|
@ -381,6 +423,10 @@ function setupDataTable(tableSelector, tableType) { // Adiciona tableType como u
|
||||||
data: 'ambit_name',
|
data: 'ambit_name',
|
||||||
name: 'ambit_name'
|
name: 'ambit_name'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
data: 'status',
|
||||||
|
name: 'status'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
data: 'action',
|
data: 'action',
|
||||||
name: 'action'
|
name: 'action'
|
||||||
|
|
@ -391,83 +437,10 @@ function setupDataTable(tableSelector, tableType) { // Adiciona tableType como u
|
||||||
|
|
||||||
// Inicialização das DataTables para cada tabela especificada
|
// Inicialização das DataTables para cada tabela especificada
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
setupDataTable('#TableListEquipmentInProject', 'normal');
|
setupDataTable('#TableListEquipmentInProjectForInit', 'start');
|
||||||
|
setupDataTable('#TableListEquipmentInProject', 'execution');
|
||||||
setupDataTable('#TableListEquipmentInProjectPendingsForApprove', 'pending');
|
setupDataTable('#TableListEquipmentInProjectPendingsForApprove', 'pending');
|
||||||
setupDataTable('#TableListOfCompletedProjectEquipment', 'completed');
|
setupDataTable('#TableListOfCompletedProjectEquipment', 'completed');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
|
||||||
$(document).ready(function() {
|
|
||||||
// Ja vai ser inicializado no card Equipamentos.
|
|
||||||
|
|
||||||
// $("#ViewEquipmentsButton").hide();
|
|
||||||
// $("#CardViewDetails").hide();
|
|
||||||
// $("#CardViewWorkstations").hide();
|
|
||||||
|
|
||||||
// $("#ViewDetailsButton").on('click', function() {
|
|
||||||
|
|
||||||
// $("#CardViewDetails").show();
|
|
||||||
|
|
||||||
// $("#ViewDetailsButton").hide();
|
|
||||||
// $("#ViewEquipmentsButton").show();
|
|
||||||
// $("#ViewWorkstationButton").show();
|
|
||||||
// $("#ViewTasksButton").show();
|
|
||||||
|
|
||||||
|
|
||||||
// $("#CardViewWorkstations").hide();
|
|
||||||
// $("#CardViewEquipments").hide();
|
|
||||||
// $("#CardViewTasks").hide();
|
|
||||||
|
|
||||||
// })
|
|
||||||
|
|
||||||
//Visualizacao dos Equipamentos
|
|
||||||
// $("#ViewEquipmentsButton").on('click', function() {
|
|
||||||
|
|
||||||
// $("#CardViewEquipments").show();
|
|
||||||
|
|
||||||
// $("#ViewWorkstationButton").show();
|
|
||||||
// $("#ViewDetailsButton").show();
|
|
||||||
// $("#ViewTasksButton").show();
|
|
||||||
|
|
||||||
// $("#CardViewDetails").hide();
|
|
||||||
// $("#CardViewWorkstations").hide();
|
|
||||||
// $("#ViewEquipmentsButton").hide();
|
|
||||||
// $("#CardViewTasks").hide();
|
|
||||||
|
|
||||||
// })
|
|
||||||
|
|
||||||
//Visualizacao das Tarefas
|
|
||||||
// $("#ViewTasksButton").on('click', function() {
|
|
||||||
|
|
||||||
// // $("#CardViewTasks").show();
|
|
||||||
// // $("#ViewEquipmentsButton").show();
|
|
||||||
// // $("#ViewWorkstationButton").show();
|
|
||||||
// // $("#ViewDetailsButton").show();
|
|
||||||
|
|
||||||
// $("#CardViewDetails").hide();
|
|
||||||
// $("#CardViewEquipments").hide();
|
|
||||||
// $("#CardViewWorkstations").hide();
|
|
||||||
// $("#ViewTasksButton").hide();
|
|
||||||
// })
|
|
||||||
|
|
||||||
//Visualizacao das Workstatios
|
|
||||||
// $("#ViewWorkstationButton").on('click', function() {
|
|
||||||
|
|
||||||
// $("#CardViewWorkstations").show();
|
|
||||||
|
|
||||||
// $("#ViewEquipmentsButton").show();
|
|
||||||
// $("#ViewDetailsButton").show();
|
|
||||||
// $("#ViewTasksButton").show();
|
|
||||||
|
|
||||||
// $("#CardViewDetails").hide();
|
|
||||||
// $("#CardViewEquipments").hide();
|
|
||||||
// $("#ViewWorkstationButton").hide();
|
|
||||||
// $("#CardViewTasks").hide();
|
|
||||||
// })
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,9 @@
|
||||||
style="max-width: 85px; max-height: 85px;">
|
style="max-width: 85px; max-height: 85px;">
|
||||||
<!-- Imagem no extremo direito -->
|
<!-- Imagem no extremo direito -->
|
||||||
<div class="col d-flex justify-content-end align-items-center" style="height: 100%;">
|
<div class="col d-flex justify-content-end align-items-center" style="height: 100%;">
|
||||||
{{-- <img src="{{ public_path($companyLogoPath) }}" alt="Company Logo" class="img-fluid"
|
<img src="{{ public_path($companyLogoPath) }}" alt="Company Logo" class="img-fluid"
|
||||||
style="max-width: 70px; max-height: 70px;"> --}}
|
style="max-width: 90px; max-height: 90px;">
|
||||||
<img src="{{ public_path($projectLogoPath) }}" alt="Company Logo" class="img-fluid"
|
|
||||||
style="max-width: 85px; max-height: 85px;">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,22 +17,27 @@
|
||||||
|
|
||||||
<!-- PSV -->
|
<!-- PSV -->
|
||||||
@if ($detailsEquipment->equipment_type_id == 3)
|
@if ($detailsEquipment->equipment_type_id == 3)
|
||||||
<h2>FICHA DE BENEFICIAÇÃO E REPARAÇÃO<br>DE<br>VÁLVULAS DE SECCIONAMENTO</h2>
|
<h2>FICHA DE EQUIPAMENTO PSV <br>DE<br>{{ $detailsEquipment['specificAttributes'][5]['value'] ?? 'N/A' }}
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
<!-- CV -->
|
<!-- CV -->
|
||||||
@elseif($detailsEquipment->equipment_type_id == 1)
|
@elseif($detailsEquipment->equipment_type_id == 1)
|
||||||
<h2>FICHA DE BENEFICIAÇÃO E REPARAÇÃO<br>DE<br>VÁLVULAS DE CONTROLO E ON/OFF</h2>
|
<h2>FICHA DE EQUIPAMENTO CV <br>DE<br>{{ $detailsEquipment['specificAttributes'][5]['value'] ?? 'N/A' }}
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
<!-- ISV -->
|
<!-- ISV -->
|
||||||
@else
|
@else
|
||||||
<h2>FICHA DE BENEFICIAÇÃO E REPARAÇÃO<br>DE<br>VÁLVULAS DE SEGURANCA</h2>
|
<h2>FICHA DE EQUIPAMENTO ISV <br>DE<br>{{ $detailsEquipment['specificAttributes'][5]['value'] ?? 'N/A' }}
|
||||||
|
</h2>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<p> OBRA Nº:<b>N/A</b>
|
<p> OBRA Nº:<b> {{ $receiveDetailsProject->project_ispt_number ?? 'N/A' }} </b>
|
||||||
<br>FICHA Nº: {{ $detailsEquipmentWorkHistory->ispt_number }}
|
<br>FICHA Nº: {{ $detailsEquipmentWorkHistory->ispt_number ?? 'N/A' }}
|
||||||
<br>PAGINA : 1 de {{ $totalPages }}
|
<br>PAGINA : 1 de {{ $totalPages ?? 'N/A' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -40,12 +45,12 @@
|
||||||
<!-- Info Table -->
|
<!-- Info Table -->
|
||||||
<table class="info-table">
|
<table class="info-table">
|
||||||
<tr>
|
<tr>
|
||||||
<td> <b>Cliente:</b> <span>{{ $receiveDetailsProject->plant->company->company_name }}</span></td>
|
<td> <b>Cliente:</b> <span>{{ $receiveDetailsProject->plant->company->company_name ?? 'N/A' }}</span></td>
|
||||||
<td> <b>Obra Cliente:</b> <span><b>N/A</b></span></td>
|
<td> <b>Obra Cliente:</b> <span>{{ $receiveDetailsProject->company_project_description ?? 'N/A' }}</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> <b>Unidade:</b> <span>{{ $receiveDetailsProject->plant->plant_name }}</span></td>
|
<td> <b>Unidade:</b> <span>{{ $receiveDetailsProject->plant->plant_name ?? 'N/A' }}</span></td>
|
||||||
<td> <b>Trabalhos Realizados de:</b> <span>{{ $oldestDate }}</span> a <span>{{ $latestDate }}</span>
|
<td> <b>Trabalhos Realizados de:</b> <span>{{ $oldestDate ?? 'N/A' }}</span> a <span>{{ $latestDate ?? 'N/A' }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
@ -250,8 +255,8 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (!empty($detailsEquipmentWorkHistory->justification_for_finalization))
|
|
||||||
<!-- Caso o equipamento tenha sido concluido sem terminar as suas tarefas, deve aparecer a justificacao para tal acao -->
|
<!-- Caso o equipamento tenha sido concluido sem terminar as suas tarefas, deve aparecer a justificacao para tal acao -->
|
||||||
|
@if (!empty($detailsEquipmentWorkHistory->justification_for_finalization))
|
||||||
<div style="border: 1px solid black; margin-top:15%">
|
<div style="border: 1px solid black; margin-top:15%">
|
||||||
<div style="border: 1px solid black; background-color: #f9f9f9; padding: 5px;">
|
<div style="border: 1px solid black; background-color: #f9f9f9; padding: 5px;">
|
||||||
<p style="text-align: center;font-size: 15px; "><b style="color: red;">*</b>
|
<p style="text-align: center;font-size: 15px; "><b style="color: red;">*</b>
|
||||||
|
|
@ -298,7 +303,6 @@
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('loopPages')
|
@section('loopPages')
|
||||||
|
|
||||||
@php
|
@php
|
||||||
$pageCounter = 2; // Start from page 2, assuming the first page is already handled
|
$pageCounter = 2; // Start from page 2, assuming the first page is already handled
|
||||||
@endphp
|
@endphp
|
||||||
|
|
@ -323,7 +327,8 @@
|
||||||
<div class="content-loop-pages">
|
<div class="content-loop-pages">
|
||||||
@include('components.elemental-tasks', ['task_todo' => $task_todo])
|
@include('components.elemental-tasks', ['task_todo' => $task_todo])
|
||||||
|
|
||||||
@if (isset($taskImages[$task_todo->control_equipment_workstation_id]) && is_array($taskImages[$task_todo->control_equipment_workstation_id]))
|
@if (isset($taskImages[$task_todo->control_equipment_workstation_id]) &&
|
||||||
|
is_array($taskImages[$task_todo->control_equipment_workstation_id]))
|
||||||
<div class="row no-gutters">
|
<div class="row no-gutters">
|
||||||
@foreach ($taskImages[$task_todo->control_equipment_workstation_id] as $image)
|
@foreach ($taskImages[$task_todo->control_equipment_workstation_id] as $image)
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
|
|
@ -354,5 +359,4 @@
|
||||||
$pageCounter++; // Increment the page counter for each iteration
|
$pageCounter++; // Increment the page counter for each iteration
|
||||||
@endphp
|
@endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
||||||
|
|
@ -453,7 +453,7 @@ class="checkboxChoseTasksOficesCV"
|
||||||
|
|
||||||
|
|
||||||
<a style="margin: 10px" data-bs-toggle="modal" data-bs-target="#modelChangeProjectForExecution"
|
<a style="margin: 10px" data-bs-toggle="modal" data-bs-target="#modelChangeProjectForExecution"
|
||||||
class="btn btn-primary float-right">Alterar para Execussao</a>
|
class="btn btn-primary float-right">Alterar para execução</a>
|
||||||
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<div class="modal fade" id="modelChangeProjectForExecution" tabindex="-1" aria-labelledby="modelChangeProjectForExecution"
|
<div class="modal fade" id="modelChangeProjectForExecution" tabindex="-1" aria-labelledby="modelChangeProjectForExecution"
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
|
|
||||||
// Nao gosto que esteja neste controller, verificar mais tarde
|
// Nao gosto que esteja neste controller, verificar mais tarde
|
||||||
Route::get('articulated_2/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'projectDetails_11'])->name('projectDetails_11');
|
Route::get('articulated_2/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'projectDetails_11'])->name('projectDetails_11');
|
||||||
Route::get('manageAssets/{equipmentID}', [ProjectoDatacontroller::class, 'articulated_22'])->name('articulated_22');
|
Route::get('manageAssets/{equipmentID}', action: [ProjectoDatacontroller::class, 'articulated_22'])->name('articulated_22');
|
||||||
|
|
||||||
Route::get('showAmbitDetailsProjectHistory/{equipmentStatus}/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'showAmbitDetailsProjectHistory'])->name('showAmbitDetailsProjectHistory');
|
Route::get('showAmbitDetailsProjectHistory/{equipmentStatus}/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'showAmbitDetailsProjectHistory'])->name('showAmbitDetailsProjectHistory');
|
||||||
|
|
||||||
|
|
|
||||||