修复bug
This commit is contained in:
@@ -165,6 +165,20 @@ function getStoreDetail() {
|
||||
]
|
||||
}
|
||||
|
||||
// 用详情中的首屏菜品初始化列表,并让下一次触底从第 2 页开始,避免仍请求第 1 页导致与详情数据重复
|
||||
const firstRecords = res.data?.dishPage?.records
|
||||
if (firstRecords && firstRecords.length > 0) {
|
||||
dishListByQuery.value = [...firstRecords]
|
||||
const gotFullPage = firstRecords.length >= pageSize.value
|
||||
hasMore.value = gotFullPage
|
||||
pageNum.value = gotFullPage ? 2 : 1
|
||||
} else if (tabs.value.length > 0) {
|
||||
dishListByQuery.value = []
|
||||
hasMore.value = true
|
||||
pageNum.value = 1
|
||||
nextTick(() => loadDishList(false))
|
||||
}
|
||||
|
||||
// 商户的经纬度存在,并且用户的经纬度也存在
|
||||
if(res.data.latitude && res.data.longitude && userStore.userLocation.latitude && userStore.userLocation.longitude) {
|
||||
let distance = getDistanceInMiles(res.data.latitude, res.data.longitude, userStore.userLocation.latitude, userStore.userLocation.longitude)
|
||||
@@ -309,15 +323,8 @@ const hasMore = ref(true);
|
||||
const isLoadingMore = ref(false);
|
||||
const dishListByQuery = ref<any[]>([]);
|
||||
|
||||
// 计算当前显示的商品列表
|
||||
const currentDishList = computed(() => {
|
||||
if(tabs.value[activeTab.value].key==''&&pageNum.value===1){
|
||||
return storeDetail.value?.dishPage?.records
|
||||
}
|
||||
console.log(tabs.value[activeTab.value].key=='');
|
||||
// 使用 dishListByQuery 作为数据源
|
||||
return dishListByQuery.value || []
|
||||
})
|
||||
// 计算当前显示的商品列表(统一走 dishListByQuery,避免「全部」首屏用详情、加载更多再拼第 1 页造成重复)
|
||||
const currentDishList = computed(() => dishListByQuery.value || [])
|
||||
|
||||
// 加载菜品列表
|
||||
async function loadDishList(isLoadMore = false) {
|
||||
@@ -352,11 +359,10 @@ async function loadDishList(isLoadMore = false) {
|
||||
|
||||
if (res.data && res.data.rows) {
|
||||
if (isLoadMore) {
|
||||
// 加载更多,追加数据
|
||||
dishListByQuery.value = [
|
||||
...dishListByQuery.value,
|
||||
...res.data.rows
|
||||
];
|
||||
// 加载更多:按 id 去重,防止接口分页重叠或重复请求时的重复项
|
||||
const existingIds = new Set(dishListByQuery.value.map((r: any) => r.id))
|
||||
const nextRows = res.data.rows.filter((r: any) => r != null && !existingIds.has(r.id))
|
||||
dishListByQuery.value = [...dishListByQuery.value, ...nextRows]
|
||||
} else {
|
||||
// 首次加载或刷新
|
||||
dishListByQuery.value = res.data.rows;
|
||||
|
||||
Reference in New Issue
Block a user