feat: adicionar gestao de revisoes simples e criticas de pecas com integracao a apontamentos
This commit is contained in:
@@ -7,7 +7,10 @@ import { ArrowLeft, Plus, Package } from 'lucide-react';
|
||||
import { PecaForm } from '@/components/pecas/PecaForm';
|
||||
import { PecasTable } from '@/components/pecas/PecasTable';
|
||||
import { ComponentesPopup } from '@/components/pecas/ComponentesPopup';
|
||||
import { RevisaoPecaModal } from '@/components/pecas/revisoes/RevisaoPecaModal';
|
||||
import { PainelRevisoesOFModal } from '@/components/pecas/revisoes/PainelRevisoesOFModal';
|
||||
import { usePecas, Peca } from '@/hooks/usePecas';
|
||||
import { useRevisoes } from '@/hooks/useRevisoes';
|
||||
import { toast } from 'sonner';
|
||||
import { usePermissionControl } from '@/hooks/usePermissionControl';
|
||||
import { StandardPageLayout } from '@/components/layout/StandardPageLayout';
|
||||
@@ -34,11 +37,15 @@ export default function CadastroPecasFiltrado() {
|
||||
batchUpdatePecas,
|
||||
loadPecas
|
||||
} = usePecas();
|
||||
|
||||
const { revisoes: revisoesOF, carregarRevisoesOF } = useRevisoes(ofSelecionada);
|
||||
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [editingPeca, setEditingPeca] = useState<Peca | null>(null);
|
||||
const [showForm, setShowForm] = useState(false);
|
||||
const [selectedPecaForPopup, setSelectedPecaForPopup] = useState<Peca | null>(null);
|
||||
const [pecaParaRevisao, setPecaParaRevisao] = useState<Peca | null>(null);
|
||||
const [showPainelRevisoes, setShowPainelRevisoes] = useState(false);
|
||||
|
||||
// Filtrar peças pela OF selecionada
|
||||
const pecasFiltradas = pecas.filter(peca => peca.of_number === ofSelecionada);
|
||||
@@ -170,8 +177,10 @@ export default function CadastroPecasFiltrado() {
|
||||
useEffect(() => {
|
||||
if (!ofSelecionada) {
|
||||
navigate('/seletor-of');
|
||||
} else {
|
||||
carregarRevisoesOF(ofSelecionada);
|
||||
}
|
||||
}, [ofSelecionada, navigate]);
|
||||
}, [ofSelecionada, navigate, carregarRevisoesOF]);
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
@@ -269,6 +278,9 @@ export default function CadastroPecasFiltrado() {
|
||||
onEditPeca={canEdit() ? handleEdit : undefined}
|
||||
onDeleteLastImport={canDelete() ? handleDeleteLastImport : undefined}
|
||||
onBatchUpdatePecas={canEdit() ? handleBatchUpdatePecas : undefined}
|
||||
onOpenRevisaoPeca={(peca) => setPecaParaRevisao(peca)}
|
||||
onOpenPainelRevisoes={() => setShowPainelRevisoes(true)}
|
||||
totalRevisoesOF={revisoesOF.length}
|
||||
hasRecentImport={hasRecentImport}
|
||||
canEdit={canEdit()}
|
||||
canDelete={canDelete()}
|
||||
@@ -288,6 +300,30 @@ export default function CadastroPecasFiltrado() {
|
||||
peca={selectedPecaForPopup}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Modal de Gestão de Revisão da Peça */}
|
||||
{pecaParaRevisao && (
|
||||
<RevisaoPecaModal
|
||||
isOpen={!!pecaParaRevisao}
|
||||
onClose={() => setPecaParaRevisao(null)}
|
||||
peca={pecaParaRevisao}
|
||||
onPecaAtualizada={() => {
|
||||
loadPecas();
|
||||
carregarRevisoesOF(ofSelecionada);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Modal Painel Geral de Revisões da OF */}
|
||||
{showPainelRevisoes && (
|
||||
<PainelRevisoesOFModal
|
||||
isOpen={showPainelRevisoes}
|
||||
onClose={() => setShowPainelRevisoes(false)}
|
||||
ofNumber={ofSelecionada}
|
||||
pecas={pecasFiltradas}
|
||||
onOpenRevisaoPeca={(peca) => setPecaParaRevisao(peca)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</StandardPageLayout>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user