feat(api,web): positivacao de novos clientes por representante no painel gerencial
- novosClientes por rep no dashboard do gerente: clientes da carteira cuja PRIMEIRA compra (historico todo do ERP) caiu no periodo - Coluna "Novos no mes" (tag verde +N, ordenavel) na tabela de positivacao + total de novos clientes no cabecalho do card Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
Skeleton,
|
||||
Space,
|
||||
Table,
|
||||
Tag,
|
||||
Typography,
|
||||
} from 'antd';
|
||||
import { useNavigate } from '@tanstack/react-router';
|
||||
@@ -84,6 +85,21 @@ const positivacaoColumns: TableColumnsType<PositivacaoRep> = [
|
||||
</Text>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Novos no mês',
|
||||
key: 'novos',
|
||||
width: 120,
|
||||
align: 'center' as const,
|
||||
sorter: (a: PositivacaoRep, b: PositivacaoRep) => a.novosClientes - b.novosClientes,
|
||||
render: (_: unknown, row: PositivacaoRep) =>
|
||||
row.novosClientes > 0 ? (
|
||||
<Tag color="green" style={{ margin: 0, fontWeight: 600 }}>
|
||||
+{row.novosClientes}
|
||||
</Tag>
|
||||
) : (
|
||||
<Text type="secondary">—</Text>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '% Positivação',
|
||||
dataIndex: 'pctPositivacao',
|
||||
@@ -643,9 +659,20 @@ export function GerPainel() {
|
||||
</Space>
|
||||
}
|
||||
extra={
|
||||
<Text type="secondary" style={{ fontSize: 'var(--text-xs)' }}>
|
||||
{positivacaoReps.filter((r) => r.clientesPositivados > 0).length} reps com positivação
|
||||
</Text>
|
||||
<Flex align="center" gap={12}>
|
||||
{positivacaoReps.reduce((acc, r) => acc + r.novosClientes, 0) > 0 && (
|
||||
<Tag color="green" style={{ margin: 0, fontWeight: 600 }}>
|
||||
+{positivacaoReps.reduce((acc, r) => acc + r.novosClientes, 0)} novo
|
||||
{positivacaoReps.reduce((acc, r) => acc + r.novosClientes, 0) !== 1 ? 's' : ''}{' '}
|
||||
cliente
|
||||
{positivacaoReps.reduce((acc, r) => acc + r.novosClientes, 0) !== 1 ? 's' : ''} no
|
||||
período
|
||||
</Tag>
|
||||
)}
|
||||
<Text type="secondary" style={{ fontSize: 'var(--text-xs)' }}>
|
||||
{positivacaoReps.filter((r) => r.clientesPositivados > 0).length} reps com positivação
|
||||
</Text>
|
||||
</Flex>
|
||||
}
|
||||
>
|
||||
<Table<PositivacaoRep>
|
||||
|
||||
Reference in New Issue
Block a user