diff --git a/src/@core/utils/formatters.ts b/src/@core/utils/formatters.ts index 4a8b4d3f..2700663a 100644 --- a/src/@core/utils/formatters.ts +++ b/src/@core/utils/formatters.ts @@ -153,3 +153,12 @@ export function formatDateDifference(dateString: string): string { if (!dateString) return '' return dayjs(dateString).fromNow() } + +// 格式化评份,如为10及以下的数按原值显示,否则格式化为xxM、xxK显示 +export function formatRating(rating: number): string { + if (!rating) return '' + if (rating <= 10) return rating.toString() + if (rating < 1000) return rating.toLocaleString() + if (rating < 1000 * 1000) return `${(rating / 1000).toFixed(1)}K` + return `${(rating / 1000 / 1000).toFixed(1)}M` +} diff --git a/src/components/cards/MediaCard.vue b/src/components/cards/MediaCard.vue index 4358c8d5..d8831afc 100644 --- a/src/components/cards/MediaCard.vue +++ b/src/components/cards/MediaCard.vue @@ -2,7 +2,7 @@ import type { PropType, Ref } from 'vue' import { useToast } from 'vue-toast-notification' import SubscribeEditDialog from '../dialog/SubscribeEditDialog.vue' -import { formatSeason } from '@/@core/utils/formatters' +import { formatSeason, formatRating } from '@/@core/utils/formatters' import api from '@/api' import { doneNProgress, startNProgress } from '@/api/nprogress' import type { MediaInfo, NotExistMediaInfo, Subscribe, TmdbSeason } from '@/api/types' @@ -533,7 +533,7 @@ function onRemoveSubscribe() { :class="getChipColor('rating')" class="absolute right-2 top-2 bg-opacity-80 shadow-md text-white font-bold" > - {{ props.media?.vote_average }} + {{ formatRating(props.media?.vote_average) }}