firmansmoh

Checkout.vue

May 13th, 2020
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.  
  3.     <div>
  4.         <v-subheader>Shipping Address</v-subheader>
  5.     <div>
  6.     <div>
  7.         <v-card flat>
  8.         <v-container>
  9.         <v-form ref="form" lazy-validation>
  10.             <v-text-field
  11.             label="Name"
  12.             v-mode="name"
  13.             required
  14.             append-icon="mdi-user"
  15.             ></v-text-field>
  16.  
  17.             <v-textarea
  18.             label="Address"
  19.             v-model="address"
  20.             required
  21.             auto-grow
  22.             rows="3"
  23.             ></v-textarea>
  24.  
  25.             <v-text-field
  26.             label="Phone"
  27.             v-model="phone"
  28.             required
  29.             append-icon="mdi-phone">
  30.             </v-text-field>
  31.  
  32.             <v-select
  33.             v-model="province_id"
  34.             :items="provinces"
  35.             item-text="province"
  36.             item-value="id"
  37.             label="Province"
  38.             persistent-hint
  39.             single-line>
  40.             </v-select>
  41.  
  42.             <v-select
  43.             v-model="city_id"
  44.             v-if="province_id>0"
  45.             :items="citiesByProvince"
  46.             item-text="city_name"
  47.             item-value="id"
  48.             label="City"
  49.             persistent-hint
  50.             single-line>
  51.             </v-select>
  52.         </v-form>
  53.         <v-card-actions>
  54.             <v-btn color="success" dark @click="saveShipping">
  55.                 <v-icon>mdi-content-copy-save</v-icon> &nbsp;
  56.                 Save
  57.             </v-btn>
  58.         </v-card-actions>
  59.         </v-container>
  60.         </v-card>
  61.     </div>
  62.     </div>
  63.     </div>
  64. </template>
  65.  
  66. <script>
  67. import { mapGetters,mapActions } from 'vuex'
  68. import Axios from 'axios'
  69.  
  70. export default {
  71.     name: 'checkout',
  72.     data () {
  73.         return {
  74.             name: '',
  75.             address: '',
  76.             phone: '',
  77.             province_id: 0,
  78.             city_id: 0,
  79.         }
  80.     },
  81.     computed: {
  82.         ...mapGetters({
  83.             user: 'auth/user',
  84.             provinces: 'region/provinces',
  85.             cities: 'region/cities',
  86.             carts : 'cart/carts',
  87.             countCart : 'cart/count',
  88.             totalPrice : 'cart/totalPrice',
  89.             totalQuantity : 'cart/totalQuantity',
  90.             totalWeight : 'cart/totalWeight',
  91.         }),
  92.         citiesByProvince(){
  93.             let province_id = this.province_id
  94.             return this.cities.filter((city) => {
  95.             if (city.province_id==province_id) return city
  96.             })
  97.             },
  98.         },  
  99.     methods: {
  100.         ...mapActions({
  101.             setAlert: 'alert/set',
  102.             setAuth: 'auth/set',
  103.             setProvinces: 'region/setProvinces',
  104.             setCities: 'region/setCities',
  105.         }),
  106.         saveShipping(){
  107.         let formData = new FormData()
  108.         formData.set('name',this.name)
  109.         formData.set('address',this.address)
  110.         formData.set('phone',this.phone)
  111.         formData.set('province_id',this.province_id)
  112.         formData.set('city_id',this.city_id)
  113.  
  114.         let config = {
  115.             headers: {
  116.                 'Authorization' : 'Bearer ' + this.user.api_token
  117.             }
  118.         }
  119.        
  120.         Axios.post('http:/localhost:8000/api/v1/shipping',formData,config)
  121.         .then((response) => {
  122.             let {data} = response
  123.             this.setAlert({
  124.                 status: true,
  125.                 text: data.message,
  126.                 color: 'success'
  127.             })
  128.         })
  129.         .catch((error) => {
  130.             let { data } = error
  131.             this.setAlert({
  132.                 status: true,
  133.                 text: data.message,
  134.                 color: 'error'
  135.             })
  136.         }
  137.         )
  138.        
  139.         }
  140.     },
  141.     created() {
  142.         this.name = this.user.name
  143.         this.address = this.user.address
  144.         this.phone = this.user.phone
  145.         this.city_id = this.user.city_id
  146.         this.province_id = this.user.province_id
  147.  
  148.         if (this.provinces && this.provinces.length == 0) {
  149.             Axios.get('http://localhost:8000/api/v1/provinces')
  150.             .then((response) => {
  151.                 let {data} = response.data
  152.                 this.setProvinces(data)
  153.             })
  154.  
  155.             Axios.get('http://localhost:8000/api/v1/cities')
  156.             .then((response) => {
  157.                 let {data} = response.data
  158.                 this.setCities(data)
  159.                 console.log(data)
  160.  
  161.             })
  162.            
  163.         }
  164.     }
  165. }
  166. </script>
  167.  
  168. <style>
  169.  
  170. </style>
Add Comment
Please, Sign In to add comment