Grande correção do filtro de veiculos na area de consolidação
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
export default class extends Controller {
|
||||
static targets = ["modal", "motorista", "nf", "obs", "erro", "tipoCheck", "valorExtra"]
|
||||
static targets = ["modal", "motorista", "nf", "obs", "erro", "tipoCheck", "valorExtra", "veiculo"]
|
||||
static values = { apontarManualUrl: String }
|
||||
|
||||
abrir() {
|
||||
@@ -52,7 +52,8 @@ export default class extends Controller {
|
||||
nf: this.nfTarget.value.trim(),
|
||||
obs: this.obsTarget.value.trim(),
|
||||
tipos: tipos,
|
||||
valor: valor
|
||||
valor: valor,
|
||||
vehicle: this.hasVeiculoTarget ? this.veiculoTarget.value : ""
|
||||
})
|
||||
})
|
||||
const data = await resp.json()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
export default class extends Controller {
|
||||
static targets = ["modal", "quantidade", "erro"]
|
||||
static targets = ["modal", "quantidade", "erro", "veiculo"]
|
||||
static values = { apontarTermoUrl: String, motorista: String }
|
||||
|
||||
abrir() {
|
||||
@@ -55,7 +55,11 @@ export default class extends Controller {
|
||||
"Accept": "application/json",
|
||||
"X-CSRF-Token": document.querySelector('meta[name="csrf-token"]').content
|
||||
},
|
||||
body: JSON.stringify({ motorista: motorista, quantidade: quantidade })
|
||||
body: JSON.stringify({
|
||||
motorista: motorista,
|
||||
quantidade: quantidade,
|
||||
vehicle: this.hasVeiculoTarget ? this.veiculoTarget.value : ""
|
||||
})
|
||||
})
|
||||
const data = await resp.json()
|
||||
if (!resp.ok || data.ok === false) {
|
||||
|
||||
@@ -9,6 +9,7 @@ export default class extends Controller {
|
||||
"linha", "checkbox", "selecionarTodos", "busca", "buscaVazia",
|
||||
"resumo", "listaCol", "btnResumoLabel",
|
||||
"toggles", "barra", "barraManuais", "percentual", "chipVeiculo",
|
||||
"consolidarBtn", "consolidarHint",
|
||||
"contadorClassificadas", "contadorTotal", "contadorManuais", "manuaisInfo",
|
||||
"qtdNormal", "qtdRetirada", "qtdBonus", "qtdDesconto", "qtdExtraordinaria",
|
||||
"qtdTermo", "qtdManuais", "valorTotal"
|
||||
@@ -217,6 +218,23 @@ export default class extends Controller {
|
||||
this.barraTarget.classList.toggle("bg-green-500", pct >= 100)
|
||||
this.barraTarget.classList.toggle("bg-orange-500", pct < 100)
|
||||
|
||||
// Botão "Consolidar este veículo" (só existe quando UM veículo está
|
||||
// selecionado e ainda não fechado): habilita quando o escopo chega a 100%.
|
||||
if (this.hasConsolidarBtnTarget) {
|
||||
const pronto = pct >= 100
|
||||
this.consolidarBtnTarget.disabled = !pronto
|
||||
this.consolidarBtnTarget.classList.toggle("bg-green-600", pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("hover:bg-green-500", pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("text-white", pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("cursor-pointer", pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("bg-[#2a2a2a]", !pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("text-gray-600", !pronto)
|
||||
this.consolidarBtnTarget.classList.toggle("cursor-not-allowed", !pronto)
|
||||
if (this.hasConsolidarHintTarget)
|
||||
this.consolidarHintTarget.textContent =
|
||||
pronto ? "Pronto para consolidar." : "Classifique 100% deste veículo para consolidar."
|
||||
}
|
||||
|
||||
if (dados.veiculos_status) this.atualizarChips(dados.veiculos_status)
|
||||
}
|
||||
|
||||
@@ -227,9 +245,12 @@ export default class extends Controller {
|
||||
const porVeiculo = {}
|
||||
status.forEach(v => { porVeiculo[v.vehicle] = v })
|
||||
|
||||
const VERDE = ["border-green-500", "text-green-400", "bg-green-500/10"]
|
||||
const LARANJA = ["border-orange-500", "text-orange-400", "bg-orange-500/10"]
|
||||
const NEUTRO = ["border-[#2a2a2a]", "text-gray-300"]
|
||||
const LARANJA = ["border-orange-500", "text-orange-400", "bg-orange-500/10"]
|
||||
const VERDE_FECHADO = ["border-green-500", "text-green-400", "bg-green-500/10"]
|
||||
const VERDE_PRONTO = ["border-green-600/50", "text-green-400"]
|
||||
const ARQUIVADO = ["border-dashed", "border-[#3a3a3a]", "text-gray-500"]
|
||||
const NEUTRO = ["border-[#2a2a2a]", "text-gray-300"]
|
||||
const TODAS = [...LARANJA, ...VERDE_FECHADO, ...VERDE_PRONTO, ...ARQUIVADO, ...NEUTRO]
|
||||
|
||||
this.chipVeiculoTargets.forEach(chip => {
|
||||
const dados = porVeiculo[chip.dataset.vehicle]
|
||||
@@ -237,17 +258,23 @@ export default class extends Controller {
|
||||
const feito = chip.querySelector("[data-chip-feito]")
|
||||
const total = chip.querySelector("[data-chip-total]")
|
||||
const check = chip.querySelector("[data-chip-check]")
|
||||
const lock = chip.querySelector("[data-chip-lock]")
|
||||
if (feito) feito.textContent = dados.classificadas
|
||||
if (total) total.textContent = dados.eligible
|
||||
if (check) check.textContent = dados.fechado ? "✓" : ""
|
||||
if (check) check.textContent = dados.completo ? "✓" : ""
|
||||
if (lock) lock.classList.toggle("hidden", !dados.fechado)
|
||||
|
||||
// Estado de cor determinístico: laranja (selecionado) > verde (fechado) > neutro.
|
||||
// Seleção tem prioridade para o usuário sempre enxergar quais carros somam.
|
||||
chip.classList.remove(...VERDE, ...LARANJA, ...NEUTRO)
|
||||
// Cor determinística: selecionado(laranja) > consolidado(verde+🔒) >
|
||||
// pronto(verde) > arquivado(cinza) > neutro.
|
||||
chip.classList.remove(...TODAS)
|
||||
if (this.veiculosValue.includes(chip.dataset.vehicle)) {
|
||||
chip.classList.add(...LARANJA)
|
||||
} else if (dados.fechado) {
|
||||
chip.classList.add(...VERDE)
|
||||
chip.classList.add(...VERDE_FECHADO)
|
||||
} else if (dados.completo) {
|
||||
chip.classList.add(...VERDE_PRONTO)
|
||||
} else if (dados.arquivado) {
|
||||
chip.classList.add(...ARQUIVADO)
|
||||
} else {
|
||||
chip.classList.add(...NEUTRO)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user