优化工作台和订单列表交互

This commit is contained in:
andy
2026-06-30 11:50:31 +08:00
parent 46a8bf3c07
commit d256bd2caa
4 changed files with 23 additions and 85 deletions

View File

@@ -7,7 +7,8 @@ import StatusTag from '@/components/StatusTag.vue'
import type { CommodityOrder, CommodityOrderSearch } from '@/types/order'
import { commodityTypeText } from '@/utils/constants'
const loading = ref(false)
const listLoading = ref(false)
const requesting = ref(false)
const refreshing = ref(false)
const finished = ref(false)
const records = ref<CommodityOrder[]>([])
@@ -19,25 +20,31 @@ const query = reactive<CommodityOrderSearch>({
pageSize: 10
})
const buildSearchQuery = (): CommodityOrderSearch => ({
...query,
contactPhone: keyword.value.trim(),
orderStatus: String(status.value || '')
})
const loadOrders = async (reset = false) => {
if (loading.value) return
loading.value = true
if (requesting.value) {
refreshing.value = false
return
}
requesting.value = true
listLoading.value = true
if (reset) {
query.pageNum = 1
finished.value = false
}
try {
const searchText = keyword.value.trim()
const page = await fetchOrderList({
...query,
orderStatus: status.value || undefined,
contactPhone: searchText || undefined
})
const page = await fetchOrderList(buildSearchQuery())
records.value = reset ? page.records : [...records.value, ...page.records]
finished.value = records.value.length >= page.total || page.records.length === 0
query.pageNum += 1
} finally {
loading.value = false
requesting.value = false
listLoading.value = false
refreshing.value = false
}
}
@@ -80,7 +87,7 @@ onMounted(() => loadOrders(true))
</van-tabs>
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多订单" @load="loadOrders">
<van-list v-model:loading="listLoading" :finished="finished" finished-text="没有更多订单" @load="loadOrders">
<div v-if="records.length" class="order-list">
<RouterLink v-for="order in records" :key="order.id" class="order-card" :to="`/orders/${order.id}`">
<div class="order-card__main">
@@ -105,7 +112,7 @@ onMounted(() => loadOrders(true))
</div>
</RouterLink>
</div>
<div v-else-if="!loading" class="empty-state">
<div v-else-if="!listLoading" class="empty-state">
<ClipboardList :size="30" />
<div>暂无订单</div>
</div>