PartnersTab.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div class="q-pa-md">
  3. <template v-if="view === 'list'">
  4. <div class="row justify-end">
  5. <q-btn
  6. icon="add"
  7. color="primary"
  8. style="height: 40px; width: 40px"
  9. @click="view = 'form'"
  10. />
  11. </div>
  12. </template>
  13. <template v-else>
  14. <div class="column justify-center items-center q-mb-lg">
  15. <AvatarImageComponent @update:file="onAvatarChange" />
  16. <div class="row full-width q-mt-md q-col-gutter-sm">
  17. <DefaultInput
  18. v-model="form.full_name"
  19. label="Nome completo"
  20. class="col-12"
  21. outlined
  22. />
  23. <DefaultInput
  24. v-model="form.social_name"
  25. label="Nome social"
  26. class="col-6"
  27. outlined
  28. />
  29. <DefaultInput
  30. v-model="form.role"
  31. label="Função"
  32. class="col-6"
  33. outlined
  34. />
  35. <DefaultInput v-model="form.cpf" label="CPF" class="col-6" outlined />
  36. <DefaultInput v-model="form.rg" label="RG" class="col-6" outlined />
  37. <DefaultInput
  38. v-model="form.address"
  39. label="Endereço"
  40. class="col-8"
  41. outlined
  42. />
  43. <DefaultInput
  44. v-model="form.address_number"
  45. label="Número"
  46. class="col-4"
  47. outlined
  48. />
  49. <DefaultInput
  50. v-model="form.zip_code"
  51. label="CEP"
  52. class="col-3"
  53. outlined
  54. />
  55. <DefaultInput
  56. v-model="form.neighborhood"
  57. label="Bairro"
  58. class="col-5"
  59. outlined
  60. />
  61. <DefaultInput
  62. v-model="form.city_state"
  63. label="Cidade / Estado"
  64. class="col-4"
  65. outlined
  66. />
  67. <DefaultInput
  68. v-model="form.complement"
  69. label="Complemento"
  70. class="col-12"
  71. outlined
  72. />
  73. <DefaultInput
  74. v-model="form.primary_email"
  75. label="E-mail Principal"
  76. class="col-6"
  77. outlined
  78. />
  79. <DefaultInput
  80. v-model="form.secondary_email"
  81. label="E-mail Secundário"
  82. class="col-6"
  83. outlined
  84. />
  85. <DefaultInput
  86. v-model="form.phone"
  87. label="Telefone"
  88. class="col-6"
  89. outlined
  90. />
  91. <DefaultInput
  92. v-model="form.cellphone_number"
  93. label="Celular"
  94. class="col-6"
  95. outlined
  96. />
  97. </div>
  98. <div class="row justify-end q-mt-md items-end full-width q-px-xs">
  99. <div class="row q-gutter-sm">
  100. <q-btn
  101. label="Cancelar"
  102. color="primary"
  103. outline
  104. @click="view = 'list'"
  105. />
  106. <q-btn label="Salvar" color="primary" />
  107. <q-btn
  108. icon="mdi-paperclip-plus"
  109. color="primary"
  110. style="height: 40px; width: 40px"
  111. />
  112. </div>
  113. </div>
  114. </div>
  115. </template>
  116. </div>
  117. </template>
  118. <script setup>
  119. import { ref } from "vue";
  120. import DefaultInput from "src/components/defaults/DefaultInput.vue";
  121. import AvatarImageComponent from "src/components/shared/AvatarImageComponent.vue";
  122. import { useFormUpdateTracker } from "src/composables/useFormUpdateTracker";
  123. const view = ref("list");
  124. const { form } = useFormUpdateTracker({
  125. full_name: null,
  126. social_name: null,
  127. role: null,
  128. cpf: null,
  129. rg: null,
  130. address: null,
  131. address_number: null,
  132. zip_code: null,
  133. neighborhood: null,
  134. city_state: null,
  135. complement: null,
  136. primary_email: null,
  137. secondary_email: null,
  138. phone: null,
  139. cellphone_number: null,
  140. });
  141. function onAvatarChange(file) {
  142. console.log("Avatar file selected:", file);
  143. }
  144. </script>