index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <!--MAIN-->
  3. <main>
  4. <!--REGISTER ADDRESS-->
  5. <div class="registerAddress mt-3">
  6. <div class="container-fluid c-section">
  7. <div class="row">
  8. <div class="col-sm-2"></div>
  9. <div class="col-sm-10">
  10. <div class="a-section a-spacing-medium">
  11. <div class="a-subheader a-breadcrumb a-spacing-small">
  12. <ul>
  13. <li>
  14. <a href="#">
  15. <span>Your Account</span>
  16. </a>
  17. </li>
  18. <li class="a-breadcrumb-divider">›</li>
  19. <li class="active">
  20. <a href="#">
  21. <span>Your Adresses</span>
  22. </a>
  23. </li>
  24. </ul>
  25. </div>
  26. <h1 class="a-spacing-medium a-spacing-top-medium">Your Addresses</h1>
  27. <!-- Message from Server -->
  28. <div class="a-section a-spacing-none a-spacing-top-small">
  29. <b>{{ message }}</b>
  30. </div>
  31. <div class="a-spacing-double-large">
  32. <div class="row a-spacing-micro">
  33. <div class="col-lg-4 col-md-5 col-sm-12 pb-2">
  34. <nuxt-link
  35. to="/address/add"
  36. class="a-link-normal add-new-address-button"
  37. style="text-decoration:none;"
  38. >
  39. <div class="a-box first-desktop-address-tile">
  40. <div class="a-box-inner a-padding-extra-large">
  41. <i class="far fa-plus"></i>
  42. <h2 class="a-color-tertiary">Add Address</h2>
  43. </div>
  44. </div>
  45. </nuxt-link>
  46. </div>
  47. <!-- Address -->
  48. <div v-for="(address, index) in addresses" :key="address._id" class="col-lg-4 col-md-4 col-sm-12 pl-md-0 pb-2">
  49. <div class="a-box a-spacing-none normal-desktop-address-tile">
  50. <div class="a-box-inner a-padding-none">
  51. <div class="address-section-no-default">
  52. <div class="a-spacing-small">
  53. <ul class="a-unordered-list a-nostyle a-vertical">
  54. <li>
  55. <h5>
  56. <!-- Address Fullname -->
  57. <b>{{ address.fullName }}</b>
  58. </h5>
  59. </li>
  60. <!-- Address street address -->
  61. <li>{{ address.streetAddress }}</li>
  62. <!-- Address city state zip code -->
  63. <li>{{ address.city }}, {{ address.state }} {{ address.zipCode }}</li>
  64. <!-- Address country -->
  65. <li>{{ address.country }}</li>
  66. <!-- Address Phone number -->
  67. <li>Phone number: {{ address.phoneNumber }}</li>
  68. </ul>
  69. </div>
  70. </div>
  71. </div>
  72. <!-- Delete Button -->
  73. <div class="edit-address-desktop-link">
  74. <nuxt-link :to="`/address/${address._id}`">Edit</nuxt-link>
  75. &nbsp; | &nbsp;
  76. <a @click="onDeleteAddress(address._id, index)" href="#">Delete</a>
  77. &nbsp; | &nbsp;
  78. <!-- Set Address as Default -->
  79. <a @click="onSetDefault(address._id)" href="#">Set as Default</a>
  80. </div>
  81. </div>
  82. </div>
  83. <div class="col-lg-4 col-md-3 col-sm-12"></div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <!--/REGISTER ADDRESS-->
  92. </main>
  93. <!--/MAIN-->
  94. </template>
  95. <script>
  96. export default {
  97. async asyncData ({ $axios }) {
  98. try {
  99. let response = await $axios.$get('/api/address')
  100. return {
  101. addresses: response.addresses
  102. }
  103. } catch (err) {
  104. console.log(err)
  105. }
  106. },
  107. data () {
  108. return {
  109. message: ''
  110. }
  111. },
  112. methods: {
  113. async onDeleteAddress (id, index) {
  114. try {
  115. let response = await this.$axios.$delete(`/api/address/${id}`)
  116. if (response.success) {
  117. this.message = response.message
  118. this.addresses.splice(index, 1)
  119. }
  120. } catch (err) {
  121. this.message = err.message
  122. console.log(err)
  123. }
  124. },
  125. async onSetDefault (id) {
  126. try {
  127. let response = await this.$axios.$put(`/api/address/set/default`, {
  128. id: id
  129. })
  130. if (response.success) {
  131. this.message = response.message
  132. await this.$auth.fetchUser()
  133. }
  134. } catch (err) {
  135. this.message = err.message
  136. console.log(err)
  137. }
  138. }
  139. }
  140. }
  141. </script>