From e5d7af8906c9b388d8f9a5f64e01e70e2642520c Mon Sep 17 00:00:00 2001 From: liumangmang Date: Wed, 1 Jul 2026 17:22:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E7=AB=99=E5=88=86=E7=BB=84?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=BB=98=E8=AE=A4=E6=8C=89=E5=80=8D=E7=8E=87?= =?UTF-8?q?=E4=BB=8E=E5=B0=8F=E5=88=B0=E5=A4=A7=EF=BC=88=E5=8D=87=E5=BA=8F?= =?UTF-8?q?=EF=BC=89=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/Websites.vue | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Websites.vue b/frontend/src/views/Websites.vue index dffaa16..bfbd251 100644 --- a/frontend/src/views/Websites.vue +++ b/frontend/src/views/Websites.vue @@ -71,7 +71,7 @@ 拉取分组 - + @@ -744,6 +744,30 @@ const websites = ref<(WebsiteData & { _testing?: boolean })[]>([]) const upstreams = ref([]) const selectedWebsite = ref(null) const websiteGroups = ref([]) +const sortedWebsiteGroups = computed(() => { + return [...websiteGroups.value].sort((a, b) => { + const rateA = a.rate_multiplier !== null && a.rate_multiplier !== undefined && a.rate_multiplier !== '—' + ? parseFloat(String(a.rate_multiplier)) + : NaN + const rateB = b.rate_multiplier !== null && b.rate_multiplier !== undefined && b.rate_multiplier !== '—' + ? parseFloat(String(b.rate_multiplier)) + : NaN + + const isNaN_A = isNaN(rateA) + const isNaN_B = isNaN(rateB) + + if (isNaN_A && isNaN_B) { + return a.name.localeCompare(b.name) || String(a.id).localeCompare(String(b.id)) + } + if (isNaN_A) return 1 + if (isNaN_B) return -1 + + if (rateA !== rateB) { + return rateA - rateB + } + return a.name.localeCompare(b.name) || String(a.id).localeCompare(String(b.id)) + }) +}) const bindingWebsiteGroups = ref([]) const bindings = ref<(GroupBindingData & { _syncing?: boolean })[]>([]) const logs = ref([])