{"version":3,"sources":["webpack:///./src/modules/configuracoes/clinica/financas/pages/centroCusto/CentrosCustosPage.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioProfissionalPlanos.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/conta/ContasFinanceirasPage.tsx","webpack:///./src/modules/configuracoes/clinica/pages/RegrasRepassePage.tsx","webpack:///./src/modules/configuracoes/clinica/financas/components/CentroCustoForm.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/centroCusto/CentroCustoFormPage.tsx","webpack:///./src/modules/configuracoes/clinica/financas/components/CategoriaFinanceiraForm.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/categoria/CategoriaFinanceiraFormPage.tsx","webpack:///./src/modules/configuracoes/clinica/financas/components/ConfiguracaoFinanceiraForm.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/ConfiguracoesFinanceirasPage.tsx","webpack:///./src/components/datatable/columns/TdSelect.tsx","webpack:///./src/modules/configuracoes/clinica/components/equipe/equipeProfissionais/equipeProfissionaisSlots.tsx","webpack:///./src/modules/configuracoes/clinica/components/equipe/EquipeProfissionais.tsx","webpack:///./src/modules/configuracoes/clinica/components/equipe/EquipeForm.tsx","webpack:///./src/modules/configuracoes/clinica/pages/EquipePage.tsx","webpack:///./src/modules/configuracoes/clinica/pages/convenio/ConveniosPage.tsx","webpack:///./src/modules/configuracoes/clinica/components/ConfiguracaoClinicaPage.tsx","webpack:///./src/modules/configuracoes/clinica/financas/components/ContaFinanceiraForm.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/conta/ContaFinanceiraFormPage.tsx","webpack:///./src/modules/configuracoes/clinica/components/ConfiguracaoClinicaSidebar.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioPlanoForm.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioPlanos.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioProfissionalForm.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioProfissionais.tsx","webpack:///./src/modules/configuracoes/clinica/components/convenio/ConvenioForm.tsx","webpack:///./src/modules/configuracoes/clinica/pages/convenio/ConvenioFormPage.tsx","webpack:///./src/modules/configuracoes/clinica/pages/ClinicaPerfilPage.tsx","webpack:///./src/modules/configuracoes/clinica/pages/ExportarDadosPage.tsx","webpack:///./src/components/treeview/Treeview.tsx","webpack:///./src/modules/configuracoes/clinica/financas/pages/categoria/CategoriasFinanceirasPage.tsx"],"names":["useCentrosCustosQuery","query","CentrosCustosQuery","variables","mapData","result","centrosCustos","nodes","map","v","id","nome","name","setup","props","ctx","btn","text","to","app","configClinica","financas","centrosCusto","new","actions","editRoute","edit","removeMany","deleteMany","headers","value","mapValue","$data","$loading","ConvenioProfissionalPlanos","type","Array","required","planos","default","$items","setItems","useHeaders","useWatchers","slot","header","item","getSchema","atende","align","sortable","width","planoNome","valueAlign","periodoCarenciaDias","label","integer","hideDetails","disabled","emitInput","model","emit","initializeItems","plano","find","f","planoId","items","filter","deep","useContasFinanceirasQuery","ContasFinanceirasQuery","contasFinanceiras","tipo","contaFinanceiraTipos","icon","CentroCustoForm","page","Object","indexRoute","index","useForm","$form","$schema","emitSubmit","emitDelete","useNome","watchNome","useFormConfig","initialValue","mapSchema","dis","validations","loadEditCallback","setFormModel","getById","editValue","useFormPage","submitCallback","update","create","isEdit","handleSubmit","$nome","setNome","$title","handleDelete","delete","CategoriaFinanceiraForm","categoriasFinanceiras","onTipoChange","newValue","oldValue","parentId","useParams","isSubcategoria","transacaoTipos","itemLabel","hidden","lookup","categoriaFinanceira","getVariables","where","take","noCache","parent","queryParentId","queryTipo","DESPESA","RECEITA","ConfiguracaoFinanceiraForm","padroes","recebimentosAtendimento","contaFinanceiraId","centroCustoId","formaPagamento","recebimentoLancamento","lancarAPartir","contaFinanceira","centroCusto","layout","sm","formasPagamento","maxWidth","configuracaoFinanceiraRecebimentoLancarAPartir","noId","get","recebimentoLancarAPartir","TdSelect","String","input","EquipeProfissionaisTdMembro","membroTooltip","membro","EquipeProfissionaisTdTipoAcesso","isAdminAccount","tipoAcesso","ADMIN_ACCOUNT","MyTheme","white","tipoAcessoLabel","isMyUser","onlyClinica","userEquipeTiposAcessos","noAttach","EquipeProfissionais","recepcionista","Boolean","useData","title","useEvents","especialidade","hide","useEquipeQuery","userId","useAuthInfo","$clinica","useQueryConfig","UsersQuery","RECEPCIONISTA","PROFISSIONAL_SAUDE","clinicaId","users","EquipeForm","profissionais","recepcionistas","updateEquipe","useConveniosQuery","ConveniosQuery","particular","convenios","ConfiguracaoClinicaPage","form","s","auth","clinica","$showCard","defaultSlot","slots","ContaFinanceiraForm","useComputeds","$noDelete","saldoInicial","dataSaldoInicial","banco","isCaixaInterno","CAIXA_INTERNO","bancos","CONTA_CORRENTE","CONTA_POUPANCA","INVESTIMENTO","includes","$contaPadraoId","setContaPadraoId","loadConfiguracao","configuracao","menus","perfilClinica","convenio","subheader","configuracaoFinanceira","configuracoesFinanceiras","equipe","regrasRepasse","exportar","exportarDados","ConvenioPlanoForm","emitCancel","defaultValue","autofocus","ConvenioPlanos","useActions","dialogModel","uuid","handleEdit","showDialog","handleNew","handleRemove","system","onSubmit","remove","outlined","onClick","ConvenioProfissionalForm","profissionaisIds","useProfissionalForm","profissionalId","codigoOperadora","$profissional","user","onModelChange","data","ConvenioProfissionais","$profissionaisIds","ConvenioForm","$activeTab","tabs","MyIcons","convenioPlanos","registroAns","convenioLookups","nomeFantasia","mask","suffix","profissional","p","mapValueToValidate","perfilUpdate","Treeview","loading","editToFn","Function","newChildToFn","newChildToTooltip","$search","$open","useSelected","$selected","$selectedMenus","append","children","sort","a","b","setSelected","selecionado","length","push","action","selectedMenus","fileTree","editRouteFn","useDespesasTab","DespesasTab","useReceitasTab","ReceitasTab","despesa","receita","newChildRouteFn","newChild","getQueryConfig","CategoriasFinanceirasQuery","orderBy","nome_ASC","c","newRoute","ActionsRow"],"mappings":"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","file":"js/config-clinica.34695bc6.js","sourcesContent":["import { IndexDataTable } from '@/components/datatable/IndexDataTable';\nimport { QueryGraphql } from '@/graphql/query';\nimport { useQueryConfig } from '@/lib/composables/useQueryConfig';\nimport { CentroCustoService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport {\n ICentroCustoItem,\n ICentrosCustosQuery,\n ICentrosCustosQueryVariables,\n IIndexDataTableActions,\n IIndexDataTableButton,\n IDataTableHeader,\n} from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'CentrosCustosPage',\n setup(props, ctx) {\n const btn: IIndexDataTableButton = {\n text: 'Novo Centro de Custo',\n to: Routes.app.configClinica.financas.centrosCusto.new,\n };\n\n const actions: IIndexDataTableActions = {\n editRoute: Routes.app.configClinica.financas.centrosCusto.edit,\n removeMany: CentroCustoService.deleteMany,\n };\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n ];\n\n const { $data, $loading } = useCentrosCustosQuery();\n\n return () => (\n \n \n \n );\n },\n});\n\nfunction useCentrosCustosQuery() {\n return useQueryConfig<\n ICentrosCustosQuery,\n ICentroCustoItem[],\n ICentrosCustosQueryVariables\n >({\n query: QueryGraphql.CentrosCustosQuery,\n variables: () => ({}),\n mapData: result =>\n result?.centrosCustos.nodes.map(v => ({\n id: v.id,\n nome: v.nome,\n })) || [],\n });\n}\n","import { TdInputNumber } from '@/components/datatable/columns/TdInputNumber';\nimport { TdSwitch } from '@/components/datatable/columns/TdSwitch';\nimport { DataTable } from '@/components/datatable/DataTable';\nimport { PageSection } from '@/components/page/PageSection';\nimport { useValue } from '@/lib/composables';\nimport { createComponent, watchRun } from '@/lib/vue';\nimport {\n IConvenioPlanoModel,\n IConvenioPlanoProfissionalModel,\n IConvenioProfissionalPlanoItem,\n IFormInputNumber,\n IFormInputSwitch,\n IRequireField,\n IDataTableHeader,\n} from '@/typings';\nimport { Ref, SetupContext } from '@vue/composition-api';\n\ninterface IJsxProps {\n // model\n value?: IConvenioPlanoProfissionalModel[];\n planos: IConvenioPlanoModel[] | null | undefined;\n}\n\ntype IProps = IRequireField;\n\ninterface IEvents {\n onInput: (value: IConvenioPlanoProfissionalModel[]) => void;\n}\n\nexport const ConvenioProfissionalPlanos = createComponent({\n name: 'ConvenioProfissionalPlanos',\n props: {\n value: { type: Array, required: true },\n planos: { type: Array, default: () => [] },\n },\n setup(props: IProps, ctx) {\n const [$items, setItems] = useValue([]);\n\n const headers = useHeaders();\n\n useWatchers({ props, ctx, $items, setItems });\n\n return () => (\n \n \n \n );\n },\n});\n\nfunction useHeaders(): IDataTableHeader[] {\n return [\n {\n text: 'Atende',\n value: 'atende',\n slot: ({ header, item }) => [\n (item.atende = !!v)}\n />,\n ],\n align: 'center',\n sortable: false,\n width: 60,\n },\n {\n text: 'Plano',\n value: 'plano',\n mapValue: v => v.planoNome,\n align: 'start',\n valueAlign: 'start',\n },\n {\n text: 'Perído de carência (em dias)',\n value: 'periodoCarenciaDias',\n slot: ({ header, item }) => [\n (item.periodoCarenciaDias = v || 0)}\n />,\n ],\n sortable: false,\n width: 200,\n },\n ];\n}\n\nfunction getSchema(item: IConvenioProfissionalPlanoItem): {\n atende: IFormInputSwitch;\n periodoCarenciaDias: IFormInputNumber;\n} {\n return {\n atende: {\n label: null,\n type: 'switch',\n },\n periodoCarenciaDias: {\n label: null,\n type: 'number',\n integer: true,\n hideDetails: true,\n disabled: !item.atende,\n },\n };\n}\n\nfunction useWatchers({\n props,\n ctx,\n $items,\n setItems,\n}: {\n props: IProps;\n ctx: SetupContext;\n $items: Ref;\n setItems: (v: IConvenioProfissionalPlanoItem[]) => void;\n}) {\n function emitInput(model: IConvenioPlanoProfissionalModel[]) {\n ctx.emit('input', model);\n }\n\n function initializeItems() {\n setItems(\n (props.planos || []).map(plano => {\n const model = props.value.find(f => f.planoId === plano.id);\n\n return {\n planoId: plano.id!,\n planoNome: plano.nome!,\n periodoCarenciaDias: model?.periodoCarenciaDias || 30,\n atende: !!model,\n };\n }),\n );\n }\n\n watchRun(\n $items,\n items => {\n const value = items\n .filter(v => v.atende)\n .map(({ planoId, periodoCarenciaDias }) => ({\n planoId,\n periodoCarenciaDias,\n }));\n\n emitInput(value);\n },\n { deep: true },\n );\n\n initializeItems();\n}\n","import { IndexDataTable } from '@/components/datatable/IndexDataTable';\nimport { QueryGraphql } from '@/graphql/query';\nimport { useQueryConfig } from '@/lib/composables/useQueryConfig';\nimport { ConstantsHelper } from '@/lib/constants/helper';\nimport { ContaFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport {\n IContaFinanceiraFragment,\n IContaFinanceiraItem,\n IContasFinanceirasQuery,\n IContasFinanceirasQueryVariables,\n IDataTableHeader,\n IIndexDataTableActions,\n IIndexDataTableButton,\n} from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'ContasFinanceirasPage',\n setup(props, ctx) {\n const btn: IIndexDataTableButton = {\n text: 'Nova Conta financeira',\n to: Routes.app.configClinica.financas.contasFinanceiras.new,\n };\n\n const actions: IIndexDataTableActions = {\n editRoute: Routes.app.configClinica.financas.contasFinanceiras.edit,\n removeMany: ContaFinanceiraService.deleteMany,\n };\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n {\n text: 'Tipo',\n value: 'tipo',\n mapValue: v => v.tipo,\n slot: v => {\n const item = ConstantsHelper.contaFinanceiraTipos.find(\n f => f.value === v.item.tipo,\n );\n\n if (!item) return null;\n\n return (\n
\n {item.icon}\n\n
{item.label}
\n
\n );\n },\n },\n ];\n\n const { $data, $loading } = useContasFinanceirasQuery();\n\n return () => (\n \n \n \n );\n },\n});\n\nfunction useContasFinanceirasQuery() {\n return useQueryConfig<\n IContasFinanceirasQuery,\n IContaFinanceiraItem[],\n IContasFinanceirasQueryVariables\n >({\n query: QueryGraphql.ContasFinanceirasQuery,\n variables: () => ({}),\n mapData: result => result?.contasFinanceiras.nodes || [],\n });\n}\n","import { createComponent } from '@/lib/vue';\nimport { ConfiguracaoClinicaPage } from '../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'RegrasRepassePage',\n setup(props, ctx) {\n return () => ;\n },\n});\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { INomeEvents, useNome } from '@/lib/composables/utils/useNome';\nimport { CentroCustoService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport { redirectError } from '@/routes/utils';\nimport { ICentroCustoModel, IFormSchema } from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents, INomeEvents {}\n\nexport const CentroCustoForm = createComponent({\n name: 'CentroCustoForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const indexRoute = Routes.app.configClinica.financas.centrosCusto.index;\n\n const { $form, $schema, emitSubmit, emitDelete } = useForm(props, ctx);\n\n useNome({ ctx, watchNome: () => $form.value.model.nome });\n\n return () => (\n \n \n \n \n \n );\n },\n});\n\nfunction useForm(props: IProps, ctx: SetupContext) {\n return useFormConfig>({\n ctx,\n page: props.page,\n initialValue: { nome: null },\n mapSchema: model => {\n const dis = model.nome === 'dis';\n return {\n nome: {\n label: 'Nome',\n type: 'text',\n disabled: dis,\n validations: {\n required: true,\n },\n },\n };\n },\n async loadEditCallback({ id, setFormModel }) {\n const editValue = await CentroCustoService.getById(id);\n\n if (!editValue) return redirectError(404);\n\n setFormModel({ nome: editValue.nome });\n },\n });\n}\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { useNome } from '@/lib/composables/utils/useNome';\nimport { CentroCustoService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { ICentroCustoModel } from '@/typings';\nimport { computed } from '@vue/composition-api';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\nimport { CentroCustoForm } from '../../components/CentroCustoForm';\n\nexport default createComponent({\n name: 'CentroCustoFormPage',\n setup(props, ctx) {\n const { page, isEdit, handleSubmit } = useFormPage({\n ctx,\n submitCallback(model) {\n if (page.id) {\n return CentroCustoService.update(page.id, model);\n } else {\n return CentroCustoService.create(model);\n }\n },\n });\n\n const { $nome, setNome } = useNome({ ctx });\n\n const $title = computed(() => {\n if ($nome.value) {\n return `Centro de custo: ${$nome.value}`;\n }\n\n return isEdit ? 'Editar Centro de custo' : 'Novo Centro de custo';\n });\n\n async function handleDelete(id: string) {\n return CentroCustoService.delete(id);\n }\n\n return () => (\n \n \n \n );\n },\n});\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { INomeEvents, useNome } from '@/lib/composables/utils/useNome';\nimport { useRoute } from '@/lib/composables/utils/useRouter';\nimport { ConstantsHelper } from '@/lib/constants/helper';\nimport { SERVER_MAX_TAKE } from '@/lib/constants/server';\nimport { LookupsConfigs } from '@/lib/form/lookups';\nimport { CategoriaFinanceiraService } from '@/lib/services';\nimport { createComponent, watchRun } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport { redirectError } from '@/routes/utils';\nimport {\n ICategoriaFinanceiraModel,\n ICategoriasFinanceirasQueryVariables,\n IForm,\n IFormSchema,\n TransacaoTipo,\n} from '@/typings';\nimport { Ref, SetupContext } from '@vue/composition-api';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents, INomeEvents {}\n\nexport const CategoriaFinanceiraForm = createComponent({\n name: 'CategoriaFinanceiraForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const indexRoute =\n Routes.app.configClinica.financas.categoriasFinanceiras.index;\n\n const { $form, $schema, emitSubmit, emitDelete } = useForm(props, ctx);\n\n watchRun(() => $form.value.model.tipo, onTipoChange);\n\n function onTipoChange(newValue, oldValue: TransacaoTipo | null) {\n if (oldValue) {\n $form.value.model.parentId = null;\n }\n }\n\n useParams({ ctx, $form });\n\n useNome({\n ctx,\n watchNome: () => $form.value.model.nome,\n });\n\n return () => (\n \n \n \n \n \n );\n },\n});\n\nfunction useForm(props: IProps, ctx: SetupContext) {\n const { $form, $schema, emitSubmit, emitDelete, isEdit } = useFormConfig<\n ICategoriaFinanceiraModel,\n IFormSchema\n >({\n page: props.page,\n initialValue: {\n nome: null,\n parentId: null,\n tipo: null,\n isSubcategoria: false,\n },\n mapSchema: model => ({\n nome: {\n label: 'Nome',\n type: 'text',\n validations: {\n required: true,\n },\n },\n tipo: {\n label: 'Tipo',\n type: 'select',\n items: ConstantsHelper.transacaoTipos,\n validations: {\n required: true,\n },\n },\n isSubcategoria: {\n label: 'Subcategoria',\n type: 'checkbox',\n disabled: isEdit,\n },\n parentId: {\n label: 'Categoria mãe',\n type: 'autocomplete',\n itemLabel: 'nome',\n disabled: !model.tipo,\n hidden: !model.isSubcategoria,\n lookup: LookupsConfigs.categoriaFinanceira({\n getVariables: (): ICategoriasFinanceirasQueryVariables => ({\n where: {\n tipo: $form.value.model.tipo,\n parentId: null,\n },\n take: SERVER_MAX_TAKE,\n }),\n noCache: true,\n }),\n },\n }),\n ctx,\n async loadEditCallback({ id, setFormModel }) {\n const editValue = await CategoriaFinanceiraService.getById(id);\n\n if (!editValue) return redirectError(404);\n\n const parentId = editValue.parent?.id;\n\n setFormModel({\n nome: editValue.nome,\n tipo: editValue.tipo,\n parentId,\n isSubcategoria: !!parentId,\n });\n },\n });\n\n return { $form, $schema, emitSubmit, emitDelete, isEdit };\n}\n\nfunction useParams({\n ctx,\n $form,\n}: {\n ctx: SetupContext;\n $form: Ref>;\n}) {\n function queryParentId() {\n const parentId = useRoute().query.parentId as string;\n if (parentId) {\n $form.value.model.parentId = parentId;\n $form.value.model.isSubcategoria = true;\n }\n }\n\n function queryTipo() {\n const tipo = useRoute().query.tipo;\n\n if (tipo === TransacaoTipo.DESPESA || tipo === TransacaoTipo.RECEITA) {\n $form.value.model.tipo = tipo;\n }\n }\n\n queryTipo();\n queryParentId();\n}\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { useNome } from '@/lib/composables/utils/useNome';\nimport { CategoriaFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { ICategoriaFinanceiraModel } from '@/typings';\nimport { computed } from '@vue/composition-api';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\nimport { CategoriaFinanceiraForm } from '../../components/CategoriaFinanceiraForm';\n\nexport default createComponent({\n name: 'CategoriaFinanceiraFormPage',\n setup(props, ctx) {\n const { page, handleSubmit, isEdit } =\n useFormPage({\n ctx,\n async submitCallback(model) {\n if (page.id) {\n return CategoriaFinanceiraService.update(page.id, model);\n } else {\n return CategoriaFinanceiraService.create(model);\n }\n },\n });\n\n const { $nome, setNome } = useNome({ ctx });\n\n const $title = computed(() => {\n if ($nome.value) {\n return `Categoria financeira: ${$nome.value}`;\n }\n\n return isEdit\n ? 'Editar Categoria financeira'\n : 'Nova Categoria financeira';\n });\n\n async function handleDelete(id: string) {\n return CategoriaFinanceiraService.delete(id);\n }\n\n return () => (\n \n \n \n );\n },\n});\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { ConstantsHelper } from '@/lib/constants/helper';\nimport { LookupsConfigs } from '@/lib/form/lookups';\nimport { ConfiguracaoFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport {\n IConfiguracaoFinanceiraFormSchema,\n IConfiguracaoFinanceiraModel,\n} from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents {}\n\nexport const ConfiguracaoFinanceiraForm = createComponent({\n name: 'ConfiguracaoFinanceiraForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const { $form, $schema, emitSubmit } = useForm(props, ctx);\n\n return () => (\n \n \n \n \n\n \n \n \n \n );\n },\n});\nfunction useForm(props: IProps, ctx: SetupContext) {\n return useFormConfig<\n IConfiguracaoFinanceiraModel,\n IConfiguracaoFinanceiraFormSchema\n >({\n page: props.page,\n initialValue: {\n padroes: {\n contaFinanceiraId: null,\n centroCustoId: null,\n formaPagamento: null,\n },\n recebimentosAtendimento: {\n recebimentoLancamento: true,\n lancarAPartir: null,\n },\n },\n mapSchema: model => ({\n padroes: {\n contaFinanceiraId: {\n label: 'Conta',\n type: 'autocomplete',\n itemLabel: 'nome',\n lookup: LookupsConfigs.contaFinanceira(),\n validations: { required: true },\n },\n centroCustoId: {\n label: 'Centro de custo',\n type: 'autocomplete',\n itemLabel: 'nome',\n lookup: LookupsConfigs.centroCusto(),\n layout: { sm: 6 },\n },\n formaPagamento: {\n label: 'Forma de pagamento',\n type: 'select',\n items: ConstantsHelper.formasPagamento,\n validations: { required: true },\n layout: { sm: 6 },\n },\n },\n recebimentosAtendimento: {\n recebimentoLancamento: {\n label: 'Habilitar lançamento no financeiro',\n type: 'switch',\n layout: { maxWidth: 320 },\n },\n lancarAPartir: {\n label: 'Lançar a partir de',\n type: 'select',\n items: ConstantsHelper.configuracaoFinanceiraRecebimentoLancarAPartir,\n hidden: !model.recebimentosAtendimento.recebimentoLancamento,\n layout: { maxWidth: 200 },\n },\n },\n }),\n ctx,\n noId: true,\n async loadEditCallback({ setFormModel }) {\n const editValue = await ConfiguracaoFinanceiraService.get();\n\n if (editValue) {\n setFormModel({\n padroes: {\n contaFinanceiraId: editValue.contaFinanceira?.id,\n centroCustoId: editValue.centroCusto?.id,\n formaPagamento: editValue.formaPagamento,\n },\n recebimentosAtendimento: {\n recebimentoLancamento: editValue.recebimentoLancamento,\n lancarAPartir: editValue.recebimentoLancarAPartir,\n },\n });\n }\n },\n });\n}\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { ConfiguracaoFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { IConfiguracaoFinanceiraModel } from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../../components/ConfiguracaoClinicaPage';\nimport { ConfiguracaoFinanceiraForm } from '../components/ConfiguracaoFinanceiraForm';\n\nexport default createComponent({\n name: 'ConfiguracoesFinanceirasPage',\n setup(props, ctx) {\n const { page, handleSubmit } = useFormPage({\n ctx,\n submitCallback(model) {\n return ConfiguracaoFinanceiraService.update(model);\n },\n });\n\n return () => (\n \n \n \n );\n },\n});\n","import { InputSelect } from '@/components/form/inputs/InputSelect';\nimport { createComponent } from '@/lib/vue';\nimport { IDataTableHeader, IFormInputSelect } from '@/typings';\nimport { PropType } from 'vue';\n\ninterface IProps {\n value?: string;\n input: IFormInputSelect;\n header: IDataTableHeader;\n}\n\ninterface IEvents {\n onInput: (value: string | null) => void;\n}\n\nexport const TdSelect = createComponent({\n name: 'TdSelect',\n props: {\n value: String,\n input: { type: Object as PropType, required: true },\n header: { type: Object as PropType, required: true },\n },\n setup(props, ctx) {\n function emitInput(value: string | null) {\n ctx.emit('input', value);\n }\n\n return () => (\n \n \n \n );\n },\n});\n","import { Td } from '@/components/datatable/columns/Td';\nimport { TdSelect } from '@/components/datatable/columns/TdSelect';\nimport { TdSwitch } from '@/components/datatable/columns/TdSwitch';\nimport { ConstantsHelper } from '@/lib/constants/helper';\nimport { MyTheme } from '@/lib/helpers/MyTheme';\nimport { createComponent } from '@/lib/vue';\nimport { getUser } from '@/store/utils/auth';\nimport {\n IDataTableHeader,\n IEquipeProfissionaisItem,\n IFormInputSelect,\n IFormInputSwitch,\n UserEquipeTipoAcesso,\n} from '@/typings';\n\ninterface ITdProps {\n header: IDataTableHeader;\n item: IEquipeProfissionaisItem;\n}\n\nexport const EquipeProfissionaisTdMembro = createComponent({\n name: 'EquipeProfissionaisTdMembro',\n props: {\n header: { type: Object, required: true },\n item: { type: Object, required: true },\n },\n setup(props, ctx) {\n return () => (\n \n \n \n );\n },\n});\n\nexport const EquipeProfissionaisTdTipoAcesso = createComponent({\n name: 'EquipeProfissionaisTdTipoAcesso',\n props: {\n header: { type: Object, required: true },\n item: { type: Object, required: true },\n },\n setup(props, ctx) {\n return () => {\n const isAdminAccount =\n props.item.tipoAcesso === UserEquipeTipoAcesso.ADMIN_ACCOUNT;\n\n if (isAdminAccount) {\n return (\n \n \n {props.item.tipoAcessoLabel}\n \n \n );\n }\n return (\n \n );\n };\n },\n});\n\nfunction getSchema(item: IEquipeProfissionaisItem): {\n membro: IFormInputSwitch;\n tipoAcesso: IFormInputSelect;\n} {\n return {\n membro: {\n label: null,\n type: 'switch',\n disabled: isMyUser(item) || item.onlyClinica,\n },\n tipoAcesso: {\n label: null,\n type: 'select',\n items: ConstantsHelper.userEquipeTiposAcessos,\n noAttach: true,\n hideDetails: true,\n },\n };\n}\n\nfunction isMyUser(item: IEquipeProfissionaisItem) {\n return item.id === getUser().id;\n}\n\nfunction membroTooltip(item: IEquipeProfissionaisItem) {\n if (isMyUser(item)) {\n return 'Para deixar de ser membro dessa clínica acesse o cadastro do seu usuário';\n } else if (item.onlyClinica) {\n return 'Precisa ser membro de pelo menos uma clínica';\n }\n\n return null;\n}\n","import { DataTable } from '@/components/datatable/DataTable';\nimport { PageSection } from '@/components/page/PageSection';\nimport { FormHeader } from '@/components/typography/FormHeader';\nimport { QueryGraphql } from '@/graphql/query';\nimport { useAuthInfo } from '@/lib/composables/useAuthInfo';\nimport { useQueryConfig } from '@/lib/composables/useQueryConfig';\nimport {\n getEquipeTipoAcesso,\n getEquipeTipoAcessoLabel,\n getUserClinica,\n getUserEspecialidade,\n getUserHasOneClinica,\n} from '@/lib/helpers/models/users';\nimport { createComponent, watchRun } from '@/lib/vue';\nimport {\n IEquipeProfissionaisItem,\n IEquipeUserModel,\n IRequireField,\n IUsersQuery,\n IUsersQueryVariables,\n IDataTableHeader,\n UserTipo,\n} from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\nimport {\n EquipeProfissionaisTdMembro,\n EquipeProfissionaisTdTipoAcesso,\n} from './equipeProfissionais/equipeProfissionaisSlots';\n\ninterface IJsxProps {\n // model\n value?: IEquipeUserModel[];\n recepcionista?: boolean;\n}\n\ntype IProps = IRequireField;\n\ninterface IEvents {\n onInput: (model: IEquipeUserModel[]) => void;\n}\n\nexport const EquipeProfissionais = createComponent({\n name: 'EquipeProfissionais',\n props: {\n value: { type: Array, required: true },\n recepcionista: { type: Boolean, default: false },\n },\n setup(props: IProps, ctx) {\n const { headers, title } = useData(props);\n\n const { $items, $loading } = useEvents(props, ctx);\n\n return () => (\n \n \n\n \n \n );\n },\n});\n\nfunction useData(props: IProps) {\n const title = props.recepcionista\n ? 'Recepcionistas'\n : 'Profissionais de saúde';\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Membro',\n value: 'membro',\n slot: ({ header, item }) => (\n \n ),\n align: 'center',\n sortable: false,\n width: 80,\n },\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n {\n text: 'Especialidade',\n value: 'especialidade',\n mapValue: v => v.especialidade,\n // only profissional\n hide: props.recepcionista,\n },\n {\n text: 'Tipo de acesso',\n value: 'tipoAcesso',\n slot: ({ header, item }) => (\n \n ),\n sortable: false,\n width: 270,\n },\n ];\n\n return { title, headers };\n}\n\nfunction useEvents(props: IProps, ctx: SetupContext) {\n function emitInput(value: IEquipeUserModel[]) {\n ctx.emit('input', value);\n }\n\n const { $data: $items, $loading } = useEquipeQuery(props);\n\n watchRun(\n $items,\n items => {\n const value = (items || [])\n .filter(f => f.membro)\n .map(({ id, tipoAcesso }) => ({\n userId: id,\n tipoAcesso,\n }));\n\n emitInput(value);\n },\n { deep: true },\n );\n\n return { $items, $loading };\n}\n\nfunction useEquipeQuery({ recepcionista }: { recepcionista?: boolean }) {\n const { $clinica } = useAuthInfo();\n\n return useQueryConfig<\n IUsersQuery,\n IEquipeProfissionaisItem[],\n IUsersQueryVariables\n >({\n query: QueryGraphql.UsersQuery,\n variables: () => ({\n where: {\n tipo: recepcionista\n ? UserTipo.RECEPCIONISTA\n : UserTipo.PROFISSIONAL_SAUDE,\n },\n }),\n mapData(result) {\n const clinicaId = $clinica.value!.id;\n\n return (\n result?.users.nodes.map(v => {\n return {\n id: v.id,\n membro: !!getUserClinica(v, clinicaId),\n nome: v.nome,\n especialidade: getUserEspecialidade(v),\n tipoAcesso: getEquipeTipoAcesso(v, clinicaId),\n tipoAcessoLabel: getEquipeTipoAcessoLabel(v, clinicaId),\n onlyClinica: getUserHasOneClinica(v, clinicaId),\n };\n }) || []\n );\n },\n });\n}\n","import { MyForm } from '@/components/form/MyForm';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { createComponent } from '@/lib/vue';\nimport { IEquipeFormModel } from '@/typings';\nimport { EquipeProfissionais } from './EquipeProfissionais';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents {}\n\nexport const EquipeForm = createComponent({\n name: 'EquipeForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const { $form, emitSubmit } = useFormConfig({\n page: props.page,\n initialValue: {\n profissionais: [],\n recepcionistas: [],\n },\n mapSchema: () => ({}),\n ctx,\n });\n\n return () => (\n \n \n\n \n \n );\n },\n});\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { UserService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { IEquipeFormModel } from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../components/ConfiguracaoClinicaPage';\nimport { EquipeForm } from '../components/equipe/EquipeForm';\n\nexport default createComponent({\n name: 'EquipePage',\n setup(props, ctx) {\n const { page, handleSubmit } = useFormPage({\n ctx,\n async submitCallback(model) {\n return UserService.updateEquipe(model);\n },\n });\n\n return () => (\n \n \n \n );\n },\n});\n","import { IndexDataTable } from '@/components/datatable/IndexDataTable';\nimport { QueryGraphql } from '@/graphql/query';\nimport { useQueryConfig } from '@/lib/composables/useQueryConfig';\nimport { ConvenioService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport {\n IConvenioItem,\n IConveniosQuery,\n IConveniosQueryVariables,\n IIndexDataTableActions,\n IIndexDataTableButton,\n IDataTableHeader,\n} from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'ConveniosPage',\n setup(props, ctx) {\n const btn: IIndexDataTableButton = {\n text: 'Novo Convênio',\n to: Routes.app.configClinica.convenios.new,\n };\n\n const actions: IIndexDataTableActions = {\n editRoute: Routes.app.configClinica.convenios.edit,\n removeMany: ConvenioService.deleteMany,\n };\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n ];\n\n const { $data, $loading } = useConveniosQuery();\n\n return () => (\n \n \n \n );\n },\n});\n\nfunction useConveniosQuery() {\n return useQueryConfig<\n IConveniosQuery,\n IConvenioItem[],\n IConveniosQueryVariables\n >({\n query: QueryGraphql.ConveniosQuery,\n variables: () => ({\n where: { particular: false },\n }),\n mapData: result =>\n result?.convenios.nodes.map(v => ({\n id: v.id,\n nome: v.nome,\n particular: v.particular,\n })) || [],\n });\n}\n","import { MyPage } from '@/components/page/MyPage';\nimport { useState } from '@/lib/composables';\nimport { createComponent } from '@/lib/vue';\nimport { userHasClinicas } from '@/store/utils/auth';\nimport { computed } from '@vue/composition-api';\n\nexport const ConfiguracaoClinicaPage = createComponent({\n name: 'ConfiguracaoClinicaPage',\n props: {\n title: { type: String, required: true },\n form: { type: Boolean, default: false },\n },\n setup(props, ctx) {\n const $clinica = useState(s => s.auth.clinica?.nome);\n\n const $showCard = computed(() => userHasClinicas());\n\n return () => {\n const defaultSlot = ctx.slots.default?.();\n\n return (\n
\n {$showCard.value && (\n \n
\n \n Você está alterando as configurações da clínica:\n \n\n \n {$clinica.value}\n \n
\n
\n )}\n\n \n {defaultSlot}\n \n
\n );\n };\n },\n});\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport { useValue } from '@/lib/composables';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { INomeEvents, useNome } from '@/lib/composables/utils/useNome';\nimport { ConstantsHelper } from '@/lib/constants/helper';\nimport {\n ConfiguracaoFinanceiraService,\n ContaFinanceiraService,\n} from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport { redirectError } from '@/routes/utils';\nimport {\n ContaFinanceiraTipo,\n IContaFinanceiraModel,\n IFormPage,\n IFormSchema,\n} from '@/typings';\nimport { computed, SetupContext } from '@vue/composition-api';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents, INomeEvents {}\n\nexport const ContaFinanceiraForm = createComponent({\n name: 'ContaFinanceiraForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const indexRoute =\n Routes.app.configClinica.financas.contasFinanceiras.index;\n\n const { $form, $schema, emitSubmit, emitDelete } = useForm(props, ctx);\n\n useNome({\n ctx,\n watchNome: () => $form.value.model.nome,\n });\n\n const { $noDelete } = useComputeds(props.page);\n\n return () => (\n \n \n \n \n \n );\n },\n});\n\nfunction useForm(props: IProps, ctx: SetupContext) {\n return useFormConfig<\n IContaFinanceiraModel,\n IFormSchema\n >({\n page: props.page,\n initialValue: {\n nome: null,\n saldoInicial: null,\n dataSaldoInicial: null,\n banco: null,\n tipo: null,\n },\n ctx,\n mapSchema: model => {\n const isCaixaInterno = model.tipo === ContaFinanceiraTipo.CAIXA_INTERNO;\n\n return {\n nome: {\n label: 'Nome',\n type: 'text',\n validations: {\n required: true,\n },\n },\n saldoInicial: {\n label: 'Saldo inicial',\n type: 'money',\n layout: {\n maxWidth: 260,\n },\n validations: {\n required: true,\n },\n },\n dataSaldoInicial: {\n label: 'Data do saldo',\n type: 'date',\n layout: { maxWidth: 254 },\n validations: { required: true },\n },\n tipo: {\n label: 'Tipo da conta',\n type: 'select',\n items: ConstantsHelper.contaFinanceiraTipos,\n validations: {\n required: true,\n },\n },\n banco: {\n label: 'Banco',\n type: 'autocomplete',\n items: ConstantsHelper.bancos,\n hidden: !model.tipo || isCaixaInterno,\n layout: {\n sm: 6,\n },\n validations: {\n required: [\n ContaFinanceiraTipo.CONTA_CORRENTE,\n ContaFinanceiraTipo.CONTA_POUPANCA,\n ContaFinanceiraTipo.INVESTIMENTO,\n ].includes(model.tipo!),\n },\n },\n };\n },\n async loadEditCallback({ id, setFormModel }) {\n const editValue = await ContaFinanceiraService.getById(id);\n\n if (!editValue) return redirectError(404);\n\n setFormModel({\n nome: editValue.nome,\n saldoInicial: editValue.saldoInicial,\n dataSaldoInicial: editValue.dataSaldoInicial,\n banco: editValue.banco,\n tipo: editValue.tipo,\n });\n },\n });\n}\n\nfunction useComputeds(page: IFormPage) {\n const [$contaPadraoId, setContaPadraoId] = useValue(null);\n\n async function loadConfiguracao() {\n const configuracao = await ConfiguracaoFinanceiraService.get();\n if (configuracao) {\n setContaPadraoId(configuracao.contaFinanceira.id);\n }\n }\n\n const $noDelete = computed(\n () => !$contaPadraoId.value || page.id === $contaPadraoId.value,\n );\n\n loadConfiguracao();\n\n return {\n $contaPadraoId,\n $noDelete,\n };\n}\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { useNome } from '@/lib/composables/utils/useNome';\nimport { ContaFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { IContaFinanceiraModel } from '@/typings';\nimport { computed } from '@vue/composition-api';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\nimport { ContaFinanceiraForm } from '../../components/ContaFinanceiraForm';\n\nexport default createComponent({\n name: 'ContaFinanceiraFormPage',\n setup(props, ctx) {\n const { page, handleSubmit, isEdit } = useFormPage({\n ctx,\n async submitCallback(model) {\n if (page.id) {\n return ContaFinanceiraService.update(page.id, model);\n } else {\n return ContaFinanceiraService.create(model);\n }\n },\n });\n\n const { $nome, setNome } = useNome({ ctx });\n\n const $title = computed(() => {\n if ($nome.value) {\n return `Conta financeira: ${$nome.value}`;\n }\n\n return isEdit ? 'Editar Conta financeira' : 'Nova Conta financeira';\n });\n\n async function handleDelete(id: string) {\n return ContaFinanceiraService.delete(id);\n }\n\n return () => (\n \n \n \n );\n },\n});\n","import { ContextSidebar } from '@/components/sidebars/context/ContextSidebar';\nimport { ContextSidebarMenu } from '@/components/sidebars/context/ContextSidebarMenu';\nimport { MyIcons } from '@/lib/helpers/MyIcons';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport { IMenu } from '@/typings';\n\nexport default createComponent({\n name: 'ConfiguracaoClinicaSidebar',\n setup(props, ctx) {\n const menus: IMenu[] = [\n {\n text: 'Configurações da clínica',\n header: true,\n },\n {\n text: 'Perfil da clínica',\n icon: MyIcons.clinica,\n to: Routes.app.configClinica.perfilClinica,\n },\n {\n text: 'Convênios',\n icon: MyIcons.convenio,\n to: Routes.app.configClinica.convenios.index,\n },\n {\n text: 'Finanças',\n subheader: true,\n },\n {\n text: 'Categorias financeiras',\n icon: MyIcons.categoriaFinanceira,\n to: Routes.app.configClinica.financas.categoriasFinanceiras.index,\n },\n {\n text: 'Centro de custo',\n icon: MyIcons.centroCusto,\n to: Routes.app.configClinica.financas.centrosCusto.index,\n },\n {\n text: 'Configurações financeiras',\n icon: MyIcons.configuracaoFinanceira,\n to: Routes.app.configClinica.financas.configuracoesFinanceiras,\n },\n {\n text: 'Contas financeiras',\n icon: MyIcons.contaFinanceira,\n to: Routes.app.configClinica.financas.contasFinanceiras.index,\n },\n {\n text: 'Geral',\n subheader: true,\n },\n {\n text: 'Equipe',\n icon: MyIcons.users,\n to: Routes.app.configClinica.equipe,\n },\n {\n text: 'Regras de repasse',\n icon: MyIcons.regrasRepasse,\n to: Routes.app.configClinica.regrasRepasse,\n },\n {\n text: 'Exportar dados',\n icon: MyIcons.exportar,\n to: Routes.app.configClinica.exportarDados,\n },\n ];\n\n return () => (\n \n \n \n );\n },\n});\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport {\n IDialogFormProps,\n IFormEvents,\n useDialogFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { createComponent } from '@/lib/vue';\nimport { IConvenioPlanoModel, IFormSchema } from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\n\ninterface IProps extends IDialogFormProps {}\n\ninterface IEvents extends IFormEvents {}\n\nexport const ConvenioPlanoForm = createComponent({\n name: 'ConvenioPlanoForm',\n props: {\n page: { type: Object, required: true },\n initialValue: { type: Object },\n },\n setup(props, ctx) {\n const { $form, $schema, emitSubmit, emitCancel } = useForm(props, ctx);\n\n return () => (\n \n \n \n \n \n );\n },\n});\nfunction useForm(props: IProps, ctx: SetupContext) {\n const defaultValue: IConvenioPlanoModel = { nome: null };\n\n return useDialogFormConfig<\n IConvenioPlanoModel,\n IFormSchema\n >({\n page: props.page,\n ctx,\n initialValue: props.initialValue || defaultValue,\n mapSchema: () => ({\n nome: {\n label: 'Nome',\n type: 'text',\n autofocus: true,\n validations: {\n required: true,\n },\n },\n }),\n });\n}\n","import { IndexDataTable } from '@/components/datatable/IndexDataTable';\nimport { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { getEditValue } from '@/lib/form';\nimport { DialogHelpers } from '@/lib/helpers/dialogs/dialog.helpers';\nimport { uuid } from '@/lib/helpers/uuid';\nimport { createComponent } from '@/lib/vue';\nimport {\n IConvenioPlanoModel,\n IFormPage,\n IIndexDataTableActions,\n IIndexDataTableButton,\n IRequireField,\n IDataTableHeader,\n} from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\nimport { ConvenioPlanoForm } from './ConvenioPlanoForm';\n\ninterface IJsxProps {\n // model\n value?: IConvenioPlanoModel[];\n}\n\ntype IProps = IRequireField;\n\nexport const ConvenioPlanos = createComponent({\n name: 'ConvenioPlanos',\n props: {\n value: { type: Array, required: true },\n },\n setup(props: IProps, ctx) {\n function emitInput(value: IConvenioPlanoModel[]) {\n ctx.emit('input', value);\n }\n\n const { handleSubmit, headers, page } = useData({ props, ctx, emitInput });\n\n const { btn, actions } = useActions({\n props,\n page,\n emitInput,\n handleSubmit,\n });\n\n return () => (\n \n );\n },\n});\n\nfunction useData({\n props,\n ctx,\n emitInput,\n}: {\n props: IProps;\n ctx: SetupContext;\n emitInput: (value: IConvenioPlanoModel[]) => void;\n}) {\n const { page, handleSubmit } = useFormPage({\n ctx,\n async submitCallback(dialogModel) {\n if (!dialogModel.id) {\n dialogModel.id = uuid();\n dialogModel.new = true;\n\n emitInput([...props.value, dialogModel]);\n } else {\n emitInput([\n ...props.value.filter(v => v.id !== dialogModel.id),\n dialogModel,\n ]);\n }\n },\n });\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n ];\n\n return { page, handleSubmit, headers };\n}\n\nfunction useActions({\n props,\n page,\n emitInput,\n handleSubmit,\n}: {\n props: IProps;\n page: IFormPage;\n emitInput: (value: IConvenioPlanoModel[]) => void;\n handleSubmit: (model: IConvenioPlanoModel) => Promise;\n}) {\n function handleEdit(id?: string | null) {\n const initialValue = getEditValue(id, props.value);\n\n if (!initialValue) return handleNew();\n\n return showDialog({\n title: 'Editar plano',\n initialValue,\n });\n }\n\n function handleRemove(id: string) {\n emitInput(props.value.filter(f => f.id !== id));\n }\n\n function handleNew() {\n return showDialog({\n title: 'Novo plano',\n initialValue: null,\n });\n }\n\n function showDialog({\n title,\n initialValue,\n }: {\n title: string;\n initialValue: IConvenioPlanoModel | null;\n }) {\n return DialogHelpers.system.form({\n title,\n form: ConvenioPlanoForm,\n page,\n initialValue,\n onSubmit: handleSubmit,\n });\n }\n\n const actions: IIndexDataTableActions = {\n edit: handleEdit,\n remove: handleRemove,\n };\n\n const btn: IIndexDataTableButton = {\n text: 'Novo Plano',\n outlined: true,\n onClick: handleNew,\n };\n\n return { actions, btn };\n}\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport { FormHeader } from '@/components/typography/FormHeader';\nimport {\n IDialogFormProps,\n IFormEvents,\n useDialogFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { LookupsConfigs } from '@/lib/form/lookups';\nimport { createComponent } from '@/lib/vue';\nimport {\n IConvenioPlanoModel,\n IConvenioProfissionalModel,\n IFormSchema,\n IProfissional,\n} from '@/typings';\nimport { computed, SetupContext } from '@vue/composition-api';\nimport { ConvenioProfissionalPlanos } from './ConvenioProfissionalPlanos';\n\ninterface IProps extends IDialogFormProps {\n planos: IConvenioPlanoModel[];\n profissionaisIds: string[];\n}\n\ninterface IEvents extends IFormEvents {}\n\nexport const ConvenioProfissionalForm = createComponent({\n name: 'ConvenioProfissionalForm',\n props: {\n page: { type: Object, required: true },\n initialValue: { type: Object },\n planos: { type: Array, required: true },\n profissionaisIds: { type: Array, required: true },\n },\n setup(props, ctx) {\n const { $form, $schema, emitSubmit, emitCancel } = useProfissionalForm(\n props,\n ctx,\n );\n\n return () => (\n \n \n \n\n \n \n\n \n \n );\n },\n});\n\nfunction useProfissionalForm(props: IProps, ctx: SetupContext) {\n const defaultValue: IConvenioProfissionalModel = {\n profissionalId: null,\n nome: null,\n codigoOperadora: null,\n planos: [],\n };\n\n return useDialogFormConfig<\n IConvenioProfissionalModel,\n IFormSchema\n >({\n page: props.page,\n ctx,\n initialValue: props.initialValue || defaultValue,\n mapSchema: (model, $form) => {\n const $profissional = computed(() => {\n if (model.profissionalId) {\n return {\n id: model.profissionalId,\n nome: model.nome!,\n };\n }\n return null;\n });\n return {\n profissionalId: {\n label: 'Profissional',\n type: 'autocomplete',\n itemLabel: 'nome',\n editValue: $profissional.value,\n lookup: LookupsConfigs.user.profissionais({\n onModelChange(value) {\n $form.value.model.nome = value ? value.nome : null;\n },\n mapData(data) {\n return data.users.nodes.filter(\n f => !props.profissionaisIds.includes(f.id),\n );\n },\n }),\n validations: {\n required: true,\n },\n },\n codigoOperadora: {\n label: 'Código na operadora',\n type: 'text',\n validations: {\n required: true,\n },\n },\n };\n },\n });\n}\n","import { IndexDataTable } from '@/components/datatable/IndexDataTable';\nimport { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { getEditValue } from '@/lib/form';\nimport { DialogHelpers } from '@/lib/helpers/dialogs/dialog.helpers';\nimport { uuid } from '@/lib/helpers/uuid';\nimport { createComponent } from '@/lib/vue';\nimport {\n IConvenioPlanoModel,\n IConvenioProfissionalModel,\n IFormPage,\n IIndexDataTableActions,\n IIndexDataTableButton,\n IRequireField,\n IDataTableHeader,\n} from '@/typings';\nimport { computed, ComputedRef } from '@vue/composition-api';\nimport { ConvenioProfissionalForm } from './ConvenioProfissionalForm';\n\ninterface IJsxProps {\n // model\n value?: IConvenioProfissionalModel[];\n planos: IConvenioPlanoModel[];\n}\n\ntype IProps = IRequireField;\n\ninterface IEvents {\n onInput: (items: IConvenioProfissionalModel[]) => void;\n}\n\nexport const ConvenioProfissionais = createComponent({\n name: 'ConvenioProfissionais',\n props: {\n value: { type: Array, required: true },\n planos: { type: Array, required: true },\n },\n setup(props: IProps, ctx) {\n function emitInput(items: IConvenioProfissionalModel[]) {\n ctx.emit('input', items);\n }\n const $profissionaisIds = computed(() =>\n props.value.filter(f => f.profissionalId).map(v => v.profissionalId!),\n );\n\n const headers: IDataTableHeader[] = [\n {\n text: 'Nome',\n value: 'nome',\n mapValue: v => v.nome,\n },\n ];\n\n const { page, handleSubmit } = useFormPage({\n ctx,\n async submitCallback(dialogModel: IConvenioProfissionalModel) {\n if (!dialogModel.id) {\n dialogModel.id = uuid();\n dialogModel.new = true;\n\n emitInput([...props.value, dialogModel]);\n } else {\n emitInput([\n ...props.value.filter(v => v.id !== dialogModel.id),\n dialogModel,\n ]);\n }\n },\n });\n\n const { btn, actions } = useActions({\n props,\n $profissionaisIds,\n page,\n handleSubmit,\n emitInput,\n });\n\n return () => (\n \n );\n },\n});\n\nfunction useActions({\n props,\n $profissionaisIds,\n page,\n handleSubmit,\n emitInput,\n}: {\n props: IProps;\n $profissionaisIds: ComputedRef;\n page: IFormPage;\n handleSubmit: (model: IConvenioProfissionalModel) => Promise;\n emitInput: (items: IConvenioProfissionalModel[]) => void;\n}) {\n function handleNew() {\n return showDialog({\n title: 'Novo profissional',\n initialValue: null,\n });\n }\n\n function handleEdit(id?: string | null) {\n const initialValue = getEditValue(id, props.value);\n\n if (!initialValue) return handleNew();\n\n return showDialog({\n title: 'Editar profissional',\n initialValue,\n });\n }\n\n function showDialog({\n title,\n initialValue,\n }: {\n title: string;\n initialValue: IConvenioProfissionalModel | null;\n }) {\n return DialogHelpers.system.form({\n title,\n form: ConvenioProfissionalForm,\n page,\n initialValue,\n onSubmit: handleSubmit,\n planos: props.planos,\n profissionaisIds: $profissionaisIds.value,\n });\n }\n\n function handleRemove(id: string) {\n emitInput(props.value.filter(f => f.id !== id));\n }\n\n const actions: IIndexDataTableActions = {\n edit: handleEdit,\n remove: handleRemove,\n };\n\n const btn: IIndexDataTableButton = {\n text: 'Novo profissional',\n outlined: true,\n onClick: handleNew,\n };\n\n return { actions, btn };\n}\n","import { FormFields } from '@/components/form/fields/FormFields';\nimport { MyForm } from '@/components/form/MyForm';\nimport { PageSection } from '@/components/page/PageSection';\nimport { Tabs } from '@/components/utils/Tabs';\nimport { useValue } from '@/lib/composables';\nimport {\n IFormEvents,\n IFormProps,\n useFormConfig,\n} from '@/lib/composables/form/useFormConfig';\nimport { INomeEvents, useNome } from '@/lib/composables/utils/useNome';\nimport { LookupsConfigs } from '@/lib/form/lookups';\nimport { MyIcons } from '@/lib/helpers/MyIcons';\nimport { ConvenioService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport { redirectError } from '@/routes/utils';\nimport {\n IConvenioFormModel,\n IConvenioLookupFragment,\n IConvenioModel,\n IConvenioPlanoModel,\n IConvenioProfissionalModel,\n IFormSchema,\n ITab,\n} from '@/typings';\nimport { SetupContext } from '@vue/composition-api';\nimport flatten from 'lodash/flatten';\nimport isString from 'lodash/isString';\nimport { ConvenioPlanos } from './ConvenioPlanos';\nimport { ConvenioProfissionais } from './ConvenioProfissionais';\n\ninterface IProps extends IFormProps {}\n\ninterface IEvents extends IFormEvents, INomeEvents {}\n\nexport const ConvenioForm = createComponent({\n name: 'ConvenioForm',\n props: {\n page: { type: Object, required: true },\n },\n setup(props, ctx) {\n const { $activeTab, indexRoute, tabs } = useData();\n\n const { $form, $schema, emitSubmit, emitDelete } = useForm(props, ctx);\n\n useNome({\n ctx,\n watchNome: () => $form.value.model.convenio.nome,\n });\n\n return () => (\n \n \n \n \n\n \n \n \n\n \n \n \n \n );\n },\n});\n\nfunction useData() {\n const indexRoute = Routes.app.configClinica.convenios.index;\n\n const [$activeTab] = useValue(0);\n\n const tabs: ITab[] = [\n {\n id: 'planos',\n text: 'planos',\n icon: MyIcons.convenioPlanos,\n },\n {\n id: 'profissionais',\n text: 'profissionais',\n icon: MyIcons.users,\n },\n ];\n\n return { indexRoute, $activeTab, tabs };\n}\n\nfunction useForm(props: IProps, ctx: SetupContext) {\n return useFormConfig>({\n page: props.page,\n initialValue: {\n convenio: {\n convenio: null,\n nome: null,\n registroAns: null,\n periodoCarenciaDias: null,\n },\n planos: [],\n profissionais: [],\n },\n mapSchema: (model, $form) => ({\n convenio: {\n label: 'Nome',\n type: 'combobox',\n itemLabel: 'nomeFantasia',\n lookup: LookupsConfigs.convenioLookups({\n onModelChange(value: string | IConvenioLookupFragment | null) {\n if (!value || isString(value)) {\n $form.value.model.convenio.nome = value;\n return;\n }\n\n $form.value.model.convenio.nome = value.nomeFantasia;\n $form.value.model.convenio.registroAns = value.registroAns;\n $form.value.model.convenio.periodoCarenciaDias =\n $form.value.model.convenio.periodoCarenciaDias || 30;\n },\n }),\n validations: {\n required: true,\n },\n },\n registroAns: {\n label: 'Registro ANS',\n type: 'text',\n mask: 'numbers6',\n validations: { required: true },\n layout: { maxWidth: 200 },\n },\n periodoCarenciaDias: {\n label: 'Período de carência',\n type: 'number',\n suffix: 'dias',\n integer: true,\n validations: {\n required: true,\n },\n layout: {\n maxWidth: 240,\n },\n },\n }),\n ctx,\n async loadEditCallback({ id, setFormModel }) {\n const editValue = await ConvenioService.getById(id);\n\n if (!editValue) return redirectError(404);\n\n const planos: IConvenioPlanoModel[] = (editValue.planos || []).map(v => ({\n id: v.id,\n nome: v.nome,\n }));\n\n const profissionais: IConvenioProfissionalModel[] = (\n editValue.profissionais || []\n ).map(v => ({\n id: v.id,\n profissionalId: v.profissional.id,\n nome: v.profissional.nome,\n codigoOperadora: v.codigoOperadora,\n planos: flatten(\n (editValue.planos || []).map(plano =>\n (plano.profissionais || [])\n .filter(f => f.profissional.id === v.profissional.id)\n .map(p => ({\n planoId: plano.id,\n periodoCarenciaDias: p.periodoCarenciaDias,\n })),\n ),\n ),\n }));\n\n setFormModel({\n convenio: {\n convenio: {\n nomeFantasia: editValue.nome,\n registroAns: editValue.registroAns,\n },\n nome: editValue.nome,\n registroAns: editValue.registroAns,\n periodoCarenciaDias: editValue.periodoCarenciaDias,\n },\n planos,\n profissionais,\n });\n },\n mapValueToValidate: value => value.convenio,\n });\n}\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { useNome } from '@/lib/composables/utils/useNome';\nimport { ConvenioService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { IConvenioFormModel } from '@/typings';\nimport { computed } from '@vue/composition-api';\nimport { ConfiguracaoClinicaPage } from '../../components/ConfiguracaoClinicaPage';\nimport { ConvenioForm } from '../../components/convenio/ConvenioForm';\n\nexport default createComponent({\n name: 'ConvenioFormPage',\n setup(props, ctx) {\n const { $nome, setNome } = useNome({ ctx });\n\n const { page, handleSubmit, isEdit } = useFormPage({\n ctx,\n async submitCallback(model) {\n if (page.id) {\n return ConvenioService.update(page.id, model);\n } else {\n return ConvenioService.create(model);\n }\n },\n });\n\n const $title = computed(() => {\n if ($nome.value) {\n return `Convênio: ${$nome.value}`;\n }\n\n return isEdit ? 'Editar Convênio' : 'Novo Convênio';\n });\n\n async function handleDelete(id: string) {\n return ConvenioService.delete(id);\n }\n\n return () => (\n \n \n \n );\n },\n});\n","import { useFormPage } from '@/lib/composables/form/useFormPage';\nimport { useAuthInfo } from '@/lib/composables/useAuthInfo';\nimport { useNome } from '@/lib/composables/utils/useNome';\nimport { ClinicaService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { IClinicaFormModel } from '@/typings';\nimport { computed } from '@vue/composition-api';\nimport { ClinicaForm } from '../../account/components/forms/ClinicaForm';\nimport { ConfiguracaoClinicaPage } from '../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'ClinicaPerfilPage',\n setup(props, ctx) {\n const { $clinica } = useAuthInfo();\n\n const { page, handleSubmit } = useFormPage({\n ctx,\n id: $clinica.value?.id,\n submitCallback(model) {\n return ClinicaService.perfilUpdate(model);\n },\n });\n\n const { $nome, setNome } = useNome({ ctx });\n\n const $title = computed(() =>\n $nome.value ? `Clínica: ${$nome.value}` : 'Perfil da clínica',\n );\n\n return () => (\n \n \n \n );\n },\n});\n","import { createComponent } from '@/lib/vue';\nimport { ConfiguracaoClinicaPage } from '../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'ExportarDadosPage',\n setup(props, ctx) {\n return () => ;\n },\n});\n","import { useValue } from '@/lib/composables';\nimport { MyIcons } from '@/lib/helpers/MyIcons';\nimport { createComponent, watchRun } from '@/lib/vue';\nimport { IMenuSelected, ISelectedMenusActions, ITreeviewItem } from '@/typings';\nimport { computed, ComputedRef } from '@vue/composition-api';\nimport { RawLocation } from 'vue-router';\nimport { BtnSelectedRows } from '../buttons/BtnSelectedRows';\nimport { SearchRow } from '../datatable/SearchRow';\nimport { CircularLoading } from '../loading/CircularLoading';\n\ninterface IProps {\n items: ITreeviewItem[];\n loading?: boolean;\n editToFn?: (id: string) => string;\n newChildToFn?: (id: string) => string | RawLocation;\n newChildToTooltip?: string | null;\n actions?: ISelectedMenusActions | null;\n}\n\nexport const Treeview = createComponent({\n name: 'Treeview',\n props: {\n items: { type: Array, required: true },\n loading: { type: Boolean, default: false },\n editToFn: { type: Function },\n newChildToFn: { type: Function },\n newChildToTooltip: { type: String },\n actions: { type: Object },\n },\n setup(props, ctx) {\n const { $search, $items, $open } = useData(props);\n\n const { $selected, $selectedMenus } = useSelected({ props, $items });\n\n return () => (\n
\n \n
\n \n \n \n\n \n
\n
\n
\n );\n },\n});\n\nexport default Treeview;\n\nfunction useData(props: IProps) {\n const [$search] = useValue('');\n\n const $open = computed(() => props.items.map(v => v.id));\n\n const $items = computed(() =>\n props.items.map(v => {\n if (v.children) {\n v.children.sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n } else if (a.name > b.name) {\n return 1;\n }\n\n return 0;\n });\n }\n\n return v;\n }),\n );\n\n return { $search, $open, $items };\n}\n\nfunction useSelected({\n props,\n $items,\n}: {\n props: IProps;\n $items: ComputedRef;\n}) {\n const [$selected, setSelected] = useValue([]);\n\n watchRun($items, () => setSelected([]));\n\n const $selectedMenus = computed(() => {\n let menus: IMenuSelected[] = [];\n\n const selecionado =\n $selected.value.length > 1 ? 'selecionados' : 'selecionado';\n\n if (props.actions) {\n if (props.actions.removeMany) {\n menus.push({\n text: `Excluir ${selecionado}`,\n icon: MyIcons.remove,\n action: props.actions.removeMany,\n });\n }\n\n if (props.actions.selectedMenus) {\n menus = [...menus, ...props.actions.selectedMenus];\n }\n }\n\n return menus;\n });\n\n return { $selected, $selectedMenus };\n}\n\nconst actionsRow =\n (props: IProps) =>\n ({ item }: { item: ITreeviewItem }) =>\n (\n
\n \n\n {props.newChildToFn && item.children && (\n \n {MyIcons.fileTree}\n \n )}\n\n {props.editToFn && (\n \n {MyIcons.edit}\n \n )}\n
\n );\n","import { PageSection } from '@/components/page/PageSection';\nimport { Treeview } from '@/components/treeview/Treeview';\nimport { Tabs } from '@/components/utils/Tabs';\nimport { QueryGraphql } from '@/graphql/query';\nimport { useValue } from '@/lib/composables';\nimport { IQueryConfig, useQueryConfig } from '@/lib/composables/useQueryConfig';\nimport { MyIcons } from '@/lib/helpers/MyIcons';\nimport { CategoriaFinanceiraService } from '@/lib/services';\nimport { createComponent } from '@/lib/vue';\nimport { Routes } from '@/routes/routes';\nimport {\n CategoriaFinanceiraOrderBy,\n ICategoriasFinanceirasQuery,\n ICategoriasFinanceirasQueryVariables,\n ISelectedMenusActions,\n ITab,\n ITreeviewItem,\n TransacaoTipo,\n} from '@/typings';\nimport { ConfiguracaoClinicaPage } from '../../../components/ConfiguracaoClinicaPage';\n\nexport default createComponent({\n name: 'CategoriasFinanceirasPage',\n setup(props, ctx) {\n const { DespesasTab } = useDespesasTab();\n const { ReceitasTab } = useReceitasTab();\n\n const [$activeTab] = useValue(0);\n\n const tabs: ITab[] = [\n {\n id: 'despesas',\n text: 'despesas',\n icon: MyIcons.despesa,\n },\n {\n id: 'receitas',\n text: 'receitas',\n icon: MyIcons.receita,\n },\n ];\n\n return () => (\n \n \n \n\n \n \n\n \n \n \n \n );\n },\n});\n\nconst editRouteFn =\n Routes.app.configClinica.financas.categoriasFinanceiras.edit;\n\nconst actions: ISelectedMenusActions = {\n removeMany: CategoriaFinanceiraService.deleteMany,\n};\n\nfunction useDespesasTab() {\n const newChildRouteFn = (parentId: string) =>\n Routes.app.configClinica.financas.categoriasFinanceiras.newChild(\n TransacaoTipo.DESPESA,\n parentId,\n );\n\n const { $data, $loading } = useQueryConfig(\n getQueryConfig(TransacaoTipo.DESPESA),\n );\n\n const DespesasTab = () => (\n \n );\n\n return { DespesasTab };\n}\n\nfunction useReceitasTab() {\n const newChildRouteFn = (parentId: string) =>\n Routes.app.configClinica.financas.categoriasFinanceiras.newChild(\n TransacaoTipo.RECEITA,\n parentId,\n );\n\n const { $data, $loading } = useQueryConfig(\n getQueryConfig(TransacaoTipo.RECEITA),\n );\n\n const ReceitasTab = () => (\n \n );\n\n return { ReceitasTab };\n}\n\nfunction getQueryConfig(\n tipo: TransacaoTipo,\n): IQueryConfig<\n ICategoriasFinanceirasQuery,\n ITreeviewItem[],\n ICategoriasFinanceirasQueryVariables\n> {\n return {\n query: QueryGraphql.CategoriasFinanceirasQuery,\n variables: () => ({\n where: {\n parentId: null,\n tipo,\n },\n orderBy: [CategoriaFinanceiraOrderBy.nome_ASC],\n }),\n mapData: result =>\n result?.categoriasFinanceiras.nodes.map(v => ({\n id: v.id,\n name: v.nome,\n children: (v.children || []).map(c => ({\n id: c.id,\n name: c.nome,\n })),\n })) || [],\n };\n}\n\nconst newRoute = Routes.app.configClinica.financas.categoriasFinanceiras.new;\n\nconst ActionsRow = () => (\n
\n \n\n \n {MyIcons.new}\n Nova Categoria\n \n
\n);\n"],"sourceRoot":""}