Files
tiantian-system/app/api/ticket/model/index.ts
2026-04-08 17:10:58 +08:00

104 lines
2.3 KiB
TypeScript

/** 工单优先级 */
export type TicketPriority = 'low' | 'normal' | 'high' | 'urgent'
/** 工单状态 */
export type TicketStatus = 'pending' | 'assigned' | 'processing' | 'resolved' | 'closed' | 'rejected'
/** 工单分类 */
export type TicketCategory = 'bug' | 'feature' | 'consultation' | 'complaint' | 'other'
/** 工单列表项 */
export interface Ticket {
ticketId: number
ticketNo: string // 工单编号 TK-202403xxxxxx
title: string
content: string
productId: number // 关联应用ID
productName?: string // 应用名称(前端展示用)
category: TicketCategory
priority: TicketPriority
status: TicketStatus
attachments?: string[] // 附件URL列表
// 提交方
submitUserId: number
submitUserName?: string
submitUserAvatar?: string
// 分配方
assigneeId?: number
assigneeName?: string
assigneeAvatar?: string
// 时间
createTime: string
updateTime: string
resolvedTime?: string
closedTime?: string
// 回复数
replyCount: number
// 是否已读(对当前用户)
hasUnread?: boolean
}
/** 工单回复 */
export interface TicketReply {
replyId: number
ticketId: number
content: string
attachments?: string[]
userId: number
userName?: string
userAvatar?: string
isStaff: boolean // 是否是客服/技术人员
createTime: string
}
/** 提交工单表单 */
export interface TicketSubmitForm {
title: string
content: string
productId: number
category: TicketCategory
priority: TicketPriority
attachments?: string[]
}
/** 工单回复表单 */
export interface TicketReplyForm {
ticketId: number
content: string
attachments?: string
}
/** 分配工单表单 */
export interface TicketAssignForm {
ticketId: number
assigneeId: number
}
/** 更新状态表单 */
export interface TicketStatusForm {
ticketId: number
status: TicketStatus
remark?: string
}
/** 工单查询参数 */
export interface TicketQueryParams {
productId?: number
status?: TicketStatus
category?: TicketCategory
priority?: TicketPriority
assigneeId?: number
keywords?: string
page?: number
limit?: number
}
/** 工单统计 */
export interface TicketStats {
total: number
pending: number
processing: number
resolved: number
closed: number
}