CFilter
- 用于页面筛选条件的组件
该组件用于实现页面筛选功能,包含顶部筛选条和展开的更多筛选抽屉,支持多种筛选控件类型,包括选择器、日期范围、单选和输入框等。
<CFilter
:filterData="filterData"
:bar="barConfig"
:items="itemsConfig"
:selectOptions="selectOptions"
:onChange="handleFilterChange"
/>
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
filterData | Object | {} | 筛选数据对象 |
bar | Object | {} | 筛选横条项目配置 |
items | Array | [] | 筛选展开层项目列表配置 |
selectOptions | Object | {} | 各个项目的选项列表 |
| onChange | Function | - | 筛选变化时的回调函数 |
CFilter组件包含以下子组件:
CFilterSelect
- 下拉选择组件CFilterDateRange
- 日期范围选择组件CFilterRadio
- 单选组件CFilterInput
- 输入框组件顶部筛选条配置,支持类型:
{
type: 'select', // 类型:select/dateRange/input
label: '状态', // 显示的标签
name: 'status', // 字段名称
cancelable: true // 是否可取消选择
}
更多筛选项配置数组:
[
{
type: 'select', // 类型:select/dateRange/radio/input
label: '会员类型', // 显示的标签
name: 'memberType', // 字段名称
},
{
type: 'dateRange',
label: '日期范围',
name: 'dateRange'
}
]
选项数据配置:
{
status: [
{ label: '全部', value: '' },
{ label: '正常', value: 1 },
{ label: '停用', value: 0 }
],
memberType: [
{ label: '全部', value: '' },
{ label: '普通会员', value: 'normal' },
{ label: 'VIP会员', value: 'vip' }
]
}
<template>
<view class="page">
<CFilter
:filterData="filterData"
:bar="barConfig"
:items="itemsConfig"
:selectOptions="selectOptions"
:onChange="handleFilterChange"
/>
<!-- 列表内容 -->
<view class="list">
<!-- 根据筛选结果显示内容 -->
</view>
</view>
</template>
<script>
import { CFilter } from '@components/plugins/filter';
export default {
components: {
CFilter
},
data() {
return {
// 筛选数据
filterData: {
status: 1,
memberType: '',
dateRange: '',
keyword: ''
},
// 顶部筛选条配置
barConfig: {
type: 'select',
label: '状态',
name: 'status',
cancelable: false
},
// 更多筛选项配置
itemsConfig: [
{
type: 'select',
label: '会员类型',
name: 'memberType'
},
{
type: 'dateRange',
label: '创建日期',
name: 'dateRange'
},
{
type: 'input',
label: '关键字',
name: 'keyword'
}
],
// 选项数据
selectOptions: {
status: [
{ label: '全部', value: '' },
{ label: '正常', value: 1 },
{ label: '停用', value: 0 }
],
memberType: [
{ label: '全部', value: '' },
{ label: '普通会员', value: 'normal' },
{ label: 'VIP会员', value: 'vip' }
]
}
}
},
methods: {
// 筛选变化回调
handleFilterChange(filterData) {
console.log('筛选条件变化:', filterData);
// 根据筛选条件获取数据
this.getListData(filterData);
},
// 获取列表数据
getListData(params) {
// 请求数据
}
}
}
</script>