再次优化筛选

This commit is contained in:
yml2213
2026-06-13 18:19:45 +08:00
parent 55326b7d06
commit 9965150521
5 changed files with 301 additions and 7 deletions
@@ -13,11 +13,16 @@ import {
} from '@/features/listings/api/listingOptions'
import { useHomeFilters } from '@/features/listings/composables/useHomeFilters'
import {
clearStoredHomeQuery,
desktopHomeFilterStorageKey,
desktopHomeFilterQueryKeys,
hasHomeQueryValues,
isSameQuery,
mergeHomeQuery,
readStoredHomeQuery,
readQueryNumber,
readQueryString,
storeHomeQuery,
type HomeQueryValue,
} from '@/features/listings/composables/useHomeFilterQuery'
import { useListingQuery } from '@/features/listings/composables/useListingQuery'
@@ -151,6 +156,7 @@ function updateFilters(partial: Partial<typeof filters>) {
}
function handleResetFilters() {
clearStoredHomeQuery(desktopHomeFilterStorageKey)
resetFilters()
activeZone.value = 'all'
sortBy.value = 'recommended'
@@ -158,7 +164,10 @@ function handleResetFilters() {
}
function applyRouteQueryToHomeState() {
const query = route.query
const storedQuery = readStoredHomeQuery(desktopHomeFilterStorageKey)
const query = hasHomeQueryValues(route.query, desktopHomeFilterQueryKeys)
? route.query
: storedQuery
filters.keyword = readQueryString(query, 'keyword')
filters.server = readQueryString(query, 'server')
filters.region = readQueryString(query, 'region')
@@ -193,6 +202,9 @@ function syncHomeQuery() {
desktopHomeFilterQueryKeys,
buildDesktopHomeQueryValues()
)
if (hasHomeQueryValues(query, desktopHomeFilterQueryKeys)) {
storeHomeQuery(desktopHomeFilterStorageKey, query)
}
if (isSameQuery(route.query, query)) return
router.replace({ path: '/', query })
}
@@ -224,6 +236,7 @@ function buildDesktopHomeQueryValues(): Record<string, HomeQueryValue> {
}
}
syncHomeQuery()
loadHome()
</script>
@@ -23,12 +23,17 @@ import {
} from '@/features/listings/api/homeConfig'
import MobileHomeFilterSheet, { type FilterSection } from './MobileHomeFilterSheet.vue'
import {
clearStoredHomeQuery,
decodeHomeQueryJson,
encodeHomeQueryJson,
hasHomeQueryValues,
isSameQuery,
mergeHomeQuery,
mobileHomeFilterStorageKey,
mobileHomeFilterQueryKeys,
readStoredHomeQuery,
readQueryString,
storeHomeQuery,
type HomeQueryValue,
} from '@/features/listings/composables/useHomeFilterQuery'
import {
@@ -384,6 +389,7 @@ function selectZone(zoneKey: string) {
}
function clearFilters() {
clearStoredHomeQuery(mobileHomeFilterStorageKey)
selectedFilters.value = {}
rangeFilters.value = {}
searchValue.value = ''
@@ -466,7 +472,10 @@ function parseOptionalNumber(value: string) {
}
function applyRouteQueryToMobileState() {
const query = route.query
const storedQuery = readStoredHomeQuery(mobileHomeFilterStorageKey)
const query = hasHomeQueryValues(route.query, mobileHomeFilterQueryKeys)
? route.query
: storedQuery
searchValue.value = readQueryString(query, 'keyword')
activeSort.value = readQueryString(query, 'sort') || 'recommended'
activeZone.value = readQueryString(query, 'zone') || 'all'
@@ -480,6 +489,9 @@ function applyRouteQueryToMobileState() {
function syncMobileHomeQuery() {
const query = mergeHomeQuery(route.query, mobileHomeFilterQueryKeys, buildMobileHomeQueryValues())
if (hasHomeQueryValues(query, mobileHomeFilterQueryKeys)) {
storeHomeQuery(mobileHomeFilterStorageKey, query)
}
if (isSameQuery(route.query, query)) return
router.replace({ path: route.path, query })
}
@@ -572,6 +584,8 @@ function chipTone(label: string) {
if (label.includes('方便')) return 'time'
return 'default'
}
syncMobileHomeQuery()
</script>
<template>