Browse Source

改变对比价格的规则

Xfy
User 7 days ago
parent
commit
950edef686
  1. 291
      pages/compare_price/index.js
  2. 76
      pages/compare_price/index.wxml
  3. 125
      pages/goods-detail/goods-detail.js

291
pages/compare_price/index.js

@ -1,18 +1,287 @@
// pages/compare_price/index.js // pages/compare_price/index.js
const API = require('../../utils/api.js'); const API = require('../../utils/api.js');
// 媒体类型判断函数
function isVideoUrl(url) {
if (!url || typeof url !== 'string') {
return false;
}
// 转换为小写,确保大小写不敏感
const lowerUrl = url.toLowerCase();
// 支持的视频格式
const videoExtensions = ['.mp4', '.mov', '.avi', '.wmv', '.flv', '.webm', '.m4v', '.3gp'];
// 检查URL是否以视频扩展名结尾
for (const ext of videoExtensions) {
if (lowerUrl.endsWith(ext)) {
return true;
}
}
return false;
}
// 预处理媒体URL,返回包含type字段的媒体对象数组
function processMediaUrls(urls) {
if (!urls || !Array.isArray(urls)) {
return [];
}
return urls.map(url => {
return {
url: url,
type: isVideoUrl(url) ? 'video' : 'image'
};
});
}
Page({ Page({
data: { data: {
// 页面数据 // 页面数据
showTips: true, showTips: true,
goods: [], goods: [],
loading: false, loading: false,
selectedOption: '' selectedOption: '',
selectedCategory: '',
selectedSpec: ''
}, },
onLoad: function (options) { onLoad: function (options) {
// 页面加载 // 页面加载
console.log('对比价格页面加载'); console.log('对比价格页面加载,接收参数:', options);
// 检查是否有传递过来的商品数据
if (options.goodsData) {
try {
// 解析传递过来的商品数据
const goodsData = JSON.parse(decodeURIComponent(options.goodsData));
console.log('解析得到的商品数据:', goodsData);
// 显示加载状态
this.setData({
loading: true
});
// 提取选择的种类和规格
const selectedCategory = goodsData.category || '';
const selectedSpec = goodsData.selectedSpec || null;
const specWeight = selectedSpec ? selectedSpec.weightSpec.trim() : '';
console.log('选择的种类:', selectedCategory);
console.log('选择的规格:', selectedSpec);
// 保存选择的种类和规格到页面数据
this.setData({
selectedCategory: selectedCategory,
selectedSpec: specWeight
});
// 调用 API 获取符合条件的商品
API.getProducts(1, 20, 'all', '')
.then(res => {
console.log('获取商品列表成功:', res);
console.log('选择的种类:', selectedCategory);
console.log('选择的规格:', specWeight);
let filteredGoods = [];
if (res && res.products) {
console.log('原始商品数量:', res.products.length);
// 过滤商品
filteredGoods = res.products.filter(item => {
// 1. 检查商品状态和价格
if (item.status !== 'published' || item.price === null || item.price === undefined) {
return false;
}
// 2. 过滤种类
if (selectedCategory && selectedCategory !== '全部' && item.category !== selectedCategory) {
return false;
}
// 3. 过滤规格
if (specWeight) {
// 检查多个可能存储重量信息的字段
const fieldsToCheck = [
item.specification,
item.grossWeight,
item.weightQuantityData,
item.spec // 检查spec字段
];
let hasMatchingSpec = false;
for (const field of fieldsToCheck) {
if (!field) continue;
if (typeof field === 'string') {
// 处理字符串格式的规格数据
console.log('检查字符串规格:', field, '是否包含', specWeight);
// 处理逗号分隔的规格字符串
const specs = field.split(/[,,、]/).map(s => s.trim());
if (specs.some(spec => spec.includes(specWeight))) {
hasMatchingSpec = true;
break;
}
} else if (Array.isArray(field)) {
// 处理数组格式的规格数据
console.log('检查数组规格:', field);
if (field.some(spec => {
if (typeof spec === 'string') {
console.log('检查数组元素(字符串):', spec, '是否包含', specWeight);
return spec.includes(specWeight);
} else if (typeof spec === 'object') {
// 检查对象格式的规格数据
const specStr = spec.weightSpec || spec.display || spec.spec || '';
console.log('检查数组元素(对象):', specStr, '是否包含', specWeight);
return specStr.includes(specWeight);
}
return false;
})) {
hasMatchingSpec = true;
break;
}
} else if (typeof field === 'object') {
// 处理对象格式的规格数据
console.log('检查对象规格:', field);
const specStr = field.weightSpec || field.display || field.spec || '';
console.log('检查对象规格值:', specStr, '是否包含', specWeight);
if (specStr.includes(specWeight)) {
hasMatchingSpec = true;
break;
}
}
}
// 如果没有找到匹配的规格,尝试进行更宽松的匹配
if (!hasMatchingSpec) {
console.log('尝试更宽松的匹配...');
// 提取规格中的数字部分进行匹配
const weightNum = specWeight.replace(/[^0-9-]/g, '');
console.log('提取的重量数字:', weightNum);
for (const field of fieldsToCheck) {
if (!field) continue;
if (typeof field === 'string') {
if (field.includes(weightNum)) {
hasMatchingSpec = true;
break;
}
} else if (Array.isArray(field)) {
if (field.some(spec => {
const specStr = typeof spec === 'string' ? spec : (spec.weightSpec || spec.display || '');
return specStr.includes(weightNum);
})) {
hasMatchingSpec = true;
break;
}
}
}
}
if (!hasMatchingSpec) {
return false;
}
}
return true;
});
console.log('过滤后的商品数量:', filteredGoods.length);
console.log('过滤后的商品:', filteredGoods);
}
// 处理商品数据
const processedGoods = filteredGoods.map(item => {
// 首先清理 imageUrls 字段(如果存在)
if (item.imageUrls && Array.isArray(item.imageUrls)) {
item.imageUrls = item.imageUrls.map(url => {
return url.trim().replace(/[`]/g, '');
});
// 使用processMediaUrls函数处理媒体数据
item.mediaItems = processMediaUrls(item.imageUrls);
// 确保图片优先显示:将图片类型的媒体项移到数组前面
if (item.mediaItems && item.mediaItems.length > 1) {
const imageItems = item.mediaItems.filter(media => media.type === 'image');
const videoItems = item.mediaItems.filter(media => media.type === 'video');
item.mediaItems = [...imageItems, ...videoItems];
}
}
// 清理 mediaItems 中的 URL
if (item.mediaItems && Array.isArray(item.mediaItems)) {
item.mediaItems = item.mediaItems.map(media => {
if (media.url) {
// 去除 URL 中的反引号和空格
media.url = media.url.trim().replace(/[`]/g, '');
// 确保媒体类型正确
if (!media.type) {
media.type = isVideoUrl(media.url) ? 'video' : 'image';
}
}
return media;
});
}
// 处理库存显示逻辑
const quantity = item.quantity || item.minOrder || item.stock || item.inventory || item.availableStock || item.totalAvailable;
const totalStock = quantity;
let displayStock;
if (totalStock >= 10000) {
// 库存>=10000时显示"库存充足"
displayStock = '充足';
} else if (totalStock === 0) {
// 库存=0时显示"暂无"
displayStock = '暂无';
} else {
// 其他情况显示具体数字
displayStock = totalStock;
}
// 更新商品的库存显示
item.totalStock = displayStock;
item.originalTotalStock = totalStock;
return item;
});
// 显示提示信息
wx.showToast({
title: `找到${processedGoods.length}个符合条件的商品`,
icon: 'success',
duration: 2000
});
// 设置商品数据
this.setData({
goods: processedGoods,
loading: false,
selectedOption: selectedCategory || '对比价格',
showTips: false
});
console.log('对比价格数据加载完成:', processedGoods);
})
.catch(err => {
console.error('获取商品列表失败:', err);
this.setData({
loading: false
});
wx.showToast({
title: '获取商品失败,请稍后重试',
icon: 'none'
});
});
} catch (error) {
console.error('解析商品数据失败:', error);
this.setData({
loading: false
});
wx.showToast({
title: '数据解析失败,请重试',
icon: 'none',
duration: 2000
});
}
}
}, },
onShow: function () { onShow: function () {
@ -120,12 +389,14 @@ Page({
return url.trim().replace(/[`]/g, ''); return url.trim().replace(/[`]/g, '');
}); });
// 如果没有 mediaItems 字段,将 imageUrls 转换为 mediaItems 格式 // 使用processMediaUrls函数处理媒体数据
if (!item.mediaItems || !Array.isArray(item.mediaItems) || item.mediaItems.length === 0) { item.mediaItems = processMediaUrls(item.imageUrls);
item.mediaItems = item.imageUrls.map(url => ({
type: 'image', // 确保图片优先显示:将图片类型的媒体项移到数组前面
url: url if (item.mediaItems && item.mediaItems.length > 1) {
})); const imageItems = item.mediaItems.filter(media => media.type === 'image');
const videoItems = item.mediaItems.filter(media => media.type === 'video');
item.mediaItems = [...imageItems, ...videoItems];
} }
} }
@ -135,6 +406,10 @@ Page({
if (media.url) { if (media.url) {
// 去除 URL 中的反引号和空格 // 去除 URL 中的反引号和空格
media.url = media.url.trim().replace(/[`]/g, ''); media.url = media.url.trim().replace(/[`]/g, '');
// 确保媒体类型正确
if (!media.type) {
media.type = isVideoUrl(media.url) ? 'video' : 'image';
}
} }
return media; return media;
}); });

