- Go Gin 后端 (19个源文件): 认证、工单CRUD、GLM AI分析、状态流转、备注、操作日志 - Arco Design Vue 前端: 登录、工单列表/详情/创建、AI分析触发与确认 - MySQL 5表: ticket_user/ticket_info/ticket_ai_analysis/ticket_operation_log/ticket_note - 部署: tk.1216.top HTTPS, Nginx反代
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import axiosInstance from './interceptor'
|
|
import type {
|
|
Ticket,
|
|
TicketFilter,
|
|
TicketListResponse,
|
|
CreateTicketRequest,
|
|
UpdateTicketRequest,
|
|
AIAnalysisResponse,
|
|
TicketNote,
|
|
CreateNoteRequest
|
|
} from '@/types'
|
|
|
|
export function getTicketList(filter: TicketFilter) {
|
|
return axiosInstance.get('/tickets', { params: filter }) as Promise<TicketListResponse>
|
|
}
|
|
|
|
export function getTicketDetail(id: number) {
|
|
return axiosInstance.get(`/tickets/${id}`) as Promise<Ticket>
|
|
}
|
|
|
|
export function createTicket(data: CreateTicketRequest) {
|
|
return axiosInstance.post('/tickets', data) as Promise<Ticket>
|
|
}
|
|
|
|
export function updateTicket(id: number, data: UpdateTicketRequest) {
|
|
return axiosInstance.put(`/tickets/${id}`, data) as Promise<Ticket>
|
|
}
|
|
|
|
export function updateTicketStatus(id: number, status: number) {
|
|
return axiosInstance.put(`/tickets/${id}/status`, { status }) as Promise<Ticket>
|
|
}
|
|
|
|
export function analyzeTicket(ticketId: number) {
|
|
return axiosInstance.post(`/tickets/${ticketId}/analyze`) as Promise<AIAnalysisResponse>
|
|
}
|
|
|
|
export function getAnalysis(ticketId: number) {
|
|
return axiosInstance.get(`/tickets/${ticketId}/analysis`) as Promise<AIAnalysisResponse>
|
|
}
|
|
|
|
export function confirmAnalysis(ticketId: number, data: Partial<AIAnalysisResponse>) {
|
|
return axiosInstance.put(`/tickets/${ticketId}/analysis`, data) as Promise<AIAnalysisResponse>
|
|
}
|
|
|
|
export function getTicketNotes(ticketId: number) {
|
|
return axiosInstance.get(`/tickets/${ticketId}/notes`) as Promise<TicketNote[]>
|
|
}
|
|
|
|
export function createNote(ticketId: number, data: CreateNoteRequest) {
|
|
return axiosInstance.post(`/tickets/${ticketId}/notes`, data) as Promise<TicketNote>
|
|
}
|
|
|
|
export function getTicketLogs(ticketId: number) {
|
|
return axiosInstance.get(`/tickets/${ticketId}/logs`) as Promise<any[]>
|
|
}
|