Skip to content

FilterPanel 筛选面板 ​

用于管理列表页筛选条件的面板组件,支持多选筛选项、单选筛选项、快捷日期范围、展开收起、重置等功能。

基础用法 ​

展示筛选条件的基本配置,支持多选/单选筛选项、远程数据加载、日期范围选择

折叠与高度 ​

通过 `collapse` 属性控制折叠状态,通过 `height` 属性限制面板内容区最大高度,超出内容自动显示滚动条

筛选条件
商品分类电子产品, 家居用品颜色全部价格区间不限评分全部
全部
电子产品
家居用品
图书音像
服装鞋帽
食品饮料
运动户外
美妆护肤
母婴用品
汽车用品
选项1
选项2
选项3
选项4
选项5
选项6
选项7
选项8
选项9
选项10
选项11
选项12
选项13
选项14
选项15
选项16
选项17
选项18
选项19
选项20
全部
红色
蓝色
绿色
黑色
白色
灰色
黄色
紫色
粉色
橙色
XS
S
M
L
XL
XXL
不限
0-100元
100-500元
500-1000元
1000-2000元
2000元以上
选项1
选项2
选项3
选项4
选项5
选项6
选项7
选项8
选项9
选项10
选项11
选项12
选项13
选项14
选项15
全部
5星
4星及以上
3星及以上

当前 v-model

{
  "category": [
    "electronics",
    "home"
  ],
  "brand": [],
  "color": "all",
  "size": [],
  "priceRange": "all",
  "feature": [],
  "rating": "all",
  "dateRange": []
}

远程联动 ​

省 → 市 → 区三级级联,通过 `FilterRemoteConfig.dependsOn` 实现联动

API ​

HxFilterPanel Props ​

参数说明类型默认值
modelValue / v-model筛选状态对象,key 为 prop,value 为选中值FilterState{}
title面板标题string'筛选条件'
filters筛选条件配置数组FilterConfig[][]
collapse是否默认收起筛选条件区域booleanfalse
height折叠面板内容区最大高度(控制展开时的最大高度)string'400px'

HxFilterPanel Emits ​

事件名说明参数
update:modelValue筛选状态变更(value: FilterState)
change筛选状态变更(与 update:modelValue 同时触发)(value: FilterState)
filter-change单个筛选项值变化(key: string, value: FilterValueType)
reset重置所有筛选条件()

FilterConfig ​

参数说明类型默认值
prop字段标识,对应 FilterState 的 keystring—
label显示名称string—
type筛选类型'filter-item' | 'date-range'—
options静态选项列表,使用 remote 时可省略FilterOption[]—
labelKey选项中 label 字段名(透传至子组件)string'label'
valueKey选项中 value 字段名(透传至子组件)string'value'
multiple是否支持多选(仅 filter-item)booleantrue
remote远程数据配置,优先级高于 optionsFilterRemoteConfig—
dateShortcuts快捷区间按钮列表(仅 date-range)FilterDateRangeShortcut[]近 7 / 30 / 90 天
dateFormat日期输出与展示格式(仅 date-range)string'YYYY-MM-DD'

FilterRemoteConfig ​

参数说明类型默认值
url远程请求 URLstring—
method请求方法'get' | 'post''get'
paramsURL query 参数(GET 自动拼接在 ? 后)Record<string, unknown>—
body请求体参数(POST 序列化为 JSON 放入 body)Record<string, unknown>—
bodyType请求体格式'json' | 'form-data''json'
labelKey响应数据中 label 字段名string'label'
valueKey响应数据中 value 字段名string'value'
childrenKey响应数据中 children 字段名(用于级联和分组)string'children'
dependsOn联动:依赖的父级 prop 名称,父值变化时自动重新请求string—
dependsOnParamKey联动:父值作为哪个参数名传递string'value'
dependsOnIn联动:父值注入在 query 还是 body 中,默认跟随 method'query' | 'body'—

FilterDateRangeShortcut ​

参数说明类型
label按钮文案string
days结束为今天、开始为今天往前推的天数number

FilterOption ​

参数说明类型默认值
[key: string]可配置任意字段扩展any—
disabled是否禁用该选项booleanfalse

功能说明 ​

  • 筛选项类型:type: 'filter-item' 由内部 FilterItem 渲染,支持静态 options 与远程数据加载,支持单选/多选;type: 'date-range' 为快捷区间 +「自定义」+ el-date-picker 范围选择。
  • 日期范围 v-model:值为 ''(未选择)或 [start, end] 字符串元组,格式由 dateFormat 控制。
  • 远程联动:通过 FilterRemoteConfig.dependsOn 配置,父级 prop 值变化时自动清空自身选中值并重新请求远程数据。
  • 选中态展示:顶部 Chip 区域展示当前所有有效筛选条件,支持逐个清除。
  • 展开收起:通过 collapse 属性控制筛选条件区域的折叠状态。
  • 重置:点击「重置」按钮清空所有筛选条件。

类型定义 ​

ts
import type {
  FilterPanelProps,
  FilterPanelEmits,
  FilterConfig,
  FilterOption,
  FilterDateRangeShortcut,
  FilterState,
  FilterValueType,
  FilterRemoteConfig,
  FilterItemProps,
  FilterItemEmits,
  FilterItemInstance,
  FilterDateRangeProps,
} from '@whhx/ui'

Released under the MIT License.