Files
KCGL/inventory-web/src/api/purchase.ts
yueli 1000deda2f feat(purchase): 采购单号改为 批次-批内序号 格式,显式体现同批
按用户原始逻辑还原并扩展:
- 单号格式: PUR-日期-时间-批次-批内序号
  例: PUR-20260831-1021-0001-0001(今日第1次采购的第1条)
- generate_request_no 支持 batch_seq 参数生成批次+批内序号
- 新增 GET /purchase/next-batch-seq 返回今日下一个批次号
- 前端提交时获取批次号,同批所有行共享,循环提交生成连续批内序号
- 批次识别: 单号去掉末尾 -批内序号 即为批次前缀
- 保留旧格式兼容(无 batch_seq 时回退 PUR-日期-时间-流水)
2026-08-31 13:54:03 +08:00

158 lines
3.3 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'
export interface PurchaseItem {
id?: number
request_no?: string
base_id?: number
name: string
spec_model?: string
quantity: number
purchase_date: string
supplier_link?: string
remark?: string
images?: string[]
unit_price?: number
total_price?: number
tax_rate?: number
status: number
status_text?: string
requester_id?: number
requester_name?: string
requester_email?: string
approver_id?: number
approver_name?: string
approved_at?: string
reject_reason?: string
created_at?: string
updated_at?: string
// [新增] 关联物料基础信息(已审批未入库列表返回)
material?: {
id: number
company_name: string
name: string
spec_model: string
category: string
unit: string
type: string
is_inspection_required: boolean
} | null
}
export interface Approver {
id: number
username: string
email: string
role: string
}
// 获取采购申请列表
export function getPurchaseList(params: {
page?: number
limit?: number
status?: number
}) {
return request({
url: '/purchase',
method: 'get',
params
})
}
// 创建采购申请
export function createPurchase(data: PurchaseItem) {
return request({
url: '/purchase',
method: 'post',
data
})
}
// 获取采购申请详情
export function getPurchaseDetail(id: number) {
return request({
url: `/purchase/${id}`,
method: 'get'
})
}
// 审批采购申请
export function approvePurchase(id: number, data: {
action: 'approve' | 'reject'
reject_reason?: string
}) {
return request({
url: `/purchase/${id}/approve`,
method: 'patch',
data
})
}
// 批量审批采购申请(循环提交产生的多条记录可一次审批)
export function batchApprovePurchase(data: {
ids?: number[]
batch_key?: string
action: 'approve' | 'reject'
reject_reason?: string
}) {
return request({
url: '/purchase/batch-approve',
method: 'post',
data
})
}
// 按批次前缀查询同批次的采购申请记录(批次=request_no去掉末尾流水号)
export function getPurchaseByBatch(batchKey: string) {
return request({
url: `/purchase/batch/${encodeURIComponent(batchKey)}`,
method: 'get'
})
}
// 获取今日下一个采购批次号(提交一批时调用,同批所有行共享)
export function getNextBatchSeq() {
return request({
url: '/purchase/next-batch-seq',
method: 'get'
})
}
// 获取可选审批人列表
export function getPurchaseApprovers() {
return request({
url: '/purchase/approvers',
method: 'get'
})
}
// 根据名称/规格自动补全
export function autoFillPurchase(keyword: string) {
return request({
url: '/purchase/auto-fill',
method: 'get',
params: { keyword }
})
}
// 物料基础信息搜索(分页),用于采购申请弹窗
export function searchMaterialPurchase(keyword: string, page: number = 1) {
return request({
url: '/purchase/search-material',
method: 'get',
params: { keyword, page }
})
}
// [新增] 获取已审批通过且未入库的采购单列表(供库管按单入库使用)
export function getApprovedUnstockedRequests(params: {
page?: number
limit?: number
keyword?: string
}) {
return request({
url: '/purchase/approved-unstocked',
method: 'get',
params
})
}