AddEditReplyDialog.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <q-dialog ref="dialogRef" @hide="onDialogHide">
  3. <div style="width: 100%; max-width: 600px">
  4. <q-card class="overflow-hidden" style="width: 100%">
  5. <DefaultDialogHeader
  6. :title="replyItem ? 'Editar Comentário' : 'Responder Suporte'"
  7. @close="onDialogCancel"
  8. />
  9. <DefaultForm ref="formRef" @submit="onOKClick">
  10. <q-card-section class="q-pt-sm">
  11. <DefaultInput
  12. v-model="replyText"
  13. label="Descreva a resposta"
  14. type="textarea"
  15. class="col-12"
  16. />
  17. </q-card-section>
  18. <q-card-actions align="right" class="q-px-md q-pb-md">
  19. <q-btn
  20. outline
  21. color="primary"
  22. label="Cancelar"
  23. @click="onDialogCancel"
  24. />
  25. <q-btn
  26. color="primary"
  27. :label="replyItem ? 'Salvar' : 'Responder'"
  28. type="submit"
  29. :loading="loading"
  30. />
  31. </q-card-actions>
  32. </DefaultForm>
  33. </q-card>
  34. </div>
  35. </q-dialog>
  36. </template>
  37. <script setup>
  38. import { ref } from "vue";
  39. import { useDialogPluginComponent } from "quasar";
  40. import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
  41. import DefaultInput from "src/components/defaults/DefaultInput.vue";
  42. import { createSupportReply, updateSupportReply } from "src/api/support_reply";
  43. defineEmits([...useDialogPluginComponent.emits]);
  44. const { ticketId, replyItem } = defineProps({
  45. ticketId: {
  46. type: Number,
  47. required: true,
  48. },
  49. replyItem: {
  50. type: Object,
  51. default: null,
  52. },
  53. });
  54. const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
  55. useDialogPluginComponent();
  56. const loading = ref(false);
  57. const replyText = ref(replyItem?.reply ?? null);
  58. const onOKClick = async () => {
  59. loading.value = true;
  60. try {
  61. if (replyItem) {
  62. await updateSupportReply(ticketId, replyItem.id, { reply: replyText.value });
  63. } else {
  64. await createSupportReply(ticketId, { reply: replyText.value });
  65. }
  66. onDialogOK(true);
  67. } finally {
  68. loading.value = false;
  69. }
  70. };
  71. </script>