feat(search): 排序菜单新增「最近更新 ↓ / ↑」按日期排序
按 lastUpdated(YYYY-MM-DD)字符串比较实现升降序, 无日期的异常包固定排在最后。
This commit is contained in:
@@ -12,7 +12,7 @@ const route = useRoute()
|
||||
|
||||
const keyword = ref('')
|
||||
const statusFilter = ref('all') // all | warn | ok | ignored | broken
|
||||
const sortMode = ref('default') // default | versions-desc | size-desc
|
||||
const sortMode = ref('default') // default | versions-desc | size-desc | date-desc | date-asc
|
||||
const isMobile = ref(false)
|
||||
let debounceTimer = null
|
||||
|
||||
@@ -98,6 +98,14 @@ const filtered = computed(() => {
|
||||
list = [...list].sort((a, b) => b.versions - a.versions)
|
||||
} else if (sortMode.value === 'size-desc') {
|
||||
list = [...list].sort((a, b) => b.size - a.size)
|
||||
} else if (sortMode.value === 'date-desc' || sortMode.value === 'date-asc') {
|
||||
// lastUpdated 为 YYYY-MM-DD,字符串可比较;无日期的包(broken 等)固定排最后
|
||||
const dir = sortMode.value === 'date-desc' ? -1 : 1
|
||||
list = [...list].sort((a, b) => {
|
||||
if (!a.lastUpdated) return 1
|
||||
if (!b.lastUpdated) return -1
|
||||
return a.lastUpdated.localeCompare(b.lastUpdated) * dir
|
||||
})
|
||||
}
|
||||
return list
|
||||
})
|
||||
@@ -196,6 +204,8 @@ async function onCleanConfirmed(res) {
|
||||
<div class="dd-item" :class="{ on: sortMode === 'default' }" @click="pickSort('default')">默认<span v-if="sortMode === 'default'" class="dd-check">✓</span></div>
|
||||
<div class="dd-item" :class="{ on: sortMode === 'versions-desc' }" @click="pickSort('versions-desc')">版本数 ↓<span v-if="sortMode === 'versions-desc'" class="dd-check">✓</span></div>
|
||||
<div class="dd-item" :class="{ on: sortMode === 'size-desc' }" @click="pickSort('size-desc')">占用大小 ↓<span v-if="sortMode === 'size-desc'" class="dd-check">✓</span></div>
|
||||
<div class="dd-item" :class="{ on: sortMode === 'date-desc' }" @click="pickSort('date-desc')">最近更新 ↓<span v-if="sortMode === 'date-desc'" class="dd-check">✓</span></div>
|
||||
<div class="dd-item" :class="{ on: sortMode === 'date-asc' }" @click="pickSort('date-asc')">最近更新 ↑<span v-if="sortMode === 'date-asc'" class="dd-check">✓</span></div>
|
||||
</div>
|
||||
</Transition>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user