优化订单列表,多单号查询,支持几万单号查询
This commit is contained in:
@@ -8,7 +8,8 @@ export function listOrderSource(query) {
|
||||
// 分页参数保持在 URL 上供 TableSupport 读取;筛选条件放请求体,尤其是多单号列表。
|
||||
params: { pageNum, pageSize },
|
||||
data: filters,
|
||||
timeout: 60000
|
||||
// 单号可能多达数万个,后端分批走 Oracle 索引,留足收集时间
|
||||
timeout: 300000
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ const searchColumns = [
|
||||
label: '单号',
|
||||
prop: 'orderIdentifiers',
|
||||
component: 'textarea',
|
||||
placeholder: '订单号/运单号/转单号,一行一个',
|
||||
placeholder: '订单号/运单号/转单号,一行一个,支持数万个',
|
||||
props: {
|
||||
rows: 2,
|
||||
autosize: { minRows: 1, maxRows: 4 },
|
||||
@@ -215,6 +215,11 @@ function rowKey(row) {
|
||||
return (row && (row.orderId || row.transferOrderId || row.orgOrderId)) || ''
|
||||
}
|
||||
|
||||
/** 单次查询可接受的单号上限(后端按 900/批分批走索引,过高会明显增加等待时间) */
|
||||
const MAX_ORDER_IDENTIFIERS = 50000
|
||||
/** 产品检测走单条 SQL(Oracle IN 上限 1000),与后端保持一致 */
|
||||
const MAX_PRODUCT_CHECK_IDENTIFIERS = 1000
|
||||
|
||||
/** 长文本拆成数组:一行一条,兼容逗号/分号/顿号分隔;不按空格拆(客户名称可能含空格) */
|
||||
function splitLines(text) {
|
||||
return String(text || '')
|
||||
@@ -240,7 +245,8 @@ function buildFilterQuery(params) {
|
||||
|
||||
function queryList(params) {
|
||||
const query = buildFilterQuery(params)
|
||||
const hasIdentifier = !!(query.orderIdentifiers && query.orderIdentifiers.length)
|
||||
const identifierCount = (query.orderIdentifiers || []).length
|
||||
const hasIdentifier = identifierCount > 0
|
||||
const hasCustomer = !!(query.customerKeywords && query.customerKeywords.length)
|
||||
const hasTime = !!query.beginTime && !!query.endTime
|
||||
// 有任一单号即可查询;无单号时必须客户+提货时间
|
||||
@@ -248,6 +254,10 @@ function queryList(params) {
|
||||
ElMessage.warning('请输入单号,或选择客户和提货时间')
|
||||
return Promise.resolve({ rows: [], total: 0 })
|
||||
}
|
||||
if (identifierCount > MAX_ORDER_IDENTIFIERS) {
|
||||
ElMessage.warning(`单次最多查询 ${MAX_ORDER_IDENTIFIERS} 个单号,当前 ${identifierCount} 个,请减少后再查`)
|
||||
return Promise.resolve({ rows: [], total: 0 })
|
||||
}
|
||||
query.pageNum = params.pageNum
|
||||
query.pageSize = params.pageSize
|
||||
return listOrderSource(query)
|
||||
@@ -314,6 +324,11 @@ function handleCheckProducts() {
|
||||
ElMessage.warning('检测产品需先输入客户并选择提货时间')
|
||||
return
|
||||
}
|
||||
const identifierCount = (q.orderIdentifiers || []).length
|
||||
if (identifierCount > MAX_PRODUCT_CHECK_IDENTIFIERS) {
|
||||
ElMessage.warning(`检测产品最多支持 ${MAX_PRODUCT_CHECK_IDENTIFIERS} 个单号,请减少单号或直接在列表勾选同步`)
|
||||
return
|
||||
}
|
||||
checkLoading.value = true
|
||||
productCheckDrawerRef.value?.open(q)
|
||||
window.setTimeout(() => { checkLoading.value = false }, 300)
|
||||
|
||||
Reference in New Issue
Block a user