From 496b73fbc45ae908d50bd9ffd8acf955ebc955df Mon Sep 17 00:00:00 2001 From: Marcos Reifonas Date: Fri, 21 Aug 2026 16:43:34 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20cor=20de=20fundo=20no=20filtro=20de=20pe?= =?UTF-8?q?=C3=A7as=20e=20exibi=C3=A7=C3=A3o=20do=20nome=20do=20processo?= =?UTF-8?q?=20no=20apontamento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apontamento/ApontamentoForm.tsx | 8 +- .../apontamento/SeletorItensOtimizado.tsx | 176 +++++++----------- 2 files changed, 70 insertions(+), 114 deletions(-) diff --git a/src/components/apontamento/ApontamentoForm.tsx b/src/components/apontamento/ApontamentoForm.tsx index a27b9bd..408bc2d 100644 --- a/src/components/apontamento/ApontamentoForm.tsx +++ b/src/components/apontamento/ApontamentoForm.tsx @@ -22,6 +22,7 @@ interface ItemDisponivel { tipo: 'peca' | 'componente'; quantidade_disponivel: number; processo_atual_permitido: number; + nome_processo?: string; } // Cache local para manter seleções básicas do formulário @@ -110,6 +111,7 @@ export const ApontamentoForm = () => { } const ordemProcesso = processoSelecionado?.ordem || 1; + const nomeProcesso = processoSelecionado?.nome || `${ordemProcesso}`; // 1. Peças da OF e Fase selecionadas const pecasDaFase = pecas.filter( @@ -133,7 +135,8 @@ export const ApontamentoForm = () => { descricao: peca.descricao || '', tipo: 'peca', quantidade_disponivel: saldoDisponivel, - processo_atual_permitido: ordemProcesso + processo_atual_permitido: ordemProcesso, + nome_processo: nomeProcesso }); } }); @@ -157,7 +160,8 @@ export const ApontamentoForm = () => { descricao: comp.descricao || comp.perfil || '', tipo: 'componente', quantidade_disponivel: saldoComp, - processo_atual_permitido: ordemProcesso + processo_atual_permitido: ordemProcesso, + nome_processo: nomeProcesso }); } }); diff --git a/src/components/apontamento/SeletorItensOtimizado.tsx b/src/components/apontamento/SeletorItensOtimizado.tsx index 4dde1ff..384e25f 100644 --- a/src/components/apontamento/SeletorItensOtimizado.tsx +++ b/src/components/apontamento/SeletorItensOtimizado.tsx @@ -26,6 +26,7 @@ interface ItemDisponivel { tipo: 'peca' | 'componente'; quantidade_disponivel: number; processo_atual_permitido: number; + nome_processo?: string; } interface ComponenteItemData { @@ -170,7 +171,6 @@ export const SeletorItensOtimizado: React.FC = ({ } try { setLoadingPecas(true); - // Implementar busca de peças aqui } catch (error) { console.error('Erro ao buscar peças:', error); } finally { @@ -214,7 +214,8 @@ export const SeletorItensOtimizado: React.FC = ({ descricao: peca.descricao || '', tipo: 'peca', quantidade_disponivel: peca.quantidadeDisponivel || 0, - processo_atual_permitido: peca.processo_atual_permitido || 0 + processo_atual_permitido: peca.processo_atual_permitido || 0, + nome_processo: (peca as any).nome_processo }; onItemSelect(itemDisponivel); } @@ -246,28 +247,28 @@ export const SeletorItensOtimizado: React.FC = ({ const getPrioridadeColor = (prioridade: string) => { switch (prioridade?.toLowerCase()) { - case 'alta': return 'text-red-400'; - case 'média': return 'text-yellow-400'; - case 'baixa': return 'text-green-400'; - default: return 'text-slate-400'; + case 'alta': return 'text-red-600 dark:text-red-400'; + case 'média': return 'text-amber-600 dark:text-yellow-400'; + case 'baixa': return 'text-emerald-600 dark:text-green-400'; + default: return 'text-muted-foreground'; } }; const PecaItem = ({ peca, onSelect }: { peca: PecaWithComponents; onSelect: (peca: PecaWithComponents) => void }) => { return ( -
onSelect(peca)}>
-
{peca.marca}
-
+
{peca.marca}
+
Prioridade: {peca.prioridade || 'N/A'}
{peca.descricao && ( -
+
{peca.descricao}
)} -
+
Qtd Disponível: {peca.quantidadeDisponivel || 0}
@@ -277,19 +278,19 @@ export const SeletorItensOtimizado: React.FC = ({ const ComponenteItem = ({ componente }: { componente: ComponenteItemData }) => (
handleComponenteSelect(componente)} >
-
{componente.marca_componente}
-
+
{componente.marca_componente}
+
Perfil: {componente.perfil || 'N/A'}
-
+
Peso Unitário: {componente.peso_unitario || 0}kg | Qtd por Peça: {componente.quantidade_por_peca || 1}
{componente.descricao && ( -
+
{componente.descricao}
)} @@ -297,79 +298,30 @@ export const SeletorItensOtimizado: React.FC = ({
); - const ItemDisponivelComponentBase = ({ item, isSelected }: { item: ItemDisponivel; isSelected: boolean }) => { - return ( -
handleItemSelect(item)} - > -
-
-
-
{item.marca}
-
- {item.descricao} -
-
- - {/* Botão administrativo - DISPONÍVEL PARA TODAS AS PEÇAS */} - {isAdmin && item.tipo === 'peca' && ( - - )} -
- -
- - Disponível: {item.quantidade_disponivel} - - - Processo: {item.processo_atual_permitido} - -
-
-
- ); - }; - const ItemDisponivelComponent = React.memo(({ item, isSelected }: { item: ItemDisponivel; isSelected: boolean }) => (
handleItemSelect(item)} > -
+
-
{item.marca}
-
+
{item.marca}
+
{item.quantidade_disponivel} disponível
{item.descricao && ( -
+
{item.descricao}
)} -
- Processo: {item.processo_atual_permitido} +
+ Processo: {item.nome_processo || item.processo_atual_permitido}
@@ -378,7 +330,7 @@ export const SeletorItensOtimizado: React.FC = ({
{loadingPecas ? ( -
Carregando peças...
+
Carregando peças...
) : ( - +
{pecasFiltradas.map((peca) => ( ))} {pecasFiltradas.length === 0 && ( -
+
Nenhuma peça encontrada.
)} @@ -425,17 +377,17 @@ export const SeletorItensOtimizado: React.FC = ({ {showComponentes && (
-

Componentes da Peça

+

Componentes da Peça

{loadingComponentes ? ( -
Carregando componentes...
+
Carregando componentes...
) : ( - +
{componentes.map((componente) => ( ))} {componentes.length === 0 && ( -
+
Nenhum componente cadastrado para esta peça.
)} @@ -452,14 +404,14 @@ export const SeletorItensOtimizado: React.FC = ({ <>
{loading ? ( -
Carregando itens disponíveis...
+
Carregando itens disponíveis...
) : ( <> {/* Seção de Peças Disponíveis */} {pecasDisponiveis.length > 0 && (
-

+

Peças Disponíveis

@@ -469,7 +421,7 @@ export const SeletorItensOtimizado: React.FC = ({ placeholder="Filtrar por número da peça..." value={filtroNumeroPeca} onChange={(e) => setFiltroNumeroPeca(e.target.value)} - className="bg-slate-800 border-slate-700 text-slate-300 placeholder-slate-500 h-8 w-48" + className="bg-background border-input text-foreground placeholder:text-muted-foreground h-8 w-48 shadow-sm" />
- +
{pecasOrdenadas.map((item) => (
@@ -507,7 +459,7 @@ export const SeletorItensOtimizado: React.FC = ({
))} {pecasOrdenadas.length === 0 && ( -
+
{filtroNumeroPeca ? 'Nenhuma peça encontrada com esse filtro.' : 'Nenhuma peça disponível.'}
)} @@ -533,7 +485,7 @@ export const SeletorItensOtimizado: React.FC = ({ {componentesDisponiveis.length > 0 && (
-

Componentes Disponíveis

+

Componentes Disponíveis

- +
{componentesOrdenados.map((item) => ( = ({ {/* Mensagem quando não há itens */} {pecasDisponiveis.length === 0 && componentesDisponiveis.length === 0 && ( -
+
Nenhum item disponível para este processo.
)} @@ -583,32 +535,32 @@ export const SeletorItensOtimizado: React.FC = ({ {selectedPecaForAdmin && (
-
-

Informações da Peça

+
+

Informações da Peça

-
Marca: {selectedPecaForAdmin.marca}
-
Descrição: {selectedPecaForAdmin.descricao}
-
Quantidade Disponível: {selectedPecaForAdmin.quantidade_disponivel}
-
Processo Atual: {selectedPecaForAdmin.processo_atual_permitido}
+
Marca: {selectedPecaForAdmin.marca}
+
Descrição: {selectedPecaForAdmin.descricao}
+
Quantidade Disponível: {selectedPecaForAdmin.quantidade_disponivel}
+
Processo Atual: {selectedPecaForAdmin.nome_processo || selectedPecaForAdmin.processo_atual_permitido}
{loadingApontamentos ? ( -
+
Carregando histórico de apontamentos...
) : (
-

Histórico de Apontamentos ({apontamentosPeca.length})

+

Histórico de Apontamentos ({apontamentosPeca.length})

{apontamentosPeca.length > 0 ? ( <> -
+
- +
-
Atenção!
-

+

Atenção!
+

Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos.

@@ -616,15 +568,15 @@ export const SeletorItensOtimizado: React.FC = ({
- +
{apontamentosPeca.map((apontamento, index) => ( -
+
-
Processo: {apontamento.processo?.nome || 'N/A'}
-
Quantidade: {apontamento.quantidade_produzida}
-
Data: {new Date(apontamento.created_at).toLocaleString('pt-BR')}
-
Usuário: {apontamento.usuario_id}
+
Processo: {apontamento.processo?.nome || 'N/A'}
+
Quantidade: {apontamento.quantidade_produzida}
+
Data: {new Date(apontamento.created_at).toLocaleString('pt-BR')}
+
Usuário: {apontamento.usuario_id}
))} @@ -632,8 +584,8 @@ export const SeletorItensOtimizado: React.FC = ({ ) : ( -
-
+
+
✅ Nenhum apontamento encontrado para esta peça. É seguro removê-la da exibição.