feat: 网站分组列表默认按倍率从小到大(升序)排序

This commit is contained in:
liumangmang
2026-07-01 17:22:19 +08:00
parent 650451c123
commit e5d7af8906
+25 -1
View File
@@ -71,7 +71,7 @@
</el-select>
<el-button size="small" :disabled="!selectedWebsite" :loading="groupsLoading" @click="loadWebsiteGroups">拉取分组</el-button>
</div>
<el-table :data="websiteGroups" v-loading="groupsLoading" row-key="id" size="small" style="width:100%">
<el-table :data="sortedWebsiteGroups" v-loading="groupsLoading" row-key="id" size="small" style="width:100%">
<el-table-column prop="name" label="分组" min-width="150" />
<el-table-column prop="id" label="ID" min-width="130" />
<el-table-column label="倍率" width="100">
@@ -744,6 +744,30 @@ const websites = ref<(WebsiteData & { _testing?: boolean })[]>([])
const upstreams = ref<UpstreamData[]>([])
const selectedWebsite = ref<WebsiteData | null>(null)
const websiteGroups = ref<WebsiteGroup[]>([])
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<WebsiteGroup[]>([])
const bindings = ref<(GroupBindingData & { _syncing?: boolean })[]>([])
const logs = ref<WebsiteSyncLog[]>([])