修复:上传丢失页面
This commit is contained in:
72
components/order/GoodsPrice.vue
Normal file
72
components/order/GoodsPrice.vue
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<view class="price-info">
|
||||||
|
<text class="price">{{ goodsPrice.lowestPrice }} {{ t('global.coin') }}</text>
|
||||||
|
<text class="price-label">{{ goodsPrice.priceLabel }}</text>
|
||||||
|
<text v-if="goodsPrice.priceLabel" class="original-price">{{ props.goods.price }} {{ t('global.coin') }}</text>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { computed } from 'vue'
|
||||||
|
import { useUserStore } from '@/stores/user'
|
||||||
|
import { calculateLowestPrice } from '@/utils/index'
|
||||||
|
import { t } from '@/utils/i18n'
|
||||||
|
import type { IGoods } from '@/types/order'
|
||||||
|
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
goods: IGoods
|
||||||
|
}
|
||||||
|
const props = defineProps<Props>()
|
||||||
|
|
||||||
|
// 计算商品价格
|
||||||
|
const goodsPrice = computed(() => {
|
||||||
|
const { activityPrice, vipPrice, price } = props.goods
|
||||||
|
const isVipUser = userStore.userVips && userStore.userVips.length > 0
|
||||||
|
const priceLabel = {
|
||||||
|
vipPrice: 'VIP优惠价',
|
||||||
|
activityPrice: '活动价',
|
||||||
|
price: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
let priceData = null
|
||||||
|
if (isVipUser) {
|
||||||
|
priceData = { activityPrice, vipPrice, price }
|
||||||
|
} else {
|
||||||
|
priceData = { activityPrice, price }
|
||||||
|
}
|
||||||
|
const lowestPrice = calculateLowestPrice(priceData)
|
||||||
|
|
||||||
|
return {
|
||||||
|
lowestPrice: parseFloat(lowestPrice.value).toFixed(2),
|
||||||
|
priceLabel: priceLabel[lowestPrice.key as keyof typeof priceLabel]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.price-info {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
gap: 10rpx;
|
||||||
|
color: #e97512;
|
||||||
|
|
||||||
|
.price {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #e97512;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price-label {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #e97512;
|
||||||
|
}
|
||||||
|
|
||||||
|
.original-price {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #8a8a8a;
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user