1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <script setup lang="ts">
- import { useUserStore } from '@/store'
- import { storeToRefs } from 'pinia'
- const props = withDefaults(
- defineProps<{
- isCurrent: boolean
- option?: any[]
- index?: number
- }>(),
- { isCurrent: false },
- )
- const userStore = useUserStore()
- const { userInfo } = storeToRefs(userStore)
- const percentage = computed(() => {
- const currentLevel = userInfo.value?.level?.level
- const targetLevel = props.option[props.index + 1]
- if (targetLevel) {
- return (userInfo.value?.level?.point / targetLevel.points) * 100
- }
- return 0
- })
- // 是否最高的等级
- const isMaxLevel = computed(() => {
- return userInfo.value?.level?.level === props.option?.[props.option.length - 1]?.memberLevel
- })
- // 是否高于当前等级
- const isHigherThanCurrent = computed(() => {
- return userInfo.value?.level?.level > props.option[props.index]?.memberLevel
- })
- // 是否低于当前等级
- const isLowerThanCurrent = computed(() => {
- return userInfo.value?.level?.level < props.option[props.index]?.memberLevel
- })
- </script>
- <template>
- <div class="w-full h-full box-border p-4 flex flex-col">
- <div class="flex justify-end pt-2">
- <div class="w-[66px] h-[26px] relative" v-if="isCurrent">
- <div class="w-[66px] h-[22px] left-0 absolute bg-[#3c556b] rounded-md"></div>
- <div
- class="left-[10px] top-0.25 absolute text-center text-[#dfdfdf] text-xs font-normal font-['PingFang_SC'] leading-relaxed"
- >
- 当前等级
- </div>
- </div>
- </div>
- <div class="flex-1"></div>
- <!-- {{ userInfo.level.point }}-->
- <!-- {{ userInfo.level.point }}-->
- <!-- {{ percentage }}-->
- <template v-if="userInfo">
- <template v-if="isHigherThanCurrent">
- <div class="text-[#61311b] text-xs font-normal font-['PingFang_SC'] leading-relaxed">
- <!-- 还差{{ props.option[props.index]?.points - userInfo.level.point }}积分升级-->
- 当前高于该等级
- </div>
- </template>
- <template v-else-if="isLowerThanCurrent">
- <div class="text-[#61311b] text-xs font-normal font-['PingFang_SC'] leading-relaxed">
- <!-- 还差{{ props.option[props.index]?.points - userInfo.level.point }}积分升级-->
- 距{{ option[index].memberLevelName }}还需{{
- option[index].points - userInfo.level.point
- }}积分
- </div>
- <wd-progress :percentage="(userInfo.level.point / option[index].points) * 100" hide-text />
- </template>
- <template v-else-if="isMaxLevel">
- <div class="text-[#61311b] text-xs font-normal font-['PingFang_SC'] leading-relaxed">
- 当前积分{{ userInfo.level.point }}
- </div>
- </template>
- <template v-else>
- <div class="text-[#61311b] text-xs font-normal font-['PingFang_SC'] leading-relaxed">
- 距{{ option[index + 1].memberLevelName }}还需{{
- option[index + 1].points - userInfo.level.point
- }}积分
- </div>
- <wd-progress :percentage="percentage" hide-text />
- </template>
- </template>
- </div>
- </template>
|