diff --git a/frontend/src/features/listings/composables/useFilterOptions.ts b/frontend/src/features/listings/composables/useFilterOptions.ts
index 43e85a8..8f93b8e 100644
--- a/frontend/src/features/listings/composables/useFilterOptions.ts
+++ b/frontend/src/features/listings/composables/useFilterOptions.ts
@@ -9,6 +9,16 @@ export const coinRangeOptions = [
{ label: '300以上', min: 300, max: undefined },
]
+/** AWM 子弹数量区间(与移动端档位保持一致) */
+export const awmRangeOptions = [
+ { label: '全部', min: undefined, max: undefined },
+ { label: '0-20', min: 0, max: 20 },
+ { label: '20-50', min: 20, max: 50 },
+ { label: '50-100', min: 50, max: 100 },
+ { label: '100-200', min: 100, max: 200 },
+ { label: '200以上', min: 200, max: undefined },
+]
+
export const ratioRangeOptions = [
{ label: '全部', min: undefined, max: undefined },
{ label: '≤30', min: undefined, max: 30 },
diff --git a/frontend/src/features/listings/composables/useHomeFilterQuery.ts b/frontend/src/features/listings/composables/useHomeFilterQuery.ts
index c94c514..0b38d95 100644
--- a/frontend/src/features/listings/composables/useHomeFilterQuery.ts
+++ b/frontend/src/features/listings/composables/useHomeFilterQuery.ts
@@ -26,6 +26,8 @@ export const desktopHomeFilterQueryKeys = [
'max_total',
'min_fire_level',
'max_fire_level',
+ 'resource_awmAmmo_min',
+ 'resource_awmAmmo_max',
] as const
export const mobileHomeFilterQueryKeys = ['keyword', 'sort', 'zone', 'filters', 'ranges'] as const
diff --git a/frontend/src/features/listings/composables/useHomeFilters.ts b/frontend/src/features/listings/composables/useHomeFilters.ts
index 9a3205a..78aa949 100644
--- a/frontend/src/features/listings/composables/useHomeFilters.ts
+++ b/frontend/src/features/listings/composables/useHomeFilters.ts
@@ -52,6 +52,9 @@ export interface HomeFilters {
maxTotal: number | undefined
minFireLevel: number | undefined
maxFireLevel: number | undefined
+ /** AWM 子弹数量区间 */
+ minAwmAmmo: number | undefined
+ maxAwmAmmo: number | undefined
}
export interface SkinFilterGroup {
@@ -86,6 +89,8 @@ export function useHomeFilters(
maxTotal: undefined,
minFireLevel: undefined,
maxFireLevel: undefined,
+ minAwmAmmo: undefined,
+ maxAwmAmmo: undefined,
})
const activeFilterPopover = ref('')
@@ -145,7 +150,6 @@ export function useHomeFilters(
let count = 0
if (filters.region.length) count += 1
if (filters.rank.length) count += 1
- if (filters.minPrice !== undefined || filters.maxPrice !== undefined) count += 1
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
@@ -178,6 +182,8 @@ export function useHomeFilters(
filters.maxTotal = undefined
filters.minFireLevel = undefined
filters.maxFireLevel = undefined
+ filters.minAwmAmmo = undefined
+ filters.maxAwmAmmo = undefined
}
function setStringFilter(key: StringFilterKey, value: string | string[]) {
@@ -230,6 +236,11 @@ export function useHomeFilters(
filters.maxFireLevel = max
}
+ function setAwmAmmoRange(min: number | undefined, max: number | undefined) {
+ filters.minAwmAmmo = min
+ filters.maxAwmAmmo = max
+ }
+
/** 区间 chip:再点同一档则清空 */
function toggleRange(
currentMin: number | undefined,
@@ -277,6 +288,7 @@ export function useHomeFilters(
setDepositRange,
setTotalRange,
setFireLevelRange,
+ setAwmAmmoRange,
toggleRange,
setFilterPopover,
closeFilterPopover,
diff --git a/frontend/src/features/listings/composables/useListingQuery.ts b/frontend/src/features/listings/composables/useListingQuery.ts
index d567298..6c22ffe 100644
--- a/frontend/src/features/listings/composables/useListingQuery.ts
+++ b/frontend/src/features/listings/composables/useListingQuery.ts
@@ -50,6 +50,8 @@ export function useListingQuery(
max_total: filters.maxTotal,
min_fire_level: filters.minFireLevel,
max_fire_level: filters.maxFireLevel,
+ resource_awmAmmo_min: filters.minAwmAmmo,
+ resource_awmAmmo_max: filters.maxAwmAmmo,
}
}
diff --git a/frontend/src/features/listings/views/HomeView.vue b/frontend/src/features/listings/views/HomeView.vue
index 70e64cb..6806ec8 100644
--- a/frontend/src/features/listings/views/HomeView.vue
+++ b/frontend/src/features/listings/views/HomeView.vue
@@ -216,6 +216,8 @@ function applyRouteQueryToHomeState() {
filters.maxTotal = readQueryNumber(query, 'max_total')
filters.minFireLevel = readQueryNumber(query, 'min_fire_level')
filters.maxFireLevel = readQueryNumber(query, 'max_fire_level')
+ filters.minAwmAmmo = readQueryNumber(query, 'resource_awmAmmo_min')
+ filters.maxAwmAmmo = readQueryNumber(query, 'resource_awmAmmo_max')
// 无 sort 参数即综合推荐(默认)
sortBy.value = readQueryString(query, 'sort') || 'recommended'
// zone 不从 query/storage 恢复,由用户实时点击决定,不参与筛选持久化
@@ -266,6 +268,8 @@ function buildDesktopHomeQueryValues(): Record {
max_total: filters.maxTotal,
min_fire_level: filters.minFireLevel,
max_fire_level: filters.maxFireLevel,
+ resource_awmAmmo_min: filters.minAwmAmmo,
+ resource_awmAmmo_max: filters.maxAwmAmmo,
}
}
diff --git a/frontend/src/styles/home-filters.css b/frontend/src/styles/home-filters.css
index 0db21a1..98f661c 100644
--- a/frontend/src/styles/home-filters.css
+++ b/frontend/src/styles/home-filters.css
@@ -68,6 +68,11 @@
grid-column: 1 / -1;
}
+/* 登录方式固定到右侧第二列(与「体力」同行的右列),避免左侧列过挤 */
+.login-method-field {
+ grid-column: 2;
+}
+
.filter-field label {
padding-top: 6px;
font-size: 13px;
@@ -176,6 +181,10 @@
.quick-filter-grid {
grid-template-columns: 1fr;
}
+
+ .login-method-field {
+ grid-column: auto;
+ }
}
.filter-chip-row {