diff --git a/pages/index/index.js b/pages/index/index.js index 8a6c5b0..0920df3 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -525,7 +525,8 @@ Page({ } if (this.data.selectedRegion !== '全国') { - filtered = filtered.filter(item => item.isAd || item.region === this.data.selectedRegion) + const selectedRegion = this.data.selectedRegion + filtered = filtered.filter(item => item.isAd || (item.region && item.region.includes(selectedRegion))) } filtered.sort((a, b) => { @@ -688,17 +689,23 @@ Page({ this.setData({ selectedRegion: region, showRegionPicker: false - }) - - // 重新筛选商品 - const filteredGoods = this.applyFilters(this.data.goods) - const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods) - const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods) - this.setData({ - filteredGoods: filteredGoods, - groupedGoods: groupedGoods, - leftColumnGoods: leftColumnGoods, - rightColumnGoods: rightColumnGoods + }, () => { + // 如果从局部地区切换到全国地区,重新加载所有商品 + if (region === '全国' && this.data.selectedCategory === '全部' && !this.data.searchKeyword) { + // 重新加载商品数据 + this.refreshGoodsList(); + } else { + // 否则仅对本地商品进行筛选 + const filteredGoods = this.applyFilters(this.data.goods) + const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods) + const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods) + this.setData({ + filteredGoods: filteredGoods, + groupedGoods: groupedGoods, + leftColumnGoods: leftColumnGoods, + rightColumnGoods: rightColumnGoods + }) + } }) },