修复bug

This commit is contained in:
2026-04-02 11:10:23 +08:00
parent dabf7a3ec8
commit 657933fe16
4 changed files with 395 additions and 375 deletions
+20 -14
View File
@@ -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;