From c2de1fcd121a8a8bf54fabf2c5d02938689bee38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sat, 27 Jun 2026 21:43:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(search):=20=E4=BF=AE=E5=A4=8D=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E9=A1=B5=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=9D=A1=E4=BB=B6=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将搜索页商品筛选条件由 isShow: 1 修改为 status: 0,统一与商城主页规则 - 确认收藏列表和浏览历史不受影响,维护数据一致性 feat(price): 全站商品价格登录后可见脱敏实现 - 将所有硬编码价格替换为支持游客脱敏的 组件 - 覆盖首页热销、收藏列表、秒杀列表、秒杀详情、拼团列表和拼团详情多个页面 - 秒杀详情价格组件支持白色字体,保持视觉效果一致 --- .workbuddy/memory/2026-06-27.md | 17 +++++++++++++++++ src/pages/index/index.tsx | 11 +++++++---- src/pages/index/search.tsx | 2 +- src/pages/shop/group-buy-detail/index.tsx | 13 +++++++------ src/pages/shop/group-buy-list/index.tsx | 13 +++++++------ src/pages/shop/seckill-detail/index.tsx | 14 ++++++++------ src/pages/shop/seckill-list/index.tsx | 13 +++++++------ src/pages/user/favorite-list/index.tsx | 7 ++++--- 8 files changed, 58 insertions(+), 32 deletions(-) diff --git a/.workbuddy/memory/2026-06-27.md b/.workbuddy/memory/2026-06-27.md index 93a149c..c9ade09 100644 --- a/.workbuddy/memory/2026-06-27.md +++ b/.workbuddy/memory/2026-06-27.md @@ -30,3 +30,20 @@ - **文件**: `src/pages/shop/product-detail.tsx` - **问题**: `mode='aspectFill'` 裁剪图片,看不完整 - **修复**: 改为 `mode='widthFix'`,图片宽度铺满屏幕、高度自适应;新增 `swiperHeight` 状态,通过第一张图片 `onLoad` 回调按实际宽高比动态计算 Swiper 高度 + +## 搜索页商品状态筛选修复 +- **文件**: `src/pages/index/search.tsx` +- **问题**: 搜索页使用 `isShow: 1` 筛选商品,而项目统一约定 `status: 0` = 已上架(`shopGoods.status=0`),与商城主页不一致 +- **修复**: `isShow: 1` → `status: 0`(第34行) +- **排查结果**: 商城主页 `shop/index.tsx` 和首页热销 `index/index.tsx` 已正确使用 `status: 0`;收藏列表使用独立 API 不受影响;浏览历史为本地存储 + +## 商品价格登录后可见(全站统一脱敏) +- **方式**: 将所有硬编码价格的位置替换为 `` 组件(该组件游客态显示"登录后查看价格") +- **已覆盖的页面(之前已使用 Price 组件)**: ProductCard、商城主页、搜索页、商品详情页 — 无需改动 +- **本次修改的 6 个文件**: + 1. `src/pages/index/index.tsx` — 首页热销,替换自绘价格 + 2. `src/pages/user/favorite-list/index.tsx` — 收藏列表 + 3. `src/pages/shop/seckill-list/index.tsx` — 秒杀列表 + 4. `src/pages/shop/seckill-detail/index.tsx` — 秒杀详情(红色背景,传 color='#ffffff') + 5. `src/pages/shop/group-buy-list/index.tsx` — 拼团列表 + 6. `src/pages/shop/group-buy-detail/index.tsx` — 拼团详情 diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx index 014c8cb..63e0e55 100644 --- a/src/pages/index/index.tsx +++ b/src/pages/index/index.tsx @@ -9,6 +9,7 @@ import { pageShopGoods } from '@/api/shop/shopGoods' import type { CmsAd } from '@/api/cms/cmsAd/model' import type { CmsArticle } from '@/api/cms/cmsArticle/model' import type { ShopGoods } from '@/api/shop/shopGoods/model' +import Price from '@/components/common/Price' definePageConfig({ navigationBarTitleText: '首页', @@ -241,10 +242,12 @@ const IndexPage: React.FC = () => { {item.goodsName || item.name} - ¥{item.price || '0'} - {item.salePrice && item.salePrice !== item.price && ( - ¥{item.salePrice} - )} + {item.sales !== undefined && item.sales > 0 && ( 已售 {item.sales} diff --git a/src/pages/index/search.tsx b/src/pages/index/search.tsx index b92bce3..cf1fb4f 100644 --- a/src/pages/index/search.tsx +++ b/src/pages/index/search.tsx @@ -31,7 +31,7 @@ const SearchPage: React.FC = () => { if (!q.trim()) return setLoading(true) try { - const params: ShopGoodsParam = { keywords: q, isShow: 1, page: 1, limit: 20 } + const params: ShopGoodsParam = { keywords: q, status: 0, page: 1, limit: 20 } const res = await pageShopGoods(params) setList(res?.list || []) // 保存搜索历史 diff --git a/src/pages/shop/group-buy-detail/index.tsx b/src/pages/shop/group-buy-detail/index.tsx index ad0eddc..2cee697 100644 --- a/src/pages/shop/group-buy-detail/index.tsx +++ b/src/pages/shop/group-buy-detail/index.tsx @@ -7,6 +7,7 @@ import type { ShopGroupBuy, ShopGroupBuyRecord } from '@/api/shop/shopGroupBuy/m import type { ShopGoods } from '@/api/shop/shopGoods/model' import type { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model' import SkuSelector from '@/components/business/SkuSelector' +import Price from '@/components/common/Price' definePageConfig({ navigationBarTitleText: '拼团详情', @@ -192,12 +193,12 @@ const GroupBuyDetailPage: React.FC = () => { {groupBuy.goodsName || groupBuy.product?.name} - - ¥{groupBuy.groupPrice} - - - ¥{groupBuy.product?.price || 0} - + {isActive && remaining > 0 && ( diff --git a/src/pages/shop/group-buy-list/index.tsx b/src/pages/shop/group-buy-list/index.tsx index 928cb33..0db11e4 100644 --- a/src/pages/shop/group-buy-list/index.tsx +++ b/src/pages/shop/group-buy-list/index.tsx @@ -4,6 +4,7 @@ import Taro from '@tarojs/taro' import { pageShopGroupBuy } from '@/api/shop/shopGroupBuy' import type { ShopGroupBuy } from '@/api/shop/shopGroupBuy/model' import EmptyState from '@/components/common/EmptyState' +import Price from '@/components/common/Price' definePageConfig({ navigationBarTitleText: '拼团活动', @@ -91,12 +92,12 @@ const GroupBuyListPage: React.FC = () => { - - {'\u00A5'}{item.groupPrice} - - - {'\u00A5'}{item.product?.price || 0} - + { {/* 价格和倒计时 */} - - ¥{seckill.seckillPrice} - - - ¥{seckill.product?.price || 0} - + diff --git a/src/pages/shop/seckill-list/index.tsx b/src/pages/shop/seckill-list/index.tsx index 0bd8795..79f5174 100644 --- a/src/pages/shop/seckill-list/index.tsx +++ b/src/pages/shop/seckill-list/index.tsx @@ -4,6 +4,7 @@ import Taro from '@tarojs/taro' import { pageShopSeckill } from '@/api/shop/shopSeckill' import type { ShopSeckill } from '@/api/shop/shopSeckill/model' import EmptyState from '@/components/common/EmptyState' +import Price from '@/components/common/Price' definePageConfig({ navigationBarTitleText: '限时秒杀', @@ -121,12 +122,12 @@ const SeckillListPage: React.FC = () => { - - {'\u00A5'}{item.seckillPrice} - - - {'\u00A5'}{item.product?.price || 0} - + { {item.goodsName} - - ¥{item.salePrice || '0'} - + + + ))}