'积分功能调整'

This commit is contained in:
gonghaoxing 2025-10-27 18:39:52 +08:00
parent f0b937360d
commit 625c5a8358
4 changed files with 66 additions and 35 deletions

View File

@ -6,8 +6,8 @@
</view> </view>
<view class="md-goods-content ss-flex-col ss-row-around"> <view class="md-goods-content ss-flex-col ss-row-around">
<view class="md-goods-title ss-line-2 ss-m-x-20 ss-m-t-6 ss-m-b-16">{{ title }}</view> <view class="md-goods-title ss-line-2 ss-m-x-20 ss-m-t-6 ss-m-b-16">{{ title }}</view>
<view class="md-goods-subtitle ss-line-1 ss-p-y-10 ss-p-20">至高90%积分抵扣</view> <view class="md-goods-subtitle ss-line-1 ss-p-y-10 ss-p-20" v-if="maxUseScore > 0">至高{{ scoreDiscountPercent }}%积分抵扣</view>
<view class="ss-flex ss-col-center ss-row-between ss-m-b-16 ss-m-x-20"> <view class="ss-flex ss-col-center ss-row-between ss-m-b-16 ss-m-x-20" v-if="maxUseScore > 0">
<view class="md-goods-price text-price">{{ price }}</view> <view class="md-goods-price text-price">{{ price }}</view>
<view class="goods-origin-price text-price">{{ originPrice }}</view> <view class="goods-origin-price text-price">{{ originPrice }}</view>
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
@ -46,13 +46,20 @@
type: [String, Number], type: [String, Number],
default: '', default: '',
}, },
scoreDiscountPercent: {
type: [String, Number],
default: 90,
},
maxUseScore: {
type: [String, Number],
default: 0,
},
}); });
// 使 // 使
const maxScoreText = computed(() => { const maxScoreText = computed(() => {
if (props.price && !isNaN(props.price)) { if (props.maxUseScore && !isNaN(props.maxUseScore)) {
const maxScore = (parseFloat(props.price) * 0.9).toFixed(3); return `最高可使用${props.maxUseScore}积分`;
return `最高可使用${maxScore}积分`;
} }
return '最高可使用0积分'; return '最高可使用0积分';
}); });

View File

