import type { PageParam, PageResult } from '@vben/request';
|
|
import { requestClient } from '#/api/request';
|
|
export namespace AftersalesTicketApi {
|
/** 工单明细行 */
|
export interface TicketItem {
|
id?: number;
|
ticketId?: number;
|
saleOrderItemId?: number;
|
itemId?: number;
|
itemCode?: string;
|
itemName?: string;
|
batchId?: number;
|
batchCode?: string;
|
saleQuantity?: number;
|
returnQuantity?: number;
|
needRepair?: boolean;
|
needReturn?: boolean;
|
remark?: string;
|
}
|
|
/** 售后工单 */
|
export interface Ticket {
|
id?: number;
|
no?: string;
|
name: string;
|
customerId?: number;
|
customerName?: string;
|
contactId?: number;
|
contactName?: string;
|
saleOrderId?: number;
|
saleOrderNo?: string;
|
contractId?: number;
|
issueType?: number;
|
issueCategory?: string;
|
issueDescription?: string;
|
severityLevel?: number;
|
status?: number;
|
ownerUserId?: number;
|
ownerUserName?: string;
|
handlerUserId?: number;
|
handlerUserName?: string;
|
processInstanceId?: string;
|
returnId?: number;
|
repairId?: number;
|
resolvedTime?: string;
|
closedTime?: string;
|
remark?: string;
|
creator?: string;
|
createTime?: string;
|
updater?: string;
|
updateTime?: string;
|
/** 附件 blobId 列表(保存时传入) */
|
blobIds?: number[];
|
/** 附件列表(详情时返回) */
|
attachmentList?: { id: number; name?: string; url?: string }[];
|
items?: TicketItem[];
|
}
|
}
|
|
/** 创建售后工单 */
|
export function createTicket(data: AftersalesTicketApi.Ticket) {
|
return requestClient.post<number>('/aftersales/ticket/create', data);
|
}
|
|
/** 更新售后工单 */
|
export function updateTicket(data: AftersalesTicketApi.Ticket) {
|
return requestClient.put<boolean>('/aftersales/ticket/update', data);
|
}
|
|
/** 删除售后工单 */
|
export function deleteTicket(id: number) {
|
return requestClient.delete<boolean>('/aftersales/ticket/delete', {
|
params: { id },
|
});
|
}
|
|
/** 获取售后工单详情 */
|
export function getTicket(id: number) {
|
return requestClient.get<AftersalesTicketApi.Ticket>(
|
`/aftersales/ticket/get?id=${id}`,
|
);
|
}
|
|
/** 分页查询售后工单 */
|
export function getTicketPage(params: PageParam) {
|
return requestClient.get<PageResult<AftersalesTicketApi.Ticket>>(
|
'/aftersales/ticket/page',
|
{ params },
|
);
|
}
|
|
/** 分配处理人 */
|
export function assignTicket(id: number, handlerUserId: number) {
|
return requestClient.post<boolean>('/aftersales/ticket/assign', null, {
|
params: { id, handlerUserId },
|
});
|
}
|
|
/** 问题判定 */
|
export function classifyTicket(params: {
|
id: number;
|
issueType: number;
|
issueCategory?: string;
|
severityLevel?: number;
|
}) {
|
return requestClient.post<boolean>('/aftersales/ticket/classify', null, {
|
params,
|
});
|
}
|
|
/** 完结工单 */
|
export function resolveTicket(id: number) {
|
return requestClient.put<boolean>('/aftersales/ticket/resolve', null, {
|
params: { id },
|
});
|
}
|
|
/** 关闭工单 */
|
export function closeTicket(id: number) {
|
return requestClient.put<boolean>('/aftersales/ticket/close', null, {
|
params: { id },
|
});
|
}
|
|
/** 取消工单 */
|
export function cancelTicket(id: number) {
|
return requestClient.put<boolean>('/aftersales/ticket/cancel', null, {
|
params: { id },
|
});
|
}
|