Browse Source

优化产品规格显示逻辑

- 添加formatSpecification函数,智能处理规格字符串分割
- 只显示前两个规格,超过部分用...省略
- 在processGoodsData中调用格式化函数预处理数据
- 更新WXML模板使用新的格式化字段
- 改善商品列表页面布局和用户体验
pull/3/head
徐飞洋 2 months ago
parent
commit
ce6c5a983b
  1. 46
      pages/index/index.js
  2. 2
      pages/index/index.wxml

46
pages/index/index.js

@ -441,6 +441,45 @@ Page({
return region;
},
// 格式化商品规格显示 - 只显示前两个,后面加...
formatSpecification: function(spec, yolk) {
if (!spec || spec === '无') {
return {
displaySpec: '无',
displayYolk: yolk && yolk !== '无' ? yolk : ''
};
}
// 按常见的分隔符分割规格
const separators = [',', ',', '、', '|', ';', ';'];
let parts = [spec];
for (let separator of separators) {
if (spec.includes(separator)) {
parts = spec.split(separator);
break;
}
}
// 清理空值并限制为前两个
const cleanParts = parts
.map(part => part.trim())
.filter(part => part && part !== '无')
.slice(0, 2);
let displaySpec = cleanParts.join(' | ');
// 如果原规格分割后超过两个部分,添加省略号
if (cleanParts.length < parts.filter(part => part.trim() && part.trim() !== '无').length) {
displaySpec += '...';
}
return {
displaySpec,
displayYolk: yolk && yolk !== '无' ? yolk : ''
};
},
// 处理商品数据 - 淘宝风格
processGoodsData: function(products, isLoadMore = false) {
let newGoods = products.map(product => {
@ -495,6 +534,9 @@ Page({
displayStock: displayStock
});
// 格式化规格显示
const formattedSpec = this.formatSpecification(product.specification || product.spec || '', product.yolk || '');
return {
...product,
id: productId, // 统一使用id字段
@ -519,7 +561,9 @@ Page({
currentImageIndex: 0,
imageUrls: formattedImageUrls,
totalStock: displayStock, // 使用优化后的库存显示值
originalTotalStock: totalStock // 保留原始计算值用于调试
originalTotalStock: totalStock, // 保留原始计算值用于调试
displaySpecification: formattedSpec.displaySpec, // 格式化后的规格
displayYolk: formattedSpec.displayYolk // 格式化后的蛋黄
}
})

2
pages/index/index.wxml

@ -160,7 +160,7 @@
</view>
<view class="product-info">
<view class="product-title">{{item.name}}</view>
<view class="product-spec" style="width: 325rpx; height: 68rpx; display: block; box-sizing: border-box">{{item.specification || '无'}}<text wx:if="{{item.yolk && item.yolk !== '无'}}"> | {{item.yolk}}</text></view>
<view class="product-spec" style="width: 325rpx; height: 68rpx; display: block; box-sizing: border-box">{{item.displaySpecification}}<text wx:if="{{item.displayYolk}}"> | {{item.displayYolk}}</text></view>
<view class="product-status-row" style="width: 325rpx; display: block; box-sizing: border-box; height: 93rpx">
<view class="status-tag source-{{item.sourceType === '三方认证' ? 'third' : (item.sourceType === '平台货源' ? 'platform' : 'unverified')}}">{{item.sourceType || ''}}</view>
<view class="status-tag negotiate-{{item.negotiateStatus === '可议价' ? 'yes' : 'no'}}" style="width: 70rpx; display: inline-block; box-sizing: border-box">{{item.negotiateStatus}}</view>

Loading…
Cancel
Save