diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_servico_tipo/TServicoTipoForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_servico_tipo/TServicoTipoForm.tsx index e8acbb8..03c0127 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_components/t_servico_tipo/TServicoTipoForm.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_servico_tipo/TServicoTipoForm.tsx @@ -14,6 +14,8 @@ import { DialogHeader, DialogTitle, } from '@/components/ui/dialog'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { DollarSign, Settings, SquarePen } from 'lucide-react'; import { Form, FormControl, @@ -23,63 +25,65 @@ import { FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; +import { Checkbox } from '@/components/ui/checkbox'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; -import { TServicoTipoSchema } from '../../_schemas/TServicoTipoSchema'; // Novo Schema +import { TServicoTipoSchema } from '../../_schemas/TServicoTipoSchema'; import { useEffect } from 'react'; -// Define o tipo do formulário com base no novo schema Zod +// Tipo inferido a partir do schema Zod type FormValues = z.infer; // Propriedades esperadas pelo componente interface Props { - isOpen: boolean; // controla se o Dialog está aberto - data: FormValues | null; // dados para edição (se existirem) - onClose: (item: null, isFormStatus: boolean) => void; // callback para fechar - onSave: (data: FormValues) => void; // callback para salvar + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; } // Componente principal do formulário export default function TServicoTipoForm({ isOpen, data, onClose, onSave }: Props) { - - // Inicializa o react-hook-form integrado ao Zod para validação + + // Inicializa o react-hook-form com validação via Zod const form = useForm({ resolver: zodResolver(TServicoTipoSchema), defaultValues: { - servico_tipo_id: 0, // Assumindo 'servico_tipo_id' como o ID - descricao: '', // Assumindo 'descricao' como o campo de nome + servico_tipo_id: 0, + descricao: '', + categoria: '', + servico_padrao: '', + servico_caixa: '', + averbacao: false, + transferencia_veiculo: false, + usar_a4: false, + etiqueta_unica: '', }, }); - // Quando recebe dados para edição, atualiza os valores do formulário + // Atualiza os valores quando há dados para edição useEffect(() => { - if (data) { - // Se for edição, carrega os dados recebidos - form.reset({ - servico_tipo_id: data.servico_tipo_id, - descricao: data.descricao ?? '', - // Adicione outros campos específicos de TServicoTipo aqui - }); + form.reset(data); } else { - // Se for novo cadastro, limpa o formulário com valores padrão - form.reset({ - servico_tipo_id: 0, - descricao: '', - // Adicione outros campos específicos de TServicoTipo aqui - }); + form.reset(); } - - }, [data, form]); // Não há dependência de fetchGUf, pois foi removido. + }, [data, form]); return ( { if (!open) onClose(null, false); }} > - + {/* Cabeçalho do diálogo */} Tipos de Serviço @@ -89,46 +93,488 @@ export default function TServicoTipoForm({ isOpen, data, onClose, onSave }: Prop {/* Estrutura do formulário */}
- {/* Campo: Nome do Tipo de Serviço (descricao) */} - ( - - Descrição do Tipo - - - - - - )} - /> - {/* Rodapé do diálogo com botões */} + + + {/* Abas principais */} + + + + Dados do Tipo de Serviço + + + + Configurações + + + + Valores + + + + {/* Aba: Dados do Tipo de Serviço */} + + +
+ + {/* Campo: Descrição */} +
+ ( + + Descrição do Tipo + + + + + + )} + /> +
+ + {/* Campo: Categoria (Select) */} +
+ ( + + Categoria + + + + )} + /> +
+ + {/* Campo: Serviço Padrão (Select) */} +
+ ( + + Serviço Padrão + + + + )} + /> +
+ + {/* Campo: Serviço Caixa (Select) */} +
+ ( + + Serviço Caixa + + + + )} + /> +
+ + {/* Campo: Averbação (Checkbox) */} +
+ ( + + + + + Averbação + + )} + /> +
+ + {/* Campo: Transferência de Veículo (Checkbox) */} +
+ ( + + + + + Transferência Veículo + + )} + /> +
+ + {/* Campo: Usar A4 (Checkbox) */} +
+ ( + + + + + Usar A4 + + )} + /> +
+ + {/* Campo: Etiqueta Única (Texto normal) */} +
+ ( + + + + + Etiqueta Única + + )} + /> +
+
+
+ + {/* Outras abas */} + + +
+ + {/* Campo: Serviço tipo (Select) */} +
+ ( + + Tipo + + + + )} + /> +
+ + + {/* Campo: Pessoa (Select) */} +
+ ( + + Pessoa + + + + )} + /> +
+ + + {/* Campo: Quantidade de pessoas */} +
+ ( + + {/* Rótulo do campo */} + Quantidade de pessoas + + + { + const apenasNumeros = e.target.value.replace(/[^0-9]/g, ''); + field.onChange(apenasNumeros); + }} + /> + + + {/* Exibe mensagens de erro do React Hook Form */} + + + )} + /> +
+ +
Requerer
+ + {/* Campo: Biometria (Select) */} +
+ ( + + Biometria + + + + )} + /> +
+ + {/* Campo: CPF/CNPJ (Select) */} +
+ ( + + CPF/CNPJ + + + + )} + /> +
+ + + {/* Campo: autorização (Select) */} +
+ ( + + Autorização + + + + )} + /> +
+ + + {/* Campo: abonador (Select) */} +
+ ( + + Abonador + + + + )} + /> +
+ + + {/* Campo: etiquetas/carimbos (Select) */} +
+ ( + + Abonador + + + + )} + /> +
+ +
+ +
+ + 003 + + + {/* Campo oculto: ID */} + +
+ + {/* Rodapé do diálogo */} - {/* Botão de cancelar */} - - - {/* Botão de salvar */} - + - - {/* Campo oculto: ID do Tipo de Serviço */} -
); -} \ No newline at end of file +} diff --git a/src/packages/administrativo/components/t_imovel/TImovelForm.tsx b/src/packages/administrativo/components/t_imovel/TImovelForm.tsx index 0638319..0cb347b 100644 --- a/src/packages/administrativo/components/t_imovel/TImovelForm.tsx +++ b/src/packages/administrativo/components/t_imovel/TImovelForm.tsx @@ -77,6 +77,7 @@ export default function TImovelForm({ isOpen, data, onClose, onSave, buttonIsLoa }} > + Imóvel Urbano @@ -85,10 +86,13 @@ export default function TImovelForm({ isOpen, data, onClose, onSave, buttonIsLoa Cadastro de imóvel urbano +
{/* Tabs */} + + @@ -99,6 +103,7 @@ export default function TImovelForm({ isOpen, data, onClose, onSave, buttonIsLoa Unidades + {/* Dados do Imóvel */}