wjx 1 рік тому
батько
коміт
bf0c6903a6

+ 80 - 24
src/pages/gameDataStatistics/roleOperate/strategy/strategyModal.tsx

@@ -1,10 +1,17 @@
-import { Form, Input, InputNumber, Modal, Select, message } from "antd";
+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[]
@@ -19,7 +26,9 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
     const [form] = Form.useForm<StrategyProps>()
     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<string>()
     const modalStrategy = useAjax((params) => modalStrategyApi(params))
     /*****************************/
@@ -31,17 +40,17 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
             switch (type) {
                 case 1:
                     // 单笔充值金额大于等于XX,并且注册时间在XX小时内的玩家
-                    timeTips = time ? `注册时间在${time}小时内的玩家` : ''
-                    amountTips = amount ? `单笔充值金额大于等于${amount}元` : ''
+                    timeTips = time ? `注册时间${conditionEnum[timeCondition]}${time}小时的玩家` : ''
+                    amountTips = amount ? `单笔充值金额${conditionEnum[amountCondition]}${amount}元` : ''
                     break
                 case 2:
                     // 累计充值金额大于等于XX,并且最近游戏距今时间超过XX小时的玩家
-                    amountTips = amount ? `累计充值金额大于等于${amount}元` : ''
-                    timeTips = time ? `最近游戏距今时间超过${time}小时的玩家` : ''
+                    amountTips = amount ? `累计充值金额${conditionEnum[amountCondition]}${amount}元` : ''
+                    timeTips = time ? `最近游戏距今时间${conditionEnum[timeCondition]}${time}小时的玩家` : ''
                     break
                 case 3:
                     // '新用户注册创角首日充值大于等于XX的用户'
-                    amountTips = amount ? `新用户注册创角首日充值大于等于${amount}元的用户` : ''
+                    amountTips = amount ? `新用户注册创角首日充值${conditionEnum[amountCondition]}${amount}元的用户` : ''
                     break
             }
             let helpTips = ''
@@ -58,7 +67,7 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
             setHelp(undefined)
             form.setFieldsValue({ configExplain: undefined })
         }
-    }, [type, time, amount])
+    }, [type, time, amount, timeCondition, amountCondition])
 
     const handleOk = async () => {
         form.submit()
@@ -118,7 +127,7 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
             autoComplete="off"
             labelAlign="left"
             colon={false}
-            initialValues={{ ...initialValues }}
+            initialValues={Object.keys(initialValues).length > 0 ? { ...initialValues } : { amountCondition: 'gt', timeCondition: 'gt' }}
         >
             <Form.Item label="超父游戏" name='superGameId' rules={[{ required: true, message: '请选择超父游戏!' }]}>
                 <Select
@@ -147,27 +156,74 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
             </Form.Item>
             <Form.Item
                 label="金额(元)"
-                name='amount'
             >
-                <InputNumber
-                    style={{ width: '100%' }}
-                    prefix="¥"
-                    min={0}
-                    formatter={integerFormatter}
-                    parser={integerParser}
-                />
+                <Space style={{ width: '100%' }}>
+                    <Form.Item
+                        name='amount'
+                        noStyle
+                    >
+                        <InputNumber
+                            style={{ width: '100%' }}
+                            prefix="¥"
+                            min={0}
+                            placeholder="请输入金额"
+                            formatter={integerFormatter}
+                            parser={integerParser}
+                        />
+                    </Form.Item>
+                    {(amount || amount === 0) && <Form.Item
+                        name='amountCondition'
+                        noStyle
+                        rules={[{ required: true, message: '请选择条件' }]}
+                    >
+                        <Select
+                            style={{ width: 100 }}
+                            placeholder="条件"
+                        >
+                            <Select.Option value="gt">大于</Select.Option>
+                            <Select.Option value="ge">大于等于</Select.Option>
+                            <Select.Option value="lt">小于</Select.Option>
+                            <Select.Option value="le">小于等于</Select.Option>
+                            <Select.Option value="eq">等于</Select.Option>
+                        </Select>
+                    </Form.Item>}
+                </Space>
             </Form.Item>
+
             {type !== 3 && <Form.Item
                 label="时间(小时)"
-                name='time'
             >
-                <InputNumber
-                    style={{ width: '100%' }}
-                    prefix={<FieldTimeOutlined />}
-                    min={0}
-                    formatter={integerFormatter}
-                    parser={integerParser}
-                />
+                <Space>
+                    <Form.Item
+                        name='time'
+                        noStyle
+                    >
+                        <InputNumber
+                            style={{ width: '100%' }}
+                            prefix={<FieldTimeOutlined />}
+                            min={0}
+                            placeholder="请输入时间"
+                            formatter={integerFormatter}
+                            parser={integerParser}
+                        />
+                    </Form.Item>
+                    {(time || time === 0) && <Form.Item
+                        name='timeCondition'
+                        noStyle
+                        rules={[{ required: true, message: '请选择条件' }]}
+                    >
+                        <Select
+                            style={{ width: 100 }}
+                            placeholder="条件"
+                        >
+                            <Select.Option value="gt">大于</Select.Option>
+                            <Select.Option value="ge">大于等于</Select.Option>
+                            <Select.Option value="lt">小于</Select.Option>
+                            <Select.Option value="le">小于等于</Select.Option>
+                            <Select.Option value="eq">等于</Select.Option>
+                        </Select>
+                    </Form.Item>}
+                </Space>
             </Form.Item>}
             <Form.Item label="策略说明" name='configExplain' rules={[{ required: true, message: '请选择配置说明!' }]}>
                 <Input.TextArea placeholder="配置说明:请写出具体的配置细节。如:首次充值金额大于等于500并且注册时间24小时内的用户,发送钉钉消息" />