添加发布时间显示功能,并在排序中支持按发布时间排序

This commit is contained in:
jxxghp
2025-06-27 17:43:43 +08:00
parent 7dcc293a09
commit 38014ba342
7 changed files with 35 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
<script lang="ts" setup>
import type { PropType } from 'vue'
import { formatFileSize } from '@/@core/utils/formatters'
import { formatFileSize, formatDateDifference } from '@/@core/utils/formatters'
import api from '@/api'
import type { Context } from '@/api/types'
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
@@ -196,6 +196,12 @@ onMounted(() => {
{{ meta?.subtitle || torrent?.description }}
</div>
<!-- 发布时间 -->
<div v-if="torrent?.pubdate" class="d-flex align-start justify-start mb-2">
<VIcon size="small" color="grey" icon="mdi-clock-outline" class="me-1"></VIcon>
<span class="text-sm text-medium-emphasis">{{ formatDateDifference(torrent.pubdate) }}</span>
</div>
<!-- 资源标签区 -->
<div class="d-flex flex-wrap gap-1 mb-2">
<!-- 版本标签 -->

View File

@@ -1,6 +1,6 @@
<script lang="ts" setup>
import type { PropType } from 'vue'
import { formatFileSize } from '@/@core/utils/formatters'
import { formatFileSize, formatDateDifference } from '@/@core/utils/formatters'
import api from '@/api'
import type { Context } from '@/api/types'
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
@@ -154,6 +154,12 @@ onMounted(() => {
{{ meta?.subtitle || torrent?.description || '暂无描述' }}
</div>
<!-- 发布时间 -->
<div v-if="torrent?.pubdate" class="d-flex align-center mb-2">
<VIcon size="small" color="grey" icon="mdi-clock-outline" class="me-1"></VIcon>
<span class="text-sm text-medium-emphasis">{{ formatDateDifference(torrent.pubdate) }}</span>
</div>
<div class="d-flex flex-wrap gap-1 mb-2">
<!-- 版本标签 -->
<VChip v-if="meta?.edition" class="chip-edition rounded-sm" size="x-small" variant="elevated">

View File

@@ -748,6 +748,7 @@ export default {
sortSite: 'Site',
sortSize: 'Size',
sortSeeder: 'Seeder',
sortPublishTime: 'Publish Time',
filterSite: 'Site',
filterSeason: 'Season',
filterFreeState: 'Free State',

View File

@@ -745,6 +745,7 @@ export default {
sortSite: '站点',
sortSize: '大小',
sortSeeder: '做种数',
sortPublishTime: '发布时间',
filterSite: '站点',
filterSeason: '季',
filterFreeState: '促销状态',

View File

@@ -743,6 +743,7 @@ export default {
sortSite: '站點',
sortSize: '大小',
sortSeeder: '做種數',
sortPublishTime: '發布時間',
filterSite: '站點',
filterSeason: '季',
filterFreeState: '促銷狀態',

View File

@@ -49,6 +49,7 @@ const sortTitles: Record<string, string> = {
site: t('torrent.sortSite'),
size: t('torrent.sortSize'),
seeder: t('torrent.sortSeeder'),
publishTime: t('torrent.sortPublishTime'),
}
// 过滤项映射
@@ -275,6 +276,9 @@ function filterData() {
} else if (sortField.value === 'seeder') {
// 按做种数排序(降序)
return (Number(b.torrent_info.seeders) || 0) - (Number(a.torrent_info.seeders) || 0)
} else if (sortField.value === 'publishTime') {
// 按发布时间排序(降序,最新的在前)
return new Date(b.torrent_info.pubdate || 0).getTime() - new Date(a.torrent_info.pubdate || 0).getTime()
}
} else {
if (sortField.value === 'site') {
@@ -286,6 +290,9 @@ function filterData() {
} else if (sortField.value === 'seeder') {
// 按做种数排序(降序)
return (Number(a.torrent_info.seeders) || 0) - (Number(b.torrent_info.seeders) || 0)
} else if (sortField.value === 'publishTime') {
// 按发布时间排序(升序,最旧的在前)
return new Date(a.torrent_info.pubdate || 0).getTime() - new Date(b.torrent_info.pubdate || 0).getTime()
}
}

View File

@@ -50,6 +50,7 @@ const sortTitles: Record<string, string> = {
site: t('torrent.sortSite'),
size: t('torrent.sortSize'),
seeder: t('torrent.sortSeeder'),
publishTime: t('torrent.sortPublishTime'),
}
// 统一存储过滤选项
@@ -264,6 +265,11 @@ function filterData() {
filteredData = filteredData.sort((a, b) => b.torrent_info.size - a.torrent_info.size)
} else if (sortField.value === 'seeder') {
filteredData = filteredData.sort((a, b) => b.torrent_info.seeders - a.torrent_info.seeders)
} else if (sortField.value === 'publishTime') {
// 按发布时间排序(降序,最新的在前)
filteredData = filteredData.sort(
(a, b) => new Date(b.torrent_info.pubdate || 0).getTime() - new Date(a.torrent_info.pubdate || 0).getTime(),
)
}
} else {
if (sortField.value === 'default') {
@@ -276,6 +282,11 @@ function filterData() {
filteredData = filteredData.sort((a, b) => a.torrent_info.size - b.torrent_info.size)
} else if (sortField.value === 'seeder') {
filteredData = filteredData.sort((a, b) => a.torrent_info.seeders - b.torrent_info.seeders)
} else if (sortField.value === 'publishTime') {
// 按发布时间排序(升序,最旧的在前)
filteredData = filteredData.sort(
(a, b) => new Date(a.torrent_info.pubdate || 0).getTime() - new Date(b.torrent_info.pubdate || 0).getTime(),
)
}
}