Actualizar servicios.html

This commit is contained in:
2026-03-03 19:31:33 +00:00
parent 55ea62936f
commit 6248503f9d

View File

@@ -999,12 +999,17 @@
} }
async function copyClientPortalLink() { async function copyClientPortalLink() {
const phone = document.getElementById('editPhone').value; // Aseguramos que leemos los datos correctos
const name = document.getElementById('editName').value; const phoneInput = document.getElementById('editPhone');
const addr = document.getElementById('editAddr').value; const nameInput = document.getElementById('editName');
const addrInput = document.getElementById('editAddr');
if (!phone || phone === "Sin Teléfono") { const phone = phoneInput ? phoneInput.value : "";
showToast("No hay un teléfono válido para este cliente.", "warning"); 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; return;
} }
@@ -1015,25 +1020,36 @@
lucide.createIcons(); lucide.createIcons();
try { try {
// Limpiamos el teléfono antes de enviarlo
const cleanPhone = phone.replace(/\D/g, "");
const res = await fetch(`${API_URL}/clients/ensure`, { const res = await fetch(`${API_URL}/clients/ensure`, {
method: 'POST', method: 'POST',
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
"Authorization": `Bearer ${localStorage.getItem("token")}` "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(); const data = await res.json();
if (data.ok && data.client && data.client.portal_token) { if (data.ok && data.client && data.client.portal_token) {
const portalLink = `https://portal.integrarepara.es/?token=${data.client.portal_token}`; const portalLink = `https://portal.integrarepara.es/?token=${data.client.portal_token}`;
await navigator.clipboard.writeText(portalLink);
// Copiar al portapapeles
try {
await navigator.clipboard.writeText(portalLink);
btn.innerHTML = '<i data-lucide="check-circle" class="w-3 h-3"></i> ¡Copiado!'; btn.innerHTML = '<i data-lucide="check-circle" class="w-3 h-3"></i> ¡Copiado!';
btn.classList.replace('text-blue-600', 'text-emerald-600'); btn.classList.replace('text-blue-600', 'text-emerald-600');
btn.classList.replace('bg-blue-50', 'bg-emerald-50'); btn.classList.replace('bg-blue-50', 'bg-emerald-50');
btn.classList.replace('border-blue-100', 'border-emerald-200'); btn.classList.replace('border-blue-100', 'border-emerald-200');
showToast("Enlace copiado. ¡Listo para pegar en WhatsApp!"); 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 = '<i data-lucide="check-circle" class="w-3 h-3"></i> Generado';
}
setTimeout(() => { setTimeout(() => {
btn.innerHTML = originalHtml; btn.innerHTML = originalHtml;
@@ -1041,13 +1057,13 @@
lucide.createIcons(); lucide.createIcons();
}, 3000); }, 3000);
} else { } else {
showToast("No se pudo generar el token. Revisa la consola.", "warning"); showToast("❌ Error al generar el token", "warning");
btn.innerHTML = originalHtml; btn.innerHTML = originalHtml;
lucide.createIcons(); lucide.createIcons();
} }
} catch (error) { } catch (error) {
console.error("Error obteniendo token:", error); console.error("Error obteniendo token:", error);
showToast("Error al conectar con el servidor", "warning"); showToast("Error de conexión", "warning");
btn.innerHTML = originalHtml; btn.innerHTML = originalHtml;
lucide.createIcons(); lucide.createIcons();
} }