init: SR System — Helpdesk & ITAM Portal

This commit is contained in:
pray4skylark
2026-06-02 13:50:39 +09:00
commit 832c9f096f
262 changed files with 30470 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import apiClient from './apiClient';
import type { ApiResponse, Page, IssueTicket, TicketComment } from '@/types';
export interface TicketFilterParams {
category?: string;
priority?: string;
status?: string;
searchKeyword?: string;
page?: number;
size?: number;
}
const ticketService = {
getTickets(params?: TicketFilterParams) {
return apiClient.get<ApiResponse<Page<IssueTicket>>>('/tickets', { params });
},
getTicket(ticketId: number) {
return apiClient.get<ApiResponse<IssueTicket>>(`/tickets/${ticketId}`);
},
createTicket(data: Partial<IssueTicket>) {
return apiClient.post<ApiResponse<IssueTicket>>('/tickets', data);
},
updateStatus(ticketId: number, status: string, assigneeId?: number) {
return apiClient.put<ApiResponse<IssueTicket>>(`/tickets/${ticketId}/status`, null, {
params: { status, assigneeId },
});
},
resolveTicket(ticketId: number, resolutionNote: string) {
return apiClient.put<ApiResponse<IssueTicket>>(`/tickets/${ticketId}/resolve`, { resolutionNote });
},
deleteTicket(ticketId: number) {
return apiClient.delete<ApiResponse<void>>(`/tickets/${ticketId}`);
},
getComments(ticketId: number) {
return apiClient.get<ApiResponse<TicketComment[]>>(`/tickets/${ticketId}/comments`);
},
addComment(ticketId: number, commentText: string, attachedFileUrl?: string) {
return apiClient.post<ApiResponse<TicketComment>>(`/tickets/${ticketId}/comments`, {
commentText,
attachedFileUrl,
});
},
deleteComment(ticketId: number, commentId: number) {
return apiClient.delete<ApiResponse<void>>(`/tickets/${ticketId}/comments/${commentId}`);
},
};
export default ticketService;