| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <template>
- <q-dialog ref="dialogRef" @hide="onDialogHide">
- <q-card
- class="q-dialog-plugin overflow-hidden"
- style="width: 600px; max-width: 90vw"
- >
- <DefaultDialogHeader :title="title" @close="onDialogCancel" />
- <DefaultForm ref="formRef" @submit="onOKClick">
- <q-scroll-area class="form-dialog-scroll-area">
- <q-card-section class="row q-col-gutter-sm q-pt-none">
- <DefaultInput
- v-model="form.name"
- v-model:error="validationErrors.name"
- :error-message="validationErrors.name"
- :rules="[inputRules.required]"
- label="Nome da conta"
- placeholder="Ex. Conta Principal"
- class="col-12"
- />
- <DefaultInput
- v-model="form.bank_name"
- v-model:error="validationErrors.bank_name"
- :error-message="validationErrors.bank_name"
- :rules="[inputRules.required]"
- label="Banco"
- placeholder="Ex. Banco do Brasil"
- class="col-12 col-md-6"
- />
- <DefaultSelect
- v-model="form.bank_type_account"
- v-model:error="validationErrors.bank_type_account"
- :error-message="validationErrors.bank_type_account"
- :options="accountTypeOptions"
- emit-value
- map-options
- label="Tipo de conta"
- placeholder="Selecione"
- class="col-12 col-md-6"
- />
- <DefaultInput
- v-model="form.bank_agency"
- v-model:error="validationErrors.bank_agency"
- :error-message="validationErrors.bank_agency"
- label="Agência"
- placeholder="Ex. 1234"
- class="col-12 col-md-6"
- />
- <DefaultInput
- v-model="form.bank_account"
- v-model:error="validationErrors.bank_account"
- :error-message="validationErrors.bank_account"
- label="Conta"
- placeholder="Ex. 56789-0"
- class="col-12 col-md-6"
- />
- </q-card-section>
- </q-scroll-area>
- <q-card-actions>
- <q-space />
- <q-btn
- outline
- color="negative"
- label="Cancelar"
- @click="onDialogCancel"
- />
- <q-btn
- color="primary"
- :label="isEdit ? 'Salvar' : 'Cadastrar'"
- type="submit"
- :loading="loading"
- />
- </q-card-actions>
- </DefaultForm>
- </q-card>
- </q-dialog>
- </template>
- <script setup>
- import { ref, computed } from "vue";
- import { useDialogPluginComponent } from "quasar";
- import { useInputRules } from "src/composables/useInputRules";
- import { useSubmitHandler } from "src/composables/useSubmitHandler";
- import {
- createTreasuryAccount,
- updateTreasuryAccount,
- } from "src/api/treasury_account";
- import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
- import DefaultInput from "src/components/defaults/DefaultInput.vue";
- import DefaultSelect from "src/components/defaults/DefaultSelect.vue";
- defineEmits([...useDialogPluginComponent.emits]);
- const { account } = defineProps({
- account: {
- type: Object,
- default: null,
- },
- });
- const { inputRules } = useInputRules();
- const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
- useDialogPluginComponent();
- const formRef = ref(null);
- const isEdit = computed(() => !!account);
- const title = computed(() => (isEdit.value ? "Editar Banco" : "Novo Banco"));
- const accountTypeOptions = [
- { label: "Conta Corrente", value: "corrente" },
- { label: "Conta Poupança", value: "poupanca" },
- ];
- const form = ref({
- name: account?.name ?? "",
- bank_name: account?.bank_name ?? "",
- bank_agency: account?.bank_agency ?? "",
- bank_account: account?.bank_account ?? "",
- bank_type_account: account?.bank_type_account ?? null,
- });
- const {
- loading,
- validationErrors,
- execute: submitForm,
- } = useSubmitHandler({
- onSuccess: (response) => onDialogOK(response),
- formRef,
- });
- const onOKClick = async () => {
- const payload = {
- name: form.value.name,
- treasury_type: "bank",
- bank_name: form.value.bank_name,
- bank_agency: form.value.bank_agency || null,
- bank_account: form.value.bank_account || null,
- bank_type_account: form.value.bank_type_account || null,
- };
- if (isEdit.value) {
- await submitForm(() => updateTreasuryAccount(account.id, payload));
- } else {
- await submitForm(() => createTreasuryAccount(payload));
- }
- };
- </script>
|