Просмотр исходного кода

feat: implement navigation to SupportPage on ticket selection; enhance ticket retrieval on mount

alvesantos 2 недель назад
Родитель
Сommit
6676afde3e

+ 10 - 2
src/pages/dashboard/components/OpenTicketsDialog.vue

@@ -44,7 +44,7 @@
               <div
                 class="list-row q-px-md q-py-sm"
                 :class="{ 'row-selected': index === selectedIndex }"
-                @click="selectedIndex = index"
+                @click="goToTicket(ticket)"
               >
                 <span class="text-body2 text-dark">{{ ticket.number }}</span>
                 <q-badge
@@ -72,10 +72,13 @@
 <script setup>
 import { ref, computed } from "vue";
 import { useDialogPluginComponent } from "quasar";
+import { useRouter } from "vue-router";
 
 defineEmits([...useDialogPluginComponent.emits]);
 
-const { dialogRef, onDialogHide, onDialogCancel } = useDialogPluginComponent();
+const { dialogRef, onDialogHide, onDialogCancel, onDialogOK } =
+  useDialogPluginComponent();
+const router = useRouter();
 
 const props = defineProps({
   tickets: {
@@ -109,6 +112,11 @@ const statusLabel = (status) =>
     unresolved: "Não resolvido",
   })[status] ?? status;
 
+const goToTicket = (ticket) => {
+  onDialogOK();
+  router.push({ name: "SupportPage", query: { ticketId: ticket.id } });
+};
+
 const filteredTickets = computed(() => {
   if (!search.value) return props.tickets;
   const q = search.value.toLowerCase();

+ 18 - 1
src/pages/support/SupportPage.vue

@@ -78,8 +78,9 @@
 </template>
 
 <script setup>
-import { defineAsyncComponent, useTemplateRef } from "vue";
+import { defineAsyncComponent, onMounted, useTemplateRef } from "vue";
 import { useQuasar } from "quasar";
+import { useRoute, useRouter } from "vue-router";
 
 import DefaultTable from "src/components/defaults/DefaultTable.vue";
 import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
@@ -95,6 +96,8 @@ const CloseTicketDialog = defineAsyncComponent(
 );
 
 const $q = useQuasar();
+const route = useRoute();
+const router = useRouter();
 const permissions = permissionStore();
 const canAdd = permissions.getAccess("franchisor_support", "add");
 const canEdit = permissions.getAccess("franchisor_support", "edit");
@@ -228,6 +231,20 @@ const handleClose = (row) => {
   });
 };
 
+onMounted(async () => {
+  const ticketId = route.query.ticketId;
+  if (!ticketId) return;
+
+  const tickets = await getSupportTickets();
+  const ticket = tickets.find((t) => String(t.id) === String(ticketId));
+
+  router.replace({ query: {} });
+
+  if (ticket) {
+    openAddEditTicketDialog(ticket);
+  }
+});
+
 const handleDelete = (row) => {
   $q.dialog({
     title: "Confirmar exclusão",