/** * 换货管理 API 服务 */ import { BaseService } from '../BaseService' import type { BaseResponse } from '@/types/api' // 换货单查询参数 export interface ExchangeQueryParams { page?: number page_size?: number status?: number // 换货状态 flow_type?: string // 流程类型(shipping/direct) old_asset_keyword?: string // 旧资产关键词(ICCID、接入号、虚拟号、IMEI、SN) new_asset_keyword?: string // 新资产关键词(ICCID、接入号、虚拟号、IMEI、SN) created_at_start?: string // 创建时间起始 created_at_end?: string // 创建时间结束 } // 创建换货单请求 export interface CreateExchangeRequest { exchange_reason: string // 换货原因 old_asset_type: string // 旧资产类型 (iot_card 或 device) old_identifier: string // 旧资产标识符(ICCID/虚拟号/IMEI/SN) flow_type?: string // 流程类型(shipping/direct),默认 shipping new_identifier?: string // 新资产标识符(direct 时必填) migrate_data?: boolean // 是否迁移数据(默认 false) remark?: string // 备注(可选) } // 换货单响应 export interface ExchangeResponse { id: number exchange_no: string exchange_reason: string old_asset_type: string old_asset_id: number old_asset_identifier: string new_asset_type?: string | null new_asset_id?: number | null new_asset_identifier?: string | null status: number // 换货状态(1:待填写信息, 2:待发货, 3:已发货待确认, 4:已完成, 5:已取消) status_name?: string status_text: string flow_type: string // 流程类型(shipping/direct) flow_type_name: string // 流程类型名称 shipped_at?: string | null // 发货时间(仅 shipping 发货后有值) completed_at?: string | null // 换货完成时间 recipient_name?: string recipient_phone?: string recipient_address?: string express_company?: string express_no?: string inherited_shop_id?: number | null inherited_shop_name?: string | null submitter_name?: string | null // 提交人名称 approval_source?: 'none' | 'legacy' | 'wecom' | null // 审批来源 approval_status?: string | null // 审批状态 approval_status_name?: string | null // 审批状态名称 current_approver_summary?: string | null // 当前审批人摘要 processing_status?: string | null // 业务处理状态 processing_status_name?: string | null // 业务处理状态名称 remark?: string created_at: string updated_at: string } // 换货发货请求 export interface ShipExchangeRequest { express_company: string // 快递公司 express_no: string // 快递单号 migrate_data: boolean // 是否迁移数据 new_identifier: string // 新资产标识符(ICCID/虚拟号/IMEI/SN) } // 取消换货请求 export interface CancelExchangeRequest { remark?: string // 取消备注(可选) } export class ExchangeService extends BaseService { /** * 获取换货单列表 * GET /api/admin/exchanges * @param params 查询参数 */ static getExchanges( params?: ExchangeQueryParams ): Promise< BaseResponse<{ items: ExchangeResponse[]; page: number; page_size: number; total: number }> > { return this.get< BaseResponse<{ items: ExchangeResponse[]; page: number; page_size: number; total: number }> >('/api/admin/exchanges', params) } /** * 创建换货单 * POST /api/admin/exchanges * @param data 创建参数 */ static createExchange( data: CreateExchangeRequest, config?: Record ): Promise> { return this.post>('/api/admin/exchanges', data, config) } /** * 获取换货单详情 * GET /api/admin/exchanges/{id} * @param id 换货单ID */ static getExchangeDetail(id: number): Promise> { return this.getOne(`/api/admin/exchanges/${id}`) } /** * 取消换货 * POST /api/admin/exchanges/{id}/cancel * @param id 换货单ID * @param data 取消参数 */ static cancelExchange(id: number, data?: CancelExchangeRequest): Promise { return this.post(`/api/admin/exchanges/${id}/cancel`, data || {}) } /** * 确认换货完成 * POST /api/admin/exchanges/{id}/complete * @param id 换货单ID */ static completeExchange(id: number): Promise> { return this.post>(`/api/admin/exchanges/${id}/complete`, {}) } /** * 旧资产转新 * POST /api/admin/exchanges/{id}/renew * @param id 换货单ID */ static renewExchange(id: number): Promise { return this.post(`/api/admin/exchanges/${id}/renew`, {}) } /** * 换货发货 * POST /api/admin/exchanges/{id}/ship * @param id 换货单ID * @param data 发货参数 */ static shipExchange( id: number, data: ShipExchangeRequest ): Promise> { return this.post>(`/api/admin/exchanges/${id}/ship`, data) } }