feat(lancar-gto): faces/obs por dente, campo descricao_mobile e layout mobile em 3 slides

- Cada dente selecionado tem seu próprio input de face e observação (não mais unificado)
- ADICIONAR ITEM cria um GTOItem por dente com face/obs individual
- Layout mobile em 3 páginas: pág 1 paciente/especialidade/dentista, pág 2 odontograma, pág 3 faces/obs + rascunho
- Navegação mobile com footer fixo: VOLTAR | indicador de página | PRÓXIMO / FINALIZAR
- Campo descricao_mobile no cadastro de procedimentos (versão curta para celular)
- ALTER TABLE procedimentos ADD COLUMN descricao_mobile TEXT (já executado no DB)
- Desktop mantém layout coluna dupla original sem mudança

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-05-15 04:43:50 +02:00
parent 4ff45e2c16
commit fbaf478eaf
3 changed files with 885 additions and 713 deletions
+7
View File
@@ -457,6 +457,7 @@ export const ProcedimentosView: React.FC = () => {
codigoInterno: data.codigoInterno,
categoria: data.categoria,
descricao: data.descricao,
descricao_mobile: data.descricao_mobile || undefined,
especialidadeId: data.especialidadeId,
especialidadeNome: esp?.nome || '',
valorParticular: parseFloat(data.valorParticular),
@@ -644,6 +645,12 @@ export const ProcedimentosView: React.FC = () => {
</div>
</div>
<textarea name="descricao" placeholder="BREVE DESCRIÇÃO" defaultValue={editingProcedimento?.descricao} className="w-full border border-gray-300 rounded-lg p-2 h-20 uppercase-textarea"></textarea>
<div>
<label className="text-xs font-bold text-gray-500 uppercase flex items-center gap-2">
DESCRIÇÃO MOBILE <span className="text-[10px] text-blue-500 font-normal normal-case">(versão curta para celular)</span>
</label>
<input name="descricao_mobile" placeholder="EX: RESTAURAÇÃO COMP." defaultValue={editingProcedimento?.descricao_mobile} className="w-full border border-gray-300 rounded-lg p-2 uppercase-input" />
</div>
<div className="grid grid-cols-2 gap-4">
<div>
<label className="text-xs font-bold text-gray-500 uppercase">ESPECIALIDADE</label>
File diff suppressed because it is too large Load Diff