cambios
This commit is contained in:
@@ -471,7 +471,8 @@ const TIPOS_CAMPO = [
|
||||
{ tipo:'select', label:'Lista desplegable', icon:'fa-list' },
|
||||
{ tipo:'radio', label:'Selección única', icon:'fa-dot-circle' },
|
||||
{ tipo:'checkbox', label:'Múltiple opción', icon:'fa-check-square' },
|
||||
{ tipo:'firma', label:'Firma digital', icon:'fa-signature' },
|
||||
{ tipo:'firma', label:'Firma del paciente', icon:'fa-signature' },
|
||||
{ tipo:'firma_profesional', label:'Firma del profesional', icon:'fa-user-md' },
|
||||
{ tipo:'separador', label:'Separador / Título', icon:'fa-minus' },
|
||||
{ tipo:'parrafo', label:'Párrafo de texto', icon:'fa-paragraph' },
|
||||
{ tipo:'parrafo_inline', label:'Párrafo con campos', icon:'fa-align-left' },
|
||||
@@ -584,8 +585,9 @@ function agregarCampo({ tipo, linked }) {
|
||||
} else if (['select','radio','checkbox'].includes(tipo)) {
|
||||
campo = { id, tipo, label:'Campo sin título', options:['Opción 1','Opción 2'], required:false };
|
||||
} else if (tipo === 'firma') {
|
||||
const _mc = []; if($('tb-firma-canvas').checked)_mc.push('canvas'); if($('tb-firma-foto').checked)_mc.push('foto');
|
||||
campo = { id, tipo:'firma', label:'Firma del paciente', modos: _mc.length ? _mc : ['canvas','foto'] };
|
||||
campo = { id, tipo:'firma', label:'Firma del paciente', modos: ['canvas','foto'] };
|
||||
} else if (tipo === 'firma_profesional') {
|
||||
campo = { id, tipo:'firma_profesional', label:'Firma del profesional', modos: ['canvas'] };
|
||||
} else if (tipo === 'parrafo') {
|
||||
campo = { id, tipo:'parrafo', contenido:'Escribe aquí el texto del párrafo...', flujoLibre:false };
|
||||
} else if (tipo === 'parrafo_inline') {
|
||||
@@ -606,7 +608,7 @@ function agregarCampo({ tipo, linked }) {
|
||||
const TIPO_ICON = {
|
||||
texto:'fa-font', textarea:'fa-align-left', numero:'fa-hashtag',
|
||||
fecha:'fa-calendar', hora:'fa-clock', select:'fa-list', radio:'fa-dot-circle',
|
||||
checkbox:'fa-check-square', firma:'fa-signature', separador:'fa-minus', linked:'fa-link',
|
||||
checkbox:'fa-check-square', firma:'fa-signature', firma_profesional:'fa-user-md', separador:'fa-minus', linked:'fa-link',
|
||||
parrafo:'fa-paragraph', parrafo_inline:'fa-align-left', lista_marcable:'fa-list-ol'
|
||||
};
|
||||
|
||||
@@ -732,7 +734,11 @@ function renderCampoPreview(c) {
|
||||
}
|
||||
if (c.tipo === 'firma') {
|
||||
return `<div class="preview-field">${lbl}
|
||||
<div style="border:1px solid #dee2e6;border-radius:5px;height:50px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#aaa;background:#fafafa">✍️ Firma</div></div>`;
|
||||
<div style="border:1px solid #1565c0;border-radius:5px;height:50px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#1565c0;background:#e8f0fe">✍️ Firma del paciente</div></div>`;
|
||||
}
|
||||
if (c.tipo === 'firma_profesional') {
|
||||
return `<div class="preview-field">${lbl}
|
||||
<div style="border:1px solid #198754;border-radius:5px;height:50px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#198754;background:#f0fff4">✍️ Firma del profesional</div></div>`;
|
||||
}
|
||||
if (c.tipo === 'parrafo') {
|
||||
const ws = c.flujoLibre ? 'normal' : 'pre-wrap';
|
||||
@@ -837,6 +843,21 @@ function abrirEditorCampo(idx) {
|
||||
<input class="form-check-input" type="checkbox" id="ce-required" ${c.required?'checked':''}>
|
||||
<label class="form-check-label small" for="ce-required">Requiere al menos una selección</label>
|
||||
</div>`;
|
||||
} else if (c.tipo === 'firma' || c.tipo === 'firma_profesional') {
|
||||
const cm = c.modos || ['canvas'];
|
||||
html += `<div class="mb-2">
|
||||
<label class="form-label small fw-semibold">Modos de firma disponibles</label>
|
||||
<div class="d-flex gap-4">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="ce-modo-canvas" ${cm.includes('canvas')?'checked':''}>
|
||||
<label class="form-check-label small" for="ce-modo-canvas">✍️ Dibujar (canvas)</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="ce-modo-foto" ${cm.includes('foto')?'checked':''}>
|
||||
<label class="form-check-label small" for="ce-modo-foto">📷 Foto</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
$('campo-editor-body').innerHTML = html;
|
||||
@@ -882,6 +903,15 @@ function aplicarCampo() {
|
||||
const items = document.getElementById('ce-items');
|
||||
if (items) c.items = items.value.split('\n').map(s=>s.trim()).filter(Boolean);
|
||||
|
||||
const modoCanvas = document.getElementById('ce-modo-canvas');
|
||||
const modoFoto = document.getElementById('ce-modo-foto');
|
||||
if (modoCanvas !== null || modoFoto !== null) {
|
||||
const mc = [];
|
||||
if (modoCanvas?.checked) mc.push('canvas');
|
||||
if (modoFoto?.checked) mc.push('foto');
|
||||
if (mc.length) c.modos = mc;
|
||||
}
|
||||
|
||||
_bsCampo.hide();
|
||||
renderCanvas();
|
||||
renderPreview();
|
||||
@@ -988,7 +1018,6 @@ async function guardar() {
|
||||
const usarGlobal = $('tb-usar-global').checked;
|
||||
// Sincronizar modos ANTES de serializar el esquema
|
||||
const _modos = []; if($('tb-firma-canvas').checked)_modos.push('canvas'); if($('tb-firma-foto').checked)_modos.push('foto');
|
||||
_campos = _campos.map(c => c.tipo === 'firma' ? { ...c, modos: _modos.length ? _modos : ['canvas'] } : c);
|
||||
const datos = {
|
||||
nombre,
|
||||
descripcion: $('tb-descripcion').value.trim() || null,
|
||||
|
||||
Reference in New Issue
Block a user