Actualizar configuracion.html
This commit is contained in:
@@ -489,6 +489,114 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border-t border-gray-200 pt-10 mt-10">
|
||||
<div class="mb-6">
|
||||
<h2 class="text-2xl font-bold text-gray-800 flex items-center gap-2"><i data-lucide="bot" class="text-blue-600"></i> Robot Multiasistencia: Reglas Automáticas</h2>
|
||||
<p class="text-gray-500 text-sm mt-1">Configura qué debe escribir el robot en la web de Multiasistencia cuando cambias un estado en IntegraRepara.</p>
|
||||
</div>
|
||||
|
||||
<div class="space-y-6">
|
||||
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
|
||||
<div class="p-4 bg-slate-50 border-b border-slate-200 flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="bg-orange-100 text-orange-600 p-2 rounded-lg"><i data-lucide="user-check" class="w-5 h-5"></i></div>
|
||||
<div>
|
||||
<h3 class="font-bold text-slate-800">1. Al Asignar a un Operario</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative inline-block w-12 align-middle select-none">
|
||||
<input type="checkbox" id="multi_cfg_assign_enabled" onchange="toggleMultiConfig('assign')" class="toggle-checkbox absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer"/>
|
||||
<label for="multi_cfg_assign_enabled" class="toggle-label block overflow-hidden h-6 rounded-full bg-slate-200 cursor-pointer"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="multi_cfg_assign_body" class="p-5 space-y-4 hidden bg-white">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Estado en Multiasistencia</label>
|
||||
<select id="multi_cfg_assign_status" class="w-full border border-slate-300 rounded-lg p-2.5 text-xs outline-none focus:border-blue-500">
|
||||
<option value="1">1 - Contacto (Llamada al cliente)</option>
|
||||
<option value="2">2 - Visita (Cita concertada)</option>
|
||||
<option value="37">37 - Pendiente Instrucciones</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Días Siguiente Acción</label>
|
||||
<input type="number" id="multi_cfg_assign_days" value="1" min="0" class="w-full border border-slate-300 rounded-lg p-2.5 text-sm outline-none focus:border-blue-500">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Texto para "Observaciones"</label>
|
||||
<textarea id="multi_cfg_assign_obs" rows="2" class="w-full border border-slate-300 rounded-lg p-3 text-sm outline-none focus:border-blue-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
|
||||
<div class="p-4 bg-slate-50 border-b border-slate-200 flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="bg-emerald-100 text-emerald-600 p-2 rounded-lg"><i data-lucide="calendar-check" class="w-5 h-5"></i></div>
|
||||
<div>
|
||||
<h3 class="font-bold text-slate-800">2. Al Confirmar Cita</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative inline-block w-12 align-middle select-none">
|
||||
<input type="checkbox" id="multi_cfg_date_enabled" onchange="toggleMultiConfig('date')" class="toggle-checkbox absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer"/>
|
||||
<label for="multi_cfg_date_enabled" class="toggle-label block overflow-hidden h-6 rounded-full bg-slate-200 cursor-pointer"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="multi_cfg_date_body" class="p-5 space-y-4 hidden bg-white">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Estado en Multiasistencia</label>
|
||||
<select id="multi_cfg_date_status" class="w-full border border-slate-300 rounded-lg p-2.5 text-xs outline-none focus:border-blue-500">
|
||||
<option value="2">2 - Visita (Cita concertada)</option>
|
||||
<option value="1">1 - Contacto</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Texto para "Observaciones"</label>
|
||||
<textarea id="multi_cfg_date_obs" rows="2" class="w-full border border-slate-300 rounded-lg p-3 text-sm outline-none focus:border-blue-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
|
||||
<div class="p-4 bg-slate-50 border-b border-slate-200 flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="bg-red-100 text-red-600 p-2 rounded-lg"><i data-lucide="phone-off" class="w-5 h-5"></i></div>
|
||||
<div>
|
||||
<h3 class="font-bold text-slate-800">3. Cliente No Localizado</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative inline-block w-12 align-middle select-none">
|
||||
<input type="checkbox" id="multi_cfg_notfound_enabled" onchange="toggleMultiConfig('notfound')" class="toggle-checkbox absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer"/>
|
||||
<label for="multi_cfg_notfound_enabled" class="toggle-label block overflow-hidden h-6 rounded-full bg-slate-200 cursor-pointer"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="multi_cfg_notfound_body" class="p-5 space-y-4 hidden bg-white">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Estado en Multiasistencia</label>
|
||||
<select id="multi_cfg_notfound_status" class="w-full border border-slate-300 rounded-lg p-2.5 text-xs outline-none focus:border-blue-500">
|
||||
<option value="37">37 - Pendiente Instrucciones</option>
|
||||
<option value="1">1 - Contacto</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Días Siguiente Acción</label>
|
||||
<input type="number" id="multi_cfg_notfound_days" value="1" min="0" class="w-full border border-slate-300 rounded-lg p-2.5 text-sm outline-none focus:border-blue-500">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-slate-600 mb-1">Texto para "Observaciones"</label>
|
||||
<textarea id="multi_cfg_notfound_obs" rows="2" class="w-full border border-slate-300 rounded-lg p-3 text-sm outline-none focus:border-blue-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border-t border-gray-200 pt-10">
|
||||
<div class="mb-6 flex justify-between items-end">
|
||||
<div>
|
||||
@@ -1181,7 +1289,7 @@
|
||||
|
||||
|
||||
// ==========================================
|
||||
// LÓGICA REGLAS ROBOT HOMESERVE
|
||||
// LÓGICA REGLAS ROBOTS (HOMESERVE Y MULTI)
|
||||
// ==========================================
|
||||
function toggleHsConfig(type) {
|
||||
const isChecked = document.getElementById(`hs_cfg_${type}_enabled`).checked;
|
||||
@@ -1190,6 +1298,13 @@
|
||||
else body.classList.add('hidden');
|
||||
}
|
||||
|
||||
function toggleMultiConfig(type) {
|
||||
const isChecked = document.getElementById(`multi_cfg_${type}_enabled`).checked;
|
||||
const body = document.getElementById(`multi_cfg_${type}_body`);
|
||||
if (isChecked) body.classList.remove('hidden');
|
||||
else body.classList.add('hidden');
|
||||
}
|
||||
|
||||
async function loadRobotConfig() {
|
||||
try {
|
||||
const res = await fetch(`${API_URL}/whatsapp/settings`, {
|
||||
@@ -1197,9 +1312,9 @@
|
||||
});
|
||||
const data = await res.json();
|
||||
const s = data.settings || {};
|
||||
|
||||
// Cargar HomeServe
|
||||
const hsSettings = s.robot_homeserve || {};
|
||||
|
||||
// Cargar Asignación
|
||||
if (hsSettings.assign) {
|
||||
document.getElementById('hs_cfg_assign_enabled').checked = hsSettings.assign.enabled;
|
||||
document.getElementById('hs_cfg_assign_status').value = hsSettings.assign.status || "307";
|
||||
@@ -1208,8 +1323,6 @@
|
||||
document.getElementById('hs_cfg_assign_obs').value = hsSettings.assign.obs || "";
|
||||
if (hsSettings.assign.enabled) toggleHsConfig('assign');
|
||||
}
|
||||
|
||||
// Cargar Cita
|
||||
if (hsSettings.date) {
|
||||
document.getElementById('hs_cfg_date_enabled').checked = hsSettings.date.enabled;
|
||||
document.getElementById('hs_cfg_date_status').value = hsSettings.date.status || "307";
|
||||
@@ -1217,8 +1330,6 @@
|
||||
document.getElementById('hs_cfg_date_obs').value = hsSettings.date.obs || "";
|
||||
if (hsSettings.date.enabled) toggleHsConfig('date');
|
||||
}
|
||||
|
||||
// Cargar No Localizado
|
||||
if (hsSettings.notfound) {
|
||||
document.getElementById('hs_cfg_notfound_enabled').checked = hsSettings.notfound.enabled;
|
||||
document.getElementById('hs_cfg_notfound_status').value = hsSettings.notfound.status || "348";
|
||||
@@ -1227,6 +1338,29 @@
|
||||
document.getElementById('hs_cfg_notfound_obs').value = hsSettings.notfound.obs || "";
|
||||
if (hsSettings.notfound.enabled) toggleHsConfig('notfound');
|
||||
}
|
||||
|
||||
// Cargar Multiasistencia
|
||||
const multiSettings = s.robot_multi || {};
|
||||
if (multiSettings.assign) {
|
||||
document.getElementById('multi_cfg_assign_enabled').checked = multiSettings.assign.enabled;
|
||||
document.getElementById('multi_cfg_assign_status').value = multiSettings.assign.status || "1";
|
||||
document.getElementById('multi_cfg_assign_days').value = multiSettings.assign.days_next ?? 1;
|
||||
document.getElementById('multi_cfg_assign_obs').value = multiSettings.assign.obs || "";
|
||||
if (multiSettings.assign.enabled) toggleMultiConfig('assign');
|
||||
}
|
||||
if (multiSettings.date) {
|
||||
document.getElementById('multi_cfg_date_enabled').checked = multiSettings.date.enabled;
|
||||
document.getElementById('multi_cfg_date_status').value = multiSettings.date.status || "2";
|
||||
document.getElementById('multi_cfg_date_obs').value = multiSettings.date.obs || "";
|
||||
if (multiSettings.date.enabled) toggleMultiConfig('date');
|
||||
}
|
||||
if (multiSettings.notfound) {
|
||||
document.getElementById('multi_cfg_notfound_enabled').checked = multiSettings.notfound.enabled;
|
||||
document.getElementById('multi_cfg_notfound_status').value = multiSettings.notfound.status || "37";
|
||||
document.getElementById('multi_cfg_notfound_days').value = multiSettings.notfound.days_next ?? 1;
|
||||
document.getElementById('multi_cfg_notfound_obs').value = multiSettings.notfound.obs || "";
|
||||
if (multiSettings.notfound.enabled) toggleMultiConfig('notfound');
|
||||
}
|
||||
} catch(e) { console.error("Error cargando ajustes del robot", e); }
|
||||
}
|
||||
|
||||
@@ -1258,6 +1392,25 @@
|
||||
check_inform: document.getElementById('hs_cfg_notfound_inform').checked,
|
||||
obs: document.getElementById('hs_cfg_notfound_obs').value
|
||||
}
|
||||
},
|
||||
robot_multi: {
|
||||
assign: {
|
||||
enabled: document.getElementById('multi_cfg_assign_enabled').checked,
|
||||
status: document.getElementById('multi_cfg_assign_status').value,
|
||||
days_next: parseInt(document.getElementById('multi_cfg_assign_days').value) || 0,
|
||||
obs: document.getElementById('multi_cfg_assign_obs').value
|
||||
},
|
||||
date: {
|
||||
enabled: document.getElementById('multi_cfg_date_enabled').checked,
|
||||
status: document.getElementById('multi_cfg_date_status').value,
|
||||
obs: document.getElementById('multi_cfg_date_obs').value
|
||||
},
|
||||
notfound: {
|
||||
enabled: document.getElementById('multi_cfg_notfound_enabled').checked,
|
||||
status: document.getElementById('multi_cfg_notfound_status').value,
|
||||
days_next: parseInt(document.getElementById('multi_cfg_notfound_days').value) || 0,
|
||||
obs: document.getElementById('multi_cfg_notfound_obs').value
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1269,7 +1422,7 @@
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
showToast("✅ Reglas del Robot guardadas");
|
||||
showToast("✅ Reglas de los Robots guardadas");
|
||||
} else {
|
||||
showToast("❌ Error al guardar", true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user