@orbe-agro/client-core 5.6.289 → 5.6.291
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@ecme/components/template/Footer.js +1 -1
- package/dist/@types/base/@types/api/response/originacao/TRelatorioDinamicoResponse.d.ts +67 -0
- package/dist/@types/base/@types/api/response/originacao/TRelatorioDinamicoResponse.d.ts.map +1 -0
- package/dist/@types/base/@types/models/compras/Dashboard.d.ts +0 -4
- package/dist/@types/base/@types/models/compras/Dashboard.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts +12 -12
- package/dist/@types/base/configs/endpoints.config/compras/config/dashboard.d.ts +12 -0
- package/dist/@types/base/configs/endpoints.config/compras/config/dashboard.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/config/requisicaoCompra.d.ts +0 -12
- package/dist/@types/base/configs/endpoints.config/compras/config/requisicaoCompra.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +21 -12
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/relatoriosDinamicos.d.ts +11 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/relatoriosDinamicos.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts +9 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/originacao/relatorios.submenu.d.ts.map +1 -1
- package/dist/@types/base/services/modules/compras/dashboard/DashboardService.d.ts +4 -1
- package/dist/@types/base/services/modules/compras/dashboard/DashboardService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/compras/requisicaoCompra/RequisicaoCompraService.d.ts +0 -4
- package/dist/@types/base/services/modules/compras/requisicaoCompra/RequisicaoCompraService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/index.d.ts +1 -0
- package/dist/@types/base/services/modules/originacao/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.d.ts +14 -0
- package/dist/@types/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.d.ts.map +1 -0
- package/dist/base/@types/api/response/originacao/TRelatorioDinamicoResponse.js +2 -0
- package/dist/base/@types/api/response/originacao/TRelatorioDinamicoResponse.js.map +1 -0
- package/dist/base/configs/endpoints.config/compras/config/dashboard.js +3 -0
- package/dist/base/configs/endpoints.config/compras/config/dashboard.js.map +1 -1
- package/dist/base/configs/endpoints.config/compras/config/requisicaoCompra.js +1 -4
- package/dist/base/configs/endpoints.config/compras/config/requisicaoCompra.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/relatoriosDinamicos.js +14 -0
- package/dist/base/configs/endpoints.config/originacao/config/relatoriosDinamicos.js.map +1 -0
- package/dist/base/configs/endpoints.config/originacao/originacao.js +2 -0
- package/dist/base/configs/endpoints.config/originacao/originacao.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos.js +15 -0
- package/dist/base/configs/navigation.config/modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/originacao/relatorios.submenu.js +3 -1
- package/dist/base/configs/navigation.config/submenu/originacao/relatorios.submenu.js.map +1 -1
- package/dist/base/index.js +14 -5
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/index.js +14 -5
- package/dist/base/services/index.js.map +1 -1
- package/dist/base/services/modules/compras/dashboard/DashboardService.js +25 -1
- package/dist/base/services/modules/compras/dashboard/DashboardService.js.map +1 -1
- package/dist/base/services/modules/compras/index.js +5 -5
- package/dist/base/services/modules/compras/requisicaoCompra/RequisicaoCompraService.js +0 -24
- package/dist/base/services/modules/compras/requisicaoCompra/RequisicaoCompraService.js.map +1 -1
- package/dist/base/services/modules/index.js +14 -5
- package/dist/base/services/modules/index.js.map +1 -1
- package/dist/base/services/modules/originacao/index.js +9 -0
- package/dist/base/services/modules/originacao/index.js.map +1 -1
- package/dist/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.js +91 -0
- package/dist/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.js.map +1 -0
- package/lib/base/@types/api/response/originacao/TRelatorioDinamicoResponse.ts +74 -0
- package/lib/base/@types/models/compras/Dashboard.ts +0 -4
- package/lib/base/configs/endpoints.config/compras/config/dashboard.ts +3 -0
- package/lib/base/configs/endpoints.config/compras/config/requisicaoCompra.ts +1 -4
- package/lib/base/configs/endpoints.config/originacao/config/relatoriosDinamicos.ts +11 -0
- package/lib/base/configs/endpoints.config/originacao/originacao.ts +2 -0
- package/lib/base/configs/navigation.config/modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos.ts +13 -0
- package/lib/base/configs/navigation.config/submenu/originacao/relatorios.submenu.ts +2 -0
- package/lib/base/services/modules/compras/dashboard/DashboardService.ts +30 -1
- package/lib/base/services/modules/compras/requisicaoCompra/RequisicaoCompraService.ts +0 -32
- package/lib/base/services/modules/originacao/index.ts +1 -0
- package/lib/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.ts +120 -0
- package/package.json +1 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { IFilterFieldDescriptor } from '@base/@types/filters'
|
|
2
|
+
|
|
3
|
+
export type TBaseRelatorioDinamico =
|
|
4
|
+
| 'CONTRATO_COMPRA_GRAOS'
|
|
5
|
+
| 'LIQUIDACAO'
|
|
6
|
+
| 'SALDO_TICKET'
|
|
7
|
+
| 'TICKET'
|
|
8
|
+
| 'ENTREGA_BAYER'
|
|
9
|
+
export type TVisibilidadeRelatorioDinamico = 'PESSOAL' | 'COMPARTILHADO'
|
|
10
|
+
export type TColunaRelatorioDinamico = {
|
|
11
|
+
chave: string
|
|
12
|
+
rotulo: string
|
|
13
|
+
origem: string
|
|
14
|
+
tipo:
|
|
15
|
+
| 'IDENTIFICADOR'
|
|
16
|
+
| 'TEXTO'
|
|
17
|
+
| 'INTEIRO'
|
|
18
|
+
| 'DECIMAL'
|
|
19
|
+
| 'DATA'
|
|
20
|
+
| 'DATA_HORA'
|
|
21
|
+
| 'BOOLEANO'
|
|
22
|
+
}
|
|
23
|
+
export type TFiltroRelatorioDinamico = {
|
|
24
|
+
chave: string
|
|
25
|
+
rotulo: string
|
|
26
|
+
campos: IFilterFieldDescriptor[]
|
|
27
|
+
}
|
|
28
|
+
export type TCatalogoRelatorioDinamico = {
|
|
29
|
+
bases: { codigo: TBaseRelatorioDinamico; descricao: string }[]
|
|
30
|
+
base: TBaseRelatorioDinamico | null
|
|
31
|
+
colunas: TColunaRelatorioDinamico[]
|
|
32
|
+
filtros: TFiltroRelatorioDinamico[]
|
|
33
|
+
}
|
|
34
|
+
export type TRelatorioDinamicoResponse = {
|
|
35
|
+
id: number
|
|
36
|
+
nome: string
|
|
37
|
+
base: TBaseRelatorioDinamico
|
|
38
|
+
visibilidade: TVisibilidadeRelatorioDinamico
|
|
39
|
+
criadorId: number
|
|
40
|
+
colunas: string[]
|
|
41
|
+
filtros: string[]
|
|
42
|
+
dataCriacao: string
|
|
43
|
+
dataAtualizacao: string
|
|
44
|
+
}
|
|
45
|
+
export type TEditarRelatorioDinamicoRequest = {
|
|
46
|
+
nome: string
|
|
47
|
+
visibilidade: TVisibilidadeRelatorioDinamico
|
|
48
|
+
colunas: string[]
|
|
49
|
+
filtros: string[]
|
|
50
|
+
}
|
|
51
|
+
export type TCriarRelatorioDinamicoRequest = TEditarRelatorioDinamicoRequest & {
|
|
52
|
+
base: TBaseRelatorioDinamico
|
|
53
|
+
}
|
|
54
|
+
export type TOrdenacaoRelatorioDinamico = {
|
|
55
|
+
campo: string
|
|
56
|
+
direcao: 'ASC' | 'DESC'
|
|
57
|
+
}
|
|
58
|
+
export type TExportarRelatorioDinamicoRequest = {
|
|
59
|
+
filtros: Record<string, unknown>
|
|
60
|
+
ordenacao: TOrdenacaoRelatorioDinamico[]
|
|
61
|
+
}
|
|
62
|
+
export type TConsultarRelatorioDinamicoRequest =
|
|
63
|
+
TExportarRelatorioDinamicoRequest & { pagina: number; tamanho: number }
|
|
64
|
+
export type TValorRelatorioDinamico = string | number | boolean | null
|
|
65
|
+
export type TResultadoRelatorioDinamico = {
|
|
66
|
+
colunas: TColunaRelatorioDinamico[]
|
|
67
|
+
linhas: Record<string, TValorRelatorioDinamico>[]
|
|
68
|
+
paginacao: {
|
|
69
|
+
number: number
|
|
70
|
+
size: number
|
|
71
|
+
totalElements: number
|
|
72
|
+
totalPages: number
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -26,13 +26,9 @@ export type TDashboardRequisicaoCompraResponse = {
|
|
|
26
26
|
requisicoesAtendidas: number
|
|
27
27
|
requisicoesUrgentes: number
|
|
28
28
|
requisicoesNormais: number
|
|
29
|
-
/** BigDecimal no backend: o Jackson manda número, mas pode vir string se configurado assim. */
|
|
30
29
|
valorTotalCompras: number | string | null
|
|
31
|
-
/** Itens cotados com 2+ fornecedores e um deles escolhido. */
|
|
32
30
|
itensNegociados: number
|
|
33
|
-
/** BigDecimal, em R$: média das cotações − valor escolhido. Vai no card "Economia total". */
|
|
34
31
|
mediaEconomiaPorItem: number | string | null
|
|
35
|
-
/** BigDecimal, já de 0 a 100: SUM(economia) / SUM(média das cotações). */
|
|
36
32
|
percentualEconomiaGeral: number | string | null
|
|
37
33
|
}
|
|
38
34
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const DASHBOARD_BASE_URL = '/compras/api/dashboard'
|
|
2
2
|
|
|
3
3
|
const dashboard = {
|
|
4
|
+
comprasRequisicoes: { endpoint: DASHBOARD_BASE_URL, httpMethod: 'post' },
|
|
5
|
+
rankings: { endpoint: `${DASHBOARD_BASE_URL}/rankings`, httpMethod: 'post' },
|
|
6
|
+
comprasDiretas: { endpoint: `${DASHBOARD_BASE_URL}/compras-diretas`, httpMethod: 'post' },
|
|
4
7
|
pedidosPendentes: { endpoint: `${DASHBOARD_BASE_URL}/pedidos-pendentes`, httpMethod: 'post' },
|
|
5
8
|
opcoesFiltro: { endpoint: `${DASHBOARD_BASE_URL}/opcoes-filtro`, httpMethod: 'get' },
|
|
6
9
|
}
|
|
@@ -9,10 +9,7 @@ const requisicaoCompra = {
|
|
|
9
9
|
findHistoricosMovimentacao: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/{id}/find-historicos-movimentacao-itens`, httpMethod: 'get' },
|
|
10
10
|
findDetalheItemRequisicaoCompraMonitor: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/{id}/detalhes-itens`, httpMethod: 'get' },
|
|
11
11
|
adicionarObservacao: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/{id}/observacao`, httpMethod: 'post' },
|
|
12
|
-
lock: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/lock`, httpMethod: 'post' }
|
|
13
|
-
dashboard: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/dashboard`, httpMethod: 'post' },
|
|
14
|
-
dashboardRankings: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/dashboard/rankings`, httpMethod: 'post' },
|
|
15
|
-
dashboardComprasDiretas: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/dashboard/compras-diretas`, httpMethod: 'post' }
|
|
12
|
+
lock: { endpoint: `${REQUISICAO_COMPRA_BASE_URL}/lock`, httpMethod: 'post' }
|
|
16
13
|
}
|
|
17
14
|
|
|
18
15
|
export default requisicaoCompra
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const root = '/originacao/api/relatorios-dinamicos'
|
|
2
|
+
const relatoriosDinamicos = {
|
|
3
|
+
catalogo: (base?: string) => `${root}/catalogo${base ? `?base=${encodeURIComponent(base)}` : ''}`,
|
|
4
|
+
findAll: (params?: string) => `${root}${params ? `?${params}` : ''}`,
|
|
5
|
+
add: root,
|
|
6
|
+
findOne: (id: number | string) => `${root}/${id}`,
|
|
7
|
+
editarCompartilhado: (id: number | string) => `${root}/${id}/compartilhado`,
|
|
8
|
+
consultar: (id: number | string) => `${root}/${id}/consultar`,
|
|
9
|
+
exportar: (id: number | string) => `${root}/${id}/exportar`,
|
|
10
|
+
}
|
|
11
|
+
export default relatoriosDinamicos
|
|
@@ -36,8 +36,10 @@ import tarefaLiquidacao from "./config/tarefaLiquidacao";
|
|
|
36
36
|
import campoFixo from "./config/campoFixo";
|
|
37
37
|
import relatorioAuditoriaMensal from "./config/relatorios/relatorioAuditoriaMensal";
|
|
38
38
|
import alteracaoTransgenia from "./config/alteracaoTransgenia";
|
|
39
|
+
import relatoriosDinamicos from "./config/relatoriosDinamicos";
|
|
39
40
|
|
|
40
41
|
const originacao = {
|
|
42
|
+
relatoriosDinamicos,
|
|
41
43
|
alteracaoTransgenia,
|
|
42
44
|
preContrato,
|
|
43
45
|
contrato,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NavigationTree } from '@/@types/navigation'
|
|
2
|
+
const subMenuRelatoriosDinamicos: NavigationTree = {
|
|
3
|
+
key: 'originacao.relatoriosDinamicos',
|
|
4
|
+
path: '/originacao/relatorios-dinamicos',
|
|
5
|
+
title: 'Relatórios dinâmicos',
|
|
6
|
+
translateKey: 'modules.originacao.relatoriosDinamicos.title',
|
|
7
|
+
icon: 'form',
|
|
8
|
+
type: 'item',
|
|
9
|
+
authority: [],
|
|
10
|
+
subMenu: [],
|
|
11
|
+
forceShowTitle: true,
|
|
12
|
+
}
|
|
13
|
+
export default subMenuRelatoriosDinamicos
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { NavigationTree } from "@/@types/navigation"
|
|
2
2
|
import relatorioAuditoriaMensalSubmenu from "./config/relatorioAuditoriaMensal.submenu"
|
|
3
|
+
import subMenuRelatoriosDinamicos from '../../modules.submenu/originacao/relatoriosDinamicos/submenu.relatoriosDinamicos'
|
|
3
4
|
|
|
4
5
|
const relatorioSubmenu: NavigationTree[] = [
|
|
5
6
|
relatorioAuditoriaMensalSubmenu,
|
|
7
|
+
subMenuRelatoriosDinamicos,
|
|
6
8
|
]
|
|
7
9
|
|
|
8
10
|
export default relatorioSubmenu
|
|
@@ -1,14 +1,43 @@
|
|
|
1
1
|
import ApiService from "@/services/ApiService";
|
|
2
2
|
import endpointConfig from "@base/configs/endpoints.config/endpoints.navigation";
|
|
3
3
|
import {
|
|
4
|
+
TDashboardComprasDiretasPayload,
|
|
5
|
+
TDashboardComprasDiretasResponse,
|
|
4
6
|
TDashboardOpcoesFiltro,
|
|
5
7
|
TDashboardPedidosPendentesPayload,
|
|
6
8
|
TDashboardPedidosPendentesResponse,
|
|
9
|
+
TDashboardRankingsPayload,
|
|
10
|
+
TDashboardRankingsResponse,
|
|
11
|
+
TDashboardRequisicaoCompraPayload,
|
|
12
|
+
TDashboardRequisicaoCompraResponse,
|
|
7
13
|
} from "@base/@types/models/compras/Dashboard";
|
|
8
14
|
|
|
9
|
-
// compras e requisições e compras diretas usam /requisicao-compra/dashboard/* (RequisicaoCompraService)
|
|
10
15
|
const DASHBOARD_ENDPOINT = endpointConfig.compras.dashboard;
|
|
11
16
|
|
|
17
|
+
export async function apiGetDashboardComprasRequisicoes(data: TDashboardRequisicaoCompraPayload) {
|
|
18
|
+
return ApiService.fetchDataWithAxios<TDashboardRequisicaoCompraResponse>({
|
|
19
|
+
url: DASHBOARD_ENDPOINT.comprasRequisicoes.endpoint,
|
|
20
|
+
method: DASHBOARD_ENDPOINT.comprasRequisicoes.httpMethod,
|
|
21
|
+
data,
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export async function apiGetDashboardRankings(data: TDashboardRankingsPayload) {
|
|
26
|
+
return ApiService.fetchDataWithAxios<TDashboardRankingsResponse>({
|
|
27
|
+
url: DASHBOARD_ENDPOINT.rankings.endpoint,
|
|
28
|
+
method: DASHBOARD_ENDPOINT.rankings.httpMethod,
|
|
29
|
+
data,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function apiGetDashboardComprasDiretas(data: TDashboardComprasDiretasPayload) {
|
|
34
|
+
return ApiService.fetchDataWithAxios<TDashboardComprasDiretasResponse>({
|
|
35
|
+
url: DASHBOARD_ENDPOINT.comprasDiretas.endpoint,
|
|
36
|
+
method: DASHBOARD_ENDPOINT.comprasDiretas.httpMethod,
|
|
37
|
+
data,
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
12
41
|
export async function apiGetDashboardPedidosPendentes(data: TDashboardPedidosPendentesPayload) {
|
|
13
42
|
return ApiService.fetchDataWithAxios<TDashboardPedidosPendentesResponse>({
|
|
14
43
|
url: DASHBOARD_ENDPOINT.pedidosPendentes.endpoint,
|
|
@@ -2,14 +2,6 @@ import ApiService from "@/services/ApiService";
|
|
|
2
2
|
import { IFilterParams, TQueryResponse } from "@base/@types/api";
|
|
3
3
|
import endpointConfig from "@base/configs/endpoints.config/endpoints.navigation";
|
|
4
4
|
import { TObservacaoRequisicaoCompra } from "@base/@types/models/compras/RequisicaoCompra";
|
|
5
|
-
import {
|
|
6
|
-
TDashboardComprasDiretasPayload,
|
|
7
|
-
TDashboardComprasDiretasResponse,
|
|
8
|
-
TDashboardRankingsPayload,
|
|
9
|
-
TDashboardRankingsResponse,
|
|
10
|
-
TDashboardRequisicaoCompraPayload,
|
|
11
|
-
TDashboardRequisicaoCompraResponse,
|
|
12
|
-
} from "@base/@types/models/compras/Dashboard";
|
|
13
5
|
|
|
14
6
|
const REQUISICAO_COMPRA_ENDPOINT = endpointConfig.compras.requisicaoCompra;
|
|
15
7
|
|
|
@@ -80,28 +72,4 @@ export async function apiSetRequisicaoCompraLock(idRequisicaoCompra: number, loc
|
|
|
80
72
|
method: REQUISICAO_COMPRA_ENDPOINT.lock.httpMethod,
|
|
81
73
|
params: { idRequisicaoCompra, lock }
|
|
82
74
|
})
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export async function apiDashboardRequisicaoCompra(data: TDashboardRequisicaoCompraPayload) {
|
|
86
|
-
return ApiService.fetchDataWithAxios<TDashboardRequisicaoCompraResponse>({
|
|
87
|
-
url: REQUISICAO_COMPRA_ENDPOINT.dashboard.endpoint,
|
|
88
|
-
method: REQUISICAO_COMPRA_ENDPOINT.dashboard.httpMethod,
|
|
89
|
-
data
|
|
90
|
-
})
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export async function apiDashboardRankingsRequisicaoCompra(data: TDashboardRankingsPayload) {
|
|
94
|
-
return ApiService.fetchDataWithAxios<TDashboardRankingsResponse>({
|
|
95
|
-
url: REQUISICAO_COMPRA_ENDPOINT.dashboardRankings.endpoint,
|
|
96
|
-
method: REQUISICAO_COMPRA_ENDPOINT.dashboardRankings.httpMethod,
|
|
97
|
-
data
|
|
98
|
-
})
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export async function apiDashboardComprasDiretasRequisicaoCompra(data: TDashboardComprasDiretasPayload) {
|
|
102
|
-
return ApiService.fetchDataWithAxios<TDashboardComprasDiretasResponse>({
|
|
103
|
-
url: REQUISICAO_COMPRA_ENDPOINT.dashboardComprasDiretas.endpoint,
|
|
104
|
-
method: REQUISICAO_COMPRA_ENDPOINT.dashboardComprasDiretas.httpMethod,
|
|
105
|
-
data
|
|
106
|
-
})
|
|
107
75
|
}
|
|
@@ -21,3 +21,4 @@ export * from './vinculoOperacaoLiquidacao/vinculoOperacaoLiquidacaoService';
|
|
|
21
21
|
export * from './alteracaoTransgenia/alteracaoTransgeniaService';
|
|
22
22
|
export * from './tarefaLiquidacao/tarefaLiquidacaoService';
|
|
23
23
|
export * from './campoFixo/campoFixoService';
|
|
24
|
+
export * from './relatoriosDinamicos/relatoriosDinamicosService';
|
package/lib/base/services/modules/originacao/relatoriosDinamicos/relatoriosDinamicosService.ts
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import ApiService from '@/services/ApiService'
|
|
2
|
+
import { isAxiosError } from 'axios'
|
|
3
|
+
import AxiosBase from '@/services/axios/AxiosBase'
|
|
4
|
+
import endpointNavigationConfig from '@base/configs/endpoints.config/endpoints.navigation'
|
|
5
|
+
import type { TQueryResponse } from '@base/@types/api'
|
|
6
|
+
import type {
|
|
7
|
+
TBaseRelatorioDinamico,
|
|
8
|
+
TCatalogoRelatorioDinamico,
|
|
9
|
+
TRelatorioDinamicoResponse,
|
|
10
|
+
TCriarRelatorioDinamicoRequest,
|
|
11
|
+
TEditarRelatorioDinamicoRequest,
|
|
12
|
+
TConsultarRelatorioDinamicoRequest,
|
|
13
|
+
TExportarRelatorioDinamicoRequest,
|
|
14
|
+
TResultadoRelatorioDinamico,
|
|
15
|
+
} from '@base/@types/api/response/originacao/TRelatorioDinamicoResponse'
|
|
16
|
+
|
|
17
|
+
const endpoints = endpointNavigationConfig.originacao.relatoriosDinamicos
|
|
18
|
+
export const apiCatalogoRelatorioDinamico = (base?: TBaseRelatorioDinamico) =>
|
|
19
|
+
ApiService.fetchDataWithAxios<TCatalogoRelatorioDinamico>({
|
|
20
|
+
url: endpoints.catalogo(base),
|
|
21
|
+
method: 'get',
|
|
22
|
+
})
|
|
23
|
+
export const apiListarRelatoriosDinamicos = (params?: string) =>
|
|
24
|
+
ApiService.fetchDataWithAxios<TQueryResponse<TRelatorioDinamicoResponse>>({
|
|
25
|
+
url: endpoints.findAll(params),
|
|
26
|
+
method: 'get',
|
|
27
|
+
})
|
|
28
|
+
export const apiObterRelatorioDinamico = (id: string | number) =>
|
|
29
|
+
ApiService.fetchDataWithAxios<TRelatorioDinamicoResponse>({
|
|
30
|
+
url: endpoints.findOne(id),
|
|
31
|
+
method: 'get',
|
|
32
|
+
})
|
|
33
|
+
export const apiCriarRelatorioDinamico = (
|
|
34
|
+
data: TCriarRelatorioDinamicoRequest,
|
|
35
|
+
) =>
|
|
36
|
+
ApiService.fetchDataWithAxios<TRelatorioDinamicoResponse>({
|
|
37
|
+
url: endpoints.add,
|
|
38
|
+
method: 'post',
|
|
39
|
+
data,
|
|
40
|
+
})
|
|
41
|
+
export const apiEditarRelatorioDinamico = (
|
|
42
|
+
id: string | number,
|
|
43
|
+
data: TEditarRelatorioDinamicoRequest,
|
|
44
|
+
compartilhado: boolean,
|
|
45
|
+
) =>
|
|
46
|
+
ApiService.fetchDataWithAxios<TRelatorioDinamicoResponse>({
|
|
47
|
+
url: compartilhado
|
|
48
|
+
? endpoints.editarCompartilhado(id)
|
|
49
|
+
: endpoints.findOne(id),
|
|
50
|
+
method: 'put',
|
|
51
|
+
data,
|
|
52
|
+
})
|
|
53
|
+
export const apiExcluirRelatorioDinamico = (id: string | number) =>
|
|
54
|
+
ApiService.fetchDataWithAxios<void>({
|
|
55
|
+
url: endpoints.findOne(id),
|
|
56
|
+
method: 'delete',
|
|
57
|
+
})
|
|
58
|
+
export const apiConsultarRelatorioDinamico = (
|
|
59
|
+
id: string | number,
|
|
60
|
+
data: TConsultarRelatorioDinamicoRequest,
|
|
61
|
+
) =>
|
|
62
|
+
ApiService.fetchDataWithAxios<TResultadoRelatorioDinamico>({
|
|
63
|
+
url: endpoints.consultar(id),
|
|
64
|
+
method: 'post',
|
|
65
|
+
data,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
export async function apiExportarRelatorioDinamico(
|
|
69
|
+
id: string | number,
|
|
70
|
+
data: TExportarRelatorioDinamicoRequest,
|
|
71
|
+
): Promise<{ arquivo: Blob; nome: string }> {
|
|
72
|
+
try {
|
|
73
|
+
const response = await AxiosBase<Blob>({
|
|
74
|
+
url: endpoints.exportar(id),
|
|
75
|
+
method: 'post',
|
|
76
|
+
data,
|
|
77
|
+
responseType: 'blob',
|
|
78
|
+
})
|
|
79
|
+
const disposition = String(
|
|
80
|
+
response.headers['content-disposition'] ?? '',
|
|
81
|
+
)
|
|
82
|
+
const encoded = /filename\*=UTF-8''([^;]+)/i.exec(disposition)?.[1]
|
|
83
|
+
const plain = /filename="?([^";]+)"?/i.exec(disposition)?.[1]
|
|
84
|
+
let nome = plain ?? `relatorio-${id}.xlsx`
|
|
85
|
+
if (encoded) {
|
|
86
|
+
try {
|
|
87
|
+
nome = decodeURIComponent(encoded)
|
|
88
|
+
} catch {
|
|
89
|
+
nome = `relatorio-${id}.xlsx`
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return { arquivo: response.data, nome: nome.replace(/[\\/]/g, '_') }
|
|
93
|
+
} catch (error: unknown) {
|
|
94
|
+
const response = isAxiosError(error) ? error.response : undefined
|
|
95
|
+
if (response?.data instanceof Blob) {
|
|
96
|
+
const text = await response.data.text()
|
|
97
|
+
let message = 'Não foi possível exportar o relatório.'
|
|
98
|
+
try {
|
|
99
|
+
const problem: unknown = JSON.parse(text)
|
|
100
|
+
if (problem && typeof problem === 'object') {
|
|
101
|
+
if (
|
|
102
|
+
'detail' in problem &&
|
|
103
|
+
typeof problem.detail === 'string'
|
|
104
|
+
)
|
|
105
|
+
message = problem.detail
|
|
106
|
+
else if (
|
|
107
|
+
'title' in problem &&
|
|
108
|
+
typeof problem.title === 'string'
|
|
109
|
+
)
|
|
110
|
+
message = problem.title
|
|
111
|
+
}
|
|
112
|
+
} catch {
|
|
113
|
+
if (text && text.length < 500 && !text.includes('<html'))
|
|
114
|
+
message = text
|
|
115
|
+
}
|
|
116
|
+
throw new Error(message)
|
|
117
|
+
}
|
|
118
|
+
throw error
|
|
119
|
+
}
|
|
120
|
+
}
|
package/package.json
CHANGED