agenda: services nome unico por owner + cadastro in-flow

services: useServices.save e ServiceQuickCreateDialog agora validam nome
unico por owner (ilike, case-insensitive; ignora self no update). Antes
era possivel criar dois servicos com nome igual via paths diferentes.

cadastro in-flow: ComponentCadastroRapido e PatientCadastroDialog ganham
prop hideViewListButton. Quando true (uso dentro de outro fluxo, ex:
cadastrar paciente direto no AgendaEventDialog), esconde "Salvar e ver
pacientes" — navegar pra lista abandonaria o evento em edicao.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-11 10:44:27 -03:00
parent 8b0e633aac
commit 8e3c09d1b1
4 changed files with 49 additions and 7 deletions
+10 -3
View File
@@ -33,7 +33,13 @@ import PatientsCadastroPage from '@/features/patients/cadastro/PatientsCadastroP
const props = defineProps({
modelValue: { type: Boolean, default: false },
patientId: { type: String, default: null }
patientId: { type: String, default: null },
// Quando true (uso "in-flow", ex: aberto de dentro do AgendaEventDialog),
// esconde o botao "Salvar e ver pacientes" — navegar pra lista
// abandonaria o fluxo onde o cadastro foi aberto. Default false
// mantem o botao visivel pra usos standalone (Pacientes, Melissa).
hideViewListButton: { type: Boolean, default: false }
});
const emit = defineEmits(['update:modelValue', 'created']);
@@ -188,9 +194,10 @@ async function onCreated(data) {
<template #footer>
<div class="flex justify-end gap-2">
<Button label="Cancelar" severity="secondary" text :disabled="!!pageRef?.saving?.value || !!pageRef?.deleting?.value" @click="isOpen = false" />
<!-- Na rota de pacientes: "Salvar" -->
<!-- Na rota de pacientes OU em fluxo (hideViewListButton): um botao -->
<Button v-if="isOnPatientsPage" label="Salvar" :loading="!!pageRef?.saving?.value" :disabled="!!pageRef?.saving?.value || !!pageRef?.deleting?.value" @click="submitWith('only')" />
<!-- Fora da rota de pacientes: "Salvar e fechar" + "Salvar e ver pacientes" -->
<Button v-else-if="hideViewListButton" label="Salvar e fechar" :loading="!!pageRef?.saving?.value" :disabled="!!pageRef?.saving?.value || !!pageRef?.deleting?.value" @click="submitWith('only')" />
<!-- Standalone fora da lista: "Salvar e fechar" + "Salvar e ver pacientes" -->
<template v-else>
<Button label="Salvar e fechar" severity="secondary" outlined :loading="pendingMode === 'only' && !!pageRef?.saving?.value" :disabled="!!pageRef?.saving?.value || !!pageRef?.deleting?.value" @click="submitWith('only')" />
<Button label="Salvar e ver pacientes" :loading="pendingMode === 'view' && !!pageRef?.saving?.value" :disabled="!!pageRef?.saving?.value || !!pageRef?.deleting?.value" @click="submitWith('view')" />