76
pages/compare_price/index.wxml

@ -7,34 +7,15 @@
<!-- 类别选择区域 --> <!-- 类别选择区域 -->
<view wx:if="{{!selectedOption}}"> <view wx:if="{{!selectedOption}}">
<view style="background-color: rgba(255, 255, 255, 0.8); border-radius: 10rpx; padding: 20rpx; margin-bottom: 20rpx;"> <view style="background-color: rgba(255, 255, 255, 0.8); border-radius: 10rpx; padding: 20rpx; margin-bottom: 20rpx;">
<text style="font-size: 32rpx; font-weight: bold; color: #333; text-align: center;">请选择想要了解的商品</text> <text style="font-size: 32rpx; font-weight: bold; color: #333; text-align: center;">请从商品详情页点击对比价格</text>
</view>
<view style="display: flex; flex-direction: column; gap: 24rpx; width: 100%; max-width: 400rpx;">
<view style="position: relative; width: 100%; height: 140rpx; border-radius: 12rpx; overflow: hidden; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15); transition: all 0.3s ease;" bindtap="selectOption" data-option="绿壳">
<image src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=fresh%20green%20shell%20eggs%20in%20a%20wooden%20box%2C%20natural%20light%2C%20soft%20focus%2C%20warm%20tones&image_size=landscape_4_3" mode="aspectFill" style="width: 100%; height: 100%;"></image>
<view style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.6)); display: flex; justify-content: center; align-items: center;">
<text style="font-size: 36rpx; font-weight: bold; color: #333; text-shadow: 0 2rpx 4rpx rgba(255, 255, 255, 0.8);">绿壳</text>
</view>
</view>
<view style="position: relative; width: 100%; height: 140rpx; border-radius: 12rpx; overflow: hidden; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15); transition: all 0.3s ease;" bindtap="selectOption" data-option="粉壳">
<image src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=fresh%20pink%20shell%20eggs%20in%20a%20wooden%20box%2C%20natural%20light%2C%20soft%20focus%2C%20warm%20tones&image_size=landscape_4_3" mode="aspectFill" style="width: 100%; height: 100%;"></image>
<view style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.6)); display: flex; justify-content: center; align-items: center;">
<text style="font-size: 36rpx; font-weight: bold; color: #333; text-shadow: 0 2rpx 4rpx rgba(255, 255, 255, 0.8);">粉壳</text>
</view>
</view>
<view style="position: relative; width: 100%; height: 140rpx; border-radius: 12rpx; overflow: hidden; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15); transition: all 0.3s ease;" bindtap="selectOption" data-option="褐壳">
<image src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=fresh%20brown%20shell%20eggs%20in%20a%20wooden%20box%2C%20natural%20light%2C%20soft%20focus%2C%20warm%20tones&image_size=landscape_4_3" mode="aspectFill" style="width: 100%; height: 100%;"></image>
<view style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.6)); display: flex; justify-content: center; align-items: center;">
<text style="font-size: 36rpx; font-weight: bold; color: #333; text-shadow: 0 2rpx 4rpx rgba(255, 255, 255, 0.8);">褐壳</text>
</view>
</view> </view>
<view style="display: flex; flex-direction: column; gap: 24rpx; width: 100%; max-width: 400rpx; align-items: center;">
<text style="font-size: 28rpx; color: #666; text-align: center; line-height: 40rpx;">此页面仅用于展示对比价格数据</text>
<text style="font-size: 28rpx; color: #666; text-align: center; line-height: 40rpx;">请返回商品详情页</text>
<text style="font-size: 28rpx; color: #666; text-align: center; line-height: 40rpx;">点击对比价格按钮</text>
</view> </view>
</view> </view>
<!-- 返回按钮(选择后显示) -->
<view wx:else style="margin-bottom: 20rpx; width: 100%; max-width: 400rpx;">
<button style="background-color: rgba(255, 255, 255, 0.8); color: #333; border-radius: 8rpx; padding: 20rpx; font-size: 28rpx;" bindtap="resetSelection">返回选择</button>
</view>
<!-- 商品列表 --> <!-- 商品列表 -->
<view wx:if="{{loading}}" style="margin-top: 40rpx; color: #fff; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5);"> <view wx:if="{{loading}}" style="margin-top: 40rpx; color: #fff; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5);">
@ -42,9 +23,10 @@
</view> </view>
<view wx:else> <view wx:else>
<view wx:if="{{goods.length > 0 && selectedOption}}" style="margin-top: 40rpx; width: 100%; max-width: 750rpx;"> <view wx:if="{{goods.length > 0 && (selectedOption || selectedCategory)}}" style="margin-top: 40rpx; width: 100%; max-width: 750rpx;">
<view style="background-color: rgba(255, 255, 255, 0.8); border-radius: 10rpx; padding: 20rpx; margin-bottom: 20rpx;"> <view style="background-color: rgba(255, 255, 255, 0.8); border-radius: 10rpx; padding: 20rpx; margin-bottom: 20rpx;">
<text style="font-size: 28rpx; font-weight: bold; color: #333; text-align: center; display: block;">{{selectedOption}}在售商品</text> <text style="font-size: 28rpx; font-weight: bold; color: #333; text-align: center; display: block;">选择的种类: {{selectedCategory}}</text>
<text style="font-size: 28rpx; font-weight: bold; color: #333; text-align: center; display: block; margin-top: 10rpx;">选择的规格: {{selectedSpec}}</text>
</view> </view>
<!-- 商品卡片列表 --> <!-- 商品卡片列表 -->
@ -62,9 +44,21 @@
<!-- 售空商品白色覆盖层 --> <!-- 售空商品白色覆盖层 -->
<view wx:if="{{item.status === 'sold_out'}}" class="sold-out-overlay-full"></view> <view wx:if="{{item.status === 'sold_out'}}" class="sold-out-overlay-full"></view>
<view class="product-image-wrapper"> <view class="product-image-wrapper">
<!-- 视频处理:根据mediaItems中的类型字段判断 --> <!-- 媒体处理:优先展示图片 -->
<block wx:if="{{item.mediaItems && item.mediaItems.length > 0}}">
<!-- 图片处理 -->
<image
wx:if="{{item.mediaItems[0].type === 'image'}}"
class="product-media"
src="{{item.mediaItems[0].url}}"
mode="aspectFill"
lazy-load="true"
bindload="onImageLoad"
data-index="{{index}}"
></image>
<!-- 视频处理:如果没有图片再展示视频 -->
<video <video
wx:if="{{item.mediaItems && item.mediaItems.length > 0 && item.mediaItems[0].type === 'video'}}" wx:else
id="video-{{item.id}}" id="video-{{item.id}}"
class="product-media" class="product-media"
src="{{item.mediaItems[0].url}}" src="{{item.mediaItems[0].url}}"
@ -77,11 +71,12 @@
muted="{{true}}" muted="{{true}}"
poster="" poster=""
></video> ></video>
<!-- 图片处理 --> </block>
<!-- 占位图:如果没有媒体数据 -->
<image <image
wx:else wx:else
class="product-media" class="product-media"
src="{{item.mediaItems && item.mediaItems.length > 0 ? item.mediaItems[0].url : 'https://via.placeholder.com/300x300.png?text=No+Image'}}" src="https://via.placeholder.com/300x300.png?text=No+Image"
mode="aspectFill" mode="aspectFill"
lazy-load="true" lazy-load="true"
bindload="onImageLoad" bindload="onImageLoad"
@ -124,9 +119,21 @@
<!-- 售空商品白色覆盖层 --> <!-- 售空商品白色覆盖层 -->
<view wx:if="{{item.status === 'sold_out'}}" class="sold-out-overlay-full"></view> <view wx:if="{{item.status === 'sold_out'}}" class="sold-out-overlay-full"></view>
<view class="product-image-wrapper"> <view class="product-image-wrapper">
<!-- 视频处理:根据mediaItems中的类型字段判断 --> <!-- 媒体处理:优先展示图片 -->
<block wx:if="{{item.mediaItems && item.mediaItems.length > 0}}">
<!-- 图片处理 -->
<image
wx:if="{{item.mediaItems[0].type === 'image'}}"
class="product-media"
src="{{item.mediaItems[0].url}}"
mode="aspectFill"
lazy-load="true"
bindload="onImageLoad"
data-index="{{index}}"
></image>
<!-- 视频处理:如果没有图片再展示视频 -->
<video <video
wx:if="{{item.mediaItems && item.mediaItems.length > 0 && item.mediaItems[0].type === 'video'}}" wx:else
id="video-{{item.id}}" id="video-{{item.id}}"
class="product-media" class="product-media"
src="{{item.mediaItems[0].url}}" src="{{item.mediaItems[0].url}}"
@ -139,11 +146,12 @@
muted="{{true}}" muted="{{true}}"
poster="" poster=""
></video> ></video>
<!-- 图片处理 --> </block>
<!-- 占位图:如果没有媒体数据 -->
<image <image
wx:else wx:else
class="product-media" class="product-media"
src="{{item.mediaItems && item.mediaItems.length > 0 ? item.mediaItems[0].url : 'https://via.placeholder.com/300x300.png?text=No+Image'}}" src="https://via.placeholder.com/300x300.png?text=No+Image"
mode="aspectFill" mode="aspectFill"
lazy-load="true" lazy-load="true"
bindload="onImageLoad" bindload="onImageLoad"

