|
|
@@ -35,222 +35,116 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="text-grey-7 q-mb-md font12 fontregular">
|
|
|
- {{ $t('profile.bank_data.subtitle') }}
|
|
|
+ {{ accounts.length ? $t('profile.bank_data.subtitle_manage') : $t('profile.bank_data.subtitle') }}
|
|
|
</div>
|
|
|
|
|
|
- <template v-if="pixEnabled">
|
|
|
- <div class="pix-warning q-pa-md q-mb-md row items-start q-col-gutter-sm">
|
|
|
- <q-icon
|
|
|
- class="q-mt-xs"
|
|
|
- color="warning"
|
|
|
- name="mdi-alert-outline"
|
|
|
- size="20px"
|
|
|
- />
|
|
|
-
|
|
|
- <div class="col font12">
|
|
|
- <span class="fontbold">
|
|
|
- {{ $t('profile.bank_data.warning_title') }}
|
|
|
- </span>
|
|
|
-
|
|
|
- {{ $t('profile.bank_data.warning_message') }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div
|
|
|
+ v-if="!showForm"
|
|
|
+ class="column items-center q-mb-lg cursor-pointer new-account"
|
|
|
+ @click="openCreateForm"
|
|
|
+ >
|
|
|
+ <q-btn
|
|
|
+ class="new-account-btn shadow-card"
|
|
|
+ color="white"
|
|
|
+ icon="mdi-plus"
|
|
|
+ round
|
|
|
+ size="lg"
|
|
|
+ text-color="primary"
|
|
|
+ unelevated
|
|
|
+ />
|
|
|
|
|
|
- <q-card
|
|
|
- class="q-pa-md bg-white shadow-card q-mb-md"
|
|
|
- style="border-radius: 20px;"
|
|
|
- :flat="false"
|
|
|
- >
|
|
|
- <div class="text-center text-text q-mb-sm font14 fontbold">
|
|
|
- <div>
|
|
|
- {{ $t('profile.bank_data.pix_title') }}
|
|
|
-
|
|
|
- <q-badge
|
|
|
- class="q-ml-xs"
|
|
|
- color="grey-5"
|
|
|
- :label="$t('profile.bank_data.in_development')"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <span class="font12 fontregular text-text q-mt-sm">
|
|
|
+ {{ $t('profile.bank_data.new_account') }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
|
|
|
- <q-input
|
|
|
- class="q-mb-sm"
|
|
|
- dense
|
|
|
- disable
|
|
|
- input-class="text-text"
|
|
|
- outlined
|
|
|
- :placeholder="$t('profile.bank_data.pix_key_placeholder')"
|
|
|
- />
|
|
|
+ <BankAccountForm
|
|
|
+ v-if="showForm"
|
|
|
+ :account="editingAccount"
|
|
|
+ @cancel="closeForm"
|
|
|
+ @saved="onSaved"
|
|
|
+ />
|
|
|
|
|
|
- <q-btn
|
|
|
- class="full-width"
|
|
|
- color="grey-4"
|
|
|
- disable
|
|
|
- no-caps
|
|
|
- padding="4px 12px"
|
|
|
- rounded
|
|
|
- text-color="grey-7"
|
|
|
- unelevated
|
|
|
- :label="$t('profile.bank_data.in_development')"
|
|
|
- />
|
|
|
- </q-card>
|
|
|
- </template>
|
|
|
+ <div
|
|
|
+ v-if="loading"
|
|
|
+ class="row justify-center q-py-lg"
|
|
|
+ >
|
|
|
+ <q-spinner color="primary" size="32px" />
|
|
|
+ </div>
|
|
|
|
|
|
<q-card
|
|
|
- class="q-pa-md bg-white row shadow-card q-mb-md"
|
|
|
+ v-for="account in accounts"
|
|
|
+ :key="account.id"
|
|
|
+ class="q-pa-md bg-white shadow-card q-mb-md row items-center no-wrap account-card"
|
|
|
+ :class="{ 'account-card--primary': account.is_primary }"
|
|
|
style="border-radius: 20px;"
|
|
|
:flat="false"
|
|
|
>
|
|
|
- <div class="text-center text-text q-mb-sm col-12 font14 fontbold">
|
|
|
- {{ $t('profile.bank_data.bank_account_title') }}
|
|
|
- </div>
|
|
|
-
|
|
|
- <q-select
|
|
|
- ref="bankSelectRef"
|
|
|
- v-model="bankForm.bank"
|
|
|
- behavior="menu"
|
|
|
- class="q-mb-sm col-12"
|
|
|
- dense
|
|
|
- emit-value
|
|
|
- fill-input
|
|
|
- hide-dropdown-icon
|
|
|
- hide-selected
|
|
|
- input-class="text-text"
|
|
|
- input-debounce="0"
|
|
|
- map-options
|
|
|
- menu-anchor="bottom left"
|
|
|
- menu-self="top left"
|
|
|
- options-dense
|
|
|
- use-input
|
|
|
- outlined
|
|
|
- popup-content-class="bank-select-menu"
|
|
|
- stack-label
|
|
|
- :label="$t('profile.bank_data.bank_code')"
|
|
|
- :loading="loadingBanks"
|
|
|
- :menu-offset="[0, 4]"
|
|
|
- :options="bankOptions"
|
|
|
- :options-dark="false"
|
|
|
- :placeholder="$t('profile.bank_data.bank_code_placeholder')"
|
|
|
- :popup-content-style="bankPopupStyle"
|
|
|
- @blur="clearInvalidBankInput"
|
|
|
- @filter="filterBanks"
|
|
|
- @input-value="onBankInputValue"
|
|
|
- @popup-show="updateBankSelectWidth"
|
|
|
- >
|
|
|
- <template #append>
|
|
|
- <q-icon color="grey-7" name="mdi-magnify" />
|
|
|
- </template>
|
|
|
-
|
|
|
- <template #option="scope">
|
|
|
- <q-item v-bind="scope.itemProps">
|
|
|
- <q-item-section
|
|
|
- class="bank-select-menu__code"
|
|
|
- side
|
|
|
- >
|
|
|
- {{ scope.opt.code }}
|
|
|
- </q-item-section>
|
|
|
-
|
|
|
- <q-item-section class="bank-select-menu__name">
|
|
|
- <q-item-label class="ellipsis">
|
|
|
- {{ scope.opt.name }}
|
|
|
- </q-item-label>
|
|
|
- </q-item-section>
|
|
|
- </q-item>
|
|
|
- </template>
|
|
|
-
|
|
|
- <template #no-option>
|
|
|
- <q-item>
|
|
|
- <q-item-section class="text-grey">
|
|
|
- {{ $t("http.errors.no_records_found") }}
|
|
|
- </q-item-section>
|
|
|
- </q-item>
|
|
|
- </template>
|
|
|
- </q-select>
|
|
|
-
|
|
|
- <div class="row q-mb-sm q-my-auto col-12 row items-center">
|
|
|
- <q-radio
|
|
|
- v-model="bankForm.type"
|
|
|
- class="q-mr-lg text-text"
|
|
|
- color="primary"
|
|
|
- keep-color
|
|
|
- val="checking"
|
|
|
- :label="$t('profile.bank_data.checking')"
|
|
|
- />
|
|
|
+ <div class="relative-position q-mr-md">
|
|
|
+ <q-avatar
|
|
|
+ class="bg-white shadow-card"
|
|
|
+ size="44px"
|
|
|
+ text-color="primary"
|
|
|
+ >
|
|
|
+ <q-icon name="mdi-currency-usd" />
|
|
|
+ </q-avatar>
|
|
|
|
|
|
- <q-radio
|
|
|
- v-model="bankForm.type"
|
|
|
- class="text-text"
|
|
|
+ <q-icon
|
|
|
+ v-if="account.is_primary"
|
|
|
+ class="account-card__check"
|
|
|
color="primary"
|
|
|
- keep-color
|
|
|
- val="savings"
|
|
|
- :label="$t('profile.bank_data.savings')"
|
|
|
+ name="mdi-check-circle"
|
|
|
+ size="16px"
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <div class="row col-12 q-col-gutter-sm q-mb-sm">
|
|
|
- <q-input
|
|
|
- v-model="bankForm.branch_number"
|
|
|
- class="col-8"
|
|
|
- dense
|
|
|
- input-class="text-text"
|
|
|
- inputmode="numeric"
|
|
|
- outlined
|
|
|
- stack-label
|
|
|
- :label="$t('profile.bank_data.agency')"
|
|
|
- :placeholder="$t('profile.bank_data.agency_placeholder')"
|
|
|
- />
|
|
|
+ <div class="col">
|
|
|
+ <div class="font14 fontbold text-text">
|
|
|
+ {{ account.bank_name || account.bank_code }}
|
|
|
+ </div>
|
|
|
|
|
|
- <q-input
|
|
|
- v-model="bankForm.branch_check_digit"
|
|
|
- class="col-4"
|
|
|
- dense
|
|
|
- input-class="text-text"
|
|
|
- maxlength="2"
|
|
|
- outlined
|
|
|
- stack-label
|
|
|
- :label="$t('profile.bank_data.agency_digit')"
|
|
|
- :placeholder="$t('profile.bank_data.digit_placeholder')"
|
|
|
+ <div class="font12 fontregular text-grey-7">
|
|
|
+ {{ account.holder_name }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="font12 fontregular text-grey-7">
|
|
|
+ {{ $t('profile.bank_data.agency') }} {{ formatBranch(account) }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="font12 fontregular text-grey-7">
|
|
|
+ {{ $t('profile.bank_data.account') }} {{ formatAccount(account) }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <q-badge
|
|
|
+ v-if="account.is_primary"
|
|
|
+ class="q-mt-xs"
|
|
|
+ color="primary"
|
|
|
+ :label="$t('profile.bank_data.primary_badge')"
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <div class="row col-12 q-col-gutter-sm q-mb-sm">
|
|
|
- <q-input
|
|
|
- v-model="bankForm.account_number"
|
|
|
- class="col-8"
|
|
|
+ <div class="column items-center">
|
|
|
+ <q-btn
|
|
|
+ color="grey-7"
|
|
|
dense
|
|
|
- input-class="text-text"
|
|
|
- inputmode="numeric"
|
|
|
- outlined
|
|
|
- stack-label
|
|
|
- :label="$t('profile.bank_data.account')"
|
|
|
- :placeholder="$t('profile.bank_data.account_placeholder')"
|
|
|
+ flat
|
|
|
+ icon="mdi-pencil-outline"
|
|
|
+ round
|
|
|
+ size="sm"
|
|
|
+ @click.stop="openEditForm(account)"
|
|
|
/>
|
|
|
|
|
|
- <q-input
|
|
|
- v-model="bankForm.account_check_digit"
|
|
|
- class="col-4"
|
|
|
+ <q-btn
|
|
|
+ v-if="canDelete(account)"
|
|
|
+ color="grey-7"
|
|
|
dense
|
|
|
- input-class="text-text"
|
|
|
- maxlength="2"
|
|
|
- outlined
|
|
|
- stack-label
|
|
|
- :label="$t('profile.bank_data.account_digit')"
|
|
|
- :placeholder="$t('profile.bank_data.digit_placeholder')"
|
|
|
+ flat
|
|
|
+ icon="mdi-trash-can-outline"
|
|
|
+ round
|
|
|
+ size="sm"
|
|
|
+ @click.stop="confirmDelete(account)"
|
|
|
/>
|
|
|
</div>
|
|
|
-
|
|
|
- <q-btn
|
|
|
- class="full-width q-mt-xl"
|
|
|
- color="primary"
|
|
|
- no-caps
|
|
|
- padding="8px 16px"
|
|
|
- rounded
|
|
|
- unelevated
|
|
|
- :disable="!canSaveBank"
|
|
|
- :label="bankAlreadyRegistered ? $t('profile.bank_data.att_bank') : $t('profile.bank_data.save_account')"
|
|
|
- :loading="savingBank"
|
|
|
- @click="saveBank"
|
|
|
- />
|
|
|
</q-card>
|
|
|
</div>
|
|
|
|
|
|
@@ -261,10 +155,9 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { computed, nextTick, onBeforeUnmount, onMounted, reactive, ref } from 'vue';
|
|
|
-import { getBanks } from 'src/api/banks';
|
|
|
-import { getWithdrawalConfiguration } from 'src/api/providerWithdrawal';
|
|
|
-import { updateProviderBankAccount } from 'src/api/providerPaymentMethod';
|
|
|
+import BankAccountForm from 'src/components/profile/BankAccountForm.vue';
|
|
|
+import { onMounted, ref } from 'vue';
|
|
|
+import { deleteProviderBankAccount, getProviderBankAccounts } from 'src/api/providerBankAccount';
|
|
|
import { useDialogPluginComponent, useQuasar } from 'quasar';
|
|
|
import { useI18n } from 'vue-i18n';
|
|
|
import { userStore } from 'src/stores/user';
|
|
|
@@ -276,269 +169,103 @@ const { t } = useI18n();
|
|
|
const $q = useQuasar();
|
|
|
const user = userStore();
|
|
|
|
|
|
-const banks = ref([]);
|
|
|
-const bankAlreadyRegistered = ref(false);
|
|
|
-const bankOptions = ref([]);
|
|
|
-const bankSelectRef = ref(null);
|
|
|
-const bankSelectWidth = ref(null);
|
|
|
-const loadingBanks = ref(false);
|
|
|
-const pixEnabled = ref(false);
|
|
|
-const savingBank = ref(false);
|
|
|
-
|
|
|
-const bankForm = reactive({
|
|
|
- bank: '',
|
|
|
- type: 'checking',
|
|
|
- branch_number: '',
|
|
|
- branch_check_digit: '',
|
|
|
- account_number: '',
|
|
|
- account_check_digit: '',
|
|
|
-});
|
|
|
-
|
|
|
-const bankPopupStyle = computed(() => ({
|
|
|
- maxHeight: '188px',
|
|
|
- overflowY: 'auto',
|
|
|
- width: bankSelectWidth.value ? `${bankSelectWidth.value}px` : undefined,
|
|
|
- maxWidth: bankSelectWidth.value ? `${bankSelectWidth.value}px` : undefined,
|
|
|
-}));
|
|
|
-
|
|
|
-const providerId = computed(() => user.user?.provider?.id ?? user.user?.provider_id);
|
|
|
-
|
|
|
-const isSelectedBankValid = (code) => {
|
|
|
- if (!code) {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- return banks.value.some((bank) => getBankCode(bank) === code);
|
|
|
-};
|
|
|
+const accounts = ref([]);
|
|
|
+const editingAccount = ref(null);
|
|
|
+const loading = ref(false);
|
|
|
+const showForm = ref(false);
|
|
|
|
|
|
-const canSaveBank = computed(
|
|
|
- () =>
|
|
|
- !!providerId.value &&
|
|
|
- isSelectedBankValid(bankForm.bank) &&
|
|
|
- !!bankForm.branch_number &&
|
|
|
- !!bankForm.account_number &&
|
|
|
- !!bankForm.account_check_digit,
|
|
|
-);
|
|
|
-
|
|
|
-const getBankCode = (bank) => {
|
|
|
- const code = bank?.code ?? bank?.bank_code ?? bank?.number ?? bank?.value ?? '';
|
|
|
- return String(code).padStart(3, '0');
|
|
|
-};
|
|
|
+const canDelete = (account) => !account.is_primary && accounts.value.length > 1;
|
|
|
|
|
|
-const getBankName = (bank) => bank?.name ?? bank?.label ?? bank?.title ?? '';
|
|
|
+const formatBranch = (account) =>
|
|
|
+ [account.branch_number, account.branch_check_digit].filter(Boolean).join('-');
|
|
|
|
|
|
-const getBankList = (response) => {
|
|
|
- if (Array.isArray(response)) {
|
|
|
- return response;
|
|
|
- }
|
|
|
+const formatAccount = (account) =>
|
|
|
+ [account.account_number, account.account_check_digit].filter(Boolean).join('-');
|
|
|
|
|
|
- if (Array.isArray(response?.data)) {
|
|
|
- return response.data;
|
|
|
- }
|
|
|
-
|
|
|
- if (Array.isArray(response?.payload)) {
|
|
|
- return response.payload;
|
|
|
- }
|
|
|
-
|
|
|
- if (response && typeof response === 'object') {
|
|
|
- return Object.entries(response).map(([code, name]) => ({
|
|
|
- code,
|
|
|
- name,
|
|
|
- }));
|
|
|
- }
|
|
|
-
|
|
|
- return [];
|
|
|
-};
|
|
|
-
|
|
|
-//
|
|
|
-
|
|
|
-const filterBanks = (val, update) => {
|
|
|
- update(() => {
|
|
|
- const needle = normalizeText(val).trim();
|
|
|
-
|
|
|
- if (!needle) {
|
|
|
- setBankOptions(banks.value);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- const filtered = banks.value.filter((bank) => {
|
|
|
- const code = getBankCode(bank);
|
|
|
- const name = normalizeText(getBankName(bank));
|
|
|
-
|
|
|
- return code.includes(needle) || name.includes(needle);
|
|
|
- });
|
|
|
-
|
|
|
- setBankOptions(filtered);
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
-const formatBankOption = (bank) => {
|
|
|
- const code = getBankCode(bank);
|
|
|
- const name = getBankName(bank);
|
|
|
-
|
|
|
- return {
|
|
|
- code,
|
|
|
- name,
|
|
|
- label: code,
|
|
|
- value: code,
|
|
|
- };
|
|
|
+const openCreateForm = () => {
|
|
|
+ editingAccount.value = null;
|
|
|
+ showForm.value = true;
|
|
|
};
|
|
|
|
|
|
-const normalizeText = (text) =>
|
|
|
- String(text ?? '')
|
|
|
- .normalize('NFD')
|
|
|
- .replace(/[\u0300-\u036f]/g, '')
|
|
|
- .toLowerCase();
|
|
|
-
|
|
|
-const setBankOptions = (list) => {
|
|
|
- bankOptions.value = list.map(formatBankOption).filter((bank) => bank.code);
|
|
|
+const openEditForm = (account) => {
|
|
|
+ editingAccount.value = account;
|
|
|
+ showForm.value = true;
|
|
|
};
|
|
|
|
|
|
-const updateBankSelectWidth = async () => {
|
|
|
- await nextTick();
|
|
|
-
|
|
|
- bankSelectWidth.value = bankSelectRef.value?.$el?.getBoundingClientRect()?.width ?? null;
|
|
|
+const closeForm = () => {
|
|
|
+ editingAccount.value = null;
|
|
|
+ showForm.value = false;
|
|
|
};
|
|
|
|
|
|
-//
|
|
|
+const onSaved = async () => {
|
|
|
+ closeForm();
|
|
|
|
|
|
-const clearInvalidBankInput = () => {
|
|
|
- if (!isSelectedBankValid(bankForm.bank)) {
|
|
|
- bankForm.bank = '';
|
|
|
+ await loadAccounts();
|
|
|
|
|
|
- bankSelectRef.value?.updateInputValue('', true);
|
|
|
- }
|
|
|
+ await user.fetchUser();
|
|
|
};
|
|
|
|
|
|
-const onBankInputValue = (value) => {
|
|
|
- if (String(value ?? '') !== bankForm.bank) {
|
|
|
- bankForm.bank = '';
|
|
|
- }
|
|
|
+const confirmDelete = (account) => {
|
|
|
+ $q.dialog({
|
|
|
+ title: t('profile.bank_data.delete_title'),
|
|
|
+ message: t('profile.bank_data.delete_message'),
|
|
|
+ cancel: { flat: true, label: t('profile.bank_data.cancel'), noCaps: true },
|
|
|
+ ok: { color: 'negative', label: t('profile.bank_data.confirm'), noCaps: true, rounded: true, unelevated: true },
|
|
|
+ persistent: true,
|
|
|
+ }).onOk(() => removeAccount(account));
|
|
|
};
|
|
|
|
|
|
-const saveBank = async () => {
|
|
|
- if (!canSaveBank.value) {
|
|
|
- $q.notify({ type: 'negative', message: t('profile.bank_data.bank_fields_required') });
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- savingBank.value = true;
|
|
|
+const removeAccount = async (account) => {
|
|
|
+ loading.value = true;
|
|
|
|
|
|
try {
|
|
|
- // Holder (nome/CPF) é derivado do prestador no backend; aqui só os campos digitados.
|
|
|
- const bankAccount = {
|
|
|
- bank: bankForm.bank,
|
|
|
- type: bankForm.type,
|
|
|
- branch_number: bankForm.branch_number,
|
|
|
- branch_check_digit: bankForm.branch_check_digit || null,
|
|
|
- account_number: bankForm.account_number,
|
|
|
- account_check_digit: bankForm.account_check_digit,
|
|
|
- };
|
|
|
-
|
|
|
- await updateProviderBankAccount(providerId.value, bankAccount);
|
|
|
+ await deleteProviderBankAccount(account.id);
|
|
|
|
|
|
- await user.fetchUser();
|
|
|
-
|
|
|
- bankAlreadyRegistered.value = true;
|
|
|
+ await loadAccounts();
|
|
|
|
|
|
- $q.notify({ type: 'positive', message: t('profile.bank_data.account_saved') });
|
|
|
+ await user.fetchUser();
|
|
|
} catch (error) {
|
|
|
- $q.notify({ type: 'negative', message: t('profile.bank_data.save_error') });
|
|
|
-
|
|
|
console.log(error);
|
|
|
} finally {
|
|
|
- savingBank.value = false;
|
|
|
+ loading.value = false;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
//
|
|
|
|
|
|
-const loadBanks = async () => {
|
|
|
- loadingBanks.value = true;
|
|
|
+const loadAccounts = async () => {
|
|
|
+ loading.value = true;
|
|
|
|
|
|
try {
|
|
|
- const response = await getBanks();
|
|
|
-
|
|
|
- banks.value = getBankList(response);
|
|
|
-
|
|
|
- setBankOptions(banks.value);
|
|
|
+ accounts.value = await getProviderBankAccounts();
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
|
} finally {
|
|
|
- loadingBanks.value = false;
|
|
|
+ loading.value = false;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-const loadWithdrawalConfiguration = async () => {
|
|
|
- try {
|
|
|
- const configuration = await getWithdrawalConfiguration();
|
|
|
-
|
|
|
- pixEnabled.value = configuration?.pix_enabled === true;
|
|
|
- } catch (error) {
|
|
|
- pixEnabled.value = false;
|
|
|
- console.log(error);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-//
|
|
|
-
|
|
|
-onMounted(async () => {
|
|
|
- const bank = user.user?.provider?.recipient_default_bank_account;
|
|
|
-
|
|
|
- if (bank && Object.keys(bank).length) {
|
|
|
- bankForm.bank = bank.bank ? String(bank.bank).padStart(3, '0') : '';
|
|
|
- bankForm.type = bank.type || 'checking';
|
|
|
- bankForm.branch_number = bank.branch_number || '';
|
|
|
- bankForm.branch_check_digit = bank.branch_check_digit || '';
|
|
|
- bankForm.account_number = bank.account_number || '';
|
|
|
- bankForm.account_check_digit = bank.account_check_digit || '';
|
|
|
- bankAlreadyRegistered.value = true;
|
|
|
- }
|
|
|
-
|
|
|
- await Promise.all([loadBanks(), loadWithdrawalConfiguration()]);
|
|
|
-
|
|
|
- await updateBankSelectWidth();
|
|
|
-
|
|
|
- window.addEventListener('resize', updateBankSelectWidth);
|
|
|
-});
|
|
|
-
|
|
|
-onBeforeUnmount(() => {
|
|
|
- window.removeEventListener('resize', updateBankSelectWidth);
|
|
|
-});
|
|
|
+onMounted(loadAccounts);
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-.pix-warning {
|
|
|
- background-color: #EEF0FF;
|
|
|
- border-radius: 12px;
|
|
|
-}
|
|
|
-</style>
|
|
|
-
|
|
|
-<style>
|
|
|
-.bank-select-menu {
|
|
|
- background: #FFFFFF !important;
|
|
|
- color: #1F1F1F !important;
|
|
|
- border: 1px solid #E7E7E7;
|
|
|
- box-shadow: 0 6px 18px rgba(0, 0, 0, 0.14);
|
|
|
- max-height: 188px !important;
|
|
|
- overflow-y: auto !important;
|
|
|
+.account-card--primary {
|
|
|
+ border: 1px solid var(--q-primary);
|
|
|
}
|
|
|
|
|
|
-.bank-select-menu .q-item {
|
|
|
- min-height: 32px;
|
|
|
- padding: 6px 10px;
|
|
|
- color: #1F1F1F;
|
|
|
+.account-card__check {
|
|
|
+ position: absolute;
|
|
|
+ top: -2px;
|
|
|
+ right: -2px;
|
|
|
+ background: #FFFFFF;
|
|
|
+ border-radius: 50%;
|
|
|
}
|
|
|
|
|
|
-.bank-select-menu__name {
|
|
|
- min-width: 0;
|
|
|
+.new-account {
|
|
|
+ width: fit-content;
|
|
|
}
|
|
|
|
|
|
-.bank-select-menu__code {
|
|
|
- min-width: 36px;
|
|
|
- color: #8C8C8C;
|
|
|
- font-family: monospace;
|
|
|
- padding-right: 8px;
|
|
|
+.new-account-btn {
|
|
|
+ border-radius: 50%;
|
|
|
}
|
|
|
</style>
|