fix(inbound/buy): 采购入库表单批号续号改用精准接口
- checkHistoryAndSetMode 改调 /inbound/buy/latest-record 续号,不再依赖 getBuyList 前1000条 - 采购单导入“仅有 base_id”分支也自动续批号并带历史库位
This commit is contained in:
@ -54,6 +54,15 @@ export function searchMaterialBase(keyword: string, page: number = 1, company?:
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 6.1 按物料精准取“最近一次采购入库记录”(批号自增用;不再全局拉前 N 条再前端过滤)
|
||||||
|
export function getBuyLatestRecord(baseId: number) {
|
||||||
|
return request({
|
||||||
|
url: '/inbound/buy/latest-record',
|
||||||
|
method: 'get',
|
||||||
|
params: { base_id: baseId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 7. 文件上传
|
// 7. 文件上传
|
||||||
export function uploadFile(data: FormData) {
|
export function uploadFile(data: FormData) {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@ -799,7 +799,8 @@ import {
|
|||||||
getSupplierSuggestions,
|
getSupplierSuggestions,
|
||||||
getUserSuggestions,
|
getUserSuggestions,
|
||||||
getLocationSuggestions,
|
getLocationSuggestions,
|
||||||
getFilterOptions
|
getFilterOptions,
|
||||||
|
getBuyLatestRecord
|
||||||
} from '@/api/inbound/buy'
|
} from '@/api/inbound/buy'
|
||||||
import { getApprovedUnstockedRequests } from '@/api/purchase'
|
import { getApprovedUnstockedRequests } from '@/api/purchase'
|
||||||
import {getLabelPreview, executePrint} from '@/api/common/print'
|
import {getLabelPreview, executePrint} from '@/api/common/print'
|
||||||
@ -1352,24 +1353,25 @@ const rules = computed(() => {
|
|||||||
|
|
||||||
const checkHistoryAndSetMode = async (baseId: number) => {
|
const checkHistoryAndSetMode = async (baseId: number) => {
|
||||||
try {
|
try {
|
||||||
const res: any = await getBuyList({page: 1, pageSize: 1000})
|
// ★ 改用后端“按物料精准取最近一条”接口(O(1)、不分页、不受历史行数/前1000条截断影响)
|
||||||
const historyItems = (res.data.items || []).filter((item: any) => item.base_id === baseId)
|
const res: any = await getBuyLatestRecord(baseId)
|
||||||
|
const rec = res?.data || {}
|
||||||
|
|
||||||
if (historyItems.length > 0) {
|
if (rec.has_history) {
|
||||||
modeLocked.value = true
|
modeLocked.value = true
|
||||||
const latest = historyItems.sort((a: any, b: any) => b.id - a.id)[0]
|
if (rec.mode === 'serial') {
|
||||||
if (latest.serial_number) {
|
|
||||||
entryMode.value = 'serial'
|
entryMode.value = 'serial'
|
||||||
form.serial_number = ''
|
form.serial_number = ''
|
||||||
form.batch_number = ''
|
form.batch_number = ''
|
||||||
} else {
|
} else {
|
||||||
entryMode.value = 'batch'
|
entryMode.value = 'batch'
|
||||||
form.serial_number = ''
|
form.serial_number = ''
|
||||||
form.batch_number = incrementBatchNumber(latest.batch_number || '000000')
|
form.batch_number = incrementBatchNumber(rec.latest_batch || '000000')
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
modeLocked.value = false
|
modeLocked.value = false
|
||||||
entryMode.value = 'batch'
|
entryMode.value = 'batch'
|
||||||
|
form.serial_number = ''
|
||||||
form.batch_number = '000001'
|
form.batch_number = '000001'
|
||||||
}
|
}
|
||||||
if (formRef.value) {
|
if (formRef.value) {
|
||||||
@ -1379,6 +1381,7 @@ const checkHistoryAndSetMode = async (baseId: number) => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
modeLocked.value = false
|
modeLocked.value = false
|
||||||
entryMode.value = 'batch'
|
entryMode.value = 'batch'
|
||||||
|
form.serial_number = ''
|
||||||
form.batch_number = '000001'
|
form.batch_number = '000001'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1916,10 +1919,11 @@ const confirmPurchaseImport = () => {
|
|||||||
isInspectionRequired: mat.is_inspection_required
|
isInspectionRequired: mat.is_inspection_required
|
||||||
}]
|
}]
|
||||||
} else if (po.base_id) {
|
} else if (po.base_id) {
|
||||||
// 如果 material 为空但 base_id 有值,尝试通过 base_id 查询
|
// 如果 material 为空但 base_id 有值:仍按 base_id 续批号/带历史库位,物料详情让用户手动搜索确认
|
||||||
// 这里简单处理:直接设置 base_id 让用户手动搜索
|
|
||||||
form.base_id = po.base_id
|
form.base_id = po.base_id
|
||||||
ElMessage.info('该采购单未附带物料详情,已填充 base_id,请手动搜索物料确认')
|
checkHistoryAndSetMode(po.base_id)
|
||||||
|
fetchLastLocation(po.base_id)
|
||||||
|
ElMessage.info('该采购单未附带物料详情,已按物料填充批号/库位,请手动搜索确认物料信息')
|
||||||
} else {
|
} else {
|
||||||
ElMessage.warning('该采购单未关联基础物料,无法自动填充物料信息')
|
ElMessage.warning('该采购单未关联基础物料,无法自动填充物料信息')
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user