Advertisement
Guest User

Untitled

a guest
Aug 30th, 2017
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.   <div class="container">
  3.     <div class="row">
  4.       <div class="panel panel-default">
  5.         <div class="panel-heading">
  6.           <h3 class="panel-title">Add Customer</h3>
  7.         </div>
  8.         <form @submit.prevent="validateBeforeSubmit" autocomplete="off">
  9.           <div class="panel-body">
  10.             <legend>Thông tin tài khoản</legend>
  11.  
  12.             <!-- /.form-group -->
  13.             <div class="form-group">
  14.               <label for="email">E-mail*</label>
  15.               <input
  16.               type="email"
  17.               name="email"
  18.               v-validate="'required|email'"
  19.               :class="{'form-control': true, 'is-danger': errors.has('email') }"
  20.               placeholder="Eg: johndoe@gmail.com"
  21.               v-model="email"
  22.               data-vv-as="E-mail"
  23.               />
  24.               <span v-show="errors.has('email')" class="label label-danger">{{ errors.first('email') }}</span>
  25.             </div>
  26.             <!-- /.form-group -->
  27.             <div class="form-group">
  28.               <label for="password">Password*</label>
  29.               <input
  30.               type="password"
  31.               name="password"
  32.               v-validate="'required|min:3'"
  33.               :class="{'form-control': true, 'is-danger': errors.has('password') }"
  34.               v-model="password"
  35.               data-vv-as="Mật khẩu"
  36.               />
  37.               <span v-show="errors.has('password')" class="label label-danger">{{ errors.first('password') }}</span>
  38.             </div>
  39.             <!-- /.form-group -->
  40.             <div class="form-group">
  41.               <label for="repassword">Re-password*</label>
  42.               <input
  43.               type="password"
  44.               name="repassword"
  45.               v-validate="'required|confirmed:password'"
  46.               class="form-control"
  47.               v-model="repassword"
  48.               data-vv-as="Xác nhận mật khẩu"
  49.               />
  50.               <span v-show="errors.has('repassword')" class="label label-danger">{{ errors.first('repassword') }}</span>
  51.             </div>
  52.             <!-- /.form-group -->
  53.  
  54.             <legend>Thông tin cá nhân</legend>
  55.  
  56.             <div class="form-group">
  57.               <label for="username">Username*</label>
  58.               <input
  59.               type="text"
  60.               name="username"
  61.               v-validate="'required'"
  62.               :class="{'form-control': true, 'is-danger': errors.has('username') }"
  63.               placeholder="Eg: John Doe"
  64.               v-model="username"
  65.               data-vv-as="Họ tên"
  66.               />
  67.               <span v-show="errors.has('username')" class="label label-danger">{{ errors.first('username') }}</span>
  68.             </div>
  69.  
  70.            
  71.  
  72.             <div class="form-group">
  73.               <label for="gengder">Gender</label>
  74.               <label class="radio-inline">
  75.                 <input type="radio" v-model="gender" value="Male"> Male
  76.               </label>
  77.  
  78.               <label class="radio-inline">
  79.                 <input type="radio" v-model="gender" value="Femail"> Femail
  80.               </label>
  81.             </div>
  82.  
  83.             <div class="form-group">
  84.               <label for="hobbies">Hobbies</label>
  85.               <label class="checkbox-inline">
  86.                 <input type="checkbox" id="game" v-model="hobbies" value="Game"> Game
  87.               </label>
  88.               <label class="checkbox-inline">
  89.                 <input type="checkbox" id="film" v-model="hobbies" value="Film"> Film
  90.               </label>
  91.               <label class="checkbox-inline">
  92.                 <input type="checkbox" id="sport" v-model="hobbies" value="Sport"> Sport
  93.               </label>
  94.  
  95.               <label class="checkbox-inline">
  96.                 <input type="checkbox" id="other" v-model="hobbies" value="Other"> Other
  97.               </label>
  98.             </div>
  99.  
  100.             <div class="form-group">
  101.               <label for="country">Country</label>
  102.               <select name="countries" v-model="countries" class="form-control select2" v-validate="'required'" data-vv-as="Quốc gia">
  103.                 <option value="">-- Select your country --</option>
  104.                 <option v-for="country in optionsCountries" v-bind:value="country.name">{{ country.name }}</option>
  105.               </select>
  106.               {{ countries }}
  107.               <span v-show="errors.has('countries')" class="label label-danger">{{ errors.first('countries') }}</span>
  108.             </div>
  109.  
  110.            
  111.             <div class="form-group">
  112.               <label for="birhday">Date of birth*:</label>
  113.               <datepicker v-model="birthday" :format="'dd/MM/yyyy'" :input-class="'form-control'" :language="'vi'" v-validate="'required'"></datepicker>
  114.               <span v-show="errors.has('birthday')">{{ errors.first('birthday')}}</span>
  115.               <p>{{ birthday }}</p>
  116.             </div>
  117.  
  118.  
  119.             <div class="form-group">
  120.               <label for="country">Note</label>
  121.               <textarea name="note" class="form-control" rows="3" v-model="note"></textarea>
  122.             </div>
  123.  
  124.           </div>
  125.           <div class="panel-footer">
  126.             <button type="reset" class="btn btn-default">Cancel</button>
  127.             <button type="submit" class="btn btn-primary">Add</button>
  128.           </div>
  129.           <!-- /.panel-footer -->
  130.         </form>
  131.       </div>
  132.     </div>
  133.     <!-- /.row -->
  134.   </div>
  135.   <!-- /.container -->
  136. </template>
  137. <script>
  138.   require('./../plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js')
  139.   import axios from 'axios'
  140.   import Datepicker from 'vuejs-datepicker';
  141.  
  142.  
  143.   export default {
  144.     name: 'customer',
  145.     components: { Datepicker },
  146.  
  147.  
  148.     data: function () {
  149.       return {
  150.        username: '',
  151.        email: '',
  152.        password: '',
  153.        repassword: '',
  154.        gender: 'Male',
  155.        hobbies: [],
  156.        countries: '',
  157.        note: '',
  158.        birthday: '',
  159.        optionsCountries: []
  160.      }
  161.    },
  162.  
  163.    ready: function () {
  164.     console.log("Ready")
  165.   },
  166.  
  167.   mounted() {
  168.     Datepicker.$on('veeValidate', () => {
  169.       this.$validator.validateAll()
  170.     });
  171.  
  172.     var self = this;
  173.  
  174.     let url = 'https://restcountries.eu/rest/v2/all?fields=name;capital';
  175.     $.get(url).then(function (response) {
  176.       self.optionsCountries = response;
  177.  
  178.     })
  179.     .catch(function (errors) {
  180.  
  181.     });
  182.   },
  183.  
  184.   methods: {
  185.  
  186.     validateBeforeSubmit() {
  187.      var self = this;
  188.  
  189.      this.$validator.validateAll().then(function (result) {
  190.       if (result) {
  191.         self.add()
  192.       }
  193.     });
  194.    },
  195.  
  196.    onChange(value) {
  197.     var self = this;
  198.     console.log(value)
  199.   },
  200.  
  201.  
  202.   add() {
  203.  
  204.    var self = this;
  205.  
  206.    var router = this.$router;
  207.  
  208.    let requestUrl = 'api/customers';
  209.  
  210.    axios.post(requestUrl, {
  211.     data: {
  212.      username: this.username,
  213.      email: this.email,
  214.      password: this.password,
  215.      repassword: this.repassword,
  216.      gender: this.gender,
  217.      hobbies: this.hobbies.toString(),
  218.      countries: this.countries,
  219.      note: this.note
  220.    }
  221.  })
  222.  
  223.    .then(function (response) {
  224.     self.showToast(response.data)
  225.     if (response.data.status == 'success')
  226.     {
  227.      var customer = response.data.data;
  228.      return router.push('/customer/detail/' + customer.id);
  229.    }
  230.  })
  231.  
  232.    .catch(function (errors) {
  233.     self.showToast(errors);
  234.   });
  235.  },
  236.  
  237.  showToast(messageObject) {
  238.  
  239.    let options = {
  240.     type: messageObject.status,
  241.     duration: 5000
  242.   };
  243.  
  244.   this.$toasted.show(messageObject.message, options);
  245. }
  246. }
  247. }
  248. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement