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 }) } /** * 获取出库审批申请单列表 * @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 }) } // ============================================================================== // 借库审批流 API // ============================================================================== /** * 提交借库申请单(申请人 → 审批流) */ export function submitBorrowRequest(data: { items: Array<{ name: string spec_model: string warehouse_location?: string quantity: number }> remark?: string allowed_approvers?: Array<{ type: string; value: string }> approver_id?: number }) { return request({ url: '/v1/transactions/borrow/request', method: 'post', data }) } /** * 获取借库审批申请单列表 * @param params 支持 status, page, limit */ export function getBorrowApprovalList(params: { status?: number | ''; page?: number; limit?: number }) { return request({ url: '/v1/transactions/borrow/request', method: 'get', params }) } /** * 审批(通过 / 驳回)借库申请单 * @param id 审批单ID * @param data action: 'approve' | 'reject',reject 时需传 reject_reason */ export function approveBorrowRequest(id: number, data: { action: 'approve' | 'reject'; reject_reason?: string }) { return request({ url: `/v1/transactions/borrow/request/${id}/approve`, method: 'patch', data }) } /** * 执行借库扣减(审批通过后调用) * @param data approval_id + 扫码选中的物品 + 借用人信息 + 签名 */ export function dispatchBorrow(data: { approval_id: number items: Array borrower_name: string signature_path: string remark?: string expected_return_time?: string | null }) { return request({ url: '/v1/transactions/borrow/dispatch', method: 'post', data }) }