- 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) - 前端:状态按钮组加“归档”;列表状态列区分归档;操作列加“归档/取消归档”按钮
111 lines
3.2 KiB
TypeScript
111 lines
3.2 KiB
TypeScript
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 })
|
||
}
|