85 lines
2.3 KiB
Vue
85 lines
2.3 KiB
Vue
<!--商品价格,包括普通价、会员价-->
|
||
<script setup lang="ts">
|
||
import {toRefs, reactive, computed} from 'vue'
|
||
import { useAppStore } from '~/stores/app'
|
||
import { GlobalDatas } from '~/types/user'
|
||
|
||
const props = defineProps({
|
||
//是否展示返回按钮
|
||
productPrice: {
|
||
type: Object ,
|
||
default: null,
|
||
},
|
||
//普通商品样式
|
||
priceStyle: {
|
||
type: Object,
|
||
default: null,
|
||
},
|
||
topStyle: {
|
||
type: Object,
|
||
default: null,
|
||
}
|
||
})
|
||
const { productPrice, priceStyle, topStyle } = toRefs(props)
|
||
|
||
//全局配置
|
||
const appStore = useAppStore()
|
||
const globalData = computed(()=>reactive<GlobalDatas>(<GlobalDatas>appStore?.globalData))
|
||
</script>
|
||
|
||
<template>
|
||
<div class="acea-row items-baseline line-heightOne">
|
||
<div class="x-money mr-8px acea-row items-baseline relative font-color" :style="topStyle">
|
||
<span class="oppoSans-M">¥</span>
|
||
<div class="dinProSemiBold vipPrice" :style="priceStyle">
|
||
{{ globalData.userIsPaidMember && productPrice.isPaidMember ? productPrice.vipPrice : productPrice.price }}
|
||
</div>
|
||
</div>
|
||
|
||
<div
|
||
v-if="globalData.userIsPaidMember && productPrice.isPaidMember"
|
||
class="svip-icon acea-row row-middle h-18px lh-19px"
|
||
>
|
||
<div class="text-11px">SVIP会员价</div>
|
||
</div>
|
||
<div
|
||
v-if="!globalData.userIsPaidMember && globalData.paidMemberPriceDisplay === 'all' && productPrice.isPaidMember"
|
||
class="svip-price acea-row row-middle"
|
||
>
|
||
<div class="icon pl-10px h-18px lh-19px" :class="productPrice.vipPrice.length>5?'text-7px':'text-11px'">SVIP</div>
|
||
<div class="price ml-3px dinProSemiBold" :class="productPrice.vipPrice.length>5?'text-13px':''">¥ {{ productPrice.vipPrice }}</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<style scoped lang="scss">
|
||
.x-money {
|
||
top: 3px;
|
||
font-weight: 700;
|
||
}
|
||
.vipPrice {
|
||
}
|
||
.svip-price {
|
||
padding: 0 6px 0 0;
|
||
background: #fff0d1;
|
||
border-radius: 30px 28px 28px 13px;
|
||
.icon {
|
||
font-weight: 600;
|
||
color: #fddaa4;
|
||
padding-right: 3px;
|
||
padding: 0 3px 0 5px;
|
||
border-radius: 8px 0 8px 1px;
|
||
background: linear-gradient(180deg, #484643 100%, #1f1b17 100%);
|
||
}
|
||
.price {
|
||
color: #333333;
|
||
}
|
||
}
|
||
.svip-icon {
|
||
padding: 0 8px;
|
||
background: linear-gradient(180deg, #fdf6ec 0%, #ffe3b7 100%);
|
||
color: #70490c;
|
||
border-radius: 18px 20px 20px 0.4px;
|
||
}
|
||
</style>
|