import React, { useEffect, useState } from 'react'; import { useMoki } from '../hooks/useMoki'; import ExcelTable from '../components/ExcelTable'; import { Plus, Search } from 'lucide-react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription } from "@/components/ui/dialog"; // Reusing styled components locally const DarkInput = ({ label, ...props }) => (
{label && }
); const DarkSelect = ({ label, options, value, onChange }) => (
{label && }
); const DarkButton = ({ children, variant = 'primary', className = '', ...props }) => { const baseClass = "px-4 py-2 rounded-lg font-bold text-sm transition-all shadow-lg active:scale-95 flex items-center justify-center gap-2"; const variants = { primary: "bg-emerald-600 hover:bg-emerald-500 text-white shadow-emerald-500/10", secondary: "bg-slate-100 dark:bg-[#2a2a2a] hover:bg-slate-200 dark:hover:bg-[#333] text-slate-700 dark:text-slate-200 border border-slate-200 dark:border-[#333]", ghost: "bg-transparent hover:bg-slate-100 dark:hover:bg-[#2a2a2a] text-slate-500 dark:text-slate-400 hover:text-slate-700 dark:hover:text-white" }; return ( ); }; export default function MokiView() { const { mokis, fetchMokis, createMoki, updateMoki, deleteMoki } = useMoki(); const [searchTerm, setSearchTerm] = useState(''); const [isModalOpen, setIsModalOpen] = useState(false); const [editingItem, setEditingItem] = useState(null); const initialFormState = { aprovacao: '', autor: '', checklist: '', cod_unidade: '', data: '', idmoki_frota: '', nome_unidade: '', origem: '', status: 'Não Conforme', status_checklist: '', status_unidade: '', unidade: '' }; const [formData, setFormData] = useState(initialFormState); useEffect(() => { fetchMokis(); }, []); const handleOpenModal = (item = null) => { if (item) { setEditingItem(item); setFormData({ ...initialFormState, ...item, data: (item.data || item.data_moki || item.data_checklist || '').split('T')[0] }); } else { setEditingItem(null); setFormData(initialFormState); } setIsModalOpen(true); }; const handleSubmit = async (e) => { e.preventDefault(); const { idmoki_frota, ...rest } = formData; const payload = { ...rest, id: idmoki_frota ? Number(idmoki_frota) : undefined }; let success; if (editingItem) { success = await updateMoki(Number(idmoki_frota || editingItem.id), payload); } else { success = await createMoki(payload); } if (success) setIsModalOpen(false); }; const filteredData = mokis.filter(item => item.checklist?.toLowerCase().includes(searchTerm.toLowerCase()) || item.unidade?.toLowerCase().includes(searchTerm.toLowerCase()) || item.nome_unidade?.toLowerCase().includes(searchTerm.toLowerCase()) ); return (

Checklists Moki

Inspeções e vistorias realizadas.

setSearchTerm(e.target.value)} />
handleOpenModal()}> Novo Checklist
row.data?.split('T')[0] || row.data_checklist?.split('T')[0] }, { header: 'CHECKLIST', field: 'checklist', width: '220px', className: 'font-bold text-emerald-600 dark:text-emerald-500' }, { header: 'STATUS CHECKLIST', field: 'status_checklist', width: '150px' }, { header: 'STATUS', field: 'status', width: '120px', render: (row) => ( {row.status || 'Pendente'} )}, { header: 'UNIDADE', field: 'unidade', width: '150px' }, { header: 'COD. UNIDADE', field: 'cod_unidade', width: '120px' }, { header: 'NOME UNIDADE', field: 'nome_unidade', width: '180px' }, { header: 'STATUS UNIDADE', field: 'status_unidade', width: '120px' }, { header: 'AUTOR', field: 'autor', width: '120px' }, { header: 'ORIGEM', field: 'origem', width: '120px' }, { header: 'APROVAÇÃO', field: 'aprovacao', width: '120px' }, ]} filterDefs={[ { field: 'origem', label: 'Origem', type: 'select' }, { field: 'unidade', label: 'Unidade', type: 'select' }, { field: 'checklist', label: 'Checklist', type: 'select' }, { field: 'status', label: 'Status', type: 'select' }, { field: 'autor', label: 'Autor', type: 'select' }, ]} onEdit={handleOpenModal} onDelete={(item) => deleteMoki(item.idmoki_frota)} />
{editingItem ? `Editando Checklist ID: ${editingItem.idmoki_frota}` : 'Novo Checklist Moki'} Informações da vistoria via sistema Moki.
setFormData({...formData, idmoki_frota: e.target.value})} required placeholder="Ex: 123456" />

Este campo deve ser preenchido manualmente para novos registros.

setFormData({...formData, origem: e.target.value})} /> setFormData({...formData, unidade: e.target.value})} />
setFormData({...formData, cod_unidade: e.target.value})} /> setFormData({...formData, nome_unidade: e.target.value})} />
setFormData({...formData, status_unidade: e.target.value})} /> setFormData({...formData, checklist: e.target.value})} />
setFormData({...formData, status_checklist: e.target.value})} /> setFormData({...formData, data: e.target.value})} />
setFormData({...formData, autor: e.target.value})} /> setFormData({...formData, status: v})} />
setFormData({...formData, aprovacao: e.target.value})} /> setIsModalOpen(false)}>Cancelar Salvar Checklist
); }