Copyright, Financeiro, Lançamentos, aprimoramentos de ui

This commit is contained in:
Leonardo
2026-03-21 08:05:40 -03:00
parent 29ed349cf2
commit a89d1f5560
268 changed files with 58870 additions and 1752 deletions
+55 -6
View File
@@ -1,3 +1,19 @@
<!--
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/components/ComponentCadastroRapido.vue
| Data: 2026
| Local: São Carlos/SP Brasil
|--------------------------------------------------------------------------
| © 2026 Todos os direitos reservados
|--------------------------------------------------------------------------
-->
<template>
<Dialog
v-model:visible="isOpen"
@@ -15,7 +31,7 @@
<div class="min-w-0">
<div class="text-xl font-semibold">{{ title }}</div>
<div class="text-sm text-surface-500">
Crie um paciente rapidamente (nome, e-mail e telefone obrigatórios).
Crie um paciente rapidamente.
</div>
</div>
@@ -51,7 +67,7 @@
:disabled="saving"
autocomplete="off"
autofocus
@keydown.enter.prevent="submit"
@keydown.enter.prevent="submit('only')"
/>
</IconField>
<label for="cr-nome">Nome completo *</label>
@@ -71,7 +87,7 @@
:disabled="saving"
inputmode="email"
autocomplete="off"
@keydown.enter.prevent="submit"
@keydown.enter.prevent="submit('only')"
/>
</IconField>
<label for="cr-email">E-mail *</label>
@@ -90,7 +106,7 @@
class="w-full"
variant="filled"
:disabled="saving"
@keydown.enter.prevent="submit"
@keydown.enter.prevent="submit('only')"
/>
</IconField>
<label for="cr-telefone">Telefone *</label>
@@ -111,12 +127,31 @@
:disabled="saving"
@click="close"
/>
<!-- Na rota de pacientes: "Salvar" -->
<Button
v-if="isOnPatientsPage"
label="Salvar"
:loading="saving"
:disabled="saving"
@click="submit"
@click="submit('only')"
/>
<!-- Fora da rota de pacientes: "Salvar e fechar" + "Salvar e ver pacientes" -->
<template v-else>
<Button
label="Salvar e fechar"
severity="secondary"
outlined
:loading="saving"
:disabled="saving"
@click="submit('only')"
/>
<Button
label="Salvar e ver pacientes"
:loading="saving"
:disabled="saving"
@click="submit('view')"
/>
</template>
</div>
</template>
</Dialog>
@@ -124,6 +159,7 @@
<script setup>
import { computed, reactive, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useRoleGuard } from '@/composables/useRoleGuard'
import { useToast } from 'primevue/usetoast'
@@ -134,6 +170,13 @@ import Message from 'primevue/message'
import { supabase } from '@/lib/supabase/client'
const { canSee } = useRoleGuard()
const route = useRoute()
const router = useRouter()
const isOnPatientsPage = computed(() => {
const p = String(route.path || '')
return p.includes('/patients') || p.includes('/pacientes')
})
/**
* Lista "curada" de pensadores influentes na psicanálise e seu entorno.
@@ -325,7 +368,12 @@ function generateUser () {
})
}
async function submit () {
function patientsListRoute () {
const p = String(route.path || '')
return p.startsWith('/therapist') ? '/therapist/patients' : '/admin/pacientes'
}
async function submit (mode = 'only') {
touched.value = true
errorMsg.value = ''
@@ -378,6 +426,7 @@ async function submit () {
emit('created', data)
if (props.closeOnCreated) close()
if (mode === 'view') await router.push(patientsListRoute())
} catch (err) {
const msg = err?.message || err?.details || 'Não foi possível criar o paciente.'
errorMsg.value = msg