AssetInfoEditModal.vue 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <modal :id="modalId" tabindex="-1" role="dialog" :aria-labelledby="`${modalId}Label`">
  3. <h5 slot="header" class="modal-title" :id="`${modalId}Label`">
  4. Edit Work Order Information
  5. </h5>
  6. <div slot="body">
  7. <div class="form-group">
  8. <label for="manufacturer">Manufacturer</label>
  9. <input type="text" name="manufacturer" id="manufacturer" class="form-control" v-model="asset.pcmanu">
  10. </div>
  11. <div class="form-group">
  12. <label for="make">Make</label>
  13. <input type="text" name="make" id="make" class="form-control" v-model="asset.pcmake">
  14. </div>
  15. <div class="form-group">
  16. <label for="nickname">Nickname</label>
  17. <input type="text" name="nickname" id="nickname" class="form-control" v-model="asset.pcnickname">
  18. </div>
  19. <div class="form-group">
  20. <label for="os">OS</label>
  21. <input type="text" name="os" id="os" class="form-control" v-model="asset.pcextra[2]">
  22. </div>
  23. <div class="form-group">
  24. <label for="serial">Serial Number</label>
  25. <input type="text" id="serial" name="serial" class="form-control" v-model="asset.pcextra[104]">
  26. </div>
  27. <div class="form-group">
  28. <label for="cpu">CPU</label>
  29. <input type="text" id="cpu" name="cpu" class="form-control" v-model="asset.pcextra[101]">
  30. </div>
  31. <div class="form-group">
  32. <label for="ram">RAM</label>
  33. <input type="text" name="ram" id="ram" class="form-control" v-model="asset.pcextra[100]">
  34. </div>
  35. <div class="form-group">
  36. <label for="graphics">Graphics</label>
  37. <input type="text" name="graphics" id="grapics" class="form-control" v-model="asset.pcextra[4]">
  38. </div>
  39. </div>
  40. <div slot="footer">
  41. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  42. <button type="button" class="btn btn-primary" @click="updateAsset()">
  43. <div v-if="!assetSaving">Save</div>
  44. <circle-spinner v-else :size="2"></circle-spinner>
  45. </button>
  46. </div>
  47. </modal>
  48. </template>
  49. <script>
  50. import Modal from '../components/Modal.vue'
  51. import CircleSpinner from '../components/CircleSpinner.vue'
  52. export default {
  53. components: {
  54. Modal,
  55. CircleSpinner,
  56. },
  57. props: {
  58. populateWith: {
  59. type: Object,
  60. required: true,
  61. },
  62. modalId: {
  63. type: String,
  64. required: true,
  65. },
  66. },
  67. data () {
  68. return {
  69. // Essentially makes a copy of the object. Otherwise
  70. // We would have a reference to the exising object causing
  71. // unwanted mutations in the parent component.
  72. asset: JSON.parse(JSON.stringify(this.populateWith)),
  73. assetSaving: false,
  74. }
  75. },
  76. methods: {
  77. updateAsset() {
  78. this.assetSaving = true
  79. axios.put(`/api/assets/${this.asset.pcid}`, this.asset)
  80. .then((response) => {
  81. this.assetSaving = false
  82. $(`#${this.modalId}`).modal('hide');
  83. })
  84. .catch((error) => {
  85. this.assetSaving = false
  86. });
  87. }
  88. }
  89. }
  90. </script>