feat(clientes-maestro): importar y exportar clientes del archivo maestro

- Tabla ClienteMaestro (27 campos, unique numCliente)
- Importador Excel: 1535 clientes del Reporte maestro
- API: listar/filtros/exportar/detalle/importar
- Frontend: tabla paginada, filtros, exportar Excel
- Dark mode completo, 52 tests verdes
This commit is contained in:
2026-09-07 09:11:09 +00:00
parent c2a8f4e929
commit 9021733455
18 changed files with 1428 additions and 10 deletions

View File

@@ -7,10 +7,11 @@ import BannerModoLocal from './components/BannerModoLocal'
import { VistaContactos } from './components/VistaContactos'
import { ConfigPage } from './components/config/ConfigPage'
import { CapturaPage } from './pages/CapturaPage'
import { ClientesMaestroPage } from './pages/ClientesMaestroPage'
import { getToken, type UsuarioSesion } from './services/auth'
import { getMe } from './services/api'
type Vista = 'home' | 'contactos' | 'captura' | 'configuraciones'
type Vista = 'home' | 'contactos' | 'captura' | 'clientes-maestro' | 'configuraciones'
export default function App() {
const [vista, setVista] = useState<Vista>('home')
@@ -64,6 +65,16 @@ export default function App() {
)
}
if (vista === 'clientes-maestro') {
return (
<div className="flex min-h-screen flex-col">
<Navbar usuario={usuario} onConfiguraciones={() => setVista('configuraciones')} />
<BannerModoLocal />
<ClientesMaestroPage onVolver={() => setVista('home')} />
</div>
)
}
if (vista === 'configuraciones' && usuario?.rol === 'admin') {
return (
<div className="flex min-h-screen flex-col">
@@ -104,7 +115,9 @@ export default function App() {
? () => setVista('contactos')
: modulo.id === 'captura'
? () => setVista('captura')
: undefined
: modulo.id === 'clientes-maestro'
? () => setVista('clientes-maestro')
: undefined
}
/>
))}