import { Form, Input, InputNumber, Modal, Select, Space, message } from "antd"; import React, { useEffect, useState } from "react" import { strategyType } from "."; import { FieldTimeOutlined } from "@ant-design/icons"; import { useAjax } from "@/Hook/useAjax"; import { StrategyProps, modalStrategyApi } from "@/services/gameData/roleOperate"; enum conditionEnum { gt = '大于', ge = '大于等于', lt = '小于', le = '小于等于', eq = '等于', } interface Props { superGameList: any[] initialValues?: any visible?: boolean onClose?: () => void onChange?: () => void } const StrategyModal: React.FC = ({ superGameList, initialValues, visible, onClose, onChange }) => { /*****************************/ const [form] = Form.useForm() const type = Form.useWatch('type', form) const time = Form.useWatch('time', form) const timeCondition = Form.useWatch('timeCondition', form) const amount = Form.useWatch('amount', form) const amountCondition = Form.useWatch('amountCondition', form) const [help, setHelp] = useState() const modalStrategy = useAjax((params) => modalStrategyApi(params)) /*****************************/ useEffect(() => { if (type) { let timeTips: string = '' let amountTips: string = '' switch (type) { case 1: // 单笔充值金额大于等于XX,并且注册时间在XX小时内的玩家 timeTips = time ? `注册时间${conditionEnum[timeCondition]}${time}小时的玩家` : '' amountTips = amount ? `单笔充值金额${conditionEnum[amountCondition]}${amount}元` : '' break case 2: // 累计充值金额大于等于XX,并且最近游戏距今时间超过XX小时的玩家 amountTips = amount ? `累计充值金额${conditionEnum[amountCondition]}${amount}元` : '' timeTips = time ? `最近游戏距今时间${conditionEnum[timeCondition]}${time}小时的玩家` : '' break case 3: // '新用户注册创角首日充值大于等于XX的用户' amountTips = amount ? `新用户注册创角首日充值${conditionEnum[amountCondition]}${amount}元的用户` : '' break } let helpTips = '' if (timeTips && amountTips) { helpTips = amountTips + ',并且' + timeTips + ',发送钉钉消息' } else if (timeTips) { helpTips = timeTips + ',发送钉钉消息' } else if (amountTips) { helpTips = amountTips + ',发送钉钉消息' } setHelp(helpTips) form.setFieldsValue({ configExplain: helpTips }) } else { setHelp(undefined) form.setFieldsValue({ configExplain: undefined }) } }, [type, time, amount, timeCondition, amountCondition]) const handleOk = async () => { form.submit() let data = await form.validateFields() console.log('===========>', data) if (!data?.amount && !data?.time) { message.error('时间和金额最少填一项') return } if (initialValues?.id) { data.id = initialValues?.id } modalStrategy.run(data).then(res => { if (res) { if (initialValues?.id) { message.success('修改成功') } else { message.success('新增成功') } onChange?.() } }) } // 配置 formatter 和 parser const integerFormatter = (value: any) => { // 去除非数字字符 if (value && value !== 0) { const intValue = parseInt(value, 10); return isNaN(intValue) ? 0 : intValue as any; } return value }; const integerParser = (value: any) => { // 去除非数字字符 if (value && value !== 0) { const intValue = parseInt(value, 10); return isNaN(intValue) ? '' : String(intValue); } return value }; return
0 ? { ...initialValues } : { amountCondition: 'gt', timeCondition: 'gt' }} > {(amount || amount === 0) && } {type !== 3 && } min={0} placeholder="请输入时间" formatter={integerFormatter} parser={integerParser} /> {(time || time === 0) && } }
} export default React.memo(StrategyModal)