NoteFormModal.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 Note
  5. </h5>
  6. <div slot="body">
  7. <div class="form-group">
  8. <label for="content">Content</label>
  9. <textarea :name="'content'+note.noteid" :id="'content'+note.noteid" class="form-control" v-model="note.thenote"></textarea>
  10. </div>
  11. </div>
  12. <div slot="footer">
  13. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  14. <button type="button" class="btn btn-primary" @click="updateNote(note)">
  15. <div v-if="!noteSaving">Save</div>
  16. <circle-spinner v-else :size="2"></circle-spinner>
  17. </button>
  18. </div>
  19. </modal>
  20. </template>
  21. <script>
  22. import Modal from '../components/Modal.vue'
  23. import CircleSpinner from '../components/CircleSpinner.vue'
  24. export default {
  25. components: {
  26. Modal,
  27. CircleSpinner,
  28. },
  29. props: {
  30. populateWith: {
  31. type: Object,
  32. require: true
  33. },
  34. modalId: {
  35. type: String,
  36. require: true
  37. },
  38. noteType: {
  39. type: Number
  40. },
  41. noteUser: {
  42. type: String
  43. },
  44. woid: {
  45. type: Number
  46. }
  47. },
  48. data () {
  49. return {
  50. note: JSON.parse(JSON.stringify(this.populateWith)),
  51. noteSaving: false
  52. }
  53. },
  54. methods: {
  55. updateNote (note) {
  56. this.noteSaving = true
  57. axios.put('/api/workorders/notes/' + note.noteid, note)
  58. .then((response) => {
  59. this.noteSaving = false
  60. this.hideModal()
  61. })
  62. },
  63. hideModal () {
  64. $('#'+this.modalId).modal('hide')
  65. }
  66. }
  67. }
  68. </script>