woinfo.vue 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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-if="storeList" v-model="data.storeid">
  19. <option v-for="store in storeList.values()" 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 v-if="this.storeList">{{ this.storeList.get(this.data.storeid).storesname }}</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. storeList: null,
  56. }
  57. },
  58. mounted() {
  59. Echo.channel('work-orders')
  60. .listen('WorkOrderUpdated', (e) => {
  61. this.data = JSON.parse(e.data);
  62. });
  63. axios.get('/api/stores').then((response) => {
  64. this.storeList = new Map();
  65. response.data.map(val => {
  66. this.storeList.set(val.storeid, val);
  67. });
  68. }).catch((error) => { console.error(error) });
  69. },
  70. methods: {
  71. updateWorkOrder() {
  72. axios.put('/api/workorders/' + this.data.woid, this.data)
  73. .then((response) => {})
  74. .catch((error) => {});
  75. $('#workordereditModal').modal('hide');
  76. },
  77. }
  78. }
  79. </script>