123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681 |
- import { UpCircleOutlined, DownCircleOutlined } from '@ant-design/icons'
- import { Radio, Col, DatePicker, Input, Row, Space, Checkbox, Divider } from 'antd'
- import { CheckboxValueType } from 'antd/lib/checkbox/Group'
- import { RadioChangeEvent } from 'antd/lib/radio'
- import moment from 'moment'
- import React, { useEffect, useReducer, useState } from 'react'
- import style from './index.less'
- /**粉丝选项 */
- type State = {
- fansFilterOsType?: any[],//操作系统
- fansFilterMember?: '' | boolean,//是否是会员
- fansFilterSubscribeTimeType?: '' | 1 | 2 | 3,//关注时间
- fansFilterSubscribeTimeBegin?: string | '',//关注起始时间
- fansFilterSubscribeTimeEnd?: string | '',//关注截至时间
- rechargeType?: '' | number,//充值情况选项
- fansFilterRechargeCountMin?: string | '',//充值次数(最少)
- fansFilterRechargeCountMax?: string | '',//充值次数(最多)
- dayType?: '' | number,//天数选项
- fansFilterRechargeTimeMin?: string | '',//上次充值时间(最少 n天内)
- fansFilterRechargeTimeMax?: string | '',//上次充值时间(最大 n天内)
- fansFilterRechargeMin?: string | '',//最低充值金额
- fansFilterRechargeMax?: string | '',//最大充值金额
- countType?: '' | number,//书币选项
- fansFilterCoinCountMin?: string | '',//最低书币余额
- fansFilterCoinCountMax?: string | '',//最高书币余额
- timeType?: '' | number,//时间选项
- fansFilterActiveTimeMin?: string | '',//上次活跃距今时间(最低)
- fansFilterActiveTimeMax?: string | '',//上次活跃距今时间(最高)
- fansFilterSex?: any[],//粉丝性别
- }
- type Action = {
- type: 'setData' | 'initData',
- params: State
- }
- function reducer(state: State, action: Action) {
- let { type, params } = action
- let newState = JSON.parse(JSON.stringify(state))
- switch (type) {
- case 'setData':
- Object.keys(params as State).forEach((key: string) => {
- newState[key] = (params as State)[key]
- })
- return newState
- case 'initData':
- let data: any = initialState
- if (params) {
- data = { ...data, ...params }
- }
- return data
- default:
- return state
- }
- }
- const initialState = {
- fansFilterOsType: [],//操作系统
- fansFilterMember: '',//是否是会员
- fansFilterSex: [],//粉丝性别
- fansFilterSubscribeTimeType: '',//关注时间
- fansFilterSubscribeTimeBegin: '',//关注起始时间
- fansFilterSubscribeTimeEnd: '',//关注截至时间
- fansFilterRechargeCountMin: '',//充值次数(最少)
- fansFilterRechargeCountMax: '',//充值次数(最多)
- fansFilterRechargeTimeMin: '',//上次充值时间(最少 n天内)
- fansFilterRechargeTimeMax: '',//上次充值时间(最大 n天内)
- fansFilterRechargeMin: '',//最低充值金额
- fansFilterRechargeMax: '',//最大充值金额
- fansFilterCoinCountMin: '',//最低书币余额
- fansFilterCoinCountMax: '',//最高书币余额
- fansFilterActiveTimeMin: '',//上次活跃距今时间(最低)
- fansFilterActiveTimeMax: '',//上次活跃距今时间(最高)
- rechargeType: '',//充值情况选项
- dayType: '',//天数选项
- countType: '',//书币选项
- timeType: ''//时间选项
- }
- type Props = {
- callback: (value: State) => void;//回调函数获取数据
- defaultValue?: any;//回填数据
- openConfig?: {
- /**活跃时间*/
- activeTime: boolean
- }
- }
- function FansSelect(props: Props) {
- const [open, setOpen] = useState<any>({ a: 1, b: 1, c: 1, d: 1 })
- const [state, dispatch] = useReducer(reducer, initialState)
- const { callback, defaultValue = initialState,openConfig} = props
- let [activeTime,setActiveTime] =useState(openConfig?.activeTime !== undefined ? openConfig?.activeTime : true)
- const {
- fansFilterMember, fansFilterSubscribeTimeType, fansFilterSubscribeTimeBegin,
- fansFilterSubscribeTimeEnd, fansFilterRechargeCountMin, fansFilterRechargeCountMax,
- fansFilterRechargeTimeMin, fansFilterRechargeTimeMax, fansFilterRechargeMin, fansFilterRechargeMax,
- fansFilterCoinCountMin, fansFilterCoinCountMax, fansFilterActiveTimeMin, fansFilterActiveTimeMax,
- rechargeType, dayType, countType, timeType, fansFilterSex, fansFilterOsType
- } = state
- //数据回填
- useEffect(() => {
- if (defaultValue && JSON.stringify(defaultValue) !== '{}') {
- let {
- fansFilterMember, fansFilterSubscribeTimeType, fansFilterSubscribeTimeBegin,
- fansFilterSubscribeTimeEnd, fansFilterRechargeCountMin, fansFilterRechargeCountMax,
- fansFilterRechargeTimeMin, fansFilterRechargeTimeMax, fansFilterRechargeMin, fansFilterRechargeMax,
- fansFilterCoinCountMin, fansFilterCoinCountMax, fansFilterActiveTimeMin, fansFilterActiveTimeMax, fansFilterSex, fansFilterOsType
- } = defaultValue
- dispatch({
- type: 'initData', params: {
- fansFilterMember, fansFilterSubscribeTimeType, fansFilterSubscribeTimeBegin,
- fansFilterSubscribeTimeEnd, fansFilterRechargeCountMin, fansFilterRechargeCountMax,
- fansFilterRechargeTimeMin, fansFilterRechargeTimeMax, fansFilterRechargeMin, fansFilterRechargeMax,
- fansFilterCoinCountMin, fansFilterCoinCountMax, fansFilterActiveTimeMin, fansFilterActiveTimeMax, fansFilterSex, fansFilterOsType,
- rechargeType: fansFilterRechargeCountMin === null && fansFilterRechargeCountMax === null ? '' :
- fansFilterRechargeCountMin == 0 && fansFilterRechargeCountMax == 0 ? 0 :
- fansFilterRechargeCountMin == 1 && fansFilterRechargeCountMax == null ? -1 :
- fansFilterRechargeCountMin == 1 && fansFilterRechargeCountMax == 1 ? 1 :
- fansFilterRechargeCountMin == 2 && fansFilterRechargeCountMax == 2 ? 2 :
- fansFilterRechargeCountMin == 3 && fansFilterRechargeCountMax == 3 ? 3 :
- fansFilterRechargeCountMin == 4 && fansFilterRechargeCountMax == 4 ? 4 :
- fansFilterRechargeCountMin == 5 && fansFilterRechargeCountMax == 5 ? 5 :
- fansFilterRechargeCountMin == 6 && fansFilterRechargeCountMax == 6 ? 6 :
- fansFilterRechargeCountMin == 7 && fansFilterRechargeCountMax == 7 ? 7 :
- fansFilterRechargeCountMin == 8 && fansFilterRechargeCountMax == 8 ? 8 :
- fansFilterRechargeCountMin == 10 && fansFilterRechargeCountMax == 10 ? 10 :
- fansFilterRechargeCountMin > 10 && fansFilterRechargeCountMax > 10 ? 11 : -2,
- dayType: fansFilterRechargeTimeMin === null && fansFilterRechargeTimeMax === null ? '' :
- fansFilterRechargeTimeMin == 0 && fansFilterRechargeTimeMax == 15 ? 15 :
- fansFilterRechargeTimeMin == 0 && fansFilterRechargeTimeMax == 30 ? 30 :
- fansFilterRechargeTimeMin == 30 && fansFilterRechargeTimeMax == 0 ? 31 :
- fansFilterRechargeTimeMin == 0 && fansFilterRechargeTimeMax == 45 ? 45 :
- fansFilterRechargeTimeMin == 0 && fansFilterRechargeTimeMax == 60 ? 60 : 61,
- timeType: fansFilterActiveTimeMin == null && fansFilterActiveTimeMax == null ? '' :
- fansFilterActiveTimeMin == 0 && fansFilterActiveTimeMax == 1 ? 1 :
- fansFilterActiveTimeMin == 1 && fansFilterActiveTimeMax == 3 ? 2 :
- fansFilterActiveTimeMin == 3 && fansFilterActiveTimeMax == 12 ? 3 :
- fansFilterActiveTimeMin == 12 && fansFilterActiveTimeMax == 24 ? 4 : 5
- }
- })
- }
- }, [defaultValue])
- useEffect(() => {
- let { rechargeType, dayType, countType, timeType, ...obj } = state
- callback(obj)
- }, [state])
- console.log('rechargeType--->', rechargeType);
- return <Row gutter={[10, 20]}>
- {/* <Col span={24}>
- <Space>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>性别:</label>
- <Checkbox.Group
- onChange={(checkedValue: CheckboxValueType[]) => {
- dispatch({ type: 'setData', params: { fansFilterSex: checkedValue } })
- }}
- value={fansFilterSex}
- >
- <Checkbox value={''}>不限</Checkbox>
- <Checkbox value={1}>男</Checkbox>
- <Checkbox value={2}>女</Checkbox>
- <Checkbox value={0}>未知</Checkbox>
- </Checkbox.Group>
- </Space>
- </Col> */}
- <Col span={24}>
- <Space>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>操作系统:</label>
- <Checkbox.Group
- onChange={(checkedValue: CheckboxValueType[]) => {
- dispatch({ type: 'setData', params: { fansFilterOsType: checkedValue } })
- }}
- value={fansFilterOsType}
- >
- <Checkbox value={0}>未知</Checkbox>
- <Checkbox value={1}>安卓</Checkbox>
- <Checkbox value={2}>IOS</Checkbox>
- </Checkbox.Group>
- </Space>
- </Col>
- <Divider style={{ margin: 0 }} />
- {/* <Col span={24}>
- <Space>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>是否VIP:</label>
- <div>
- <Radio.Group onChange={(e: RadioChangeEvent) => { dispatch({ type: 'setData', params: { fansFilterMember: e.target.value } }) }} value={fansFilterMember}>
- <Radio value={''}>不限</Radio>
- <Radio value={true}>是</Radio>
- <Radio value={false}>否</Radio>
- </Radio.Group>
- </div>
- </Space>
- </Col>
- <Divider style={{padding:0}}/> */}
- <Col span={24}>
- <Space>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>关注时间:</label>
- <div>
- <Radio.Group
- onChange={(e: RadioChangeEvent) => {
- dispatch({
- type: 'setData',
- params: {
- fansFilterSubscribeTimeType: e.target.value,
- fansFilterSubscribeTimeBegin: '',
- fansFilterSubscribeTimeEnd: '',
- }
- })
- }}
- value={fansFilterSubscribeTimeType === null ? '' : fansFilterSubscribeTimeType}
- >
- <Radio value={''}>不限</Radio>
- <Radio value={0}>具体时间</Radio>
- <Radio value={1}>常用日期</Radio>
- <Radio value={2}>动态日期</Radio>
- </Radio.Group>
- </div>
- </Space>
- {
- fansFilterSubscribeTimeType === 0 && <div style={{ paddingLeft: 100, marginTop: 8 }}>
- <DatePicker.RangePicker
- showTime={{ format: 'HH:mm:ss' }}
- format="YYYY-MM-DD HH:mm:ss"
- onChange={(values: any, formatString: [string, string]) => {
- dispatch({
- type: 'setData', params: {
- fansFilterSubscribeTimeBegin: formatString[0],
- fansFilterSubscribeTimeEnd: formatString[1],
- }
- })
- }}
- value={fansFilterSubscribeTimeBegin ? [moment(fansFilterSubscribeTimeBegin), moment(fansFilterSubscribeTimeEnd)] : undefined}
- />
- </div>
- }
- {
- fansFilterSubscribeTimeType === 1 && <div style={{ paddingLeft: 100, marginTop: 8 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="起始(小时)"
- value={fansFilterSubscribeTimeBegin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterSubscribeTimeBegin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- value={fansFilterSubscribeTimeEnd}
- placeholder="结束(小时)"
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterSubscribeTimeEnd: v } })
- }}
- />
- </Input.Group>
- <Radio.Group
- onChange={(e: RadioChangeEvent) => {
- let arr = ['', ['0', '1'], ['0', '24'], ['0', '48'], ['48', '']]
- dispatch({
- type: 'setData',
- params: {
- fansFilterSubscribeTimeBegin: arr[e.target.value][0],
- fansFilterSubscribeTimeEnd: arr[e.target.value][1],
- }
- })
- }} value={
- fansFilterSubscribeTimeBegin === "48" && fansFilterSubscribeTimeEnd === '' ?
- 4 : fansFilterSubscribeTimeBegin === "0" && fansFilterSubscribeTimeEnd === '48' ?
- 3 : fansFilterSubscribeTimeBegin === "0" && fansFilterSubscribeTimeEnd === '24' ?
- 2 :
- fansFilterSubscribeTimeBegin === "0" && fansFilterSubscribeTimeEnd === '1' ?
- 1 : ''}>
- <Radio value={1}>1小时内</Radio>
- <Radio value={2}>24小时内</Radio>
- <Radio value={3}>48小时内</Radio>
- <Radio value={4}>48小时外</Radio>
- </Radio.Group>
- </div>
- }
- {
- fansFilterSubscribeTimeType === 2 && <div style={{ paddingLeft: 100, marginTop: 8 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="第n天"
- value={fansFilterSubscribeTimeBegin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterSubscribeTimeBegin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- placeholder="第n天"
- value={fansFilterSubscribeTimeEnd}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterSubscribeTimeEnd: v } })
- }}
- />
- </Input.Group>
- </div>
- }
- </Col>
- <Divider style={{ margin: 0 }} />
- <Col span={24}>
- <Space className={style.s_label}>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}> 充值情况:</label>
- <div>
- <div style={{ marginBottom: 5 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="最小次数"
- value={fansFilterRechargeCountMin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeCountMin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- value={fansFilterRechargeCountMax}
- placeholder="最大次数"
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeCountMax: v } })
- }}
- />
- </Input.Group>
- </div>
- <Radio.Group
- style={{ width: '100%' }}
- onChange={(e: RadioChangeEvent) => {
- dispatch({
- type: 'setData', params: {
- rechargeType: e.target.value,
- fansFilterRechargeCountMin: e.target.value === '' ? '' : e.target.value === 11 ? 10 : e.target.value === -1 ? 1 : e.target.value,
- fansFilterRechargeCountMax: e.target.value === 11 ? '' : e.target.value === -1 ? '' : e.target.value
- }
- })
- }}
- value={rechargeType}
- >
- <Radio value={''}>不限</Radio>
- <Radio value={0}>未充值</Radio>
- <Radio value={-1}>已充值</Radio>
- {
- !!open.a && <>
- <Radio value={1}>充值1次</Radio>
- <Radio value={2}>充值2次</Radio>
- <Radio value={3}>充值3次</Radio>
- <Radio value={5}>充值5次</Radio>
- <Radio value={8}>充值8次</Radio>
- <Radio value={10}>充值10次</Radio>
- <Radio value={11}>充值10次以上</Radio>
- </>
- }
- </Radio.Group >
- <span className={style.open_span} onClick={() => setOpen({ ...open, a: !open.a })}>{!!open.a ? <UpCircleOutlined style={{ color: '#1890ff' }} /> : <DownCircleOutlined style={{ color: '#1890ff' }} />}</span>
- </div>
- </Space>
- </Col>
- <Divider style={{ margin: 0 }} />
- <Col span={24}>
- <Space className={style.s_label}>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>上次充值距今:</label>
- <div>
- <div style={{ marginBottom: 5 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="最小天数"
- value={fansFilterRechargeTimeMin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeTimeMin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- value={fansFilterRechargeTimeMax}
- placeholder="最大天数"
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeTimeMax: v } })
- }}
- />
- </Input.Group>
- </div>
- <Radio.Group
- style={{ width: '100%' }}
- onChange={(e: RadioChangeEvent) => {
- dispatch({
- type: 'setData',
- params: {
- dayType: e.target.value,
- fansFilterRechargeTimeMin: e.target.value === '' ? '' : e.target.value === 31 ? '30' : e.target.value === 61 ? '60' : '0',
- fansFilterRechargeTimeMax: e.target.value === 31 ? '' : e.target.value === 61 ? '' : e.target.value
- }
- })
- }}
- value={dayType}
- >
- <Radio value="">不限</Radio>
- <Radio value={15}>15天之内</Radio>
- <Radio value={30}>30天之内</Radio>
- {
- !!open.b && <>
- <Radio value={31}>30天以上</Radio>
- <Radio value={45}>45天之内</Radio>
- <Radio value={60}>60天之内</Radio>
- <Radio value={61}>60天以上</Radio>
- </>
- }
- </Radio.Group>
- <span className={style.open_span} onClick={() => setOpen({ ...open, b: !open.b })}>{!!open['b'] ? <UpCircleOutlined style={{ color: '#1890ff' }} /> : <DownCircleOutlined style={{ color: '#1890ff' }} />}</span>
- </div>
- </Space>
- </Col>
- <Divider style={{ margin: 0 }} />
- <Col span={24}>
- <Space>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>累计充值金额:</label>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="最小金额"
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeMin: v } })
- }}
- value={fansFilterRechargeMin}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- placeholder="最大金额"
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterRechargeMax: v } })
- }}
- value={fansFilterRechargeMax}
- />
- </Input.Group>
- </Space>
- </Col>
- <Divider style={{ margin: 0 }} />
- {/* <Col span={24}>
- <Space className={style.s_label}>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>书币余额:</label>
- <div>
- <div style={{ marginBottom: 5 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="最小书币"
- value={fansFilterCoinCountMin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterCoinCountMin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- placeholder="最大书币"
- value={fansFilterCoinCountMax}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterCoinCountMax: v } })
- }}
- />
- </Input.Group>
- </div>
- <Radio.Group
- style={{ width: '100%' }}
- onChange={(e: RadioChangeEvent) => {
- let arr = [['', ''], ['0', '500'], ['501', '1000'], ['1001', '3000'], ['3001', '10000'], ['10000', '']]
- dispatch({
- type: 'setData',
- params: {
- countType: e.target.value,
- fansFilterCoinCountMin: e.target.value === '' ? arr[0][0] : arr[e.target.value][0],
- fansFilterCoinCountMax: e.target.value === '' ? arr[0][1] : arr[e.target.value][1],
- }
- })
- }}
- value={countType}>
- <Radio value="">不限</Radio>
- <Radio value={1}>低于500</Radio>
- <Radio value={2}>501-1000</Radio>
- {
- !!open.c && <>
- <Radio value={3}>1001-3000</Radio>
- <Radio value={4}>3001-10000</Radio>
- <Radio value={5}>10000以上</Radio>
- </>
- }
- </Radio.Group>
- <span className={style.open_span} onClick={() => setOpen({ ...open, c: !open.c })}>{!!open['c'] ? <UpCircleOutlined style={{ color: '#1890ff' }} /> : <DownCircleOutlined style={{ color: '#1890ff' }} />}</span>
- </div>
- </Space>
- </Col>
- <Divider style={{padding:0}}/> */}
- {activeTime && <Col span={24}>
- <Space className={style.s_label}>
- <label style={{ width: 100, display: 'inline-block', textAlign: 'right' }}>活跃时间:</label>
- <div>
- <div style={{ marginBottom: 5 }}>
- <Input.Group compact>
- <Input
- style={{ width: 100, textAlign: 'center', borderRightWidth: 0 }}
- placeholder="最小时间"
- value={fansFilterActiveTimeMin}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterActiveTimeMin: v } })
- }}
- />
- <Input
- style={{
- width: 30,
- borderLeft: 0,
- borderRight: 0,
- pointerEvents: 'none',
- backgroundColor: '#fff'
- }}
- placeholder="~"
- disabled
- />
- <Input
- className="site-input-right"
- style={{
- width: 100,
- textAlign: 'center',
- borderLeftWidth: 0
- }}
- placeholder="最大时间"
- value={fansFilterActiveTimeMax}
- onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
- let v = event.target.value
- dispatch({ type: 'setData', params: { fansFilterActiveTimeMax: v } })
- }}
- />
- </Input.Group>
- </div>
- <Radio.Group
- style={{ width: '100%' }}
- onChange={(e: RadioChangeEvent) => {
- let arr = [['', ''], ['0', '1'], ['1', '3'], ['3', '12'], ['12', '24'], ['24', '48']]
- dispatch({
- type: 'setData',
- params: {
- timeType: e.target.value,
- fansFilterActiveTimeMin: e.target.value === '' ? arr[0][0] : arr[e.target.value][0],
- fansFilterActiveTimeMax: e.target.value === '' ? arr[0][1] : arr[e.target.value][1],
- }
- })
- }}
- value={timeType}
- >
- <Radio value="">不限</Radio>
- <Radio value={1}>1小时</Radio>
- <Radio value={2}>1-3小时</Radio>
- {
- !!open.d && <>
- <Radio value={3}>3-12小时</Radio>
- <Radio value={4}>12-24小时</Radio>
- <Radio value={5}>24-48小时</Radio>
- </>
- }
- </Radio.Group>
- <span className={style.open_span} onClick={() => setOpen({ ...open, d: !open.d })}>{!!open['d'] ? <UpCircleOutlined style={{ color: '#1890ff' }} /> : <DownCircleOutlined style={{ color: '#1890ff' }} />}</span>
- </div>
- </Space>
- </Col>}
- </Row >
- }
- export default React.memo(FansSelect, (a, b) => {
- if (JSON.stringify(a) === JSON.stringify(b)) {
- return true
- }
- return false
- })
|