From 6248503f9da79e15d542efbd4c9d45d3ba23aefa Mon Sep 17 00:00:00 2001 From: marsalva Date: Tue, 3 Mar 2026 19:31:33 +0000 Subject: [PATCH] Actualizar servicios.html --- servicios.html | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/servicios.html b/servicios.html index a360a49..d2bf1e8 100644 --- a/servicios.html +++ b/servicios.html @@ -999,12 +999,17 @@ } async function copyClientPortalLink() { - const phone = document.getElementById('editPhone').value; - const name = document.getElementById('editName').value; - const addr = document.getElementById('editAddr').value; + // Aseguramos que leemos los datos correctos + const phoneInput = document.getElementById('editPhone'); + const nameInput = document.getElementById('editName'); + const addrInput = document.getElementById('editAddr'); - if (!phone || phone === "Sin Teléfono") { - showToast("No hay un teléfono válido para este cliente.", "warning"); + const phone = phoneInput ? phoneInput.value : ""; + const name = nameInput ? nameInput.value : "Cliente"; + const addr = addrInput ? addrInput.value : ""; + + if (!phone || phone.trim() === "" || phone === "Sin Teléfono") { + showToast("⚠️ Falta el teléfono para generar el portal", "warning"); return; } @@ -1015,25 +1020,36 @@ lucide.createIcons(); try { + // Limpiamos el teléfono antes de enviarlo + const cleanPhone = phone.replace(/\D/g, ""); + const res = await fetch(`${API_URL}/clients/ensure`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, - body: JSON.stringify({ phone: phone, name: name, address: addr }) + body: JSON.stringify({ phone: cleanPhone, name: name, address: addr }) }); + const data = await res.json(); if (data.ok && data.client && data.client.portal_token) { const portalLink = `https://portal.integrarepara.es/?token=${data.client.portal_token}`; - await navigator.clipboard.writeText(portalLink); - btn.innerHTML = ' ¡Copiado!'; - btn.classList.replace('text-blue-600', 'text-emerald-600'); - btn.classList.replace('bg-blue-50', 'bg-emerald-50'); - btn.classList.replace('border-blue-100', 'border-emerald-200'); - showToast("Enlace copiado. ¡Listo para pegar en WhatsApp!"); + // Copiar al portapapeles + try { + await navigator.clipboard.writeText(portalLink); + btn.innerHTML = ' ¡Copiado!'; + btn.classList.replace('text-blue-600', 'text-emerald-600'); + btn.classList.replace('bg-blue-50', 'bg-emerald-50'); + btn.classList.replace('border-blue-100', 'border-emerald-200'); + showToast("✅ Enlace copiado al portapapeles"); + } catch (clipErr) { + // Plan B si el navegador bloquea el portapapeles automático + prompt("Copia este enlace manualmente:", portalLink); + btn.innerHTML = ' Generado'; + } setTimeout(() => { btn.innerHTML = originalHtml; @@ -1041,13 +1057,13 @@ lucide.createIcons(); }, 3000); } else { - showToast("No se pudo generar el token. Revisa la consola.", "warning"); + showToast("❌ Error al generar el token", "warning"); btn.innerHTML = originalHtml; lucide.createIcons(); } } catch (error) { console.error("Error obteniendo token:", error); - showToast("Error al conectar con el servidor", "warning"); + showToast("❌ Error de conexión", "warning"); btn.innerHTML = originalHtml; lucide.createIcons(); }