修复订单统计

This commit is contained in:
zjf committed 2026-06-09 23:09:27 +08:00
1 parent cd7f291892
commit 5f0f677268
1 file changed
+11 -126
+11 -126
View File
@@ -131,7 +131,7 @@
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="handlePageChange"
@pagination="getList"
/>
</el-card>
</div>
@@ -150,7 +150,6 @@ const exportLoading = ref(false)
const list = ref<any[]>([])
const total = ref(0)
const queryFormRef = ref()
const allData = ref<any[]>([])
const queryParams = reactive<StatisticsDetailPageReqVO>({
pageNo: 1,
@@ -165,63 +164,13 @@ const queryParams = reactive<StatisticsDetailPageReqVO>({
afterSaleStatus: undefined
})
const getAllData = async () => {
/** 查询列表(服务端分页,每次只请求当前页) */
const getList = async () => {
loading.value = true
try {
// 先获取第一页数据,了解总数
const firstPageData = await SalesStatisticsDetailsApi.getStatisticsDetailPage({
...queryParams,
pageNo: 1,
pageSize: 1000
})
console.log('API 返回的完整数据:', firstPageData)
const responseData = firstPageData as any
if (responseData && responseData.list) {
let allItems = [...responseData.list]
const totalCount = responseData.total || 0
const pageSize = 10
// 如果总数超过第一页的数量,需要继续获取剩余数据
if (totalCount > pageSize) {
const totalPages = Math.ceil(totalCount / pageSize)
console.log(`总数据 ${totalCount} 条,需要获取 ${totalPages} 页`)
// 并发获取剩余页面的数据
const promises: Promise<any>[] = []
for (let page = 2; page <= totalPages; page++) {
promises.push(
SalesStatisticsDetailsApi.getStatisticsDetailPage({
...queryParams,
pageNo: page,
pageSize: pageSize
})
)
}
const remainingPages = await Promise.all(promises)
remainingPages.forEach((pageData: any) => {
if (pageData && pageData.list) {
allItems = allItems.concat(pageData.list)
}
})
}
// 打印 createTime 参数
console.log('createTime 数据:', allItems.map((item: any) => item.createTime))
console.log(`实际获取数据条数: ${allItems.length},总数据: ${totalCount}`)
const sortedData = allItems.sort((a: any, b: any) => {
return new Date(b.createTime).getTime() - new Date(a.createTime).getTime()
})
allData.value = sortedData
total.value = totalCount
updateCurrentPageData()
} else {
console.warn('数据格式异常,未找到 list 数据', firstPageData)
}
const data = await SalesStatisticsDetailsApi.getStatisticsDetailPage(queryParams)
list.value = data?.list || []
total.value = data?.total || 0
} catch (error) {
console.error('获取数据失败:', error)
ElMessage.error('获取数据失败')
@@ -230,78 +179,15 @@ const getAllData = async () => {
}
}
const updateCurrentPageData = () => {
const pageNo = queryParams.pageNo ?? 1
const pageSize = queryParams.pageSize ?? 10
const startIndex = (pageNo - 1) * pageSize
const endIndex = startIndex + pageSize
// 检查是否有搜索条件
const hasSearchCondition = (queryParams.no && queryParams.no.trim()) ||
(queryParams.deviceId && queryParams.deviceId.trim()) ||
(queryParams.barCode && queryParams.barCode.trim()) ||
(queryParams.createTime && Array.isArray(queryParams.createTime) && queryParams.createTime.length === 2)
if (hasSearchCondition) {
handleQuery()
} else {
list.value = allData.value.slice(startIndex, endIndex)
}
}
const handlePageChange = () => {
updateCurrentPageData()
}
const handleQuery = () => {
queryParams.pageNo = 1
let filteredData = [...allData.value]
if (queryParams.no && queryParams.no.trim()) {
filteredData = filteredData.filter((item: any) =>
String(item.no || '').toLowerCase().includes(String(queryParams.no).toLowerCase())
)
}
if (queryParams.deviceId && queryParams.deviceId.trim()) {
filteredData = filteredData.filter((item: any) =>
item.deviceId && String(item.deviceId).toLowerCase().includes(queryParams.deviceId!.toLowerCase())
)
}
if (queryParams.barCode && queryParams.barCode.trim()) {
filteredData = filteredData.filter((item: any) =>
item.barCode && String(item.barCode).toLowerCase().includes(queryParams.barCode!.toLowerCase())
)
}
if (queryParams.createTime && Array.isArray(queryParams.createTime) && queryParams.createTime.length === 2) {
const startTime = new Date(queryParams.createTime[0]).getTime()
const endTime = new Date(queryParams.createTime[1]).getTime()
filteredData = filteredData.filter((item: any) => {
const itemTime = new Date(item.createTime).getTime()
return itemTime >= startTime && itemTime <= endTime
})
}
const sortedData = filteredData.sort((a: any, b: any) => {
return new Date(b.createTime).getTime() - new Date(a.createTime).getTime()
})
total.value = sortedData.length
const pageNo = queryParams.pageNo ?? 1
const pageSize = queryParams.pageSize ?? 10
const startIndex = (pageNo - 1) * pageSize
const endIndex = startIndex + pageSize
list.value = sortedData.slice(startIndex, endIndex)
getList()
}
const resetQuery = () => {
if (queryFormRef.value) {
queryFormRef.value.resetFields()
}
total.value = allData.value.length
updateCurrentPageData()
queryFormRef.value?.resetFields()
queryParams.pageNo = 1
getList()
}
const handleExport = async () => {
@@ -327,7 +213,6 @@ const handleExport = async () => {
const formatTime = (timestamp: number | string) => {
if (!timestamp) return '-'
// 如果是字符串格式的日期,直接使用;如果是数字时间戳,需要转换
const date = typeof timestamp === 'string' ? new Date(timestamp) : new Date(Number(timestamp))
if (isNaN(date.getTime())) return '-'
return date.toLocaleString('zh-CN', {
@@ -341,7 +226,7 @@ const formatTime = (timestamp: number | string) => {
}
onMounted(() => {
getAllData()
getList()
})
</script>