Advertisement
Guest User

edit-job.vue

a guest
Jul 3rd, 2017
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.86 KB | None | 0 0
  1. <template>
  2.     <div>
  3.        <div class="modal-header">
  4.             <button type="button" class="close" data-dismiss="modal">×</button>
  5.             <h4 class="modal-title">Edit Job</h4>
  6.         </div>
  7.         <div class="modal-body">
  8.             <form method="post" @submit.prevent="signIn" @keydown="errors.clear($event.target.name)">
  9.                 <div class="form-group">
  10.                     <label>{{ id }} Job Name</label>
  11.                     <input type="text" class="form-control" placeholder="Web Developer" :value="name">
  12.                     <span v-text="errors.get('name')" class="text-danger help-block"></span>
  13.                 </div>
  14.                
  15.                 <div class="form-group">
  16.                     <label>Job Summary</label>
  17.                     <textarea class="form-control" v-model="summary"></textarea>
  18.                     <span v-text="errors.get('summary')" class="text-danger help-block"></span>
  19.                 </div>
  20.                
  21.                 <div class="form-group">
  22.  
  23.                     <div class="col-sm-6" style="padding-left: 0px;">
  24.                         <label>Salary Type</label>
  25.                         <select class="form-control" v-model="salarytype">
  26.                             <option value="">Select an option</option>
  27.                             <option value="hourly">Hourly</option>
  28.                             <option value="weekly">Weekly</option>
  29.                             <option value="fortnightly">Fortnightly</option>
  30.                             <option value="monthly">Monthly</option>
  31.                         </select>
  32.                         <span v-text="errors.get('salarytype')" class="text-danger help-block"></span>
  33.                     </div>
  34.  
  35.                     <label>Salary</label>              
  36.                     <div class="col-sm-6 input-group">
  37.                         <input type="number" v-model="salaryfrom" class="form-control" placeholder="24,000"">
  38.                         <span class="input-group-addon">-</span>
  39.                         <input type="number" v-model="salaryto" class="form-control" placeholder="34,000">
  40.                         <span v-text="errors.get('salaryfrom')" class="text-danger help-block"></span>
  41.                         <span v-text="errors.get('salaryto')" class="text-danger help-block"></span>
  42.                     </div>
  43.                 </div>
  44.  
  45.                 <div class="form-group col-sm-6" style="padding:0px;">
  46.                     <label>Job Location</label><br/>
  47.                     <select class="form-control" v-model="location" @change="onChange($event.target.value)">  
  48.                         <option>Select an option</option>
  49.                         <option v-for="(value, key) in countries" :value="key">{{ value }}</option>
  50.                     </select>
  51.                     <span v-text="errors.get('location')" class="text-danger help-block"></span>
  52.                 </div>
  53.  
  54.                 <div class="form-group col-sm-6">
  55.                     <label>Contact Details</label>
  56.                     <input type="email" v-model="contactemail" class="form-control" placeholder="John Doe">
  57.                     <span v-text="errors.get('contactemail')" class="text-danger help-block"></span>
  58.                 </div>
  59.  
  60.                 <label>Contact Number</label>  
  61.                 <div class="form-group input-group">
  62.                     <span class="input-group-addon">
  63.                         <i class="fa fa-phone"></i>
  64.                     </span>
  65.                     <input type="tel" v-model="contactphone" class="form-control" placeholder="+4407584457483">
  66.                     <span v-text="errors.get('contactphone')" class="text-danger help-block"></span>
  67.                 </div>
  68.             </form>
  69.         </div>
  70.         <div class="modal-footer">
  71.             <button type="button" class="btn btn-info btn-fill btn-wd" v-on:click="addJob">Save</button>
  72.             <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  73.         </div>
  74.     </div>
  75. </template>
  76.  
  77. <script>
  78.  
  79.     class Errors
  80.     {
  81.         constructor()
  82.         {
  83.             this.errors = {};
  84.         }
  85.  
  86.         get(field){
  87.             if(this.errors[field]){
  88.                 return this.errors[field][0]
  89.             }
  90.         }
  91.  
  92.         any(){
  93.             console.log(Object.keys(this.errors).length);
  94.             return Object.keys(this.errors).length > 1;
  95.         }
  96.  
  97.         record(errors){
  98.             this.errors = errors;
  99.         }
  100.  
  101.         clear(field){
  102.             delete this.errors[field];
  103.         }
  104.     }
  105.  
  106.     export default
  107.     {
  108.         props: ['id'],
  109.         data: function ()
  110.         {
  111.             return {
  112.                 countries: [],
  113.                 name: '',
  114.                 summary: '',
  115.                 salarytype: '',
  116.                 salaryfrom: '',
  117.                 salaryto: '',
  118.                 location: '',
  119.                 contactemail: '',
  120.                 contactphone: '',
  121.                 errors: new Errors()
  122.             }
  123.         },
  124.  
  125.         methods:
  126.         {
  127.             addJob: function()
  128.             {
  129.                 axios.post('/jobs/edit' + this.id, this.$data)
  130.                 .then(response => {
  131.                     if(response.data.status === true){
  132.                         $('#editJob').modal('hide');
  133.                         getJobTable();
  134.                     }
  135.                     else{
  136.                         formError = response.data.message;
  137.                     }
  138.                 })
  139.                 .catch(error => this.errors.record(error.data))
  140.             }
  141.         },
  142.  
  143.         mounted: function()
  144.         {
  145.             axios.get('/jobs/my-job/' + this.id)
  146.                 .then(response => {
  147.                     this.name = response.data.name
  148.                     this.summary = response.data.summary
  149.                     this.salarytype = response.data.salary_type
  150.                     this.salaryfrom = response.data.salary_from
  151.                     this.salaryto = response.data.salary_to
  152.                     this.location = response.data.location
  153.                     this.contactemail = response.data.contact
  154.                     this.contactphone = response.data.phone
  155.                 })
  156.  
  157.             axios.get('/countries')
  158.                 .then(response => {
  159.                     this.countries = response.data;
  160.                 })
  161.         }
  162.     }
  163. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement