94 lines
3.4 KiB
JavaScript
94 lines
3.4 KiB
JavaScript
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<Object|null>} 发货单详情对象
|
||
*/
|
||
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)
|
||
}
|