/** * 工单管理端 REST(命名空间 jio/v1/admin)。 * * TicketRestAdmin 把三块字典 CRUD(工单状态 / 部门 / 预设回复)挂在 * jio/v1/admin 下,全部要求 manage_options。api 客户端的 baseUrl 只到 * jio/v1,因此这里必须用 /jio/ 全路径形式(joinRestUrl 的 * startsWith('/jio/') 分支会原样拼接,不再追加 base 前缀)。 */ const ADMIN = '/jio/v1/admin/tickets' export const ticketsApiMethods = { /* ---------------- 工单状态 ---------------- */ listTicketStatuses() { return this.request(`${ADMIN}/statuses`) }, createTicketStatus(data) { return this.request(`${ADMIN}/statuses`, { method: 'POST', body: JSON.stringify(data) }) }, updateTicketStatus(id, data) { return this.request(`${ADMIN}/statuses/${id}`, { method: 'POST', body: JSON.stringify(data) }) }, deleteTicketStatus(id) { return this.request(`${ADMIN}/statuses/${id}/delete`, { method: 'POST', body: '{}' }) }, /* ---------------- 工单部门 ---------------- */ listTicketTypes() { return this.request(`${ADMIN}/types`) }, createTicketType(data) { return this.request(`${ADMIN}/types`, { method: 'POST', body: JSON.stringify(data) }) }, updateTicketType(id, data) { return this.request(`${ADMIN}/types/${id}`, { method: 'POST', body: JSON.stringify(data) }) }, deleteTicketType(id) { return this.request(`${ADMIN}/types/${id}/delete`, { method: 'POST', body: '{}' }) }, /* ---------------- 预设回复 ---------------- */ listTicketPrereplies() { return this.request(`${ADMIN}/prereplies`) }, createTicketPrereply(data) { return this.request(`${ADMIN}/prereplies`, { method: 'POST', body: JSON.stringify(data) }) }, updateTicketPrereply(id, data) { return this.request(`${ADMIN}/prereplies/${id}`, { method: 'POST', body: JSON.stringify(data) }) }, deleteTicketPrereply(id) { return this.request(`${ADMIN}/prereplies/${id}/delete`, { method: 'POST', body: '{}' }) }, /** 排序入参必须是全量 ID,数量不符后端直接拒绝。 */ reorderTicketPrereplies(ids) { return this.request(`${ADMIN}/prereplies/order`, { method: 'POST', body: JSON.stringify({ ids }) }) }, }