@ -43,6 +43,17 @@
{{ formatSales(state.goodsInfo.sales_show_type, state.goodsInfo.sales) }} {{ formatSales(state.goodsInfo.sales_show_type, state.goodsInfo.sales) }}
</view> </view>
</view> </view>
<!-- 积分抵扣信息 -->
<view class="score-discount-box ss-flex ss-m-b-20" v-if="state.goodsInfo.max_use_score > 0">
<view class="score-discount-tag ss-m-r-10">
至高{{ state.goodsInfo.score_discount_percent }}%积分抵扣
</view>
<view class="max-score-tag">
最高可使用{{ state.goodsInfo.max_use_score }}积分
</view>
</view>
<view class="discounts-box ss-flex ss-row-between ss-m-b-28"> <view class="discounts-box ss-flex ss-row-between ss-m-b-28">
<div class="tag-content"> <div class="tag-content">
<view class="tag-box ss-flex"> <view class="tag-box ss-flex">
@ -309,6 +320,28 @@
color: $gray-c; color: $gray-c;
} }
.score-discount-box {
.score-discount-tag {
font-size: 24rpx;
font-weight: 400;
color: #FF3000;
background: #ffffff;
border: 1px solid #FF3000;
border-radius: 8rpx;
padding: 4rpx 12rpx;
display: inline-block;
}
.max-score-tag {
display: inline-block;
font-size: 20rpx;
background: #FF3000;
color: #ffffff;
border-radius: 8rpx;
padding: 4rpx 12rpx;
}
}
.discounts-box { .discounts-box {
.tag-content { .tag-content {
flex: 1; flex: 1;

View File

@ -90,11 +90,11 @@
{{ data.title }} {{ data.title }}
</view> </view>
<view <view
v-if="goodsFields.subtitle?.show" v-if="goodsFields.subtitle?.show && data.max_use_score > 0"
class="md-goods-subtitle ss-m-t-16 ss-line-1" class="md-goods-subtitle ss-m-t-16 ss-line-1"
:style="[{ color: subTitleColor, background: subTitleBackground }]" :style="[{ color: subTitleColor, background: subTitleBackground }]"
> >
至高90%积分抵扣 至高{{ data.score_discount_percent }}%积分抵扣
</view> </view>
<slot name="activity"> <slot name="activity">
<view v-if="data.promos?.length" class="tag-box ss-flex-wrap ss-flex ss-col-center"> <view v-if="data.promos?.length" class="tag-box ss-flex-wrap ss-flex ss-col-center">
@ -127,7 +127,7 @@
</view> </view>
</view> </view>
<view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap"> <view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap" v-if="data.max_use_score > 0">
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
</view> </view>
</view> </view>
@ -160,11 +160,11 @@
{{ data.title }} {{ data.title }}
</view> </view>
<view <view
v-if="goodsFields.subtitle?.show" v-if="goodsFields.subtitle?.show && data.max_use_score > 0"
class="lg-goods-subtitle ss-m-t-10 ss-line-1" class="lg-goods-subtitle ss-m-t-10 ss-line-1"
:style="[{ color: subTitleColor, background: subTitleBackground }]" :style="[{ color: subTitleColor, background: subTitleBackground }]"
> >
至高90%积分抵扣 至高{{ data.score_discount_percent }}%积分抵扣
</view> </view>
</view> </view>
<view> <view>
@ -193,7 +193,7 @@
<view class="ss-m-l-8">{{ data.original_price }}</view> <view class="ss-m-l-8">{{ data.original_price }}</view>
</view> </view>
</view> </view>
<view class="ss-m-t-8 ss-flex ss-col-center ss-flex-wrap"> <view class="ss-m-t-8 ss-flex ss-col-center ss-flex-wrap" v-if="data.max_use_score > 0">
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
</view> </view>
</view> </view>
@ -222,11 +222,11 @@
{{ data.title }} {{ data.title }}
</view> </view>
<view <view
v-if="goodsFields.subtitle?.show" v-if="goodsFields.subtitle?.show && data.max_use_score > 0"
class="sl-goods-subtitle ss-m-t-16" class="sl-goods-subtitle ss-m-t-16"
:style="[{ color: subTitleColor, background: subTitleBackground }]" :style="[{ color: subTitleColor, background: subTitleBackground }]"
> >
至高90%积分抵扣 至高{{ data.score_discount_percent }}%积分抵扣
</view> </view>
</view> </view>
<view> <view>
@ -255,7 +255,7 @@
<view class="ss-m-l-8">{{ data.original_price }}</view> <view class="ss-m-l-8">{{ data.original_price }}</view>
</view> </view>
</view> </view>
<view class="ss-m-t-16 ss-flex ss-flex-wrap"> <view class="ss-m-t-16 ss-flex ss-flex-wrap" v-if="data.max_use_score > 0">
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
</view> </view>
</view> </view>
@ -424,11 +424,9 @@
// 使 // 使
const maxScoreText = computed(() => { const maxScoreText = computed(() => {
// 90%使 // 使max_use_score
const price = isArray(props.data.price) ? props.data.price[0] : props.data.price; if (props.data.max_use_score && !isNaN(props.data.max_use_score)) {
if (price && !isNaN(price)) { return `最高可使用${props.data.max_use_score}积分`;
const maxScore = (parseFloat(price) * 0.9).toFixed(3);
return `最高可使用${maxScore}积分`;
} }
return '最高可使用0积分'; return '最高可使用0积分';
}); });

View File

@ -20,11 +20,11 @@
{{ data.title }} {{ data.title }}
</view> </view>
<view <view
v-if="goodsFields.subtitle?.show" v-if="goodsFields.subtitle?.show && data.max_use_score > 0"
class="md-goods-subtitle ss-m-t-16 ss-line-1" class="md-goods-subtitle ss-m-t-16 ss-line-1"
:style="[{ color: subTitleColor }]" :style="[{ color: subTitleColor }]"
> >
至高90%积分抵扣 至高{{ data.score_discount_percent }}%积分抵扣
</view> </view>
<view class="ss-col-bottom"> <view class="ss-col-bottom">
<view <view
@ -50,7 +50,7 @@
</view> </view>
</view> </view>
<view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap"> <view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap" v-if="data.max_use_score > 0">
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
</view> </view>
</view> </view>
@ -77,11 +77,11 @@
{{ data.title }} {{ data.title }}
</view> </view>
<view <view
v-if="goodsFields.subtitle?.show" v-if="goodsFields.subtitle?.show && data.max_use_score > 0"
class="lg-goods-subtitle ss-m-t-10 ss-line-1" class="lg-goods-subtitle ss-m-t-10 ss-line-1"
:style="[{ color: subTitleColor }]" :style="[{ color: subTitleColor }]"
> >
至高90%积分抵扣 至高{{ data.score_discount_percent }}%积分抵扣
</view> </view>
</view> </view>
<view> <view>
@ -107,7 +107,7 @@
<view class="ss-m-l-8">{{ data.original_price }}</view> <view class="ss-m-l-8">{{ data.original_price }}</view>
</view> </view>
</view> </view>
<view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap"> <view class="ss-m-t-16 ss-flex ss-col-center ss-flex-wrap" v-if="data.max_use_score > 0">
<view class="sales-text">{{ maxScoreText }}</view> <view class="sales-text">{{ maxScoreText }}</view>
</view> </view>
</view> </view>
@ -273,16 +273,9 @@
// 使 // 使
const maxScoreText = computed(() => { const maxScoreText = computed(() => {
// 使score // 使max_use_score
if (props.data.score && !isNaN(props.data.score)) { if (props.data.max_use_score && !isNaN(props.data.max_use_score)) {
const maxScore = (parseFloat(props.data.score) * 0.9).toFixed(3); return `最高可使用${props.data.max_use_score}积分`;
return `最高可使用${maxScore}积分`;
}
// score
const price = Array.isArray(props.data.price) ? props.data.price[0] : props.data.price;
if (price && !isNaN(price)) {
const maxScore = (parseFloat(price) * 0.9).toFixed(3);
return `最高可使用${maxScore}积分`;
} }
return '最高可使用0积分'; return '最高可使用0积分';
}); });