Sindbad~EG File Manager
@extends('adminlte::page')
@section('title', $asignacion->evaluacion)
@section('content')
@php
function calculaantiguedad($fechaingreso){
list($ano,$mes,$dia) = explode("-",$fechaingreso);
$ano_diferencia = date("Y") - $ano;
$mes_diferencia = date("m") - $mes;
$dia_diferencia = date("d") - $dia;
if ($dia_diferencia < 0 || $mes_diferencia < 0)
$ano_diferencia--;
return $ano_diferencia." años ".$mes_diferencia." meses y ".$dia_diferencia." días ";
}
@endphp
<style>
fieldset {
border: 1px solid #1177d1;
border-radius: 10px;
padding: 10px;
}
legend {
padding: 10px;
width: 50%;
}
@media print{
.imprimir * {
display:block;
}
.toPrint{
display:block; border:0; width:100%; min-height:500px
}
.no-print, .no-print *{
display: none !important;
}
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div class="imprimir" id="factura">
<center>
<h1 style="color: #1177d1;">{{ $asignacion->evaluacion }}</h1>
<hr><h3>Datos Generales</h3><hr>
</center>
<p style="color: #6c757d;"><b>Nombre y Apellido del evaluado: </b>{{ $asignacion->evaluado }}</p>
<div class="row">
<div class="col-md-6">
<p style="color: #6c757d;"><b>Area: </b>{{ $asignacion->area }}</p>
</div>
<div class="col-md-6">
<p style="color: #6c757d;"><b>Cargo del evaluado: </b>{{ $asignacion->puesto }}</p>
</div>
<!--<div class="col-md-4">
<p style="color: #6c757d;"><b>Fecha de ingreso: </b>{{date("d/m/Y", strtotime($asignacion->ingreso))}}</p>
</div>
<div class="col-md-4">
<p style="color: #6c757d;"><b>Antigüedad: </b>{{ calculaantiguedad($asignacion->ingreso) }}</p>
</div>
<div class="col-md-4">
<p style="color: #6c757d;"><b>Antigüedad en el cargo: </b>{{ calculaantiguedad($asignacion->ingresocargo) }}</p>
</div>-->
</div>
<p style="color: #6c757d;"><b>Nombre y Apellido del evaluador: </b>{{ $asignacion->evaluador }}</p>
<p style="color: #6c757d;"><b>Cargo del evaluador: </b>{{ $asignacion->cargoevaluador }}</p>
<p style="color: #6c757d;"><b>Período de evaluación: </b>{{date("d/m/Y", strtotime($asignacion->fecha_evaluacion))}}</p>
<hr><h3 align="center">Evaluación de competencias y habilidades</h3><hr>
@foreach($competencias as $com)
<div class="card">
<div class="card-body">
<fieldset>
<legend style="color: #1177d1;">{{ $com->com_nom }}</legend>
@if($asignacion->eva_autoevaluacion)
@livewire('cargarinterrogantes', ['competenciaid' => $com->id,'asignacionid' => $asignacion->id,"tipo" => "mostrar","evaluado" => $asignacion->evaluado_id])
@else
@livewire('cargarinterrogantes', ['competenciaid' => $com->id,'asignacionid' => $asignacion->id,"tipo" => "mostrar"])
@endif
</fieldset><br>
</div>
</div>
@endforeach
<div class="row" align="center">
<div class="col-12">
<p><b>Comentarios del Evaluado:</b></p>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</div>
<div class="col-12">
@if($asignacion->informe == 0)
<div id="generalTable">
<table class="table table-striped">
<tr scope="row">
<td>Total de Puntos</td>
<td id="total"></td>
</tr>
<tr scope="row">
<td>Término Medio Obtenido</td>
<td id="terminomedio"></td>
</tr>
</table>
</div>
@elseif ($asignacion->informe == 1)
<div id="detailedTable">
<table class="table tabla-competencia">
<thead>
<tr>
<th>Competencia</th>
<th>Puntos Totales</th>
<th>Puntos Alcanzados</th>
<th>Porcentaje</th>
</tr>
</thead>
@php
$sumaTotales = 0;
$sumaObtenidos = 0;
@endphp
@foreach($competencialista as $competencia)
@php
// Calculamos el total sumando los puntos de tipo 1 y tipo 3
$totalPuntos = $competencia->total_puntos + $competencia->total_puntos_tipo3;
$puntosAlcanzados = $competencia->puntos_alcanzados;
// Sumamos los puntos de las respuestas tipo 3
if($competencia->respuestas_tipo3) {
$respuestas = explode('||', $competencia->respuestas_tipo3);
foreach($respuestas as $respuesta) {
if($respuesta) {
$puntosAlcanzados += floatval($respuesta);
}
}
}
@endphp
<tr>
<td>{{ $competencia->com_nom }}</td>
<td>{{ $totalPuntos }}</td>
<td>{{ $puntosAlcanzados }}</td>
<td>
@php
$porcentaje = $totalPuntos > 0 ?
($puntosAlcanzados * 100) / $totalPuntos : 0;
@endphp
{{ number_format($porcentaje, 0) }}%
</td>
</tr>
@php
$sumaTotales += $totalPuntos;
$sumaObtenidos += $puntosAlcanzados;
@endphp
@endforeach
<tr class="table-secondary font-weight-bold">
<td><strong>TOTAL</strong></td>
<td>{{ $sumaTotales }}</td>
<td>{{ $sumaObtenidos }}</td>
<td>
@php
$porcentajeTotal = $sumaTotales > 0 ?
($sumaObtenidos * 100) / $sumaTotales : 0;
@endphp
{{ number_format($porcentajeTotal, 0) }}%
</td>
<td></td>
</tr>
</table>
</div>
@endif
<br>
<br>
<br>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<div class="col-4">
<p><b>.................................</b></p>
<p><b>Firma del Evaluador</b></p>
</div>
<div class="col-4">
<p><b>.................................</b></p>
<p><b>Firma del Evaluado</b></p>
</div>
<div class="col-4">
<p><b>.................................</b></p>
<p><b>Firma - RRHH</b></p>
</div>
<div class="col-4">
<br>
<br>
<p><b>Fecha:........................</b></p>
</div>
</div>
<!-- <div class="card">
<div class="card-body" align="center">
<table class="table">
<thead class="thead-dark">
<tr>
<th>CALIFICACIÓN</th>
<th>ESCALA</th>
<th>INTERPRETACIÓN DE CALIFICACIONES Y RESULTADOS</th>
</tr>
</thead>
<tbody>
<tr>
<td>DESTACADO</td>
<td width="100px;">3,70 a 4,00</td>
<td>El desempeño es de alta calidad y se logra con una base consistente. Los resultados de su desempeño exceden claramente la mayor parte de los requerimientos de la posición. La persona demuestra de manera regular logros significativos y supera lo razonable en las diferentes manifestaciones de su trabajo.</td>
</tr>
<tr>
<td>SATISFACTORIO</td>
<td>2,70 a 3,69</td>
<td>Obtiene los resultados esperados. Este nivel debe ser aplicado a aquellos cuyo desempeño cumple con las exigencias del puesto, de acuerdo a lo esperado. Es habitual en aquellas personas que tienen conocimientos, formación y experiencia apropiados para el puesto. Las personas en este nivel satisfacen los criterios de desempeño en el puesto por un trabajo competente y confiable.</td>
</tr>
<tr>
<td>NECESITA MEJORAR</td>
<td>2,30 a 2,69</td>
<td>Este nivel refleja un desempeño donde la persona no cumple de forma completa con los requerimientos del puesto, de acuerdo a lo esperado.
La persona demuestra dificultad para lograr algunas o varias de las funciones y/o metas que se le plantean, por lo que necesita mayor seguimiento y orientación en las mismas. </td>
</tr>
<tr>
<td>NO CALIFICA</td>
<td>0 a 2,29</td>
<td>Este nivel se aplica para aquellos cuyo trabajo en términos de calidad, cantidad y cumplimiento de objetivos, está claramente por debajo de las exigencias básicas de su puesto de trabajo. </td>
</tr>
</tbody>
</table>-->
<br>
<!--<table class="table table-striped">
<tr scope="row">
<td>Total de Puntos</td>
<td id="total"></td>
</tr>
<tr scope="row">
<td>Término Medio Obtenido</td>
<td id="terminomedio"></td>
</tr>
<tr scope="row">
<td>Interpretación</td>
<td id="interpretacion"></td>
</tr>
</table>-->
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<center><button class="btn btn-info no-print" onclick="imprimir()"><i class="fas fa-print"></i> Imprimir informe</button> <center>
</div>
</div>
@stop
@section('adminlte_js')
<script>
$("#total").text({{$sumainput}});
let promedio = parseFloat({{$sumainput}}/{{$totalinput}}).toFixed(2);
$("#terminomedio").text(promedio);
/*if(promedio <= 2.29){
$("#interpretacion").text("NO CALIFICA");
}else if(promedio <= 2.69){
$("#interpretacion").text("NECESITA MEJORAR");
}else if(promedio <= 3.69){
$("#interpretacion").text("SATISFACTORIO");
}else if(promedio <= 4){
$("#interpretacion").text("DESTACADO");
} */
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
calcularTotales();
});
function calcularTotales() {
let totalPuntos = 0;
let totalAlcanzados = 0;
try {
// Seleccionar todas las tablas de competencias
const tablas = document.querySelectorAll('.tabla-competencia');
if (tablas.length > 0) {
tablas.forEach(tabla => {
const puntosTotalesElement = tabla.querySelector('.puntos-totales');
const puntosAlcanzadosElement = tabla.querySelector('.puntos-alcanzados');
if (puntosTotalesElement && puntosAlcanzadosElement) {
// Convertir a número y manejar posibles valores no numéricos
const puntosTotal = parseFloat(puntosTotalesElement.textContent) || 0;
const puntosAlcanzado = parseFloat(puntosAlcanzadosElement.textContent) || 0;
totalPuntos += puntosTotal;
totalAlcanzados += puntosAlcanzado;
}
});
// Calcular porcentaje general
const porcentajeGeneral = totalPuntos > 0 ? (totalAlcanzados * 100 / totalPuntos) : 0;
// Actualizar la tabla de totales si existen los elementos
const totalGeneralElement = document.getElementById('totalGeneral');
const hechoGeneralElement = document.getElementById('hechoGeneral');
const porcentajeGeneralElement = document.getElementById('porcentajeGeneral');
if (totalGeneralElement) totalGeneralElement.innerHTML = `<strong>${totalPuntos.toFixed(0)}</strong>`;
if (hechoGeneralElement) hechoGeneralElement.innerHTML = `<strong>${totalAlcanzados.toFixed(0)}</strong>`;
if (porcentajeGeneralElement) porcentajeGeneralElement.innerHTML = `<strong>${porcentajeGeneral.toFixed(0)}%</strong>`;
}
} catch (error) {
console.error('Error al calcular totales:', error);
}
}
// Para asegurarnos que el DOM está cargado
document.addEventListener('DOMContentLoaded', function() {
calcularTotales();
});
// Para Livewire
if (typeof Livewire !== 'undefined') {
Livewire.on('contentChanged', () => {
calcularTotales();
});
}
// Alternativa para Livewire si lo anterior no funciona
window.addEventListener('livewire:load', function() {
calcularTotales();
Livewire.hook('message.processed', () => {
setTimeout(calcularTotales, 100); // Pequeño retraso para asegurar que el DOM está actualizado
});
});
</script>
<script>
function imprimir(){
var mode = 'iframe'; //popup
var close = mode == "popup";
var options = { mode : mode, popClose : close, popHt: 400,popWd: 600,popX: 700,popY: 500};
$("#factura").printArea( options );
}
</script>
@stop
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists