import React, {useState} from 'react' import {View, Text} from '@tarojs/components' import {Button, Popup, Radio, RadioGroup, Divider} from '@nutui/nutui-react-taro' import {Filter, Close} from '@nutui/icons-react-taro' export interface CouponFilterProps { /** 是否显示筛选器 */ visible: boolean /** 当前筛选条件 */ filters: { type?: number[] minAmount?: number sortBy?: 'createTime' | 'amount' | 'expireTime' sortOrder?: 'asc' | 'desc' } /** 筛选条件变更回调 */ onFiltersChange: (filters: any) => void /** 关闭回调 */ onClose: () => void } const CouponFilter: React.FC = ({ visible, filters, onFiltersChange, onClose }) => { const [tempFilters, setTempFilters] = useState(filters) // 优惠券类型选项 const typeOptions = [ {label: '全部类型', value: ''}, {label: '满减券', value: '10'}, {label: '折扣券', value: '20'}, {label: '免费券', value: '30'} ] // 最低金额选项 const minAmountOptions = [ {label: '不限', value: ''}, {label: '10元以上', value: '10'}, {label: '50元以上', value: '50'}, {label: '100元以上', value: '100'}, {label: '200元以上', value: '200'} ] // 排序选项 const sortOptions = [ {label: '创建时间', value: 'createTime'}, {label: '优惠金额', value: 'amount'}, {label: '到期时间', value: 'expireTime'} ] // 排序方向选项 const sortOrderOptions = [ {label: '升序', value: 'asc'}, {label: '降序', value: 'desc'} ] // 重置筛选条件 const handleReset = () => { const resetFilters = { type: [], minAmount: undefined, sortBy: 'createTime' as const, sortOrder: 'desc' as const } setTempFilters(resetFilters) } // 应用筛选条件 const handleApply = () => { onFiltersChange(tempFilters) onClose() } // 更新临时筛选条件 const updateTempFilters = (key: string, value: any) => { setTempFilters(prev => ({ ...prev, [key]: value })) } return ( {/* 头部 */} 筛选条件 {/* 筛选内容 */} {/* 优惠券类型 */} 优惠券类型 { updateTempFilters('type', value ? [parseInt(value)] : []) }} > {typeOptions.map(option => ( {option.label} ))} {/* 最低消费金额 */} 最低消费金额 { updateTempFilters('minAmount', value ? parseInt(value) : undefined) }} > {minAmountOptions.map(option => ( {option.label} ))} {/* 排序方式 */} 排序方式 updateTempFilters('sortBy', value)} > {sortOptions.map(option => ( {option.label} ))} {/* 排序方向 */} 排序方向 updateTempFilters('sortOrder', value)} > {sortOrderOptions.map(option => ( {option.label} ))} {/* 底部按钮 */} ) } export default CouponFilter