2026-02-12 09:43:51 +08:00
|
|
|
|
import request from '@/utils/request'
|
|
|
|
|
|
|
|
|
|
|
|
// 获取BOM列表
|
|
|
|
|
|
export function getBomList(params?: any) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/list',
|
|
|
|
|
|
method: 'get',
|
|
|
|
|
|
params
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-07-15 17:37:57 +08:00
|
|
|
|
// 获取BOM分组摘要(懒加载用,轻量 GROUP BY category + COUNT)
|
|
|
|
|
|
export function getBomSummary(params?: { keyword?: string }) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/summary',
|
|
|
|
|
|
method: 'get',
|
|
|
|
|
|
params
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-25 15:21:43 +08:00
|
|
|
|
// 获取BOM详情(含库存信息)
|
2026-09-02 18:39:17 +08:00
|
|
|
|
export function getBomWithStock(bomNo: string, version?: string) {
|
2026-06-25 15:21:43 +08:00
|
|
|
|
const trimmed = bomNo.replace(/^\/+|\/+$/g, '');
|
|
|
|
|
|
const encoded = encodeURIComponent(trimmed);
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: `/v1/bom/stock/${encoded}`,
|
2026-09-02 18:39:17 +08:00
|
|
|
|
method: 'get',
|
|
|
|
|
|
params: version ? { version } : {}
|
2026-06-25 15:21:43 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-09-08 10:14:47 +08:00
|
|
|
|
// 获取某物料作为父件时的启用 BOM 版本清单(自制件子件版本下拉数据源)
|
|
|
|
|
|
export function getChildBomVersions(childId: number) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/self-bom-versions',
|
|
|
|
|
|
method: 'get',
|
|
|
|
|
|
params: { child_id: childId }
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-12 09:43:51 +08:00
|
|
|
|
// 获取BOM详情
|
2026-03-06 10:30:04 +08:00
|
|
|
|
export function getBomDetail(bomNo: string, version?: string) {
|
2026-02-28 15:40:59 +08:00
|
|
|
|
// 去除首尾斜杠,保留中间斜杠并进行 URL 编码
|
2026-02-28 15:38:02 +08:00
|
|
|
|
const trimmed = bomNo.replace(/^\/+|\/+$/g, '');
|
2026-02-28 15:40:59 +08:00
|
|
|
|
const encoded = encodeURIComponent(trimmed);
|
2026-03-06 10:30:04 +08:00
|
|
|
|
const url = version
|
|
|
|
|
|
? `/v1/bom/detail/${encoded}?version=${encodeURIComponent(version)}`
|
|
|
|
|
|
: `/v1/bom/detail/${encoded}`;
|
2026-02-12 09:43:51 +08:00
|
|
|
|
return request({
|
2026-03-06 10:30:04 +08:00
|
|
|
|
url,
|
2026-02-12 09:43:51 +08:00
|
|
|
|
method: 'get'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-09-08 10:14:47 +08:00
|
|
|
|
// 仅更新 BOM 启用/停用状态(查看/只读视图的开关专用,不触发整表保存)
|
|
|
|
|
|
export function updateBomStatus(data: { bom_no: string; version: string; is_enabled: boolean }) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/status',
|
|
|
|
|
|
method: 'post',
|
|
|
|
|
|
data
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-09-08 11:13:38 +08:00
|
|
|
|
// 归档/取消归档(仍启用可编辑,但不再作为其它 BOM 子件的引用候选)
|
|
|
|
|
|
export function updateBomArchive(data: { bom_no: string; version: string; is_archived: boolean }) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/archive',
|
|
|
|
|
|
method: 'post',
|
|
|
|
|
|
data
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-12 09:43:51 +08:00
|
|
|
|
// 保存BOM
|
|
|
|
|
|
export function saveBom(data: any) {
|
|
|
|
|
|
return request({
|
|
|
|
|
|
url: '/v1/bom/save',
|
|
|
|
|
|
method: 'post',
|
|
|
|
|
|
data
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-06 09:55:59 +08:00
|
|
|
|
// 删除BOM
|
|
|
|
|
|
export function deleteBom(bomNo: string, version: string) {
|
2026-02-28 15:40:59 +08:00
|
|
|
|
// 去除首尾斜杠,保留中间斜杠并进行 URL 编码
|
|
|
|
|
|
const trimmed = bomNo.replace(/^\/+|\/+$/g, '');
|
|
|
|
|
|
const encoded = encodeURIComponent(trimmed);
|
2026-02-12 09:43:51 +08:00
|
|
|
|
return request({
|
2026-03-06 09:55:59 +08:00
|
|
|
|
url: `/v1/bom/${encoded}?version=${encodeURIComponent(version)}`,
|
2026-02-12 09:43:51 +08:00
|
|
|
|
method: 'delete'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2026-06-10 11:30:07 +08:00
|
|
|
|
|
|
|
|
|
|
// ==========================================
|
|
|
|
|
|
// 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 })
|
|
|
|
|
|
}
|