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([])