WoInfoEditModal.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <modal :id="id" tabindex="-1" role="dialog" :aria-labelledby="id+'Label'">
  3. <h5 slot="header" class="modal-title" :id="id+'Label'">
  4. Edit Work Order Information
  5. </h5>
  6. <div slot="body">
  7. <div class="form-group">
  8. <label for="probdesc">Problem Description</label>
  9. <textarea id="probdesc" name="probdesc" :class="{'form-control': true, 'is-invalid': errors.probdesc}" v-model="data.probdesc"></textarea>
  10. <errorlist :errors="errors.probdesc"></errorlist>
  11. </div>
  12. <div class="form-group">
  13. <label for="suggested">Suggested Solution</label>
  14. <textarea id="suggested" name="suggested" :class="{'form-control': true, 'is-invalid': errors.suggested}" v-model="data.suggested"></textarea>
  15. <errorlist :errors="errors.suggested"></errorlist>
  16. </div>
  17. <div class="form-group">
  18. <label for="storelist">Store</label>
  19. <autocomplete-custom-dropdown :options="storeList" :value="this.store" v-model="store"></autocomplete-custom-dropdown>
  20. <!-- <select name="storelist" id="storelist" class="form-control" v-if="storeList" v-model="data.storeid">
  21. <option v-for="store in storeList" v-bind:key="store.storeid" v-bind:value="store.storeid">
  22. {{ store.storesname }}
  23. </option>
  24. </select> -->
  25. </div>
  26. </div>
  27. <div slot="footer">
  28. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  29. <button type="button" class="btn btn-primary" @click="updateWorkOrder()">Save</button>
  30. </div>
  31. </modal>
  32. </template>
  33. <script>
  34. import Modal from '../components/Modal'
  35. import AutocompleteCustomDropdown from '../components/AutocompleteCustomDropdown'
  36. export default {
  37. components: {
  38. Modal,
  39. AutocompleteCustomDropdown
  40. },
  41. props:['populateWith', 'storeList', 'modalId'],
  42. data() {
  43. return {
  44. // Copies object from prop, so it doesn't mutate the object
  45. // from the parent component. Parent component will be updated via
  46. // Websocket if updateWorkOrder is successful.
  47. data: {},
  48. id: this.modalId,
  49. store: {},
  50. errors: []
  51. }
  52. },
  53. methods: {
  54. updateWorkOrder() {
  55. this.data.storeid = this.store.id
  56. axios.put('/api/workorders/' + this.data.woid, this.data)
  57. .then((response) => { $('#workordereditModal').modal('hide'); })
  58. .catch((error) => { this.errors = JSON.parse(error.response.request.response).errors; });
  59. }
  60. },
  61. watch: {
  62. populateWith: function (value) {
  63. this.data = JSON.parse(JSON.stringify(this.populateWith))
  64. this.store = {
  65. 'id': this.data.storeid,
  66. 'name': this.storeList[this.data.storeid]
  67. }
  68. },
  69. storeList: function (value) {
  70. this.store = {
  71. 'id': this.data.storeid,
  72. 'name': this.storeList[this.data.storeid]
  73. }
  74. }
  75. }
  76. }
  77. </script>