NoteDeleteModal.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. Delete Note
  5. </h5>
  6. <div slot="body">
  7. Are you sure?
  8. </div>
  9. <div slot="footer">
  10. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  11. <button type="button" class="btn btn-danger" @click="deleteNote(note)">
  12. <div v-if="!noteDeleting">Confirm</div>
  13. <circle-spinner v-else :size="2"></circle-spinner>
  14. </button>
  15. </div>
  16. </modal>
  17. </template>
  18. <script>
  19. import Modal from './Modal.vue'
  20. import CircleSpinner from './CircleSpinner.vue'
  21. export default {
  22. components: {
  23. Modal,
  24. CircleSpinner,
  25. },
  26. props: {
  27. modalId: {
  28. type: String,
  29. require: true,
  30. },
  31. note: {
  32. type: Object,
  33. required: true,
  34. },
  35. },
  36. data () {
  37. return {
  38. noteDeleting: false
  39. }
  40. },
  41. methods: {
  42. deleteNote: function(note) {
  43. this.noteDeleting = true
  44. axios.delete(`/api/workorders/notes/${this.note.noteid}`).then( response => {
  45. this.noteDeleting = false
  46. $(`#${this.modalId}`).modal('hide')
  47. }).catch( error => {
  48. this.noteDeleting = false
  49. console.log(error)
  50. })
  51. }
  52. }
  53. }
  54. </script>