feat(listing): 公共筛选新增日消耗区间(高级筛选)

This commit is contained in:
yml2213
2026-08-15 13:32:01 +08:00
parent 096121a8cd
commit 51c3f2767f
11 changed files with 65 additions and 0 deletions
@@ -62,6 +62,16 @@ export const fireLevelRangeOptions = [
{ label: '50-60', min: 50, max: 60 },
]
/** 日消耗(M/天):发布档位为 10/20/30/40/50 */
export const dailyLossRangeOptions = [
{ label: '全部', min: undefined, max: undefined },
{ label: '≤10', min: undefined, max: 10 },
{ label: '10-20', min: 10, max: 20 },
{ label: '20-30', min: 20, max: 30 },
{ label: '30-40', min: 30, max: 40 },
{ label: '40以上', min: 40, max: undefined },
]
export function rangeLabel(min: number | undefined, max: number | undefined, fallback: string) {
if (min !== undefined && max !== undefined) return `${min}-${max}`
if (min !== undefined) return `${min}+`
@@ -26,6 +26,8 @@ export const desktopHomeFilterQueryKeys = [
'max_total',
'min_fire_level',
'max_fire_level',
'min_daily_loss',
'max_daily_loss',
'resource_awmAmmo_min',
'resource_awmAmmo_max',
] as const
@@ -52,6 +52,9 @@ export interface HomeFilters {
maxTotal: number | undefined
minFireLevel: number | undefined
maxFireLevel: number | undefined
/** 日消耗(M/天)区间 */
minDailyLoss: number | undefined
maxDailyLoss: number | undefined
/** AWM 子弹数量区间 */
minAwmAmmo: number | undefined
maxAwmAmmo: number | undefined
@@ -89,6 +92,8 @@ export function useHomeFilters(
maxTotal: undefined,
minFireLevel: undefined,
maxFireLevel: undefined,
minDailyLoss: undefined,
maxDailyLoss: undefined,
minAwmAmmo: undefined,
maxAwmAmmo: undefined,
})
@@ -153,6 +158,7 @@ export function useHomeFilters(
if (filters.minDeposit !== undefined || filters.maxDeposit !== undefined) count += 1
if (filters.minTotal !== undefined || filters.maxTotal !== undefined) count += 1
if (filters.minFireLevel !== undefined || filters.maxFireLevel !== undefined) count += 1
if (filters.minDailyLoss !== undefined || filters.maxDailyLoss !== undefined) count += 1
return count
})
@@ -182,6 +188,8 @@ export function useHomeFilters(
filters.maxTotal = undefined
filters.minFireLevel = undefined
filters.maxFireLevel = undefined
filters.minDailyLoss = undefined
filters.maxDailyLoss = undefined
filters.minAwmAmmo = undefined
filters.maxAwmAmmo = undefined
}
@@ -236,6 +244,11 @@ export function useHomeFilters(
filters.maxFireLevel = max
}
function setDailyLossRange(min: number | undefined, max: number | undefined) {
filters.minDailyLoss = min
filters.maxDailyLoss = max
}
function setAwmAmmoRange(min: number | undefined, max: number | undefined) {
filters.minAwmAmmo = min
filters.maxAwmAmmo = max
@@ -288,6 +301,7 @@ export function useHomeFilters(
setDepositRange,
setTotalRange,
setFireLevelRange,
setDailyLossRange,
setAwmAmmoRange,
toggleRange,
setFilterPopover,
@@ -50,6 +50,8 @@ export function useListingQuery(
max_total: filters.maxTotal,
min_fire_level: filters.minFireLevel,
max_fire_level: filters.maxFireLevel,
min_daily_loss: filters.minDailyLoss,
max_daily_loss: filters.maxDailyLoss,
resource_awmAmmo_min: filters.minAwmAmmo,
resource_awmAmmo_max: filters.maxAwmAmmo,
}