fix(goods): 修复水票套票商品的购买流程控制
- 添加 ticketTemplateChecked 状态用于跟踪套票模板检查状态 - 在获取套票模板后正确设置 checked 状态避免重复检查 - 修复立即购买按钮样式在无购物车按钮时的显示问题 - 隐藏用户票券页面中的操作标签元素
This commit is contained in:
@@ -87,6 +87,10 @@ button[open-type="chooseAvatar"] {
|
||||
justify-content: center;
|
||||
height: 80px;
|
||||
}
|
||||
.cart-buy-only{
|
||||
border-radius: 20px;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
image {
|
||||
|
||||
@@ -36,6 +36,7 @@ const GoodsDetail = () => {
|
||||
})
|
||||
// 水票套票模板:存在时该商品不允许加入购物车(购物车无法支付此类商品)
|
||||
const [ticketTemplate, setTicketTemplate] = useState<GltTicketTemplate | null>(null)
|
||||
const [ticketTemplateChecked, setTicketTemplateChecked] = useState(false)
|
||||
// const [selectedSku, setSelectedSku] = useState<ShopGoodsSku | null>(null);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const router = Taro.getCurrentInstance().router;
|
||||
@@ -70,16 +71,20 @@ const GoodsDetail = () => {
|
||||
// 水票套票商品:不允许加入购物车(购物车无法支付)
|
||||
// 优先使用已加载的 ticketTemplate;若尚未加载则补一次查询
|
||||
let tpl = ticketTemplate
|
||||
let checked = ticketTemplateChecked
|
||||
if (!tpl && goods?.goodsId) {
|
||||
try {
|
||||
tpl = await getGltTicketTemplateByGoodsId(Number(goods.goodsId))
|
||||
setTicketTemplate(tpl)
|
||||
setTicketTemplateChecked(true)
|
||||
checked = true
|
||||
} catch (_e) {
|
||||
tpl = null
|
||||
setTicketTemplateChecked(true)
|
||||
checked = true
|
||||
}
|
||||
}
|
||||
if (tpl) {
|
||||
Taro.showToast({title: '该商品为水票套票商品,请点击“立即购买”下单', icon: 'none'})
|
||||
if (!checked || tpl) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -126,16 +131,20 @@ const GoodsDetail = () => {
|
||||
if (action === 'cart') {
|
||||
// 水票套票商品:不允许加入购物车(购物车无法支付)
|
||||
let tpl = ticketTemplate
|
||||
let checked = ticketTemplateChecked
|
||||
if (!tpl && goods?.goodsId) {
|
||||
try {
|
||||
tpl = await getGltTicketTemplateByGoodsId(Number(goods.goodsId))
|
||||
setTicketTemplate(tpl)
|
||||
setTicketTemplateChecked(true)
|
||||
checked = true
|
||||
} catch (_e) {
|
||||
tpl = null
|
||||
setTicketTemplateChecked(true)
|
||||
checked = true
|
||||
}
|
||||
}
|
||||
if (tpl) {
|
||||
Taro.showToast({title: '该商品为水票套票商品,请点击“立即购买”下单', icon: 'none'})
|
||||
if (!checked || tpl) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -190,6 +199,7 @@ const GoodsDetail = () => {
|
||||
setLoading(true);
|
||||
// 切换商品时先重置套票模板,避免复用上一个商品状态
|
||||
setTicketTemplate(null)
|
||||
setTicketTemplateChecked(false)
|
||||
|
||||
// 加载商品详情
|
||||
getShopGoods(Number(goodsId))
|
||||
@@ -218,10 +228,12 @@ const GoodsDetail = () => {
|
||||
.then((tpl) => {
|
||||
if (!alive) return
|
||||
setTicketTemplate(tpl)
|
||||
setTicketTemplateChecked(true)
|
||||
})
|
||||
.catch((_e) => {
|
||||
if (!alive) return
|
||||
setTicketTemplate(null)
|
||||
setTicketTemplateChecked(true)
|
||||
})
|
||||
|
||||
// 加载商品规格
|
||||
@@ -284,6 +296,8 @@ const GoodsDetail = () => {
|
||||
return <View>加载中...</View>;
|
||||
}
|
||||
|
||||
const showAddToCart = ticketTemplateChecked && !ticketTemplate
|
||||
|
||||
return (
|
||||
<View className={"py-0"}>
|
||||
<View
|
||||
@@ -442,10 +456,12 @@ const GoodsDetail = () => {
|
||||
</button>
|
||||
</View>
|
||||
<View className={'buy-btn mx-4'}>
|
||||
<View className={'cart-add px-4 text-sm'}
|
||||
onClick={() => handleAddToCart()}>加入购物车
|
||||
</View>
|
||||
<View className={'cart-buy pl-4 pr-5 text-sm'}
|
||||
{showAddToCart && (
|
||||
<View className={'cart-add px-4 text-sm'}
|
||||
onClick={() => handleAddToCart()}>加入购物车
|
||||
</View>
|
||||
)}
|
||||
<View className={`cart-buy text-sm ${showAddToCart ? 'pl-4 pr-5' : 'cart-buy-only px-4'}`}
|
||||
onClick={() => handleBuyNow()}>立即购买
|
||||
</View>
|
||||
</View>
|
||||
|
||||
@@ -490,7 +490,7 @@ const UserTicketList = () => {
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
<View className="flex flex-col items-end gap-2">
|
||||
<View className="flex flex-col items-end gap-2 hidden">
|
||||
{/*<Tag type={item.status === 1 ? 'danger' : 'success'}>*/}
|
||||
{/* {item.status === 1 ? '冻结' : '正常'}*/}
|
||||
{/*</Tag>*/}
|
||||
|
||||
Reference in New Issue
Block a user