import request from '@/utils/request' /** 发货单 API 基础路径 */ const API_BASE = '/shipping-order' /** * 标准化列表接口返回的数据格式 * @param {Object} payload - 接口返回的原始响应对象 * @returns {{ list: Array, total: number }} 标准化后的列表数据 */ const normalizeListResponse = (payload) => { const data = payload?.data if (!data) return { list: [], total: 0 } if (Array.isArray(data)) return { list: data, total: data.length } return { list: Array.isArray(data.list) ? data.list : [], total: typeof data.total === 'number' ? data.total : 0 } } /** * 获取发货单列表(支持分页和筛选) * @param {Object} params - 请求参数 * @param {string} [params.check_no] - 搜索关键字(发货单号) * @param {number} [params.status] - 状态筛选 * @param {number} [params.customer_id] - 客户ID筛选 * @param {number} [params.warehouse_id] - 仓库ID筛选 * @param {number} [params.sales_order_id] - 销售订单ID筛选 * @param {number} [params.wave_task_id] - 波次任务ID筛选 * @param {number} [params.page] - 当前页码 * @param {number} [params.pageSize] - 每页条数 * @returns {Promise<{ list: Array, total: number }>} 标准化后的发货单列表 */ export const fetchShippingOrderList = async ({ check_no, status, customer_id, warehouse_id, sales_order_id, wave_task_id, page, pageSize }) => { const params = { check_no: check_no || undefined, status, customer_id, warehouse_id, sales_order_id, wave_task_id, page, page_size: pageSize } const response = await request.get(`${API_BASE}/list`, { params }) return normalizeListResponse(response) } /** * 获取单个发货单详情(含明细行) * @param {string|number} id - 发货单ID * @returns {Promise} 发货单详情对象 */ export const fetchShippingOrderDetail = async (id) => { const response = await request.get(`${API_BASE}/detail`, { params: { id } }) return response?.data || null } /** * 生成发货单(form-data 格式) * @param {Object} params * @param {number} params.total - 选中的出库单数量 * @param {number[]} params.outbound_order_ids - 选中的出库单 ID 数组 * @returns {Promise} */ export const createShippingOrder = async ({ total, outbound_order_ids }) => { // 手动构建 FormData,按照 outbound_order_ids[0]={id} 的格式 const formData = new FormData() formData.append('total', String(total)) outbound_order_ids.forEach((id, index) => { formData.append(`order_ids[${index}]`, String(id)) }) return request.post(`${API_BASE}/create`, formData) } /** * 更新发货单物流信息(form-data 格式) * @param {Object} params * @param {number} params.shipping_order_id - 发货单ID * @param {number} params.sales_order_item_id - 销售订单明细ID * @param {string} params.logistics_company - 物流公司 * @param {string} params.logistics_no - 物流单号 * @returns {Promise} */ export const updateShippingOrderLogistics = async ({ shipping_order_id, sales_order_item_id, logistics_company, logistics_no }) => { const formData = new FormData() formData.append('shipping_order_id', String(shipping_order_id)) formData.append('total', '1') formData.append('sales_order_item_id', String(sales_order_item_id)) formData.append('logistics_company', logistics_company) formData.append('logistics_no', logistics_no) return request.post(`${API_BASE}/update`, formData) }