_id.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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-3"></div>
  9. <div class="col-sm-6">
  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>
  20. <a href="#">
  21. <span>Your Adresses</span>
  22. </a>
  23. </li>
  24. <li class="a-breadcrumb-divider">›</li>
  25. <li class="active">
  26. <a href="#">
  27. <span>Update Address</span>
  28. </a>
  29. </li>
  30. </ul>
  31. </div>
  32. </div>
  33. <div class="a-section">
  34. <h2>Update address</h2>
  35. <div class="a-section a-spacing-none a-spacing-top-small">
  36. <b>
  37. Or pick up your packages at your convenience from our self-service locations. To add an Amazon Pickup Point or Locker, click
  38. <a
  39. href="#"
  40. >here</a>.
  41. </b>
  42. </div>
  43. <!-- Error Message -->
  44. <div class="a-section a-spacing-none a-spacing-top-small">
  45. <b></b>
  46. </div>
  47. <form>
  48. <div class="a-spacing-medium a-spacing-top-medium">
  49. <!-- Country / Region -->
  50. <div class="a-spacing-top-medium">
  51. <label style="margin-bottom: 0px;">Country/Region</label>
  52. <select v-model="country" class="a-select-option">
  53. <option
  54. v-for="country in countries"
  55. :key="country.alpha2Code"
  56. :value="country.name"
  57. >{{ country.name }}</option>
  58. </select>
  59. </div>
  60. <!-- Full name -->
  61. <div class="a-spacing-top-medium">
  62. <label style="margin-bottom: 0px;">Full Name</label>
  63. <input v-model="fullName" :placeholder="address.fullName" type="text" class="a-input-text" style="width: 100%;" />
  64. </div>
  65. <!-- Street Address -->
  66. <div class="a-spacing-top-medium">
  67. <label style="margin-bottom: 0px;">Street Address</label>
  68. <input
  69. v-model="streetAddress1"
  70. :placeholder="address.streetAddress1"
  71. type="text"
  72. class="a-input-text"
  73. style="width: 100%;"
  74. />
  75. <!-- Street Address 2 -->
  76. <input
  77. v-model="streetAddress2"
  78. :placeholder="address.streetAddress2"
  79. type="text"
  80. class="a-input-text a-spacing-top-small"
  81. style="width: 100%;"
  82. />
  83. </div>
  84. <!-- City -->
  85. <div class="a-spacing-top-medium">
  86. <label style="margin-bottom: 0px;">City</label>
  87. <input v-model="city" :placeholder="address.city" type="text" class="a-input-text" style="width: 100%;" />
  88. </div>
  89. <!-- State -->
  90. <div class="a-spacing-top-medium">
  91. <label style="margin-bottom: 0px;">State / Province / Region</label>
  92. <input v-model="state" :placeholder="address.state" type="text" class="a-input-text" style="width: 100%;" />
  93. </div>
  94. <!-- Zip Code -->
  95. <div class="a-spacing-top-medium">
  96. <label style="margin-bottom: 0px;">Zip Code</label>
  97. <input v-model="zipCode" :placeholder="address.zipCode" type="text" class="a-input-text" style="width: 100%;" />
  98. </div>
  99. <!-- Phone Number -->
  100. <div class="a-spacing-top-medium">
  101. <label style="margin-bottom: 0px;">Phone Number</label>
  102. <input v-model="phoneNumber" :placeholder="address.phoneNumber" type="text" class="a-input-text" style="width: 100%;" />
  103. <div class="a-section a-spacing-none a-spacing-top-micro">
  104. <span class="a-size-mini">May be used to assist delivery</span>
  105. </div>
  106. </div>
  107. <div class="a-spacing-base a-spacing-top-medium">
  108. <h3>Add delivery instructions</h3>
  109. </div>
  110. <!-- Delivery Instruction -->
  111. <div class="a-spacing-top-medium">
  112. <label
  113. style="margin-bottom: 0px;"
  114. >Do we need additional instructions to find this address?</label>
  115. <textarea
  116. v-model="deliverInstructions"
  117. :placeholder="address.deliverInstructions"
  118. style="height:6em; width: 100%;"
  119. ></textarea>
  120. </div>
  121. <!-- Security code -->
  122. <div class="a-spacing-top-medium">
  123. <label
  124. style="margin-bottom: 0px;"
  125. >Do we need a security code or a call box number to access this building?</label>
  126. <input v-model="securityCode" :placeholder="address.securityCode" type="text" class="a-input-text" style="width: 100%;" />
  127. </div>
  128. <div class="a-spacing-top-medium">
  129. <label style="margin-bottom: 0px;">Weekend delivery</label>
  130. <a href="#">
  131. <i class="fas fa-angle-down"></i> Which days can you receive packages?
  132. </a>
  133. </div>
  134. <div class="a-spacing-top-medium"></div>
  135. <hr />
  136. <div class="a-spacing-top-medium">
  137. <span>
  138. <b>Make sure your address is correct</b>
  139. </span>
  140. </div>
  141. <div>
  142. <span>If the address contains typos or other errors, your package may be undeliverable.</span>
  143. </div>
  144. <div class="a-spacing-top-small">
  145. <span>
  146. <a href="#">Tips for entering addresses</a>
  147. </span>
  148. <span>|</span>
  149. <span>
  150. <a href="#">APO/FPO address tips</a>
  151. </span>
  152. </div>
  153. <div class="a-spacing-top-large">
  154. <span class="a-button-register">
  155. <span class="a-button-inner">
  156. <span @click="onUpdateAddress" class="a-button-text">Update address</span>
  157. </span>
  158. </span>
  159. </div>
  160. </div>
  161. </form>
  162. </div>
  163. </div>
  164. <div class="col-sm-3"></div>
  165. </div>
  166. </div>
  167. </div>
  168. <!--/REGISTER ADDRESS-->
  169. </main>
  170. <!--/MAIN-->
  171. </template>
  172. <script>
  173. export default {
  174. async asyncData ({ $axios, params }) {
  175. try {
  176. let response = $axios.$get('/api/countries')
  177. let singleAddress = $axios.$get(`/api/address/${params.id}`)
  178. let [countriesResponse, addressResponse] = await Promise.all([
  179. response,
  180. singleAddress
  181. ])
  182. console.log(singleAddress)
  183. return {
  184. countries: countriesResponse,
  185. address: addressResponse.address
  186. }
  187. } catch (err) {
  188. console.log(err)
  189. }
  190. },
  191. data () {
  192. return {
  193. country: 'United States of America',
  194. fullName: '',
  195. streetAddress1: '',
  196. streetAddress2: '',
  197. city: '',
  198. state: '',
  199. zipCode: '',
  200. phoneNumber: '',
  201. deliverInstructions: '',
  202. securityCode: ''
  203. }
  204. },
  205. methods: {
  206. async onUpdateAddress () {
  207. try {
  208. let data = {
  209. country: this.country,
  210. fullName: this.fullName,
  211. streetAddress: this.streetAddress1 + ' ' + this.streetAddress2,
  212. city: this.city,
  213. state: this.state,
  214. zipCode: this.zipCode,
  215. phoneNumber: this.phoneNumber,
  216. deliverInstructions: this.deliverInstructions,
  217. securityCode: this.securityCode,
  218. }
  219. let response = await this.$axios.$put(`/api/address/${this.$route.params.id}`, data)
  220. if (response.success) {
  221. this.$router.push('/address')
  222. }
  223. } catch (err) {
  224. console.log(err)
  225. }
  226. }
  227. }
  228. }
  229. </script>