125
pages/goods-detail/goods-detail.js

@ -3691,7 +3691,7 @@ Page({
// 对比价格功能:处理按钮点击事件 // 对比价格功能:处理按钮点击事件
onCompareClick: function () { onCompareClick: function () {
console.log('用户点击了对比价格按钮,准备显示弹窗'); console.log('用户点击了对比价格按钮,准备跳转到对比价格页面');
// 检查用户登录状态 // 检查用户登录状态
const openid = wx.getStorageSync('openid'); const openid = wx.getStorageSync('openid');
@ -3744,27 +3744,97 @@ Page({
console.log('用户身份证认证状态:', idcardstatus); console.log('用户身份证认证状态:', idcardstatus);
// 获取当前商品的信息
const currentGoods = this.data.goodsDetail;
const currentCategory = currentGoods.category || '';
const currentSpecifications = currentGoods.weightQuantityData || [];
// 定义种类选项
const categoryOptions = ['全部', '绿壳', '粉壳', '褐壳', '土鸡蛋'];
// 直接获取当前页面滚动位置 // 找到当前商品种类在选项中的索引,默认为0(全部)
wx.createSelectorQuery().selectViewport().scrollOffset(function(res) { let defaultCategoryIndex = 0;
console.log('记录当前滚动位置:', res.scrollTop); if (currentCategory) {
// 保存滚动位置并显示弹窗 const index = categoryOptions.indexOf(currentCategory);
this.setData({ if (index !== -1) {
scrollTop: res.scrollTop, defaultCategoryIndex = index;
showCompareModal: true, }
activeTab: 'home' // 默认显示首页数据选项卡 }
// 显示种类选择对话框
wx.showActionSheet({
itemList: categoryOptions,
success: (categoryRes) => {
const selectedCategoryIndex = categoryRes.tapIndex;
const selectedCategory = categoryOptions[selectedCategoryIndex];
// 构建规格选择列表
const specList = currentSpecifications.map((spec, index) => {
return spec.display || spec.weightSpec || `规格${index + 1}`;
}); });
// 打印弹窗状态,用于调试 // 显示规格选择对话框
console.log('弹窗状态设置为:', this.data.showCompareModal); wx.showActionSheet({
itemList: specList,
success: (specRes) => {
const selectedSpecIndex = specRes.tapIndex;
const selectedSpec = currentSpecifications[selectedSpecIndex];
// 加载首页数据 // 显示提示信息
this.loadHomeGoods(); wx.showToast({
title: `已选择${selectedCategory} ${selectedSpec.display}`,
icon: 'info',
duration: 1500,
success: () => {
setTimeout(() => {
// 构建要传递的数据
const goodsData = {
id: currentGoods.id || currentGoods.productId,
name: currentGoods.name || '',
price: currentGoods.price || '',
imageUrls: currentGoods.imageUrls || [],
region: currentGoods.region || '',
weightQuantityData: currentGoods.weightQuantityData || [],
category: selectedCategory,
yolk: currentGoods.yolk || '',
sourceType: currentGoods.sourceType || '',
supplyStatus: currentGoods.supplyStatus || '',
mediaItems: currentGoods.mediaItems || [],
frequency: currentGoods.frequency || 0,
status: currentGoods.status || 'published',
totalStock: currentGoods.totalStock || '充足',
selectedSpec: selectedSpec
};
// 加载收藏数据 console.log('准备跳转到对比价格页面,传递的数据:', goodsData);
this.loadFavoriteGoods();
}.bind(this)).exec(); // 跳转到对比价格页面
wx.navigateTo({
url: `/pages/compare_price/index?goodsData=${encodeURIComponent(JSON.stringify(goodsData))}`,
success: function () {
console.log('成功跳转到对比价格页面');
},
fail: function (error) {
console.error('跳转到对比价格页面失败:', error);
wx.showToast({
title: '跳转失败,请稍后重试',
icon: 'none'
});
}
});
}, 1500);
}
});
},
fail: (res) => {
console.log('选择规格失败:', res);
}
});
},
fail: (res) => {
console.log('选择种类失败:', res);
}
});
}, },
// 关闭对比价格弹窗 // 关闭对比价格弹窗
@ -3802,18 +3872,21 @@ Page({
}, },
// 加载首页商品数据 // 加载首页商品数据
loadHomeGoods: function () { loadHomeGoods: function (selectedCategory, selectedSpec) {
this.setData({ loadingHome: true }); this.setData({ loadingHome: true });
// 获取当前商品的规格信息 // 获取当前商品的规格信息
const currentGoods = this.data.goodsDetail; const currentGoods = this.data.goodsDetail;
const currentSpecifications = currentGoods.weightQuantityData || []; const currentSpecifications = currentGoods.weightQuantityData || [];
// 提取当前商品的净重规格(如"净重41-42")
const currentWeightSpecs = currentSpecifications.map(item => item.weightSpec.trim()) // 使用传入的参数或默认值
.filter(spec => spec && (spec.includes('净重') || spec.includes('毛重'))); const categoryToUse = selectedCategory || currentGoods.category || '';
// 提取当前商品的种类(category) const specToUse = selectedSpec || (currentSpecifications.length > 0 ? currentSpecifications[0] : null);
const currentCategory = currentGoods.category || '';
console.log('当前商品的种类:', currentCategory); // 提取规格信息
const currentWeightSpecs = specToUse ? [specToUse.weightSpec.trim()] : [];
console.log('当前选择的种类:', categoryToUse);
console.log('当前选择的规格:', specToUse);
// 调用API获取首页商品列表 // 调用API获取首页商品列表
API.getProducts() API.getProducts()
@ -3883,12 +3956,12 @@ Page({
isSoldOutLabel: isSoldOutLabel // 添加是否显示已售空标签的标记 isSoldOutLabel: isSoldOutLabel // 添加是否显示已售空标签的标记
}; };
}).filter(goods => { }).filter(goods => {
// 1. 先过滤相同种类(category)的商品 // 1. 先过滤种类(category)的商品
if (currentCategory && goods.category !== currentCategory) { if (categoryToUse && categoryToUse !== '全部' && goods.category !== categoryToUse) {
return false; return false;
} }
// 2. 只有当当前商品有明确的规格时才进行筛选 // 2. 只有当有明确的规格时才进行筛选
if (currentWeightSpecs.length === 0) { if (currentWeightSpecs.length === 0) {
return true; return true;
} }

Loading…
Cancel
Save