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

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
+7 -1
View File
@@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { PropType } from 'vue' import type { PropType } from 'vue'
import { formatFileSize } from '@/@core/utils/formatters' import { formatFileSize, formatDateDifference } from '@/@core/utils/formatters'
import api from '@/api' import api from '@/api'
import type { Context } from '@/api/types' import type { Context } from '@/api/types'
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue' import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
@@ -196,6 +196,12 @@ onMounted(() => {
{{ meta?.subtitle || torrent?.description }} {{ meta?.subtitle || torrent?.description }}
</div> </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"> <div class="d-flex flex-wrap gap-1 mb-2">
<!-- 版本标签 --> <!-- 版本标签 -->
+7 -1
View File
@@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { PropType } from 'vue' import type { PropType } from 'vue'
import { formatFileSize } from '@/@core/utils/formatters' import { formatFileSize, formatDateDifference } from '@/@core/utils/formatters'
import api from '@/api' import api from '@/api'
import type { Context } from '@/api/types' import type { Context } from '@/api/types'
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue' import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
@@ -154,6 +154,12 @@ onMounted(() => {
{{ meta?.subtitle || torrent?.description || '暂无描述' }} {{ meta?.subtitle || torrent?.description || '暂无描述' }}
</div> </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"> <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"> <VChip v-if="meta?.edition" class="chip-edition rounded-sm" size="x-small" variant="elevated">
+1
View File
@@ -748,6 +748,7 @@ export default {
sortSite: 'Site', sortSite: 'Site',
sortSize: 'Size', sortSize: 'Size',
sortSeeder: 'Seeder', sortSeeder: 'Seeder',
sortPublishTime: 'Publish Time',
filterSite: 'Site', filterSite: 'Site',
filterSeason: 'Season', filterSeason: 'Season',
filterFreeState: 'Free State', filterFreeState: 'Free State',
+1
View File
@@ -745,6 +745,7 @@ export default {
sortSite: '站点', sortSite: '站点',
sortSize: '大小', sortSize: '大小',
sortSeeder: '做种数', sortSeeder: '做种数',
sortPublishTime: '发布时间',
filterSite: '站点', filterSite: '站点',
filterSeason: '季', filterSeason: '季',
filterFreeState: '促销状态', filterFreeState: '促销状态',
+1
View File
@@ -743,6 +743,7 @@ export default {
sortSite: '站點', sortSite: '站點',
sortSize: '大小', sortSize: '大小',
sortSeeder: '做種數', sortSeeder: '做種數',
sortPublishTime: '發布時間',
filterSite: '站點', filterSite: '站點',
filterSeason: '季', filterSeason: '季',
filterFreeState: '促銷狀態', filterFreeState: '促銷狀態',
@@ -49,6 +49,7 @@ const sortTitles: Record<string, string> = {
site: t('torrent.sortSite'), site: t('torrent.sortSite'),
size: t('torrent.sortSize'), size: t('torrent.sortSize'),
seeder: t('torrent.sortSeeder'), seeder: t('torrent.sortSeeder'),
publishTime: t('torrent.sortPublishTime'),
} }
// 过滤项映射 // 过滤项映射
@@ -275,6 +276,9 @@ function filterData() {
} else if (sortField.value === 'seeder') { } else if (sortField.value === 'seeder') {
// 按做种数排序(降序) // 按做种数排序(降序)
return (Number(b.torrent_info.seeders) || 0) - (Number(a.torrent_info.seeders) || 0) 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 { } else {
if (sortField.value === 'site') { if (sortField.value === 'site') {
@@ -286,6 +290,9 @@ function filterData() {
} else if (sortField.value === 'seeder') { } else if (sortField.value === 'seeder') {
// 按做种数排序(降序) // 按做种数排序(降序)
return (Number(a.torrent_info.seeders) || 0) - (Number(b.torrent_info.seeders) || 0) 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()
} }
} }
+11
View File
@@ -50,6 +50,7 @@ const sortTitles: Record<string, string> = {
site: t('torrent.sortSite'), site: t('torrent.sortSite'),
size: t('torrent.sortSize'), size: t('torrent.sortSize'),
seeder: t('torrent.sortSeeder'), 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) filteredData = filteredData.sort((a, b) => b.torrent_info.size - a.torrent_info.size)
} else if (sortField.value === 'seeder') { } else if (sortField.value === 'seeder') {
filteredData = filteredData.sort((a, b) => b.torrent_info.seeders - a.torrent_info.seeders) 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 { } else {
if (sortField.value === 'default') { if (sortField.value === 'default') {
@@ -276,6 +282,11 @@ function filterData() {
filteredData = filteredData.sort((a, b) => a.torrent_info.size - b.torrent_info.size) filteredData = filteredData.sort((a, b) => a.torrent_info.size - b.torrent_info.size)
} else if (sortField.value === 'seeder') { } else if (sortField.value === 'seeder') {
filteredData = filteredData.sort((a, b) => a.torrent_info.seeders - b.torrent_info.seeders) 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(),
)
} }
} }