fix: ticket detail api fallback handle
This commit is contained in:
@@ -90,8 +90,8 @@ export function TicketOverviewCard({ ticket }: { ticket: TicketDetail }) {
|
|||||||
</MetaValue>
|
</MetaValue>
|
||||||
</OverviewField>
|
</OverviewField>
|
||||||
|
|
||||||
<OverviewField label="Chainage">
|
<OverviewField label="Chainage" >
|
||||||
<MetaValue>{ticket.chainage_id || '-'}</MetaValue>
|
<MetaValue>{ticket.chainage_name}</MetaValue>
|
||||||
</OverviewField>
|
</OverviewField>
|
||||||
|
|
||||||
<OverviewField label="Uploaded By">
|
<OverviewField label="Uploaded By">
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ function buildTicketListItem(
|
|||||||
!event.id ||
|
!event.id ||
|
||||||
!event.ticket_name ||
|
!event.ticket_name ||
|
||||||
!event.status ||
|
!event.status ||
|
||||||
!event.default_defect_class ||
|
|
||||||
event.detection_count === undefined ||
|
event.detection_count === undefined ||
|
||||||
!event.updated_at
|
!event.updated_at
|
||||||
) {
|
) {
|
||||||
@@ -101,7 +100,7 @@ function buildTicketListItem(
|
|||||||
chainage_id: event.chainage_id ?? null,
|
chainage_id: event.chainage_id ?? null,
|
||||||
chainage_name: event.chainage_name ?? null,
|
chainage_name: event.chainage_name ?? null,
|
||||||
status: event.status,
|
status: event.status,
|
||||||
default_defect_class: event.default_defect_class,
|
default_defect_class: event.default_defect_class ?? null,
|
||||||
assigned_to_name: event.assigned_to_name ?? null,
|
assigned_to_name: event.assigned_to_name ?? null,
|
||||||
detection_count: event.detection_count,
|
detection_count: event.detection_count,
|
||||||
created_by_name: event.created_by_name ?? null,
|
created_by_name: event.created_by_name ?? null,
|
||||||
|
|||||||
@@ -63,8 +63,8 @@ export function useTicketDetailQuery(
|
|||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: ticketKeys.detail(ticketId ?? '', defectClass),
|
queryKey: ticketKeys.detail(ticketId ?? '', defectClass),
|
||||||
queryFn: () =>
|
queryFn: () =>
|
||||||
ticketService.getTicketDetail(ticketId as string, defectClass as string),
|
ticketService.getTicketDetail(ticketId as string, defectClass),
|
||||||
enabled: Boolean(ticketId && defectClass),
|
enabled: Boolean(ticketId),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,9 +44,11 @@ export default function TicketPage() {
|
|||||||
|
|
||||||
const handleView = useCallback(
|
const handleView = useCallback(
|
||||||
(ticket: TicketListItem) => {
|
(ticket: TicketListItem) => {
|
||||||
router.push(
|
const defectClassQuery = ticket.default_defect_class
|
||||||
`/ticket/${ticket.id}?defect_class=${encodeURIComponent(ticket.default_defect_class)}`,
|
? `?defect_class=${encodeURIComponent(ticket.default_defect_class)}`
|
||||||
);
|
: '';
|
||||||
|
|
||||||
|
router.push(`/ticket/${ticket.id}${defectClassQuery}`);
|
||||||
},
|
},
|
||||||
[router],
|
[router],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ export const API_ROUTES = {
|
|||||||
},
|
},
|
||||||
TICKETS: {
|
TICKETS: {
|
||||||
BASE: '/biz/api/v1/tickets',
|
BASE: '/biz/api/v1/tickets',
|
||||||
DETAIL: (id: string, defectClass: string) =>
|
DETAIL: (id: string) => `/biz/api/v1/tickets/${id}`,
|
||||||
|
CLASS_DETAIL: (id: string, defectClass: string) =>
|
||||||
`/biz/api/v1/tickets/${id}/class-detail?defect_class=${defectClass}`,
|
`/biz/api/v1/tickets/${id}/class-detail?defect_class=${defectClass}`,
|
||||||
DEFECT_CLASSES: (id: string) => `/biz/api/v1/tickets/${id}/defect-classes`,
|
DEFECT_CLASSES: (id: string) => `/biz/api/v1/tickets/${id}/defect-classes`,
|
||||||
ASSIGN: (id: string) => `/biz/api/v1/tickets/${id}/assign`,
|
ASSIGN: (id: string) => `/biz/api/v1/tickets/${id}/assign`,
|
||||||
|
|||||||
@@ -35,11 +35,13 @@ export const ticketService = {
|
|||||||
|
|
||||||
getTicketDetail: async (
|
getTicketDetail: async (
|
||||||
ticketId: string,
|
ticketId: string,
|
||||||
defectClass: string,
|
defectClass?: string,
|
||||||
): Promise<TicketDetail> => {
|
): Promise<TicketDetail> => {
|
||||||
const response = await axiosClient.get<TicketDetail>(
|
const path = defectClass
|
||||||
API_ROUTES.TICKETS.DETAIL(ticketId, defectClass),
|
? API_ROUTES.TICKETS.CLASS_DETAIL(ticketId, defectClass)
|
||||||
);
|
: API_ROUTES.TICKETS.DETAIL(ticketId);
|
||||||
|
|
||||||
|
const response = await axiosClient.get<TicketDetail>(path);
|
||||||
return response.data;
|
return response.data;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ export interface TicketDetail {
|
|||||||
ticket_name?: string;
|
ticket_name?: string;
|
||||||
video_id: string;
|
video_id: string;
|
||||||
chainage_id: string | null;
|
chainage_id: string | null;
|
||||||
|
chainage_name: string | null;
|
||||||
status: TicketStatus;
|
status: TicketStatus;
|
||||||
defect_class: string;
|
defect_class: string;
|
||||||
defect_display_name: string;
|
defect_display_name: string;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export type TicketTableStatusEvent = {
|
|||||||
chainage_id?: string | null;
|
chainage_id?: string | null;
|
||||||
chainage_name?: string | null;
|
chainage_name?: string | null;
|
||||||
status?: TicketStatus;
|
status?: TicketStatus;
|
||||||
default_defect_class?: string;
|
default_defect_class?: string | null;
|
||||||
assigned_to_name?: string | null;
|
assigned_to_name?: string | null;
|
||||||
detection_count?: number;
|
detection_count?: number;
|
||||||
created_by_name?: string | null;
|
created_by_name?: string | null;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export interface TicketListItem {
|
|||||||
chainage_id: string | null;
|
chainage_id: string | null;
|
||||||
chainage_name: string | null;
|
chainage_name: string | null;
|
||||||
status: TicketStatus;
|
status: TicketStatus;
|
||||||
default_defect_class: string;
|
default_defect_class: string | null;
|
||||||
assigned_to_name: string | null;
|
assigned_to_name: string | null;
|
||||||
detection_count: number;
|
detection_count: number;
|
||||||
created_by_name: string | null;
|
created_by_name: string | null;
|
||||||
|
|||||||
Reference in New Issue
Block a user