fix: ruta doble en local_file al mostrar imagen de orden médica

La BD guarda local_file con 'uploads/media/...' incluido.
El código le añadía otro 'uploads/media/' dando ruta doble.

- lab_ordenes.php: helper _resolveImg() detecta si el path
  ya empieza con 'uploads/' y no añade el prefijo de nuevo
- enfermero_portal.php: nueva función resImg() con misma lógica,
  usada en _cardHTML() al renderizar la imagen de la orden
This commit is contained in:
Lizandro Guarnizo
2026-03-12 22:23:15 -05:00
parent d362598a70
commit 8956de8eaa
2 changed files with 19 additions and 5 deletions
+10 -2
View File
@@ -415,9 +415,9 @@ const portal = {
<!-- Orden médica (imagen) -->
${item.orden_local_file ? `
<div class="mt-2 mb-2">
<a href="uploads/media/${esc(item.orden_local_file)}" target="_blank"
<a href="${resImg(item.orden_local_file)}" target="_blank"
title="Ver orden médica">
<img src="uploads/media/${esc(item.orden_local_file)}"
<img src="${resImg(item.orden_local_file)}"
style="max-width:100%;max-height:180px;border-radius:8px;border:1px solid #ddd;cursor:zoom-in"
alt="Orden médica #${item.orden_id}">
</a>
@@ -563,6 +563,14 @@ function esc(s) {
({ '<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;',"'":'&#39;' }[c]));
}
// Resolver ruta de imagen: evita duplicar "uploads/media/"
function resImg(f) {
if (!f) return '';
if (/^https?:\/\//i.test(f)) return esc(f);
if (String(f).startsWith('uploads/')) return esc(f);
return `uploads/media/${esc(f)}`;
}
document.addEventListener('DOMContentLoaded', () => {
portal.init();
agendaNueva.init();
+9 -3
View File
@@ -268,9 +268,15 @@ async function verOrden(id) {
}).join('');
// Imagen de la orden
const imgSrc = o.local_file
? `uploads/media/${esc(o.local_file)}`
: (o.conv_local_file ? `uploads/media/${esc(o.conv_local_file)}` : null);
// local_file puede venir con la ruta ya incluida (ej. "uploads/media/2026/02/x.jpg")
// o solo con el nombre de archivo — normalizamos para evitar ruta duplicada
function _resolveImg(f) {
if (!f) return null;
if (/^https?:\/\//i.test(f)) return f;
if (f.startsWith('uploads/')) return f;
return `uploads/media/${f}`;
}
const imgSrc = _resolveImg(o.local_file) || _resolveImg(o.conv_local_file) || null;
// Botones de acción según estado
const botonesAccion = renderBotones(o);