<template>
|
<div class="credit-score-page">
|
<assets-head :title="$t('信用分')" />
|
|
<div class="score-wrap">
|
<van-circle
|
v-model:current-rate="currentRate"
|
:rate="score"
|
:speed="50"
|
:color="circleColor"
|
layer-color="#f0f0f0"
|
:stroke-width="50"
|
size="25rem"
|
>
|
<div class="score-inner">
|
<div class="score-label">{{ $t('信用分') }}</div>
|
<div class="score-value">{{ score }}</div>
|
<div class="score-grade">{{ grade }}</div>
|
<div class="score-time-label">{{ $t('评估时间') }}</div>
|
<div class="score-time">{{ assessTime }}</div>
|
</div>
|
</van-circle>
|
</div>
|
</div>
|
</template>
|
|
<script setup>
|
import { ref, onMounted } from 'vue'
|
import dayjs from 'dayjs'
|
import assetsHead from '@/components/Transform/assets-head/index.vue'
|
import { _info } from '@/service/user.api'
|
|
const score = ref(0)
|
const grade = ref('--')
|
const assessTime = ref(dayjs().format('YYYY-MM-DD HH:mm'))
|
const currentRate = ref(0)
|
const circleColor = '#1989fa'
|
|
function scoreToGrade(s) {
|
if (s >= 90) return 'A+'
|
if (s >= 80) return 'A'
|
if (s >= 70) return 'B'
|
if (s >= 60) return 'C'
|
return 'D'
|
}
|
|
onMounted(() => {
|
_info()
|
.then((data) => {
|
const val = data?.credit_score != null ? Number(data.credit_score) : 0
|
score.value = Math.min(100, Math.max(0, val))
|
grade.value = scoreToGrade(score.value)
|
assessTime.value = dayjs().format('YYYY-MM-DD HH:mm')
|
currentRate.value = score.value
|
})
|
.catch(() => {
|
currentRate.value = score.value
|
})
|
})
|
</script>
|
|
<style lang="scss" scoped>
|
.credit-score-page {
|
min-height: 100vh;
|
background: #fff;
|
}
|
|
.score-wrap {
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
padding: 4rem 2rem;
|
}
|
|
.score-inner {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
justify-content: center;
|
margin-top: 10px;
|
gap: 0.6rem;
|
}
|
|
.score-label {
|
font-size: 1.4rem;
|
color: #333;
|
}
|
|
.score-value {
|
font-size: 5rem;
|
font-weight: 700;
|
color: #1989fa;
|
line-height: 1.2;
|
}
|
|
.score-grade {
|
font-size: 1.6rem;
|
color: #333;
|
}
|
|
.score-time-label {
|
font-size: 1.3rem;
|
color: #666;
|
margin-top: 0.4rem;
|
}
|
|
.score-time {
|
font-size: 1.4rem;
|
color: #333;
|
font-weight: 500;
|
}
|
</style>
|