原顶部工具栏是裸 div + 状态单选,现改为 el-form :inline 版式,与出库记录 / 报废记录一致: 状态 全部 / 待审批 / 已通过 / 已驳回 / 已完成 / 已完结 搜索 [搜索类型下拉] + 关键词输入,500ms 防抖 采购日期 日期范围选择 按钮 查询 / 重置 / 新建采购申请 交互细节: · 搜索类型切换、清空输入时立即查询(取消防抖等待); · 「重置」恢复默认的「待审批」状态(该页默认视图),而非清成"全部"—— 与页面初始状态保持一致; · 重置同时清空关键词、搜索类型、日期范围。 api/purchase.ts 的 getPurchaseList 补充新参数的类型定义。
166 lines
3.6 KiB
TypeScript
166 lines
3.6 KiB
TypeScript
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
|
||
})
|
||
}
|