codex es otro pedo, lo soluciono
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s

This commit is contained in:
2025-11-22 00:48:21 -06:00
parent 5b9445ca2d
commit 9b1628485f
2 changed files with 23 additions and 28 deletions

View File

@@ -41,38 +41,36 @@
<UCard>
<UTable
v-model="selected"
:rows="lotes"
:data="lotes"
:columns="columns"
:loading="loading"
:empty-state="{
icon: 'i-heroicons-inbox',
label: 'No hay lotes registrados'
}"
@select="handleSelect"
>
<template #codigo-data="{ row }">
<template #codigo-cell="{ row }">
<span class="font-mono font-semibold">{{ row.codigo || '-' }}</span>
</template>
<template #tipo-data="{ row }">
<template #tipo-cell="{ row }">
<UBadge :color="getTipoColor(row.tipo)" variant="subtle">
{{ getTipoLabel(row.tipo) }}
</UBadge>
</template>
<template #cantidad_kg-data="{ row }">
<template #cantidad_kg-cell="{ row }">
<span v-if="row.cantidad_kg" class="font-medium">
{{ row.cantidad_kg.toLocaleString('es-AR') }} kg
</span>
<span v-else class="text-gray-400">-</span>
</template>
<template #fecha_creado-data="{ row }">
<template #fecha_creado-cell="{ row }">
{{ formatDate(row.fecha_creado) }}
</template>
<template #actions-data="{ row }">
<template #actions-cell="{ row }">
<div class="flex gap-1">
<UButton
icon="i-heroicons-eye"
@@ -101,6 +99,7 @@
</template>
<script setup lang="ts">
import type { ColumnDef } from '@tanstack/vue-table'
import type { Lote } from '~/composables/useLotes'
console.log('🟢 LotesTable: <script setup> ejecutándose')
@@ -118,16 +117,15 @@ console.log('🟢 LotesTable: useLotes() completado')
const lotes = ref<Lote[]>([])
const loading = ref(false)
const selected = ref<Lote[]>([])
const filtroTipo = ref('')
const error = ref<string | null>(null)
const columns = [
{ key: 'codigo', label: 'Código' },
{ key: 'tipo', label: 'Tipo' },
{ key: 'cantidad_kg', label: 'Cantidad' },
{ key: 'fecha_creado', label: 'Fecha Creación' },
{ key: 'actions', label: 'Acciones' },
const columns: ColumnDef<Lote>[] = [
{ accessorKey: 'codigo', id: 'codigo', header: 'Código' },
{ accessorKey: 'tipo', id: 'tipo', header: 'Tipo' },
{ accessorKey: 'cantidad_kg', id: 'cantidad_kg', header: 'Cantidad' },
{ accessorKey: 'fecha_creado', id: 'fecha_creado', header: 'Fecha Creación' },
{ id: 'actions', header: 'Acciones' },
]
const loadLotes = async () => {
@@ -152,10 +150,6 @@ const loadLotes = async () => {
}
}
const handleSelect = (rows: Lote[]) => {
selected.value = rows
}
const getTipoLabel = (tipo: string) => {
const found = TIPOS_LOTE.find((t) => t.value === tipo)
return found?.label || tipo