import request from '@/utils/request' // 购物车商品项接口 export interface CartItem { id: number sku: string name: string spec_model: string source_table: string stock_quantity: number available_quantity: number barcode: string price: number // 单价 out_quantity: number // 本次出库数量 } // 提交出库单的数据结构 export interface OutboundSubmitData { items: Array<{ sku: string source_table: string stock_id: number barcode: string quantity: number price: number }> outbound_type: string consumer_name: string operator_name: string signature_path: string // 上传后返回的图片路径 remark?: string } export interface ScanResult { id: number sku: string name: string spec_model: string source_table: string // 'stock_buy' | 'stock_product' ... stock_quantity: number available_quantity: number batch_number?: string warehouse_location?: string barcode?: string price?: number // 扫描返回的价格 } /** * 根据条码获取库存物品详情 * @param barcode 扫描到的条码 */ export function getStockByBarcode(barcode: string) { return request({ url: '/v1/outbound/scan', method: 'get', params: { barcode } }) } /** * 提交出库单 (批量) */ export function submitOutbound(data: OutboundSubmitData) { return request({ url: '/v1/outbound', method: 'post', data }) } /** * 获取出库记录列表 */ export function getOutboundList(params: any) { return request({ url: '/v1/outbound', method: 'get', params }) } /** * 提交出库申请单(申请人 → 审批流) */ export function submitOutboundRequest(data: { items: Array<{ material_type?: string name: string spec_model: string warehouse_location?: string quantity: number }> remark: string }) { return request({ url: '/v1/outbound/request', method: 'post', data }) } // 出库申请预检:判断所选物料是否需审批 export function checkOutboundApproval(data: { items: Array<{ name?: string; spec_model?: string }> }) { return request({ url: '/v1/outbound/request/check-approval', method: 'post', data }) } /** * 获取出库审批申请单列表 * @param params 支持 status, page, limit */ export function getApprovalRequestList(params: { status?: number | ''; page?: number; limit?: number }) { return request({ url: '/v1/outbound/request', method: 'get', params }) } /** * 审批(通过 / 驳回)出库申请单 * @param id 审批单ID * @param data action: 'approve' | 'reject',reject 时需传 reject_reason */ export function approveRequest(id: number, data: { action: 'approve' | 'reject'; reject_reason?: string }) { return request({ url: `/v1/outbound/request/${id}/approve`, method: 'patch', data }) } /** * 手动完结/作废已通过的出库申请单(状态 1-已通过 → 4-已完结) * @param id 审批单ID */ export function closeRequest(id: number) { return request({ url: `/v1/outbound/request/${id}/close`, method: 'post' }) } /** * BOM 匹配库存(替代前端 while(true) 全量加载) * 根据 BOM 子件的 base_id 列表,服务端精确查询有库存的记录 */ export function bomMatchStock(childIds: number[]) { return request({ url: '/v1/outbound/bom-match-stock', method: 'post', data: { child_ids: childIds } }) }