再次优化筛选
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user