Files
KCGL/inventory-web/src/api/bom.ts
yueli 02f74278df feat(bom): 归档业务闭环——状态筛选+归档/取消归档入口
- get_bom_list/get_bom_summary 状态过滤支持 archived,enabled 语义改为“启用且未归档”
- get_bom_list 输出补 is_archived;新增 update_archived 与 POST /bom/archive(整组切换归档、清缓存、审计)
- “未指定版本自动取最新”硬化为仅认启用且未归档(get_bom_detail / get_bom_no_by_parent)
- 前端:状态按钮组加“归档”;列表状态列区分归档;操作列加“归档/取消归档”按钮
2026-09-08 11:13:38 +08:00

111 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 })
}