From b703757d2832259ba4e6ed1f623f43fbfdaa4fb0 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Fri, 7 Feb 2025 17:00:35 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E8=AF=84?= =?UTF-8?q?=E5=88=86=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AA=92=E4=BD=93=E5=8D=A1=E7=89=87=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E8=AF=84=E5=88=86=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/@core/utils/formatters.ts | 9 +++++++++ src/components/cards/MediaCard.vue | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) 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) }}