Files
KCGL/inventory-web/src/api/purchase.ts
yueli 6f2f077751 feat(purchase): 采购页搜索区对齐出库记录版式
原顶部工具栏是裸 div + 状态单选,现改为 el-form :inline 版式,与出库记录 /
报废记录一致:

  状态      全部 / 待审批 / 已通过 / 已驳回 / 已完成 / 已完结
  搜索      [搜索类型下拉] + 关键词输入,500ms 防抖
  采购日期  日期范围选择
  按钮      查询 / 重置 / 新建采购申请

交互细节:
· 搜索类型切换、清空输入时立即查询(取消防抖等待);
· 「重置」恢复默认的「待审批」状态(该页默认视图),而非清成"全部"——
  与页面初始状态保持一致;
· 重置同时清空关键词、搜索类型、日期范围。

api/purchase.ts 的 getPurchaseList 补充新参数的类型定义。
2026-09-10 17:41:29 +08:00

166 lines
3.6 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
}
// 获取采购申请列表
//
// 搜索参数语义与出库/报废记录保持一致:
// search_type: all / no(单号) / name(物料名称) / spec_model / requester(申请人)
// start_date / end_date: 按采购日期过滤
export function getPurchaseList(params: {
page?: number
limit?: number
status?: number | ''
keyword?: string
search_type?: 'all' | 'no' | 'name' | 'spec_model' | 'requester'
start_date?: string
end_date?: string
}) {
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
})
}