fix(search): 修复搜索页商品状态筛选条件错误
- 将搜索页商品筛选条件由 isShow: 1 修改为 status: 0,统一与商城主页规则 - 确认收藏列表和浏览历史不受影响,维护数据一致性 feat(price): 全站商品价格登录后可见脱敏实现 - 将所有硬编码价格替换为支持游客脱敏的 <Price loginMask> 组件 - 覆盖首页热销、收藏列表、秒杀列表、秒杀详情、拼团列表和拼团详情多个页面 - 秒杀详情价格组件支持白色字体,保持视觉效果一致
This commit is contained in:
@@ -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 = () => {
|
||||
<View className='p-2'>
|
||||
<Text className='text-sm text-gray-700 truncate block'>{item.goodsName || item.name}</Text>
|
||||
<View className='flex items-center mt-1'>
|
||||
<Text className='text-sm font-bold text-red-500 mr-1'>¥{item.price || '0'}</Text>
|
||||
{item.salePrice && item.salePrice !== item.price && (
|
||||
<Text className='text-xs text-gray-400 line-through'>¥{item.salePrice}</Text>
|
||||
)}
|
||||
<Price
|
||||
price={item.price || '0'}
|
||||
original={item.salePrice && item.salePrice !== item.price ? item.salePrice : undefined}
|
||||
size='small'
|
||||
loginMask
|
||||
/>
|
||||
</View>
|
||||
{item.sales !== undefined && item.sales > 0 && (
|
||||
<Text className='text-xs text-gray-400 mt-1'>已售 {item.sales}</Text>
|
||||
|
||||
@@ -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 || [])
|
||||
// 保存搜索历史
|
||||
|
||||
@@ -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}
|
||||
</Text>
|
||||
<View className="flex items-baseline gap-2">
|
||||
<Text className="text-2xl font-bold text-red-500">
|
||||
¥{groupBuy.groupPrice}
|
||||
</Text>
|
||||
<Text className="text-xs text-gray-400 line-through">
|
||||
¥{groupBuy.product?.price || 0}
|
||||
</Text>
|
||||
<Price
|
||||
price={groupBuy.groupPrice}
|
||||
original={groupBuy.product?.price || 0}
|
||||
size='large'
|
||||
loginMask
|
||||
/>
|
||||
</View>
|
||||
<View className="flex items-center gap-2 mt-1">
|
||||
{isActive && remaining > 0 && (
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
<View className='flex items-center justify-between mt-1'>
|
||||
<View className='flex items-baseline gap-1'>
|
||||
<Text className='text-lg font-bold text-red-500'>
|
||||
{'\u00A5'}{item.groupPrice}
|
||||
</Text>
|
||||
<Text className='text-xs text-gray-400 line-through'>
|
||||
{'\u00A5'}{item.product?.price || 0}
|
||||
</Text>
|
||||
<Price
|
||||
price={item.groupPrice}
|
||||
original={item.product?.price || 0}
|
||||
size='small'
|
||||
loginMask
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
className='px-3 py-1 rounded-full text-white text-xs'
|
||||
|
||||
@@ -7,6 +7,7 @@ import type { ShopSeckill } from '@/api/shop/shopSeckill/model'
|
||||
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: '秒杀详情',
|
||||
@@ -199,12 +200,13 @@ const SeckillDetailPage: React.FC = () => {
|
||||
{/* 价格和倒计时 */}
|
||||
<View className="px-4 py-4" style={{ background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)' }}>
|
||||
<View className="flex items-baseline gap-2">
|
||||
<Text className="text-3xl font-bold text-white">
|
||||
¥{seckill.seckillPrice}
|
||||
</Text>
|
||||
<Text className="text-sm text-red-200 line-through">
|
||||
¥{seckill.product?.price || 0}
|
||||
</Text>
|
||||
<Price
|
||||
price={seckill.seckillPrice}
|
||||
original={seckill.product?.price || 0}
|
||||
size='large'
|
||||
color='#ffffff'
|
||||
loginMask
|
||||
/>
|
||||
</View>
|
||||
<View className="flex items-center justify-between mt-3">
|
||||
<View className="bg-white rounded px-2 py-1">
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
<View className='flex items-center justify-between mt-1'>
|
||||
<View className='flex items-baseline gap-1'>
|
||||
<Text className='text-lg font-bold text-red-500'>
|
||||
{'\u00A5'}{item.seckillPrice}
|
||||
</Text>
|
||||
<Text className='text-xs text-gray-400 line-through'>
|
||||
{'\u00A5'}{item.product?.price || 0}
|
||||
</Text>
|
||||
<Price
|
||||
price={item.seckillPrice}
|
||||
original={item.product?.price || 0}
|
||||
size='small'
|
||||
loginMask
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
className='px-3 py-1 rounded-full text-white text-xs'
|
||||
|
||||
@@ -5,6 +5,7 @@ import { listShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite'
|
||||
import type { ShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite/model'
|
||||
import EmptyState from '@/components/common/EmptyState'
|
||||
import LoadMore from '@/components/common/LoadMore'
|
||||
import Price from '@/components/common/Price'
|
||||
|
||||
definePageConfig({
|
||||
navigationBarTitleText: '我的收藏',
|
||||
@@ -76,9 +77,9 @@ const FavoriteListPage: React.FC = () => {
|
||||
<Text className='text-sm text-gray-800 line-clamp-2 block'>
|
||||
{item.goodsName}
|
||||
</Text>
|
||||
<Text className='text-red-500 text-sm font-medium mt-1 block'>
|
||||
¥{item.salePrice || '0'}
|
||||
</Text>
|
||||
<View className='mt-1'>
|
||||
<Price price={item.salePrice || '0'} size='small' loginMask />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user