add.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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>New Address</span>
  28. </a>
  29. </li>
  30. </ul>
  31. </div>
  32. </div>
  33. <div class="a-section">
  34. <h2>Add a new 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" 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. type="text"
  71. class="a-input-text"
  72. style="width: 100%;"
  73. placeholder="Street and number, P.O. box, c/o."
  74. />
  75. <!-- Street Address 2 -->
  76. <input
  77. v-model="streetAddress2"
  78. type="text"
  79. class="a-input-text a-spacing-top-small"
  80. style="width: 100%;"
  81. placeholder="Apartment, suite, unit, building, floor, etc."
  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" 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" 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" 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" 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="Provide details such as building description, a nearby landmark, or other navigation instructions"
  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" type="text" class="a-input-text" style="width: 100%;" placeholder="1234" />
  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="onAddAddress" class="a-button-text">Add 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 }) {
  175. try {
  176. let response = await $axios.$get('/api/countries')
  177. return {
  178. countries: response
  179. }
  180. } catch (err) {
  181. console.log(err)
  182. }
  183. },
  184. data () {
  185. return {
  186. country: 'United States of America',
  187. fullName: '',
  188. streetAddress1: '',
  189. streetAddress2: '',
  190. city: '',
  191. state: '',
  192. zipCode: '',
  193. phoneNumber: '',
  194. deliverInstructions: '',
  195. securityCode: ''
  196. }
  197. },
  198. methods: {
  199. async onAddAddress () {
  200. try {
  201. let data = {
  202. country: this.country,
  203. fullName: this.fullName,
  204. streetAddress1: this.streetAddress1 + ' ' + this.streetAddress2,
  205. city: this.city,
  206. state: this.state,
  207. zipCode: this.zipCode,
  208. phoneNumber: this.phoneNumber,
  209. deliverInstructions: this.deliverInstructions,
  210. securityCode: this.securityCode,
  211. }
  212. let response = await this.$axios.$post('/api/address', data)
  213. if (response.success) {
  214. this.$router.push('/address')
  215. }
  216. } catch (err) {
  217. console.log(err)
  218. }
  219. }
  220. }
  221. }
  222. </script>