Romaneio: lista de veículos visível, busca com contador e logo escolhível

Traz para a tela as funções do programa original (Romaneiro PDF), na linha de
design do projeto:
- Veículos deixam de ser um <select> e viram lista visível com a contagem de
  paradas de cada carro — que é a conferência feita antes de imprimir e ficava
  invisível mostrando um veículo por vez. Cada item é link (?veiculo=), então
  sobrevive ao 'voltar' e ao F5. No celular vira faixa horizontal.
- Na mesma coluna: motorista do veículo, 'PDF deste veículo' e 'PDF de TODOS'.
- Busca ganha 'Limpar busca' e contador vivo ('4 de 31 paradas'). A contagem
  saiu do cabeçalho da tabela: dois números para a mesma coisa, um atualizando e
  o outro não, é a divergência que a diretriz 1 proíbe.
- Logo do cabeçalho escolhível (Configuracao 'romaneio_logo', separado do
  empresa_logo — o romaneio é documento do cliente). PNG/JPG até 2MB, gravado em
  storage/logos/ e não em public/, com nome gerado pelo sistema.
This commit is contained in:
2026-08-27 19:20:49 -03:00
parent 7fa2336b35
commit b3464e3acd
11 changed files with 274 additions and 65 deletions

View File

@@ -20,6 +20,37 @@
</p>
</div>
<%# Logo do cabeçalho — zona "Arquivos" do programa original.
Fica ANTES da importação porque é configuração que vale para todos os
romaneios, não escolha por plano: quem troca de contratante troca uma vez. %>
<div class="bg-[#111] border border-white/5 rounded-2xl p-5">
<%= form_with url: atualizar_logo_admin_romaneios_path, method: :post, multipart: true,
data: { turbo: false },
class: 'flex flex-col sm:flex-row sm:items-end gap-3' do %>
<div class="flex-1">
<label class="block text-sm font-medium text-gray-300 mb-1.5">
Logo do romaneio
<span class="text-gray-500 font-normal">— canto esquerdo da folha</span>
</label>
<p class="text-sm text-gray-400 mb-2">
Em uso:
<strong class="text-white"><%= @logo_atual.presence || 'logo-gade.png (padrão)' %></strong>
</p>
<input type="file" name="logo" accept="image/png,image/jpeg"
class="w-full text-sm text-gray-300 file:mr-3 file:py-2.5 file:px-4 file:rounded-lg
file:border-0 file:bg-[#1a1a1a] file:text-gray-200 file:cursor-pointer">
<p class="text-xs text-gray-500 mt-2">
PNG ou JPG, até 2 MB — é o que o PDF consegue embutir. Vale para os próximos PDFs gerados.
</p>
</div>
<button type="submit"
class="px-5 py-3 bg-[#1a1a1a] hover:bg-[#242424] text-white border border-white/10
rounded-xl min-h-[48px] whitespace-nowrap">
Trocar logo
</button>
<% end %>
</div>
<%# Importação %>
<div class="bg-[#111] border border-white/5 rounded-2xl p-5 space-y-4">
<h2 class="text-white font-semibold">Importar plano</h2>