|
|
@@ -101,168 +101,31 @@
|
|
|
</template>
|
|
|
</DefaultTable>
|
|
|
</div>
|
|
|
-
|
|
|
- <!-- Diálogo conta -->
|
|
|
- <q-dialog v-model="accountDialog">
|
|
|
- <q-card class="treasury-dialog-card">
|
|
|
- <DefaultDialogHeader
|
|
|
- :title="editingAccount ? 'Editar conta' : 'Nova conta'"
|
|
|
- @close="accountDialog = false"
|
|
|
- />
|
|
|
- <q-form ref="accountFormRef">
|
|
|
- <q-card-section class="row q-col-gutter-md q-px-lg q-pt-md q-pb-sm">
|
|
|
- <DefaultInput
|
|
|
- v-model="accountForm.name"
|
|
|
- label="Nome (ex.: Banco do Brasil, Caixa Loja)"
|
|
|
- class="col-12"
|
|
|
- outlined
|
|
|
- :rules="[(v) => !!v || 'Informe o nome']"
|
|
|
- />
|
|
|
-
|
|
|
- <DefaultInput
|
|
|
- v-model="accountForm.bank_name"
|
|
|
- label="Banco"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- outlined
|
|
|
- />
|
|
|
- <DefaultInput
|
|
|
- v-model="accountForm.bank_agency"
|
|
|
- label="Agência"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- outlined
|
|
|
- />
|
|
|
- <DefaultInput
|
|
|
- v-model="accountForm.bank_account"
|
|
|
- label="Conta"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- outlined
|
|
|
- />
|
|
|
- <DefaultSelect
|
|
|
- v-model="accountForm.bank_type_account"
|
|
|
- label="Tipo"
|
|
|
- :options="accountTypeOptions"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- outlined
|
|
|
- emit-value
|
|
|
- map-options
|
|
|
- />
|
|
|
- </q-card-section>
|
|
|
- <q-card-actions align="right" class="q-px-lg q-pt-md q-pb-lg q-gutter-sm">
|
|
|
- <q-btn flat label="Cancelar" color="grey-7" @click="accountDialog = false" />
|
|
|
- <q-btn color="primary" label="Salvar" :loading="savingAccount" @click="saveAccount" />
|
|
|
- </q-card-actions>
|
|
|
- </q-form>
|
|
|
- </q-card>
|
|
|
- </q-dialog>
|
|
|
-
|
|
|
- <!-- Diálogo movimentação -->
|
|
|
- <q-dialog v-model="launchDialog">
|
|
|
- <q-card class="treasury-dialog-card treasury-dialog-card--compact">
|
|
|
- <DefaultDialogHeader title="Nova movimentação" @close="launchDialog = false" />
|
|
|
- <q-form ref="launchFormRef">
|
|
|
- <q-card-section class="row q-col-gutter-md q-px-lg q-pt-md q-pb-sm">
|
|
|
- <DefaultSelect
|
|
|
- v-model="launchForm.transaction_type"
|
|
|
- label="Tipo"
|
|
|
- :options="transactionTypeOptions"
|
|
|
- class="col-12"
|
|
|
- outlined
|
|
|
- emit-value
|
|
|
- map-options
|
|
|
- />
|
|
|
- <DefaultInput
|
|
|
- v-model="launchForm.description"
|
|
|
- label="Descrição"
|
|
|
- class="col-12"
|
|
|
- outlined
|
|
|
- :rules="[(v) => !!v || 'Informe a descrição']"
|
|
|
- />
|
|
|
- <DefaultCurrencyInput
|
|
|
- v-model="launchForm.amount"
|
|
|
- label="Valor"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- outlined
|
|
|
- />
|
|
|
- <DefaultInputDatePicker
|
|
|
- v-model="launchForm.launch_date"
|
|
|
- label="Data"
|
|
|
- class="col-12 col-sm-6"
|
|
|
- />
|
|
|
- </q-card-section>
|
|
|
- <q-card-actions align="right" class="q-px-lg q-pt-md q-pb-lg q-gutter-sm">
|
|
|
- <q-btn flat label="Cancelar" color="grey-7" @click="launchDialog = false" />
|
|
|
- <q-btn color="primary-2" label="Salvar" :loading="savingLaunch" @click="saveLaunch" />
|
|
|
- </q-card-actions>
|
|
|
- </q-form>
|
|
|
- </q-card>
|
|
|
- </q-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { computed, onMounted, ref } from "vue";
|
|
|
+import { computed, defineAsyncComponent, onMounted, ref } from "vue";
|
|
|
+import { useQuasar } from "quasar";
|
|
|
import {
|
|
|
getTreasuryAccountsMe,
|
|
|
- createTreasuryAccountMe,
|
|
|
- updateTreasuryAccountMe,
|
|
|
getTreasuryLaunchesMe,
|
|
|
- createTreasuryLaunchMe,
|
|
|
} from "src/api/treasury";
|
|
|
|
|
|
import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
|
|
|
import DefaultTable from "src/components/defaults/DefaultTable.vue";
|
|
|
-import DefaultInput from "src/components/defaults/DefaultInput.vue";
|
|
|
-import DefaultSelect from "src/components/defaults/DefaultSelect.vue";
|
|
|
-import DefaultCurrencyInput from "src/components/defaults/DefaultCurrencyInput.vue";
|
|
|
-import DefaultInputDatePicker from "src/components/defaults/DefaultInputDatePicker.vue";
|
|
|
-import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
|
|
|
+
|
|
|
+const AddEditTreasuryAccountDialog = defineAsyncComponent(
|
|
|
+ () => import("src/pages/financial/components/AddEditTreasuryAccountDialog.vue"),
|
|
|
+);
|
|
|
+const AddTreasuryLaunchDialog = defineAsyncComponent(
|
|
|
+ () => import("src/pages/financial/components/AddTreasuryLaunchDialog.vue"),
|
|
|
+);
|
|
|
|
|
|
const accounts = ref([]);
|
|
|
const launches = ref([]);
|
|
|
const selectedId = ref(null);
|
|
|
-
|
|
|
-const accountDialog = ref(false);
|
|
|
-const savingAccount = ref(false);
|
|
|
-const editingAccount = ref(false);
|
|
|
-const editingAccountId = ref(null);
|
|
|
-const accountFormRef = ref(null);
|
|
|
-
|
|
|
-const launchDialog = ref(false);
|
|
|
-const savingLaunch = ref(false);
|
|
|
-const launchFormRef = ref(null);
|
|
|
-
|
|
|
-const accountForm = ref(defaultAccountForm());
|
|
|
-const launchForm = ref(defaultLaunchForm());
|
|
|
-
|
|
|
-function defaultAccountForm() {
|
|
|
- return {
|
|
|
- name: "",
|
|
|
- treasury_type: "bank",
|
|
|
- bank_name: "",
|
|
|
- bank_agency: "",
|
|
|
- bank_account: "",
|
|
|
- bank_type_account: null,
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-function defaultLaunchForm() {
|
|
|
- return {
|
|
|
- transaction_type: "entrada",
|
|
|
- description: "",
|
|
|
- amount: 0,
|
|
|
- launch_date: new Date().toISOString().slice(0, 10),
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-const accountTypeOptions = [
|
|
|
- { label: "Corrente", value: "corrente" },
|
|
|
- { label: "Poupança", value: "poupanca" },
|
|
|
-];
|
|
|
-
|
|
|
-const transactionTypeOptions = [
|
|
|
- { label: "Entrada", value: "entrada" },
|
|
|
- { label: "Saída", value: "saida" },
|
|
|
-];
|
|
|
+const $q = useQuasar();
|
|
|
|
|
|
const launchColumns = [
|
|
|
{ name: "launch_date", label: "Data", field: "launch_date", align: "left" },
|
|
|
@@ -308,67 +171,30 @@ function selectAccount(acc) {
|
|
|
}
|
|
|
|
|
|
function openAccountCreate() {
|
|
|
- editingAccount.value = false;
|
|
|
- editingAccountId.value = null;
|
|
|
- accountForm.value = defaultAccountForm();
|
|
|
- accountDialog.value = true;
|
|
|
+ $q.dialog({
|
|
|
+ component: AddEditTreasuryAccountDialog,
|
|
|
+ }).onOk(loadAccounts);
|
|
|
}
|
|
|
|
|
|
function openAccountEdit(acc) {
|
|
|
- editingAccount.value = true;
|
|
|
- editingAccountId.value = acc.id;
|
|
|
- accountForm.value = {
|
|
|
- name: acc.name,
|
|
|
- treasury_type: "bank",
|
|
|
- bank_name: acc.bank_name || "",
|
|
|
- bank_agency: acc.bank_agency || "",
|
|
|
- bank_account: acc.bank_account || "",
|
|
|
- bank_type_account: acc.bank_type_account || null,
|
|
|
- };
|
|
|
- accountDialog.value = true;
|
|
|
-}
|
|
|
-
|
|
|
-async function saveAccount() {
|
|
|
- const valid = await accountFormRef.value?.validate();
|
|
|
- if (!valid) return;
|
|
|
- savingAccount.value = true;
|
|
|
- try {
|
|
|
- if (editingAccount.value) {
|
|
|
- await updateTreasuryAccountMe(editingAccountId.value, accountForm.value);
|
|
|
- } else {
|
|
|
- await createTreasuryAccountMe(accountForm.value);
|
|
|
- }
|
|
|
- accountDialog.value = false;
|
|
|
- await loadAccounts();
|
|
|
- } catch (e) {
|
|
|
- console.error(e);
|
|
|
- } finally {
|
|
|
- savingAccount.value = false;
|
|
|
- }
|
|
|
+ $q.dialog({
|
|
|
+ component: AddEditTreasuryAccountDialog,
|
|
|
+ componentProps: {
|
|
|
+ account: acc,
|
|
|
+ },
|
|
|
+ }).onOk(loadAccounts);
|
|
|
}
|
|
|
|
|
|
function openLaunchCreate() {
|
|
|
- launchForm.value = defaultLaunchForm();
|
|
|
- launchDialog.value = true;
|
|
|
-}
|
|
|
-
|
|
|
-async function saveLaunch() {
|
|
|
- const valid = await launchFormRef.value?.validate();
|
|
|
- if (!valid) return;
|
|
|
- savingLaunch.value = true;
|
|
|
- try {
|
|
|
- await createTreasuryLaunchMe({
|
|
|
- account_id: selectedId.value,
|
|
|
- ...launchForm.value,
|
|
|
- });
|
|
|
- launchDialog.value = false;
|
|
|
+ $q.dialog({
|
|
|
+ component: AddTreasuryLaunchDialog,
|
|
|
+ componentProps: {
|
|
|
+ accountId: selectedId.value,
|
|
|
+ },
|
|
|
+ }).onOk(async () => {
|
|
|
await loadAccounts();
|
|
|
await loadLaunches();
|
|
|
- } catch (e) {
|
|
|
- console.error(e);
|
|
|
- } finally {
|
|
|
- savingLaunch.value = false;
|
|
|
- }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
onMounted(loadAccounts);
|
|
|
@@ -380,12 +206,4 @@ onMounted(loadAccounts);
|
|
|
border-width: 2px;
|
|
|
}
|
|
|
|
|
|
-.treasury-dialog-card {
|
|
|
- width: 520px;
|
|
|
- max-width: calc(100vw - 32px);
|
|
|
-}
|
|
|
-
|
|
|
-.treasury-dialog-card--compact {
|
|
|
- width: 480px;
|
|
|
-}
|
|
|
</style>
|