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