PartnersTab.vue 4.2 KB

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