From d7c3167ecdd301b3633869d6e14a42d95895e3dc Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 9 Apr 2025 21:49:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20TorrentRowListView?= =?UTF-8?q?=20=E7=BB=84=E4=BB=B6=E7=9A=84=E6=95=B0=E6=8D=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=92=8C=E6=8E=92=E5=BA=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/torrent/TorrentRowListView.vue | 39 ++++++++++++++---------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/views/torrent/TorrentRowListView.vue b/src/views/torrent/TorrentRowListView.vue index d72c9503..65837c29 100644 --- a/src/views/torrent/TorrentRowListView.vue +++ b/src/views/torrent/TorrentRowListView.vue @@ -233,22 +233,11 @@ function initOptions(data: Context) { optionValue(filterOptions.resolution, meta_info?.resource_pix) } -// 监听数据列表,进行排序 -watchEffect(() => { - const list = dataList.value - if (sortField.value === 'default') { - dataList.value = list.sort((a, b) => b.torrent_info.pri_order - a.torrent_info.pri_order) - } else if (sortField.value === 'site') { - dataList.value = list.sort((a, b) => (a.torrent_info.site_name || '').localeCompare(b.torrent_info.site_name || '')) - } else if (sortField.value === 'size') { - dataList.value = list.sort((a, b) => b.torrent_info.size - a.torrent_info.size) - } else if (sortField.value === 'seeder') { - dataList.value = list.sort((a, b) => b.torrent_info.seeders - a.torrent_info.seeders) - } -}) +// 修改watch监听,同时监听排序字段的变化 +watch([filterForm, sortField], filterData) // 计算过滤后的列表 -watchEffect(() => { +function filterData() { // 清空列表 dataList.value = [] displayDataList.value = [] @@ -264,7 +253,7 @@ watchEffect(() => { }) // 筛选数据 - const filteredData: Context[] = [] + let filteredData: Context[] = [] // 然后根据过滤条件筛选数据 props.items.forEach(data => { @@ -288,12 +277,26 @@ watchEffect(() => { filteredData.push(data) } }) + + // 排序 + if (sortField.value === 'default') { + filteredData = filteredData.sort((a, b) => b.torrent_info.pri_order - a.torrent_info.pri_order) + } else if (sortField.value === 'site') { + filteredData = filteredData.sort((a, b) => + (a.torrent_info.site_name || '').localeCompare(b.torrent_info.site_name || ''), + ) + } else if (sortField.value === 'size') { + 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) + } + // 显示前20个 displayDataList.value = filteredData.slice(0, 20) // 保存剩余数据 dataList.value = filteredData.slice(20) } -}) +} // 过滤菜单相关 const filterMenuOpen = ref(false) @@ -350,6 +353,10 @@ function loadMore({ done }: { done: any }) { displayDataList.value.push(...itemsToMove) done('ok') } + +onMounted(() => { + filterData() +})