import request from '@/utils/request' // 获取BOM列表 export function getBomList(params?: any) { return request({ url: '/v1/bom/list', method: 'get', params }) } // 获取BOM分组摘要(懒加载用,轻量 GROUP BY category + COUNT) export function getBomSummary(params?: { keyword?: string }) { return request({ url: '/v1/bom/summary', method: 'get', params }) } // 获取BOM详情(含库存信息) export function getBomWithStock(bomNo: string, version?: string) { const trimmed = bomNo.replace(/^\/+|\/+$/g, ''); const encoded = encodeURIComponent(trimmed); return request({ url: `/v1/bom/stock/${encoded}`, method: 'get', params: version ? { version } : {} }) } // 获取某物料作为父件时的启用 BOM 版本清单(自制件子件版本下拉数据源) export function getChildBomVersions(childId: number) { return request({ url: '/v1/bom/self-bom-versions', method: 'get', params: { child_id: childId } }) } // 获取BOM详情 export function getBomDetail(bomNo: string, version?: string) { // 去除首尾斜杠,保留中间斜杠并进行 URL 编码 const trimmed = bomNo.replace(/^\/+|\/+$/g, ''); const encoded = encodeURIComponent(trimmed); const url = version ? `/v1/bom/detail/${encoded}?version=${encodeURIComponent(version)}` : `/v1/bom/detail/${encoded}`; return request({ url, method: 'get' }) } // 仅更新 BOM 启用/停用状态(查看/只读视图的开关专用,不触发整表保存) export function updateBomStatus(data: { bom_no: string; version: string; is_enabled: boolean }) { return request({ url: '/v1/bom/status', method: 'post', data }) } // 归档/取消归档(仍启用可编辑,但不再作为其它 BOM 子件的引用候选) export function updateBomArchive(data: { bom_no: string; version: string; is_archived: boolean }) { return request({ url: '/v1/bom/archive', method: 'post', data }) } // 保存BOM export function saveBom(data: any) { return request({ url: '/v1/bom/save', method: 'post', data }) } // 删除BOM export function deleteBom(bomNo: string, version: string) { // 去除首尾斜杠,保留中间斜杠并进行 URL 编码 const trimmed = bomNo.replace(/^\/+|\/+$/g, ''); const encoded = encodeURIComponent(trimmed); return request({ url: `/v1/bom/${encoded}?version=${encodeURIComponent(version)}`, method: 'delete' }) } // ========================================== // BOM 草稿相关接口 // ========================================== // 1. 暂存草稿 export function saveDraft(data: any) { return request({ url: '/v1/bom/draft/save', method: 'post', data }) } // 2. 读取草稿详情 export function getDraftDetail(params: { bom_no: string; version?: string }) { return request({ url: '/v1/bom/draft/detail', method: 'get', params }) } // 3. 发布草稿 export function publishDraft(data: { bom_no: string; version: string }) { return request({ url: '/v1/bom/draft/publish', method: 'post', data }) }