mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-08-28 11:37:29 +08:00
添加发布时间显示功能,并在排序中支持按发布时间排序
This commit is contained in:
@@ -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">
|
||||||
<!-- 版本标签 -->
|
<!-- 版本标签 -->
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
@@ -745,6 +745,7 @@ export default {
|
|||||||
sortSite: '站点',
|
sortSite: '站点',
|
||||||
sortSize: '大小',
|
sortSize: '大小',
|
||||||
sortSeeder: '做种数',
|
sortSeeder: '做种数',
|
||||||
|
sortPublishTime: '发布时间',
|
||||||
filterSite: '站点',
|
filterSite: '站点',
|
||||||
filterSeason: '季',
|
filterSeason: '季',
|
||||||
filterFreeState: '促销状态',
|
filterFreeState: '促销状态',
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user