From 9385ad0b881befa1647dda99e9749efa7278c0d7 Mon Sep 17 00:00:00 2001 From: Marcos Reifonas Date: Fri, 11 Sep 2026 11:54:53 +0000 Subject: [PATCH] feat: padronizacao visual completa dos conversores advance steel e tecnometal seguindo o layout do bocad --- .../conversores/AdvanceSteelConverter.tsx | 564 ++++++++++-------- .../conversores/TecnometalConverter.tsx | 550 ++++++++++------- src/pages/ConversoresDados.tsx | 27 +- 3 files changed, 667 insertions(+), 474 deletions(-) diff --git a/src/components/conversores/AdvanceSteelConverter.tsx b/src/components/conversores/AdvanceSteelConverter.tsx index f6d8260..33ce080 100644 --- a/src/components/conversores/AdvanceSteelConverter.tsx +++ b/src/components/conversores/AdvanceSteelConverter.tsx @@ -1,10 +1,26 @@ import React, { useState, useEffect, useRef } from 'react'; import { Button } from '@/components/ui/button'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog'; import { Badge } from '@/components/ui/badge'; import { ScrollArea } from '@/components/ui/scroll-area'; -import { Upload, FileSpreadsheet, Download, RefreshCw, Terminal, FileText, Code2, AlertTriangle } from 'lucide-react'; +import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; +import { Label } from '@/components/ui/label'; +import { Input } from '@/components/ui/input'; +import { + Upload, + FileSpreadsheet, + Download, + RefreshCw, + Terminal, + FileText, + Code2, + AlertTriangle, + Boxes, + Paintbrush, + CheckCircle2, + Info +} from 'lucide-react'; import { toast } from 'sonner'; import * as XLSX from 'xlsx'; @@ -113,6 +129,10 @@ const AdvanceSteelConverterContent: React.FC = () => { const [isDragging, setIsDragging] = useState(false); const [isProcessing, setIsProcessing] = useState(false); const [extractedData, setExtractedData] = useState([]); + const [headerOf, setHeaderOf] = useState(''); + const [headerFase, setHeaderFase] = useState('1'); + const [tratamentoGlobal, setTratamentoGlobal] = useState<'pintura' | 'galvanizacao'>('pintura'); + const [showLogs, setShowLogs] = useState(false); const [logs, setLogs] = useState(['> Aguardando seleção do PDF...']); const [statusText, setStatusText] = useState('Aguardando arquivo PDF...'); const [currentFileName, setCurrentFileName] = useState('Lista_Pecas'); @@ -132,6 +152,36 @@ const AdvanceSteelConverterContent: React.FC = () => { }, 50); }; + const handleTratamentoChange = (novoTratamento: 'pintura' | 'galvanizacao') => { + setTratamentoGlobal(novoTratamento); + setExtractedData((prev) => + prev.map((item) => ({ + ...item, + tratamentoSuperficial: novoTratamento + })) + ); + }; + + const handleOfChange = (newOf: string) => { + setHeaderOf(newOf); + setExtractedData((prev) => + prev.map((item) => ({ + ...item, + of: newOf + })) + ); + }; + + const handleFaseChange = (newFase: string) => { + setHeaderFase(newFase); + setExtractedData((prev) => + prev.map((item) => ({ + ...item, + fase: newFase + })) + ); + }; + const handleDragOver = (e: React.DragEvent) => { e.preventDefault(); setIsDragging(true); @@ -582,220 +632,284 @@ const AdvanceSteelConverterContent: React.FC = () => { ]; XLSX.utils.book_append_sheet(wb, ws, 'Lista_Pecas'); - const outFileName = `${currentFileName}_Corrigido.xlsx`; + const outFileName = `${headerOf || currentFileName}_Fase_${headerFase || '1'}_Lista_Pecas_AdvanceSteel.xlsx`; XLSX.writeFile(wb, outFileName); addLog(`Planilha Excel baixada: ${outFileName}`); - toast.success(`Planilha Excel "${outFileName}" gerada com sucesso!`); + toast.success(`Planilha padrão baixada com sucesso: ${outFileName}`); }; - if (useIframeMode) { - return ( -
-
- - - Modo 100% HTML Original Ativo - - -
-