From 56b2dc4ebf5e6acf61b553864537536bb378aefb Mon Sep 17 00:00:00 2001 From: qiaoyun680 <549653222@qq.com> Date: Tue, 13 May 2025 16:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=90=9C=E7=B4=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/torrent/TorrentCardListView.vue | 51 +++++++++++++++++------ src/views/torrent/TorrentRowListView.vue | 49 ++++++++++++++++------ 2 files changed, 76 insertions(+), 24 deletions(-) diff --git a/src/views/torrent/TorrentCardListView.vue b/src/views/torrent/TorrentCardListView.vue index 3fd499bc..cf53733e 100644 --- a/src/views/torrent/TorrentCardListView.vue +++ b/src/views/torrent/TorrentCardListView.vue @@ -37,6 +37,9 @@ const filterForm: Record = reactive({ // 排序选项 const sortField = ref('default') +// 降序 +const sortType = ref<'asc' | 'desc'>('desc') + const sortTitles: Record = { default: t('torrent.sortDefault'), site: t('torrent.sortSite'), @@ -212,7 +215,7 @@ onMounted(() => { }) // 修改watch监听,同时监听排序字段的变化 -watch([filterForm, groupedDataList, sortField], filterData) +watch([filterForm, groupedDataList, sortField, sortType], filterData) function filterData() { // 清空列表 @@ -258,16 +261,30 @@ function filterData() { // 排序数据 if (sortField.value !== 'default') { filteredData.sort((a, b) => { - if (sortField.value === 'site') { - // 按站点名称排序 - return (a.torrent_info.site_name || '').localeCompare(b.torrent_info.site_name || '') - } else if (sortField.value === 'size') { - // 按文件大小排序(降序) - return (Number(b.torrent_info.size) || 0) - (Number(a.torrent_info.size) || 0) - } else if (sortField.value === 'seeder') { - // 按做种数排序(降序) - return (Number(b.torrent_info.seeders) || 0) - (Number(a.torrent_info.seeders) || 0) + if (sortType.value === 'desc') { + if (sortField.value === 'site') { + // 按站点名称排序 + return (a.torrent_info.site_name || '').localeCompare(b.torrent_info.site_name || '') + } else if (sortField.value === 'size') { + // 按文件大小排序(降序) + return (Number(b.torrent_info.size) || 0) - (Number(a.torrent_info.size) || 0) + } else if (sortField.value === 'seeder') { + // 按做种数排序(降序) + return (Number(b.torrent_info.seeders) || 0) - (Number(a.torrent_info.seeders) || 0) + } + } else { + if (sortField.value === 'site') { + // 按站点名称排序 + return (b.torrent_info.site_name || '').localeCompare(a.torrent_info.site_name || '') + } else if (sortField.value === 'size') { + // 按文件大小排序(降序) + return (Number(a.torrent_info.size) || 0) - (Number(b.torrent_info.size) || 0) + } else if (sortField.value === 'seeder') { + // 按做种数排序(降序) + return (Number(a.torrent_info.seeders) || 0) - (Number(b.torrent_info.seeders) || 0) + } } + return 0 }) } @@ -364,6 +381,12 @@ function loadMore({ done }: { done: any }) { displayDataList.value.push(...itemsToMove) done('ok') } + +// 处理图标点击 +const handleSortIconClick = () => { + // 切换排序方向 + sortType.value = sortType.value === 'asc' ? 'desc' : 'asc' +}