Эх сурвалжийг харах

feat: :sparkles: feat(agendamento-sob-medida) foi ajustado o campo de numeros do cartão

antes o campo utilizava uma mascara fixa. Agora o campo  utiliza a mascara apenas quando você vai editar mostrando os ultimos 4 numeros

fase:dev | origin:escopo
kayo henrique 1 долоо хоног өмнө
parent
commit
13cbd0574d

+ 19 - 2
src/pages/client/components/AddEditClientPaymentMethodDialog.vue

@@ -10,9 +10,10 @@
             :rules="[inputRules.required, validateCardNumber]"
             :error="!!serverErrors?.card_number"
             :error-message="serverErrors?.card_number"
-            mask="**** **** **** ####"
+            :mask="cardNumberMask"
             unmasked-value
             class="col-12"
+            @focus="onCardNumberFocus"
             @update:model-value="onCardNumberChange"
           >
             <template #append>
@@ -113,7 +114,7 @@
 </template>
 
 <script setup>
-import { ref, onMounted } from 'vue'
+import { ref, computed, onMounted } from 'vue'
 import { useDialogPluginComponent } from 'quasar'
 import { useI18n } from 'vue-i18n'
 import { useFormUpdateTracker } from 'src/composables/useFormUpdateTracker'
@@ -188,6 +189,16 @@ const validateExpiration = (val) => {
   return true
 }
 
+const cardNumberMask = computed(() => {
+  const cardNumber = String(form.card_number || '')
+  if (cardNumber.includes('*')) {
+    return '**** **** **** ####'
+  }
+
+  const digits = cardNumber.replace(/\D/g, '')
+  return digits.length > 16 ? '#### #### #### #### ###' : '#### #### #### ####'
+})
+
 const onCardNumberChange = () => {
   serverErrors.card_number = null
   
@@ -204,6 +215,12 @@ const onCardNumberChange = () => {
   }
 }
 
+const onCardNumberFocus = () => {
+  if (String(form.card_number || '').includes('*')) {
+    form.card_number = ''
+  }
+}
+
 const onOKClick = async () => {
   if (props.paymentMethod) {
     await submitForm(() => updateClientPaymentMethod(props.paymentMethod.id, getUpdatedFields.value))