mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 14:01:07 +00:00
feat(移动端): 确认页价格明细展示会员类优惠
- 新增用户等级/付费会员/会员运费三行优惠,确认接口取 priceGroup(camelCase)、重算接口取 snake_case 字段,口径对齐 - 积分抵扣金额统一保留两位小数
This commit is contained in:
parent
f8d869dd97
commit
acf277828f
@ -28,6 +28,21 @@
|
||||
<view class="money" v-else-if="!integralTotal">{{ $t(`免费上门`) }}</view>
|
||||
<view class="money" v-else>{{ $t(`免费上门`) }}</view>
|
||||
</view>
|
||||
<!-- 会员等级折扣(确认接口 priceGroup.levelPrice / 重算接口 level_price) -->
|
||||
<view class="item acea-row row-between-wrapper" v-if="parseFloat(levelPrice) > 0">
|
||||
<view>{{ $t(`用户等级优惠`) }}</view>
|
||||
<view class="money money-minus">-¥{{ parseFloat(levelPrice).toFixed(2) }}</view>
|
||||
</view>
|
||||
<!-- 付费会员折扣 -->
|
||||
<view class="item acea-row row-between-wrapper" v-if="parseFloat(memberPrice) > 0">
|
||||
<view>{{ $t(`付费会员优惠`) }}</view>
|
||||
<view class="money money-minus">-¥{{ parseFloat(memberPrice).toFixed(2) }}</view>
|
||||
</view>
|
||||
<!-- 会员运费折扣 -->
|
||||
<view class="item acea-row row-between-wrapper" v-if="parseFloat(postageDiscount) > 0">
|
||||
<view>{{ $t(`会员运费优惠`) }}</view>
|
||||
<view class="money money-minus">-¥{{ parseFloat(postageDiscount).toFixed(2) }}</view>
|
||||
</view>
|
||||
<!-- 优惠券抵扣 -->
|
||||
<view class="item acea-row row-between-wrapper" v-if="couponPrice > 0">
|
||||
<view>{{ $t(`优惠券抵扣`) }}</view>
|
||||
@ -36,7 +51,7 @@
|
||||
<!-- 积分抵扣 -->
|
||||
<view class="item acea-row row-between-wrapper" v-if="integralPrice > 0">
|
||||
<view>{{ $t(`积分抵扣`) }}</view>
|
||||
<view class="money money-minus">-¥{{ integralPrice }}</view>
|
||||
<view class="money money-minus">-¥{{ parseFloat(integralPrice).toFixed(2) }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@ -51,6 +66,12 @@ const props = defineProps({
|
||||
totalPrice: { type: [Number, String], default: '0.00' },
|
||||
/** 运费 */
|
||||
payPostage: { type: [Number, String], default: 0 },
|
||||
/** 用户等级优惠金额 */
|
||||
levelPrice: { type: [Number, String], default: 0 },
|
||||
/** 付费会员优惠金额 */
|
||||
memberPrice: { type: [Number, String], default: 0 },
|
||||
/** 会员运费优惠金额 */
|
||||
postageDiscount: { type: [Number, String], default: 0 },
|
||||
/** 优惠券抵扣金额 */
|
||||
couponPrice: { type: [Number, String], default: 0 },
|
||||
/** 积分抵扣金额 */
|
||||
|
||||
@ -105,6 +105,9 @@
|
||||
<OrderPriceDetail
|
||||
:total-price="totalPriceText"
|
||||
:pay-postage="payPostage"
|
||||
:level-price="levelPrice"
|
||||
:member-price="memberPrice"
|
||||
:postage-discount="postageDiscount"
|
||||
:coupon-price="couponPrice"
|
||||
:integral-price="integralPrice"
|
||||
:integral-total="integralTotal"
|
||||
@ -207,6 +210,10 @@ const orderKey = ref('');
|
||||
const totalPrice = ref(0);
|
||||
const payPrice = ref(0);
|
||||
const payPostage = ref(0);
|
||||
// 价格明细中的会员优惠,确认接口使用 camelCase,重算接口使用 snake_case。
|
||||
const levelPrice = ref(0);
|
||||
const memberPrice = ref(0);
|
||||
const postageDiscount = ref(0);
|
||||
const priceComputing = ref(false);
|
||||
const priceReady = ref(false);
|
||||
const priceError = ref('');
|
||||
@ -420,6 +427,11 @@ async function loadConfirmData() {
|
||||
totalPrice.value = data.total_price || 0;
|
||||
payPrice.value = data.pay_price || 0;
|
||||
payPostage.value = data.pay_postage || 0;
|
||||
// 确认接口返回 priceGroup,不能只使用顶层金额字段,否则等级/会员折扣会丢失。
|
||||
var confirmPriceGroup = data.priceGroup || {};
|
||||
levelPrice.value = confirmPriceGroup.levelPrice ?? data.level_price ?? 0;
|
||||
memberPrice.value = confirmPriceGroup.memberPrice ?? data.member_price ?? 0;
|
||||
postageDiscount.value = confirmPriceGroup.postageDiscount ?? data.postage_discount ?? 0;
|
||||
features.value = { ...features.value, ...(data.features || {}) };
|
||||
// 保存活动订单信息(含免费支付方式标识与跳转地址,由交易模式 Handler 下发)
|
||||
activityInfo.value = data.activity_info || {};
|
||||
@ -586,6 +598,10 @@ async function computedPrice() {
|
||||
var data = res.data || {};
|
||||
payPrice.value = data.pay_price ?? 0;
|
||||
payPostage.value = data.pay_postage ?? 0;
|
||||
// computed 接口返回 snake_case 价格字段,和确认接口的 priceGroup 保持同一展示口径。
|
||||
levelPrice.value = data.level_price ?? data.priceGroup?.levelPrice ?? levelPrice.value;
|
||||
memberPrice.value = data.member_price ?? data.priceGroup?.memberPrice ?? memberPrice.value;
|
||||
postageDiscount.value = data.storePostageDiscount ?? data.postage_discount ?? data.priceGroup?.postageDiscount ?? postageDiscount.value;
|
||||
couponPrice.value = data.coupon_price ?? 0;
|
||||
integralPrice.value = data.deduction_price ?? 0;
|
||||
surplusIntegral.value = data.SurplusIntegral ?? usableIntegral.value;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user