woinfo.vue 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div>
  3. <modal id="workordereditModal" tabindex="-1" role="dialog" aria-labelledby="workordereditModalLabel">
  4. <h5 slot="header" class="modal-title" id="workordereditModalLabel">
  5. Edit Work Order Information
  6. </h5>
  7. <div slot="body">
  8. <div class="form-group">
  9. <label for="probdesc">Problem Description</label>
  10. <textarea id="probdesc" name="probdesc" class="form-control" v-model="data.probdesc"></textarea>
  11. </div>
  12. <div class="form-group">
  13. <label for="suggested">Suggested Solution</label>
  14. <textarea id="suggested" name="suggested" class="form-control" v-model="data.suggested"></textarea>
  15. </div>
  16. <div class="form-group">
  17. <label for="storelist">Store</label>
  18. <select name="storelist" id="storelist" class="form-control" v-model="data.storeid">
  19. <option v-for="store in storeList" v-bind:key="store.storeid" v-bind:value="store.storeid">
  20. {{ store.storesname }}
  21. </option>
  22. </select>
  23. </div>
  24. </div>
  25. <div slot="footer">
  26. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  27. <button type="button" class="btn btn-primary" @click="updateWorkOrder()">Save</button>
  28. </div>
  29. </modal>
  30. <p><i class="fas fa-fw fa-info-circle"></i> <span v-text="this.data.probdesc"></span></p>
  31. <p><i class="far fa-fw fa-lightbulb"></i> <span v-text="this.data.suggested"></span></p>
  32. <p><i class="fas fa-fw fa-paste"></i> <span v-text="this.data.woid"></span></p>
  33. <p><i class="fas fa-fw fa-building"></i> <span>{{ storeName }}</span></p>
  34. <p><i class="fas fa-fw fa-sign-in-alt"></i>
  35. <span class="dashed-underline" data-toggle="tooltip" data-placement="bottom" v-bind:title=this.getHRDate(this.data.dropdate)>
  36. {{ Math.floor(this.daysSinceToday(this.data.dropdate)) }} days ago
  37. </span>
  38. </p>
  39. <p><i class="fas fa-sign-out-alt"></i>
  40. <span class="dashed-underline" data-toggle="tooltip" data-placement="bottom" v-if="!this.isZero(this.data.pickupdate)" v-bind:title=this.getHRDate(this.data.pickupdate)>
  41. {{ Math.floor(this.daysSinceToday(this.data.pickupdate)) }} days ago
  42. </span>
  43. </p>
  44. <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#workordereditModal">Edit</button>
  45. </div>
  46. </template>
  47. <script>
  48. import dateMixin from '../mixins/dateMixin'
  49. export default {
  50. mixins: [dateMixin],
  51. props: ['workOrder'],
  52. data() {
  53. return {
  54. data: JSON.parse(this.workOrder),
  55. storeName: null,
  56. storeList: null,
  57. }
  58. },
  59. mounted() {
  60. Echo.channel('work-orders')
  61. .listen('WorkOrderUpdated', (e) => {
  62. this.data = JSON.parse(e.data);
  63. this.storeName = this.getStoreName();
  64. });
  65. axios.get('/api/stores').then((response) => { this.storeList = response.data }).catch((error) => { console.error(error) });
  66. this.storeList = this.getStoreName();
  67. },
  68. methods: {
  69. updateWorkOrder() {
  70. axios.put('/api/workorders/' + this.data.woid, this.data)
  71. .then((response) => {})
  72. .catch((error) => {});
  73. $('#workordereditModal').modal('hide');
  74. },
  75. getStoreName() {
  76. axios.get('/api/stores/' + this.data.storeid)
  77. .then((response) => { this.storeName = response.data.storesname })
  78. .catch((error) => { console.error(error) });
  79. }
  80. }
  81. }
  82. </script>