Orçamento Avulso - Linktudo
Criar Orçamento
Enviar Proposta
Meus Orçamentos
Minhas Propostas

Orçamento Avulso

CRIAR NOVO ORÇAMENTO

Rápido e Fácil
Informações Básicas

Informar sua verba ajuda os vendedores a fazerem propostas dentro do seu orçamento

Especificações Adicionais

Resumo do seu Orçamento

Protocolo Gerado:

ORC-20261021123842-148

Data/Hora:

21/10/2026 12:38:42

Seus dados estão seguros. Após criar o orçamento, você receberá um protocolo para acompanhamento.

Para Qualquer Produto

Orçamentos para pneus, serviços, materiais, eletrônicos e muito mais

Totalmente Seguro

Seus dados protegidos. Contato apenas com fornecedores verificados

Melhor Preço

Compare múltiplas propostas e escolha a que melhor atende suas necessidades

Orçamento Avulso

Sistema seguro para cotações de produtos e serviços

Conectando clientes e fornecedores de forma eficiente e transparente

// Mostrar protocolo se veio de redirecionamento // Controle do header (igual ao modelo original) const toggleBtn = document.getElementById('toggle-header-btn'); const headerPanel = document.getElementById('topPanel'); const mainContent = document.getElementById('main-content'); let isHeaderHidden = false; let lastScrollTop = 0; function atualizarAlturaHeader() { if (headerPanel) { const altura = headerPanel.offsetHeight; document.documentElement.style.setProperty('--header-height', altura + 'px'); } } function hideHeader() { if (!isHeaderHidden) { headerPanel.classList.add('hidden-header'); toggleBtn.classList.add('show-eye'); toggleBtn.querySelector('i').classList.remove('fa-times'); toggleBtn.querySelector('i').classList.add('fa-eye'); mainContent.style.paddingTop = '60px'; isHeaderHidden = true; } } function showHeader() { if (isHeaderHidden) { headerPanel.classList.remove('hidden-header'); toggleBtn.classList.remove('show-eye'); toggleBtn.querySelector('i').classList.remove('fa-eye'); toggleBtn.querySelector('i').classList.add('fa-times'); atualizarAlturaHeader(); isHeaderHidden = false; } } function handleScroll() { const scrollTop = window.pageYOffset || document.documentElement.scrollTop; // Se estiver no topo absoluto (0px), mostra o header IMEDIATAMENTE if (scrollTop <= 0) { showHeader(); lastScrollTop = scrollTop; return; } // Calcula a diferença de scroll desde a última vez const scrollDiff = scrollTop - lastScrollTop; // Se está rolando para baixo (scroll positivo) E header está visível, esconde if (scrollDiff > 0 && !isHeaderHidden) { hideHeader(); } // NÃO mostra ao rolar para cima - SÓ mostra quando chegar no topo (acima) // ou quando clicar no botão lastScrollTop = scrollTop; } if (toggleBtn && headerPanel && mainContent) { toggleBtn.addEventListener('click', () => { if (isHeaderHidden) { showHeader(); } else { hideHeader(); } }); // Adiciona listener de scroll window.addEventListener('scroll', handleScroll, { passive: true }); // Mostra header inicialmente showHeader(); // Verifica se a página já carregou com scroll setTimeout(() => { const scrollTop = window.pageYOffset || document.documentElement.scrollTop; if (scrollTop > 0) { // Se já está scrollado, esconde o header hideHeader(); } }, 50); } window.addEventListener('load', function() { atualizarAlturaHeader(); }); window.addEventListener('resize', function() { atualizarAlturaHeader(); if (headerPanel && !isHeaderHidden) { atualizarAlturaHeader(); } }); // Variáveis globais para controle do header (igual ao primeiro código) window.headerControl = { isHidden: false, hideHeader: hideHeader, showHeader: showHeader, toggleHeader: function() { if (this.isHidden) { this.showHeader(); } else { this.hideHeader(); } } }; // Copiar dados completos do orçamento para WhatsApp function copiarDadosOrcamentoWhatsApp(id, protocolo, titulo, descricao, quantidade, categoria, tipoProduto, verba, espec1, espec2, espec3, espec4) { const urlOrcamento = `https://linktudo.com.br/orcamentos/modo2/orcamento_avulso___modo2.php?aba=proposta&id=${id}`; let mensagem = `*SOLICITAÇÃO DE ORÇAMENTO - ${protocolo}*\n\n`; mensagem += `Olá! Solicito orçamento para a seguinte necessidade:\n\n`; mensagem += `*DETALHES DA SOLICITAÇÃO:*\n`; mensagem += `• *Protocolo:* ${protocolo}\n`; mensagem += `• *Título:* ${titulo}\n`; mensagem += `• *Descrição:* ${descricao}\n`; mensagem += `• *Quantidade:* ${quantidade} unidades\n`; mensagem += `• *Categoria:* ${categoria}\n`; if (tipoProduto) { mensagem += `• *Tipo de Produto/Serviço:* ${tipoProduto}\n`; } if (verba > 0) { const verbaFormatada = parseFloat(verba).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); mensagem += `• *Verba Disponível:* R$ ${verbaFormatada}\n`; } // Adicionar especificações se existirem const especificacoes = []; if (espec1) especificacoes.push(`→ ${espec1}`); if (espec2) especificacoes.push(`→ ${espec2}`); if (espec3) especificacoes.push(`→ ${espec3}`); if (espec4) especificacoes.push(`→ ${espec4}`); if (especificacoes.length > 0) { mensagem += `\n*ESPECIFICAÇÕES TÉCNICAS:*\n`; mensagem += especificacoes.join('\n') + '\n'; } mensagem += `\n*LINK PARA ENVIAR PROPOSTA:*\n`; mensagem += urlOrcamento; mensagem += `\n\nFico no aguardo, para que possamos fechar o quanto antes. Obrigado!`; navigator.clipboard.writeText(mensagem).then(() => { // Criar elemento para animação const toast = document.createElement('div'); toast.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.5); background: linear-gradient(135deg, #06d6a0 0%, #0cb48a 100%); color: white; padding: 20px 30px; border-radius: 16px; font-weight: bold; font-size: 18px; text-align: center; z-index: 999999; opacity: 0; transition: all 0.3s ease; box-shadow: 0 10px 30px rgba(6, 214, 160, 0.4); animation: balanco 0.8s ease; `; toast.innerHTML = `
✅
Dados copiados com sucesso!
Link e informações copiados para área de transferência
`; // Adicionar estilo de animação const style = document.createElement('style'); style.textContent = ` @keyframes balanco { 0% { transform: translate(-50%, -50%) scale(0.5) rotate(0deg); opacity: 0; } 50% { transform: translate(-50%, -50%) scale(1.1) rotate(5deg); opacity: 1; } 75% { transform: translate(-50%, -50%) scale(1) rotate(-3deg); } 100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); } } `; document.head.appendChild(style); document.body.appendChild(toast); // Remover após animação setTimeout(() => { toast.style.opacity = '0'; toast.style.transform = 'translate(-50%, -50%) scale(0.8)'; setTimeout(() => { document.body.removeChild(toast); document.head.removeChild(style); }, 300); }, 2000); }).catch(err => { console.error('Erro ao copiar:', err); Swal.fire({ toast: true, position: 'top-end', icon: 'error', title: '❌ Erro ao copiar dados', showConfirmButton: false, timer: 3000, timerProgressBar: true, didOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseleave', Swal.resumeTimer) } }); }); }