From 602dd4cc5b5d7d50fb10b2b3e4a3958e48aa4b3f Mon Sep 17 00:00:00 2001 From: Tiago Date: Sat, 10 Oct 2026 16:36:20 -0300 Subject: [PATCH] feat(master): unificar painel de clientes com busca e cadastro retratil --- src/main/webapp/master/clientes.html | 75 +++++++++++++++++++++++++++- src/main/webapp/master/clientes.js | 37 +++++++++++++- 2 files changed, 110 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/master/clientes.html b/src/main/webapp/master/clientes.html index a58c638..e545c20 100644 --- a/src/main/webapp/master/clientes.html +++ b/src/main/webapp/master/clientes.html @@ -1 +1,74 @@ -Clientes

Clientes

SlugNomeStatusPlanoEditar
\ No newline at end of file + + + + + + Clientes + + + + + + + +
+
+

Clientes

+
+
+
+

Clientes

+
+ + +
+
+ + + + + +
+ + + + + + + + + + + +
SlugNomeStatusPlanoEditar
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/webapp/master/clientes.js b/src/main/webapp/master/clientes.js index 91fa492..a25af14 100644 --- a/src/main/webapp/master/clientes.js +++ b/src/main/webapp/master/clientes.js @@ -8,7 +8,42 @@ function statusAction(e){const acao=e.status==='ativa'?'Bloquear':'Ativar';retur function detalheRow(e){if(selecionado!==e.id||!modo)return'';if(modo==='ver')return `

${esc(e.nome)}

Slug: ${esc(e.slug)}

CNPJ: ${esc(e.cnpj||'-')}

Status: ${esc(e.status)}

Plano: ${e.plano?`${esc(e.plano)} ${e.plano_valor_centavos?'- '+Util.money(e.plano_valor_centavos):''}`:'-'}

Conta principal: abra Editar para alterar dados da empresa; funcionarios ficam no acesso da empresa.

`;return `
`} function render(){const q=busca.value.trim();const lista=empresas.filter(e=>match(e,q));rows.innerHTML=lista.length?lista.map(e=>`${e.slug}${e.nome}${statusAction(e)}${e.plano?`${e.plano} ${e.plano_valor_centavos?'- '+Util.money(e.plano_valor_centavos):''}`:'-'} ${detalheRow(e)}`).join(''):'Nenhum cliente encontrado.'} async function load(){try{const [pe,de]=await Promise.all([Api.get('/api/master/planos'),Api.get('/api/master/empresas')]);planos=pe.planos||[];empresas=de.empresas||[];renderPlanos();render()}catch(e){Util.toast(e.message,true)}} -empresaForm.onsubmit=async e=>{e.preventDefault();try{await Api.post('/api/master/empresas',Util.formData(empresaForm));empresaForm.reset();Util.toast('Cliente cadastrado');load()}catch(err){Util.toast(err.message,true)}}; + +window.alternarBusca=()=>{ + const strip=document.querySelector('#busca-strip'); + if(!strip)return; + strip.classList.toggle('hidden'); + if(!strip.classList.contains('hidden')){ + busca.focus(); + } +}; + +window.alternarCadastro=(forcar)=>{ + const wrap=document.querySelector('#cadastro-wrap'); + if(!wrap)return; + if(typeof forcar==='boolean'){ + wrap.classList.toggle('hidden',!forcar); + }else{ + wrap.classList.toggle('hidden'); + } + if(!wrap.classList.contains('hidden')){ + empresaForm.querySelector('input[name="slug"]')?.focus(); + } +}; + +empresaForm.onsubmit=async e=>{ + e.preventDefault(); + try{ + await Api.post('/api/master/empresas',Util.formData(empresaForm)); + empresaForm.reset(); + alternarCadastro(false); + Util.toast('Cliente cadastrado'); + load(); + }catch(err){ + Util.toast(err.message,true); + } +}; + busca.oninput=render; window.ver=id=>{selecionado=selecionado===id&&modo==='ver'?null:id;modo=selecionado?'ver':null;render()}; window.editar=id=>{selecionado=selecionado===id&&modo==='editar'?null:id;modo=selecionado?'editar':null;render()};