Atualização dos icones para um modelo chapado
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
<%= link_to '← Voltar para o resumo', consolidacao_path(@consolidacao), class: 'text-gray-500 hover:text-orange-500 text-sm' %>
|
||||
<h1 class="text-2xl font-bold text-white mt-2"><%= @consolidacao.nome %></h1>
|
||||
<p class="text-gray-400 text-sm">
|
||||
📅 <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
|
||||
<%= icone :calendario %> <%= l @consolidacao.data_inicio, format: :short %> <%= icone :avancar, tamanho: 'w-3 h-3' %> <%= l @consolidacao.data_fim, format: :short %>
|
||||
· <%= badge_status(@consolidacao.status) %>
|
||||
</p>
|
||||
</div>
|
||||
@@ -42,20 +42,20 @@
|
||||
<%# Botão único + menu suspenso %>
|
||||
<button type="button" data-action="ferramentas#toggle"
|
||||
class="w-full md:w-auto inline-flex items-center justify-center gap-2 bg-[#1a1a1a] hover:bg-[#2a2a2a] text-white border border-dashed border-[#3a3a3a] hover:border-orange-500 font-semibold px-4 py-3 rounded-lg min-h-[48px]">
|
||||
➕ Adicionar / Ferramentas
|
||||
<span class="text-gray-500">▾</span>
|
||||
<%= icone :adicionar %> Adicionar / Ferramentas
|
||||
<%= icone :expandir, cor: 'text-gray-500' %>
|
||||
</button>
|
||||
|
||||
<div data-ferramentas-target="menu"
|
||||
class="hidden absolute z-40 mt-2 w-72 bg-[#1a1a1a] border border-[#2a2a2a] rounded-xl shadow-xl overflow-hidden">
|
||||
<button type="button" data-action="apontamento#abrir ferramentas#fechar"
|
||||
class="w-full text-left px-4 py-3 hover:bg-[#2a2a2a] border-l-2 border-transparent hover:border-orange-500">
|
||||
<span class="block text-white font-semibold">📝 Apontamento manual</span>
|
||||
<span class="block text-white font-semibold"><%= icone :apontamento %> Apontamento manual</span>
|
||||
<span class="block text-gray-500 text-xs">nota que chegou por fora (busca pela NF)</span>
|
||||
</button>
|
||||
<button type="button" data-action="adicionar-motorista#abrir ferramentas#fechar"
|
||||
class="w-full text-left px-4 py-3 hover:bg-[#2a2a2a] border-t border-[#2a2a2a] border-l-2 border-l-transparent hover:border-l-green-500">
|
||||
<span class="block text-white font-semibold">🧑✈️ Adicionar motorista</span>
|
||||
<span class="block text-white font-semibold"><%= icone :motorista %> Adicionar motorista</span>
|
||||
<span class="block text-gray-500 text-xs">incluir/restaurar um motorista nesta consolidação</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -67,7 +67,7 @@
|
||||
<div class="flex items-center justify-between mb-1">
|
||||
<h2 class="text-xl font-bold text-white">Apontamento manual</h2>
|
||||
<button type="button" data-action="apontamento#fechar"
|
||||
class="text-gray-500 hover:text-white text-2xl leading-none">✕</button>
|
||||
class="text-gray-500 hover:text-white leading-none" aria-label="Fechar"><%= icone :fechar, cor: nil, tamanho: 'w-5 h-5' %></button>
|
||||
</div>
|
||||
<p class="text-gray-400 text-sm mb-4">Busque a nota pela base de rastreio e adicione ao fechamento do motorista correspondente.</p>
|
||||
|
||||
@@ -89,22 +89,22 @@
|
||||
<div data-apontamento-target="confirmar" class="hidden border-t border-[#2a2a2a] pt-4">
|
||||
<label class="block text-gray-400 text-sm mb-2">Classificar como <span class="text-gray-600">(pode marcar mais de uma)</span></label>
|
||||
<div class="grid grid-cols-2 gap-2 mb-4">
|
||||
<% [['entrega_normal', '🚚 Entrega Normal', Configuracao.preco_entrega],
|
||||
['retirada', '📦 Retirada', Configuracao.preco_retirada],
|
||||
['bonus', '⭐ Bônus', Configuracao.preco_bonus],
|
||||
['desconto', '⚠️ Desconto', Configuracao.preco_desconto],
|
||||
['extraordinaria', '✨ Entrega Extraordinária', Configuracao.preco_extraordinaria]].each do |tipo, label, preco| %>
|
||||
<% [['entrega_normal', :caminhao, 'Entrega Normal', Configuracao.preco_entrega],
|
||||
['retirada', :retirada, 'Retirada', Configuracao.preco_retirada],
|
||||
['bonus', :bonus, 'Bônus', Configuracao.preco_bonus],
|
||||
['desconto', :desconto, 'Desconto', Configuracao.preco_desconto],
|
||||
['extraordinaria', :extraordinaria, 'Entrega Extraordinária', Configuracao.preco_extraordinaria]].each do |tipo, ic, label, preco| %>
|
||||
<label class="flex items-center gap-2 bg-[#0a0a0a] border border-[#2a2a2a] rounded-lg px-3 py-3 cursor-pointer hover:border-orange-500 text-sm text-white">
|
||||
<input type="checkbox" value="<%= tipo %>" data-apontamento-target="tipoCheck"
|
||||
<%= 'checked' if tipo == 'entrega_normal' %>
|
||||
class="accent-orange-500">
|
||||
<span><%= label %><br><span class="text-gray-500 text-xs"><%= moeda(preco) %></span></span>
|
||||
<span><%= icone ic %> <%= label %><br><span class="text-gray-500 text-xs"><%= moeda(preco) %></span></span>
|
||||
</label>
|
||||
<% end %>
|
||||
</div>
|
||||
<button type="button" data-action="apontamento#apontar"
|
||||
class="w-full bg-green-600 hover:bg-green-500 text-white font-bold py-3.5 rounded-lg min-h-[48px]">
|
||||
Adicionar apontamento ✓
|
||||
Adicionar apontamento <%= icone :confirmar, cor: nil %>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -115,9 +115,9 @@
|
||||
class="hidden fixed inset-0 z-50 bg-black/70 flex items-center justify-center p-4">
|
||||
<div class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-2xl w-full max-w-md p-6">
|
||||
<div class="flex items-center justify-between mb-1">
|
||||
<h2 class="text-xl font-bold text-white">🧑✈️ Adicionar motorista</h2>
|
||||
<h2 class="text-xl font-bold text-white flex items-center gap-2"><%= icone :motorista %> Adicionar motorista</h2>
|
||||
<button type="button" data-action="adicionar-motorista#fechar"
|
||||
class="text-gray-500 hover:text-white text-2xl leading-none">✕</button>
|
||||
class="text-gray-500 hover:text-white leading-none" aria-label="Fechar"><%= icone :fechar, cor: nil, tamanho: 'w-5 h-5' %></button>
|
||||
</div>
|
||||
<p class="text-gray-400 text-sm mb-4">Inclua um motorista nesta consolidação. Se ele estava arquivado, será restaurado.</p>
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
class="w-full bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-3 text-base focus:border-orange-500 focus:outline-none mb-4">
|
||||
<datalist id="motoristas-disponiveis">
|
||||
<% Array(@motoristas_periodo).each do |m| %>
|
||||
<option value="<%= m[:nome] %>" label="<%= '🚚 ' + m[:veiculos].join(', ') if m[:veiculos].any? %>"></option>
|
||||
<option value="<%= m[:nome] %>" label="<%= m[:veiculos].join(', ') if m[:veiculos].any? %>"></option>
|
||||
<% end %>
|
||||
</datalist>
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
class="w-full text-left px-3 py-2 bg-[#0a0a0a] border border-[#2a2a2a] hover:border-orange-500 rounded-lg">
|
||||
<span class="block text-white text-sm font-semibold"><%= m[:nome] %></span>
|
||||
<% if m[:veiculos].any? %>
|
||||
<span class="block text-gray-500 text-xs">🚚 <%= m[:veiculos].join(', ') %></span>
|
||||
<span class="block text-gray-500 text-xs"><%= icone :caminhao %> <%= m[:veiculos].join(', ') %></span>
|
||||
<% end %>
|
||||
</button>
|
||||
<% end %>
|
||||
@@ -152,7 +152,7 @@
|
||||
|
||||
<button type="submit"
|
||||
class="w-full bg-green-600 hover:bg-green-500 text-white font-bold py-3.5 rounded-lg min-h-[48px]">
|
||||
Adicionar ✓
|
||||
Adicionar <%= icone :confirmar, cor: nil %>
|
||||
</button>
|
||||
<% end %>
|
||||
</div>
|
||||
@@ -174,7 +174,7 @@
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-12 h-12 rounded-full flex items-center justify-center text-xl font-black
|
||||
<%= m[:completo] ? 'bg-green-600 text-white' : 'bg-orange-500 text-black' %>">
|
||||
<%= m[:completo] ? '✓' : m[:registro].motorista_nome.first.upcase %>
|
||||
<%= m[:completo] ? icone(:confirmar, cor: nil, tamanho: 'w-6 h-6') : m[:registro].motorista_nome.first.upcase %>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-white font-bold text-lg"><%= m[:registro].motorista_nome %></p>
|
||||
@@ -184,13 +184,13 @@
|
||||
<%= m[:classificadas] %>/<%= m[:total] %> classificadas
|
||||
</span>
|
||||
<% if m[:apontamentos].positive? %>
|
||||
· <span class="text-orange-400">➕ <%= m[:apontamentos] %> apontamento<%= 's' if m[:apontamentos] > 1 %></span>
|
||||
· <span class="text-orange-400"><%= icone :adicionar, cor: nil, tamanho: 'w-3 h-3' %> <%= m[:apontamentos] %> apontamento<%= 's' if m[:apontamentos] > 1 %></span>
|
||||
<% end %>
|
||||
</p>
|
||||
<% if m[:veiculos_total] > 0 %>
|
||||
<p class="text-xs mt-0.5">
|
||||
<span class="<%= m[:veiculos_fechados] == m[:veiculos_total] ? 'text-green-400' : 'text-gray-400' %>">
|
||||
🚗 <%= m[:veiculos_fechados] %>/<%= m[:veiculos_total] %> veículo<%= 's' if m[:veiculos_total] > 1 %> consolidado<%= 's' if m[:veiculos_fechados] != 1 %>
|
||||
<%= icone :veiculo, cor: nil %> <%= m[:veiculos_fechados] %>/<%= m[:veiculos_total] %> veículo<%= 's' if m[:veiculos_total] > 1 %> consolidado<%= 's' if m[:veiculos_fechados] != 1 %>
|
||||
</span>
|
||||
<% if m[:veiculos_pendentes].any? %>
|
||||
<span class="text-orange-400">· pendente<%= 's' if m[:veiculos_pendentes].size > 1 %>: <%= m[:veiculos_pendentes].join(', ') %></span>
|
||||
@@ -201,7 +201,7 @@
|
||||
</div>
|
||||
<div class="text-right <%= 'pr-10' if pode_arquivar_motorista %>">
|
||||
<p class="text-orange-500 font-bold"><%= moeda(m[:registro].valor_total) %></p>
|
||||
<span class="text-gray-600 text-2xl">→</span>
|
||||
<%= icone :avancar, cor: 'text-gray-600', tamanho: 'w-5 h-5' %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
@@ -214,13 +214,14 @@
|
||||
<% end %>
|
||||
|
||||
<% if pode_arquivar_motorista %>
|
||||
<%= button_to '🗄️',
|
||||
arquivar_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: m[:registro].id),
|
||||
<%= button_to arquivar_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: m[:registro].id),
|
||||
method: :post,
|
||||
form: { data: { turbo_confirm: "Arquivar #{m[:registro].motorista_nome} desta consolidação? Você poderá restaurar depois." },
|
||||
class: 'absolute top-3 right-3' },
|
||||
class: 'text-gray-500 hover:text-red-400 border border-[#2a2a2a] hover:border-red-500/50 rounded-lg w-9 h-9 flex items-center justify-center',
|
||||
title: "Arquivar #{m[:registro].motorista_nome}" %>
|
||||
title: "Arquivar #{m[:registro].motorista_nome}" do %>
|
||||
<%= icone :arquivar, cor: nil, tamanho: 'w-4 h-4' %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -229,7 +230,7 @@
|
||||
<%# Motoristas arquivados — restauráveis %>
|
||||
<% if @arquivados.present? %>
|
||||
<div class="mt-6">
|
||||
<h2 class="text-gray-400 font-semibold text-sm mb-2">🗄️ Motoristas arquivados (<%= @arquivados.size %>)</h2>
|
||||
<h2 class="text-gray-400 font-semibold text-sm mb-2 flex items-center gap-2"><%= icone :arquivar %> Motoristas arquivados (<%= @arquivados.size %>)</h2>
|
||||
<div class="space-y-2">
|
||||
<% @arquivados.each do |cm| %>
|
||||
<div class="flex items-center justify-between bg-[#141414] border border-[#2a2a2a] border-dashed rounded-xl px-4 py-3">
|
||||
@@ -239,17 +240,19 @@
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<% if pode_arquivar_motorista %>
|
||||
<%= button_to '♻️ Restaurar',
|
||||
desarquivar_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id),
|
||||
<%= button_to desarquivar_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id),
|
||||
method: :post,
|
||||
class: 'text-green-400 hover:text-green-300 border border-[#2a2a2a] hover:border-green-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px]' %>
|
||||
class: 'text-green-400 hover:text-green-300 border border-[#2a2a2a] hover:border-green-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px] inline-flex items-center gap-1.5' do %>
|
||||
<%= icone :restaurar, cor: nil, tamanho: 'w-3.5 h-3.5' %> Restaurar
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if policy(@consolidacao).destroy? %>
|
||||
<%= button_to '🗑️ Excluir',
|
||||
excluir_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id),
|
||||
<%= button_to excluir_motorista_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id),
|
||||
method: :delete,
|
||||
form: { data: { turbo_confirm: "Excluir DEFINITIVAMENTE #{cm.motorista_nome} desta consolidação? Os lançamentos dele serão apagados e isso não pode ser desfeito." } },
|
||||
class: 'text-red-400 hover:text-red-300 border border-[#2a2a2a] hover:border-red-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px]' %>
|
||||
class: 'text-red-400 hover:text-red-300 border border-[#2a2a2a] hover:border-red-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px] inline-flex items-center gap-1.5' do %>
|
||||
<%= icone :excluir, cor: nil, tamanho: 'w-3.5 h-3.5' %> Excluir
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
@@ -272,25 +275,28 @@
|
||||
<% if @consolidacao.rascunho? %>
|
||||
<div class="flex flex-col sm:flex-row gap-2">
|
||||
<% if !tudo_completo && tem_consolidados && tem_pendentes %>
|
||||
<%= button_to '🔒 Arquivar pendentes e finalizar',
|
||||
finalizar_parcial_consolidacao_path(@consolidacao),
|
||||
<%= button_to finalizar_parcial_consolidacao_path(@consolidacao),
|
||||
method: :post,
|
||||
data: { turbo_confirm: 'Arquivar TODOS os veículos ainda não classificados 100% e finalizar? Eles ficam de fora desta consolidação (você resolve depois). Os veículos consolidados são pagos normalmente.' },
|
||||
class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-5 py-3.5 rounded-lg min-h-[48px] flex items-center justify-center text-center' %>
|
||||
form: { data: { turbo_confirm: 'Arquivar TODOS os veículos ainda não classificados 100% e finalizar? Eles ficam de fora desta consolidação (você resolve depois). Os veículos consolidados são pagos normalmente.' } },
|
||||
class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-5 py-3.5 rounded-lg min-h-[48px] flex items-center justify-center text-center gap-2' do %>
|
||||
<%= icone :travado, cor: nil, tamanho: 'w-4 h-4' %> Arquivar pendentes e finalizar
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= button_to 'Finalizar consolidação ✓', finalizar_consolidacao_path(@consolidacao),
|
||||
<%= button_to finalizar_consolidacao_path(@consolidacao),
|
||||
method: :post,
|
||||
disabled: !tudo_completo,
|
||||
data: { turbo_confirm: 'Finalizar? Após finalizada, a consolidação não poderá ser editada por operadores.' },
|
||||
class: "font-bold px-6 py-3.5 rounded-lg min-h-[48px] transition-colors
|
||||
#{tudo_completo ? 'bg-green-600 hover:bg-green-500 text-white cursor-pointer' : 'bg-[#2a2a2a] text-gray-600 cursor-not-allowed'}" %>
|
||||
form: { data: { turbo_confirm: 'Finalizar? Após finalizada, a consolidação não poderá ser editada por operadores.' } },
|
||||
class: "font-bold px-6 py-3.5 rounded-lg min-h-[48px] transition-colors inline-flex items-center justify-center gap-2
|
||||
#{tudo_completo ? 'bg-green-600 hover:bg-green-500 text-white cursor-pointer' : 'bg-[#2a2a2a] text-gray-600 cursor-not-allowed'}" do %>
|
||||
Finalizar consolidação <%= icone :confirmar, cor: nil %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% unless tudo_completo %>
|
||||
<p class="text-gray-500 text-sm mt-2 text-center">
|
||||
⚠️ Classifique todas as entregas de todos os motoristas para finalizar tudo<% if tem_consolidados && tem_pendentes %> — ou use <strong>“Arquivar pendentes e finalizar”</strong> para fechar só os veículos já consolidados.<% end %>
|
||||
<%= icone :alerta, cor: 'text-amber-400' %> Classifique todas as entregas de todos os motoristas para finalizar tudo<% if tem_consolidados && tem_pendentes %> — ou use <strong>“Arquivar pendentes e finalizar”</strong> para fechar só os veículos já consolidados.<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user