wjx 7 ay önce
ebeveyn
işleme
36f8517d7c

+ 3 - 2
config/config.ts

@@ -2,7 +2,7 @@
 import { defineConfig } from 'umi';
 import defaultSettings from './defaultSettings';
 import proxy from './proxy';
-import { iaaSystem } from './routerConfig';
+import { iaaSystem, iaaData } from './routerConfig';
 // const CompressionWebpackPlugin = require('compression-webpack-plugin');
 const { REACT_APP_ENV } = process.env;
 export default defineConfig({
@@ -50,7 +50,8 @@ export default defineConfig({
         },
       ],
     },
-    iaaSystem,  // gs数据
+    iaaSystem,  // 后台管理
+    iaaData,    // IAA数据系统
     {
       path: '/',
       redirect: '/',

+ 1 - 8
config/proxy.ts

@@ -10,18 +10,11 @@
  export default {
   dev: {
     '/api/': {
-      // target: 'http://test.api.zanxiangwl.com',
-      // target: 'https://game.84game.cn',
+      // target: 'http://api.zanxiangwl.com',
       target: 'https://testapi.zanxiangwl.com',
       changeOrigin: true,
       pathRewrite: { '/api': '' },
     },
-    '/erpApi/': {
-      target: 'https://testapi.zanxiangwl.com',
-      // target: 'https://api.zanxiangwl.com',
-      changeOrigin: true,
-      pathRewrite: { '/erpApi': '' },
-    },
     '/gameApi/': {
       // target: 'http://test.api.zanxiangwl.com',//服务器
       target: 'https://game.84game.cn',//服务器

+ 16 - 3
config/routerConfig.ts

@@ -14,10 +14,10 @@ function headrRouter(initialState: any, history: any) {
             }
         }
     })
-    if (history?.location?.pathname === '/gameDataStatistics') { //当切换一级菜单的辅助跳转
+    if (history?.location?.pathname === '/iaaData') { //当切换一级菜单的辅助跳转
         history?.goBack()
         initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => {
-            if (item?.routes?.some((i: { path: string }) => i.path?.includes('/gameDataStatistics'))) {
+            if (item?.routes?.some((i: { path: string }) => i.path?.includes('/iaaData'))) {
                 let path = item?.routes?.length > 0 ? (item?.routes[0]?.routes?.length > 0 && item?.routes[0]?.routes[0]?.path) ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path
                 isPhone ? history.push(path) : window.open(location.origin + '/#' + path)
             }
@@ -121,8 +121,21 @@ const iaaSystem = {
     ]
 }
 
+const iaaData = {
+    path: '/iaaData',
+    routes: [
+        {
+            path: '/iaaData/tencentIaaAd',
+            name: '腾讯广告列表',
+            access: 'tencentIaaAd',
+            component: './iaaData/tencentIaaAd',
+        },
+    ]
+}
+
 export {
     headrRouter,
     getMyMenu,
-    iaaSystem
+    iaaSystem,
+    iaaData
 }

+ 16 - 3
src/app.tsx

@@ -19,6 +19,7 @@ import { ReactComponent as PlayerSvg } from '@/assets/player.svg'
 import { ReactComponent as RoleManageSvg } from '@/assets/roleManage.svg'
 import { ReactComponent as SystemIaa } from '@/assets/system_iaa.svg'
 import { ReactComponent as ManageIaa } from '@/assets/manage_iaa.svg'
+import { ReactComponent as TencentAaa } from '@/assets/tencent_iaa.svg'
 import versions from './utils/versions';
 
 
@@ -46,7 +47,8 @@ export async function getInitialState(): Promise<{
     menu?: any,
     loading?: boolean,
     collapsed?: string,
-    onCollapse?: (onCollapse: boolean) => void
+    onCollapse?: (onCollapse: boolean) => void,
+    iaaApp?: string
 }> {
     // 如果是登录页面,不执行
     if (localStorage.getItem('Admin-Token')) {
@@ -60,7 +62,17 @@ export async function getInitialState(): Promise<{
             currentUser = { access: 'admin', powerLevel: userInfo?.data?.userInfo?.powerLevel, name: userInfo?.data?.userInfo?.nickname || '', userId: userInfo?.data?.userInfo?.userId, phone: userInfo?.data?.userInfo?.phone || '', companyList: companyInfo, onlineCompanyId: userInfo?.data?.onlineCompanyId }//处理个人信息 
             let menu: any = await getMenu().then((res: any) => {//获取菜单并处理
                 let { code, data } = res
-                let path = getMyMenu(code, data)
+                let newData = data
+                if (data?.iaa?.length > 1) {
+                    data.iaa.forEach((item: any) => {
+                        if (item.path === '/iaaSystem') {
+                            newData.iaa = [item]
+                        } else if (item.path === '/iaaData') {
+                            newData.iaa_data = [item]
+                        }
+                    })
+                }
+                let path = getMyMenu(code, newData)
                 return { data: path }
             });
             localStorage.setItem('sex', userInfo?.data?.userInfo?.sex)
@@ -70,7 +82,7 @@ export async function getInitialState(): Promise<{
                 currentUser,
                 settings: { ...defaultSettings },
                 loading: false,
-                menu: { ...menu, data: menu?.data?.reverse() },
+                menu,
                 collapsed: '0',
                 onCollapse: (collapsed: boolean) => {
                     let v = collapsed ? '1' : '0'
@@ -115,6 +127,7 @@ const IconMap = {
     roleManage: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><RoleManageSvg /></span>,
     system_iaa: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><SystemIaa /></span>,
     manage_iaa: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><ManageIaa /></span>,
+    tencent_iaa: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><TencentAaa /></span>,
     eye: <EyeOutlined />
 };
 //处理菜单

+ 1 - 0
src/assets/tencent_iaa.svg

@@ -0,0 +1 @@
+<svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M681.6768 268.9024a60.928 60.928 0 0 1 10.496 85.5552l-108.288 138.752-156.16 200.192a60.7232 60.7232 0 0 1-102.656-10.8032 61.0304 61.0304 0 0 1 6.7584-64.256l156.16-200.1408 108.288-138.752a60.7744 60.7744 0 0 1 85.4016-10.5472z m108.288 138.752a60.928 60.928 0 0 1 10.496 85.6064l-108.288 138.752-0.4608 0.512-47.4112 60.8256a60.7744 60.7744 0 0 1-102.7072-10.752c-10.1888-20.992-7.5264-45.9264 6.8096-64.256l47.872-61.3376 108.2368-138.8032a60.7744 60.7744 0 0 1 85.4528-10.496zM248.576 546.5088a60.928 60.928 0 0 1 10.496 85.5552l-47.872 61.3376a60.7232 60.7232 0 0 1-102.656-10.752 61.0304 61.0304 0 0 1 6.7584-64.256l47.872-61.3376a60.7744 60.7744 0 0 1 85.4016-10.5472z m649.6256 0a60.928 60.928 0 0 1 10.496 85.5552l-47.872 61.3376a60.7232 60.7232 0 0 1-102.656-10.752c-10.24-20.992-7.5776-45.9264 6.7584-64.256l47.872-61.3376a60.7744 60.7744 0 0 1 85.4016-10.5472z m-433.0496-277.504a60.928 60.928 0 0 1 10.4448 85.504l-113.408 145.408a60.7232 60.7232 0 0 1-102.7072-10.752c-10.1888-20.992-7.5776-45.9264 6.8096-64.3072l113.408-145.408a60.7744 60.7744 0 0 1 85.4528-10.496z" p-id="3118"></path></svg>

+ 0 - 2
src/components/HeaderDropdown/index.tsx

@@ -4,11 +4,9 @@ import React from 'react';
 import classNames from 'classnames';
 import styles from './index.less';
 
-declare type OverlayFunc = () => React.ReactNode;
 
 export interface HeaderDropdownProps extends Omit<DropDownProps, 'overlay'> {
   overlayClassName?: string;
-  overlay: React.ReactNode | OverlayFunc | any;
   placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter';
 }
 

+ 82 - 1640
src/components/QueryForm/index.tsx

@@ -1,264 +1,40 @@
-import { Button, Checkbox, Col, DatePicker, Form, Input, InputNumber, Radio, Row, Select, Space, Tooltip } from "antd"
-import React, { useEffect, useState } from "react"
-import moment from "moment"
 import { useAjax } from "@/Hook/useAjax"
-import { getAllOfOwnerUserApi, getChannelChoiceListApi, getGameChoiceListApi, getCpChoiceListApi, getGameChoiceParentListType1Api, getPayListApi, getSubUserWithSelfListApi, getTtAllUserListApi, getUserSystemTypeChoiceListApi, getRoleUserListApi, getGameServerListApi, getGameServerUnListApi, getAccountListNewApi, getAgentListNewApi, getPitcherListNewApi, getGameListNewApi, getVipLevelApi, getGameUnMergeServerListApi } from "@/services/gameData"
-import { ActiveEnum, DeviceType, LoginType, PayStatus, TYPE, gameClassifyEnum,ADSTATUSEnum as ADSTTTATUSEnum, TX_ADSTATUSEnum as ADSTATUSEnum } from "./const"
-import IntervalTime from "./intervalTime"
+import { AD_STATUS_ENUM, BID_MODE_ENUM } from "@/pages/iaaData/tencentIaaAd/const"
+import { getAppListApi, getPutUserListApi } from "@/services/iaaData"
+import { Button, Col, Form, Row, Space, DatePicker, Select, Input, InputNumber } from "antd"
 import { RangePickerProps } from "antd/lib/date-picker"
-import { QuestionCircleOutlined } from "@ant-design/icons"
+import React, { useEffect, useState } from "react"
 
 
 interface Props {
     onChange?: (data: any) => void
     /** 默认值 */
     initialValues?: any
-    /** 开启数据源搜索 */
-    isSource?: boolean,
+
     /** 是否开启 广告账号 搜索 */
-    isAccount?: boolean
-    /** 是否开启 广告账户ID 搜索 */
     isAccountId?: boolean
-    // 开启账号多选
-    isAccountIds?: boolean,
-    /** 是否开启 公司ID 搜索 */
-    isCompanyId?: boolean
-    /** 是否开启 CPID 搜索 */
-    isCpId?: boolean
-    /** 是否开启 cp名 搜索 */
-    isCpName?: boolean
-    /** 是否开启 CP方订单ID 搜索 */
-    isCpOrderId?: boolean
-    /** 是否开启 CP通知状态 搜索 */
-    isCpStatus?: boolean
-    /** 是否开启 订单创建日期 搜索 */
-    isCreateDay?: {
-        ranges?: any
-    }
-    /** 订单创建日期 根据消耗时间 来限制可选范围 */
-    isCreateDayXz?: {
-        ranges?: any
-    }
-    /** 是否开启 角色创建日期 搜索 */
-    isCreateRoleDay?: {
-        ranges?: any
-    }
-    /** 是否开启 最近活跃时间 搜索 */
-    isLastActiveTime?: {
-        ranges?: any
-    }
-    /** 是否开启 操作设备 搜索 */
-    isDevice?: boolean
-    /** 是否开启 注册游戏名 搜索 */
-    isRechargeGameName?: boolean
-    /** 是否开启 游戏名 搜索 */
-    isGameName?: boolean
-    /** 是否开启 游戏ID 搜索 */
-    isGameId?: boolean
-    isGameIds?: boolean
-    /** 是否开启 充值游戏ID 搜索 */
-    isOrderGameId?: boolean
-    /** 是否开启 父游戏ID 搜索 */
-    isParentId?: boolean
-    isParentIds?: boolean
-    /** 是否开启 超父游戏ID 搜索 */
-    isSuperParentGameId?: boolean
-    /** 是否开启 是否合服 搜索 */
-    isIsMergeServer?: boolean
-    /** 是否开启 是否未参与过合服 搜索 */
-    isIsParticipateMerge?: boolean
-    /** 是否开启 游戏应用类型 搜索 */
-    isGameType?: boolean
-    /** 是否开启 游戏角色名 搜索 */
-    isGameRoleName?: boolean
-    /** 是否开启 游戏角色名ID 搜索 */
-    isGameRoleId?: boolean
-    /** 是否开启 是否首充 搜索 */
-    isFirstRecharge?: boolean
-    /** 是否开启 是否切量 搜索 */
-    isSwitch?: boolean
-    /** 是否开启 收款商户号 搜索 */
-    isMerchantNo?: boolean
-    /** 是否开启 商户订单ID 搜索 */
-    isOrderId?: boolean
-    /** 是否开启 商户订单号 搜索 */
-    isMerchantOrderNo?: boolean
-    /** 是否开启 支付状态 搜索 */
-    isPayStatus?: boolean
-    /** 是否开启 支付方式 搜索 */
-    isPayWay?: boolean
-    /** 是否开启 产品名称 搜索 */
-    isProductName?: boolean
-    /** 是否开启 注册渠道名 搜索 */
-    isRegAgent?: boolean
-    /** 是否开启 渠道名称 搜索 */
-    isAgentName?: boolean
-    /** 是否开启 注册渠道ID 搜索 */
-    isAgentId?: boolean
-    /** 是否开启 渠道标识 搜索 */
-    isAgentKey?: boolean
-    /** 是否开启 投放渠道名 搜索 */
-    isPutAgent?: boolean
-    /** 是否开启 用户注册日期 搜索 */
-    isRegDay?: {
-        ranges?: any
-    }
-    /** 是否开启 投手名称 搜索 */
-    isSysUserName?: boolean
-    /** 是否开启 投手ID 搜索 */
-    isSysUserId?: boolean
-    isSysUserIds?: boolean
-    /** 是否开启 玩家账号 搜索 */
-    isUserName?: boolean
-    /** 是否开启 用户ID 搜索 */
-    isUserId?: boolean
-    /** 是否开启 不同排行榜选择 搜索 */
-    isSelectRanking?: boolean
-    /** 是否开启 消耗日期 搜索 */
-    isConsumeDay?: {
-        ranges?: any
-    }
-    /** 是否开启 充值日期 搜索 */
-    rechargeDay?: {
-        ranges?: any
-    }
-    /** 最近充值 */
-    LastRechargeDay?: {
-        ranges?: any
-    },
-    /** 是否开启 支付时间 搜索 */
-    payTimeDay?: {
-        ranges?: any
-    }
-    /** 是否开启 下单时间 搜索 */
-    placeAnOrderDay?: {
-        ranges?: any
-    }
-    /** 是否开启布谷 游戏类型 筛选 */
-    isBGGameClassify?: boolean,
-    /** 是否开启 单个充值日期 选择 */
-    isRechargeDate?: boolean,
-    /** 是否开启 开始时间 结束时间 搜索 */
-    isBeginDay?: boolean
-    /** 是否开启 玩家ID 搜索 */
-    isGameUserId?: boolean
-    /** 是否开启 操作系统 选择 */
-    isOs?: boolean
-    /** 是否开启 推广媒体 选择 */
-    isType?: boolean
-    /** 是否开启 计划ID 搜索 */
-    isProjectId?: boolean
-    /** 是否开启 计划名称 搜索 */
-    isProjectName?: boolean
-    /** 是否开启 广告ID 搜索 */
-    isProjectId1?: boolean
-    /** 是否开启 广告ID 搜索 */
-    isPromotionId?: boolean
-    /** 是否开启 计划ID 搜索 */
-    isPromotionId1?: boolean
+    /** 是否开启 当前出价 搜索 */
+    isCpaBid?: boolean
     /** 是否开启 广告名称 搜索 */
     isPromotionName?: boolean
-    /** 是否开启 头条广告状态 搜索 */
-    isAdTTStatus?: boolean
-    /** 是否开启 腾讯广告状态 搜索 */
-    isAdTXStatus?: boolean
-    /** 是否开启 展示数据类型(买量,自然,总) 搜索 */
-    isUserEnterType?: boolean
-    /** 是否开启 区服名称 搜索 */
-    isServerName?: boolean
-    /** 是否开启 所在原始服务器名称 搜索 */
-    isSourceServerName?: boolean
-    /** 是否开启区服ID 搜索 */
-    isServerId?: boolean | {
-        placeholder?: string
-    }
-    /** 是否开启 开服时间 搜索 */
-    isServerDay?: {
-        ranges?: any
-    }
-    /** 是否开启 充值到支付的间隔时间 搜索 */
-    isPayIntervalTime?: {
-        tips?: string
-    }
-    /** 是否开启 充值到支付的间隔时间 搜索 */
-    isRoleCount?: {
-        tips?: string
-    }
-    /** 是否开启 留存数据的类型 搜索 */
-    isActiveTypes?: boolean
-    /** 是否开启 玩家昵称 搜索 */
-    isNickname?: boolean
-    /** 是否开启 绑定手机 搜索 */
-    isMobile?: boolean
-    /** 是否开启 注册IP 搜索 */
-    isRegIp?: boolean
-    /** 是否开启 IP 搜索 */
-    isIp?: boolean
-    /** 是否开启 是否实名认证 搜索 */
-    isIsAuth?: boolean
-    /** 是否开启 是否绑定手机 搜索 */
-    isIsBindMobile?: boolean
-    /** 是否开启 是否充值 搜索 */
-    isIsRecharge?: boolean
-    /** 是否开启 玩家状态 搜索 */
-    isUserStatus?: boolean
-    /** 是否开启 是否创角 搜索 */
-    isCreateRole?: boolean
-    /** 是否开启 角色VIP 搜索 */
-    isVipLevel?: boolean
-    /** 是否开启 角色等级 搜索 */
-    isRoleLevel?: boolean
-    /** 是否开启 是否转端 搜索 */
-    isIsChange?: boolean
-    /** 是否开启 邮件是否发送 搜索 */
-    isIsSendMail?: boolean
-    /** 是否开启 企业微信号 搜索 */
-    isWeChatCompany?: boolean
-    /** 是否开启 企业微信号 搜索 */
-    isWeChat?: boolean
-    /** 是否开启 客服 搜索*/
-    isCustomerServerId?: boolean
-    /** 是否开启 运营 搜索 */
-    isOperatorId?: boolean
-    /** 是否开启GS 搜索 */
-    isGsId?: boolean
-    /** 是否开启多个区服id搜索 */
-    isServerIds?: boolean
-    /** 是否开启 游戏区服 搜索 */
-    isGameServerName?: boolean
-    /** 是否开启多个区服id搜索 */
-    isRankingNum?: boolean
-    /** 是否开启 客户端类型 搜索 */
-    isDeviceType?: boolean
-    /** 是否开启 登录类型 搜索 */
-    isLoginType?: boolean
-    /** 是否开启 原始区服列表 搜索 */
-    isServerIdUn?: boolean
-    /** 是否开启 是否退游 搜索 */
-    isRemoveGame?: boolean
-    /** 是否开启 是否退游系统 搜索 */
-    isRemoveGameForSystem?: boolean
-    isOrderLy?: boolean
-    /** 是否开启 是否添加企微 搜索 */
-    isAddCorpWechat?: boolean
-    /** 是否开启 是否唤醒 搜索 */
-    isWakeUp?: boolean
-    /** 是否开启 回传状态 搜索 */
-    isBackStatus?: boolean
-    /** 是否开启 选择游戏维度 搜索 */
-    isGameDimension?: boolean
-    /** 是否开启 玩家最新染色时间 搜索 */
-    isUserLastRegTime?: boolean
-    /** 是否开启 玩家最新染色渠道ID 搜索 */
-    isUserLastRegAgentId?: boolean
-    /** 是否开启 玩家最新染色归因投手 搜索 */
-    isUserLastPitcherId?: boolean
-    /** 是否开启 创角24小时内单笔充值金额 搜索 */
-    isRechargeAmountWithin24h?: boolean
-    /** 是否开启 创角24小时以内累计充值金额 搜索 */
-    isRechargeTotalAmountWithin24h?: boolean
-    /** 是否开启 玩家注册渠道类型 搜索 */
-    isRegisterType?: boolean
+    /** 是否开启 广告ID 搜索 */
+    isPromotionId?: boolean
+
+    /** 是否开启 投手 搜索 */
+    isPutUserIdList?: boolean
+    /** 是否开启 出价方式 搜索 */
+    isPricing?: boolean,
+    /** 是否开启 广告状态 搜索 */
+    isStatus?: boolean,
+    /** 是否开启 删除状态 搜索 */
+    isDeleted?: boolean,
+
+    /** 是否开启 日期 搜索 */
+    day1?: RangePickerProps
+    /** 是否开启 日期 搜索 */
+    day2?: RangePickerProps
+    /** 是否开启 日期 搜索 */
+    day3?: RangePickerProps
 }
 /**
  * 游戏数据系统 请求参数
@@ -268,1460 +44,126 @@ const QueryForm: React.FC<Props> = (props) => {
 
     /**************************/
     const {
-        onChange, initialValues, isSource, isAccount, isAccountId, isAccountIds, isCompanyId, isAgentKey, isAgentName, isCpId, isCpName, isCpOrderId, isCpStatus, isCreateDay, isCreateDayXz, isDevice, isGameName, isRechargeGameName, isGameId, isGameIds, isOrderGameId, isGameRoleId,
-        isGameRoleName, isFirstRecharge, isSwitch, isMerchantNo, isOrderId, isMerchantOrderNo, isPayStatus, isPayWay, isProductName, isRegAgent, isAgentId, isPutAgent, isRegDay, isOs, isParentId, isParentIds, isProjectId, isProjectName, isPromotionId, isPromotionId1, isPromotionName,
-        isSysUserName, isRechargeDate, LastRechargeDay, isBGGameClassify, isGameUserId, isSysUserId, isSysUserIds, isUserName, isUserId, isSelectRanking, isGameType, isConsumeDay, rechargeDay, isBeginDay, isType, isAdTTStatus, isUserEnterType, isServerName, isServerId, isServerDay, isAdTXStatus,
-        payTimeDay, placeAnOrderDay, isPayIntervalTime, isActiveTypes, isNickname, isMobile, isRegIp, isIsAuth, isIsBindMobile, isIsRecharge, isUserStatus, isCreateRole, isRoleCount, isVipLevel, isRoleLevel, isCreateRoleDay, isLastActiveTime, isIsChange, isIsSendMail, isWeChatCompany, isWeChat,
-        isCustomerServerId, isOperatorId, isGsId, isServerIds, isRankingNum, isIsMergeServer, isIsParticipateMerge, isSuperParentGameId, isGameServerName, isIp, isDeviceType, isLoginType, isServerIdUn, isSourceServerName, isProjectId1, isRemoveGame, isRemoveGameForSystem, isOrderLy, isAddCorpWechat,
-        isWakeUp, isBackStatus, isGameDimension, isUserLastRegTime, isUserLastRegAgentId, isUserLastPitcherId, isRechargeAmountWithin24h, isRechargeTotalAmountWithin24h, isRegisterType
+        onChange, initialValues, isAccountId, isPromotionName, isPromotionId, isCpaBid, isPutUserIdList, isPricing, isStatus, isDeleted, day1, day2, day3
     } = props
     const [form] = Form.useForm()
-    const parentId = Form.useWatch('parentId', form)
-    const superParentGameId = Form.useWatch('superParentGameId', form)
-    const isMergeServer = Form.useWatch('isMergeServer', form)
-    const serverName = Form.useWatch('serverName', form)
-    const serverIds = Form.useWatch('serverIds', form)
-    const sourceSystem = Form.useWatch('sourceSystem', form)
-    const parentGameIds = Form.useWatch('parentGameIds', form)
-    const gameDimension = Form.useWatch('gameDimension', form)
-    const consumeDay = Form.useWatch('consumeDay', form)
-    const isParticipateMerge = Form.useWatch('isParticipateMerge', form)
-    const [accountList, setAccountList] = useState<any[]>([])
-    const [userIdList, setUserIdList] = useState<any[]>([])
-    const [gsList, setGsList] = useState<any[]>([])
-    const [customerList, setCustomerList] = useState<any[]>([])
-    const [operateList, setOperateList] = useState<any[]>([])
-    const [gameList, setGameList] = useState<any[]>([])
-    const [parentGameList, setParentGameList] = useState<any[]>([])
-    const [superGameList, setSuperGameList] = useState<any[]>([])
-    const [agentData, setAgentData] = useState<{ label: string, value: string }[]>([])
+    const [putUserList, setPutUserList] = useState<{ label: string, value: string }[]>([])
 
-
-    const getAllOfOwnerUser = useAjax(() => getAllOfOwnerUserApi())
-    const getTtAllUserList = useAjax(() => getTtAllUserListApi())
-    const getGameChoiceList = useAjax(() => getGameChoiceListApi())
-    const getSubUserWithSelfList = useAjax(() => getSubUserWithSelfListApi())
-    const getChannelChoiceList = useAjax(() => getChannelChoiceListApi())
-    const getGameChoiceParentListType1 = useAjax(() => getGameChoiceParentListType1Api())
-    const getUserSystemTypeChoiceList = useAjax(() => getUserSystemTypeChoiceListApi())
-    const getCpChoiceList = useAjax(() => getCpChoiceListApi())
-    const getPayList = useAjax(() => getPayListApi())
-    const getVipLevel = useAjax(() => getVipLevelApi())
-    const getRoleUserList = useAjax((params) => getRoleUserListApi(params))
-    const getGameServerList = useAjax((params) => getGameServerListApi(params))
-    const getGameUnMergeServerList = useAjax((params) => getGameUnMergeServerListApi(params))
-    const getGameServerUnList = useAjax((params) => getGameServerUnListApi(params))
-    const getAccountListNew = useAjax((params) => getAccountListNewApi(params))
-    const getAgentListNew = useAjax((params) => getAgentListNewApi(params))
-    const getPitcherListNew = useAjax((params) => getPitcherListNewApi(params))
-    const getGameListNew = useAjax((params) => getGameListNewApi(params))
+    const getPutUserList = useAjax(() => getPutUserListApi())
     /**************************/
 
     useEffect(() => {
-        if (isCustomerServerId || isOperatorId || isGsId) {
-            const getList = async () => {
-                // 游戏GS
-                let gs = await getRoleUserList.run({ authType: 'GS' })
-                setGsList(gs ? Object.keys(gs)?.map(key => ({ userId: key, nickname: gs[key] })) : [])
-                // 运营
-                let operate = await getRoleUserList.run({ authType: 'OPERATE' })
-                setOperateList(operate ? Object.keys(operate)?.map(key => ({ userId: key, nickname: operate[key] })) : [])
-                // 客服
-                let customer = await getRoleUserList.run({ authType: 'CUSTOMER' })
-                setCustomerList(customer ? Object.keys(customer)?.map(key => ({ userId: key, nickname: customer[key] })) : [])
-            }
-            getList()
-        }
-    }, [isCustomerServerId, isOperatorId, isGsId])
-
-    useEffect(() => {
-        if (isAccountId) {
-            // 请求广告账号列表
-            async function getAccount() {
-                if (sourceSystem === 'ZX_ONE') {
-                    let data: any[] = []
-                    let res1 = await getAllOfOwnerUser.run()
-                    let data1 = []
-                    if (res1) {
-                        data1 = res1?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: item.corporationName }))
-                    }
-                    let res2 = await getTtAllUserList.run()
-                    let data2 = []
-                    if (res2) {
-                        data2 = res2?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: item.accountName }))
-                    }
-                    data = [...data1, ...data2]
-                    setAccountList(data)
-                } else if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                    let res1 = await getAccountListNew.run({ sourceSystem })
-                    setAccountList(res1?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: '' })))
-                }
-            }
-            getAccount()
-        }
-    }, [isAccountId, sourceSystem])
-
-    /** 游戏列表 */
-    useEffect(() => {
-        if (isGameId || isOrderGameId || isParentId || isParentIds || isGameIds || isSuperParentGameId) {
-            getGameListNew.run({ sourceSystem }).then((res: { gameList: any; parentGameList: any; superGameList: any }) => {
-                if (res) {
-                    const { gameList, parentGameList, superGameList } = res
-                    // if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                    setGameList(gameList?.map((item: { id: any; game_name: any }) => ({ id: item.id, name: item.game_name })) || [])
-                    // }
-                    // let isBg = ['289', '399', '402', '432', '445', '472'].includes(localStorage.getItem('userId') || '')
-                    // let newparentGameList: { parent_game_id: number }[] = parentGameList || []
-                    // if (isBg) {  //布谷过滤
-                    //     newparentGameList = newparentGameList.filter(item => ![9, 1, 7, 15, 11, 16, 13].includes(item.parent_game_id))
-                    // }
-                    setParentGameList(parentGameList)
-                    setSuperGameList(superGameList)
+        if (isPutUserIdList) {
+            getPutUserList.run().then(res => {
+                if (res?.data) {
+                    setPutUserList(Object.keys(res.data).map(key => ({ value: key, label: res.data[key] })))
                 }
             })
-
-            // if (sourceSystem === 'ZX_ONE') {
-            //     getGameChoiceList.run().then(res => {
-            //         setGameList(res || [])
-            //     })
-            // }
-        }
-    }, [isGameId, isGameIds, isOrderGameId, isParentId, isParentIds, isSuperParentGameId, sourceSystem])
-
-    useEffect(() => {
-        if (isCpId) {
-            getCpChoiceList.run()
-        }
-    }, [isCpId])
-
-    useEffect(() => {
-        if (isVipLevel) {
-            getVipLevel.run()
-        }
-    }, [isVipLevel])
-
-    /** 投手列表 */
-    useEffect(() => {
-        if (isSysUserId || isSysUserIds) {
-            if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                getPitcherListNew.run({ sourceSystem }).then((res: { pitcherId: any; pitcherName: any }[]) => {
-                    setUserIdList(res?.map((item: { pitcherId: any; pitcherName: any }) => ({ userId: item.pitcherId, nickname: item.pitcherName })))
-                })
-            } else {
-                getSubUserWithSelfList.run().then((res: { [x: string]: any }) => {
-                    setUserIdList(res ? Object.keys(res)?.map(key => ({ userId: key, nickname: res[key] })) : [])
-                })
-            }
-        }
-    }, [isSysUserId, isSysUserIds, sourceSystem])
-
-    /** 推广渠道 */
-    useEffect(() => {
-        if (isAgentId || isUserLastRegAgentId) {
-            if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                getAgentListNew.run({ sourceSystem }).then((res: { agentName: any; agentId: any }[]) => {
-                    setAgentData(res?.map((item: { agentName: any; agentId: any }) => ({ label: item.agentName, value: item.agentId })))
-                })
-            } else {
-                getChannelChoiceList.run().then((res: { agentName: any; id: any }[]) => {
-                    console.log(res)
-                    setAgentData(res?.map((item: { agentName: any; id: any }) => ({ label: item.agentName, value: item.id })))
-                })
-            }
-        }
-    }, [isAgentId, sourceSystem, isUserLastRegAgentId])
-
-    /** 游戏应用类型 */
-    useEffect(() => {
-        if (isGameType) {
-            getGameChoiceParentListType1.run()
         }
-    }, [isGameType])
-
-    /** 操作系统 */
-    useEffect(() => {
-        if (isOs) {
-            getUserSystemTypeChoiceList.run()
-        }
-    }, [isOs])
-
-    /** 支付方式 */
-    useEffect(() => {
-        if (isPayWay) {
-            getPayList.run()
-        }
-    }, [isPayWay])
+    }, [isPutUserIdList])
 
     const onFinish = (data: any) => {
-
-        // 处理订单创建日期
-        if (isCreateDay) {
-            if (data?.createDay && data?.createDay?.length > 0) {
-                data.beginOrderTime = moment(data?.createDay[0]).format('YYYY-MM-DD')
-                data.endOrderTime = moment(data?.createDay[1]).format('YYYY-MM-DD')
-            } else {
-                data.beginOrderTime = ''
-                data.endOrderTime = ''
-            }
-            delete data.createDay
-        }
-        // 处理 用户注册日期
-        if (isRegDay) {
-            if (data?.regDay && data?.regDay?.length > 0) {
-                data.regStartDay = moment(data?.regDay[0]).format('YYYY-MM-DD')
-                data.regEndDay = moment(data?.regDay[1]).format('YYYY-MM-DD')
-            } else {
-                data.regStartDay = ''
-                data.regEndDay = ''
-            }
-            delete data.regDay
-        }
-        // 处理 消耗日期
-        if (isConsumeDay) {
-            if (data?.consumeDay && data?.consumeDay?.length > 0) {
-                data.costBeginDay = moment(data?.consumeDay[0]).format('YYYY-MM-DD')
-                data.costEndDay = moment(data?.consumeDay[1]).format('YYYY-MM-DD')
-            } else {
-                data.costBeginDay = ''
-                data.costEndDay = ''
-            }
-            delete data.consumeDay
-        }
-        // 处理 不同排行榜 选择
-        if (isSelectRanking) {
-            switch (data?.dateType) {
-                case 'all':
-                    data.beginDay = ''
-                    data.endDay = ''
-                    break;
-                case 'today':
-                    data.beginDay = moment().format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-                case 'yesterday':
-                    data.beginDay = moment().subtract(1, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().subtract(1, 'd').format('YYYY-MM-DD')
-                    break
-                case '7days':
-                    data.beginDay = moment().subtract(7, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-                case '30days':
-                    data.beginDay = moment().subtract(30, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-            }
-            delete data?.dateType
-        }
         console.log('更新了字段---->', data);
         onChange && onChange(data)
     }
 
-
-    const disabledDate: RangePickerProps['disabledDate'] = (current) => {
-        // Can not select days before today and today
-        if (consumeDay && consumeDay?.length === 2) {
-            let [d1] = consumeDay
-            return current && (current < moment(d1) || current > moment().endOf('day'));
-        }
-        return current && current > moment().endOf('day');
-    };
-
     return <Form layout="inline" className='queryForm' initialValues={initialValues} name="basic" form={form} onFinish={onFinish}>
         <Row gutter={[0, 6]}>
-            {/* 数据源搜索 */}
-            {isSource && <Col><Form.Item name='sourceSystem'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'数据源选择'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="BG_OLD">布谷-old</Select.Option>
-                    <Select.Option value="BG_NEW">布谷-new</Select.Option>
-                    <Select.Option value="ZX_SDK">布谷-zx</Select.Option>
-                    <Select.Option value="ZX_ONE">赞象</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 展示数据类型 */}
-            {isUserEnterType && <Col><Form.Item name='tableTypes'>
-                <Select
-                    showSearch
-                    style={{ width: 130 }}
-                    allowClear
-                    placeholder={'展示数据类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="buy">买量</Select.Option>
-                    <Select.Option value="nature">自然量</Select.Option>
-                    <Select.Option value="total">总量</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 订单渠道类型 */}
-            {isOrderLy && <Col><Form.Item name='orderAgentType'>
-                <Select
-                    showSearch
-                    style={{ width: 130 }}
-                    allowClear
-                    placeholder={'订单渠道类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="buy">买量</Select.Option>
-                    <Select.Option value="nature">自然量</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 玩家注册渠道类型 */}
-            {isRegisterType && <Col><Form.Item name='registerType'>
-                <Select
-                    showSearch
-                    style={{ width: 150 }}
-                    allowClear
-                    placeholder={'玩家注册渠道类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={1}>非自然量</Select.Option>
-                    <Select.Option value={0}>自然量</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {isActiveTypes && <Col><Form.Item name='activeTypes'>
-                <Select
-                    showSearch
-                    style={{ width: 130 }}
-                    placeholder={'留存数据的类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(ActiveEnum).map(key => <Select.Option value={key} key={key}>{ActiveEnum[key as keyof typeof ActiveEnum]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 不同排行榜选择 */}
-            {isSelectRanking && <Col><Form.Item name='dateType'>
-                <Radio.Group>
-                    <Radio.Button value="all">总排行</Radio.Button>
-                    <Radio.Button value="today">今日排行</Radio.Button>
-                    <Radio.Button value="yesterday">昨日排行</Radio.Button>
-                    <Radio.Button value="7days">7日排行</Radio.Button>
-                    <Radio.Button value="30days">30日排行</Radio.Button>
-                </Radio.Group>
-            </Form.Item></Col>}
-            {/* 所在原始服务器名称 */}
-            {isSourceServerName && <Col><Form.Item name='sourceServerName'>
-                <Input placeholder="原始服务器名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告区服名称 */}
-            {isServerName && <Col><Form.Item name='serverName'>
-                <Input placeholder="区服名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告区服ID */}
-            {isServerId && <Col><Form.Item name='serverId'>
-                <Input placeholder="区服ID" allowClear style={{ width: 140 }} {...(isServerId && typeof isServerId === 'object') ? isServerId : {}} />
-            </Form.Item></Col>}
-            {/* 广告账户名称 */}
-            {isAccount && <Col><Form.Item name='accountName'>
-                <Input placeholder="广告账号名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告账号ID */}
-            {isAccountId && <Col><Form.Item name='accountId'>
-                <Select
-                    maxTagCount={1}
-                    mode={isAccountIds ? 'multiple' : undefined}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'广告账号'}
-                    loading={getAccountListNew.loading || getAllOfOwnerUser.loading}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {accountList.map(item => <Select.Option key={item.value} value={item.value}>{item.label?.toString() + (item.corporationName ? `_${item.corporationName}` : '')}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 公司ID */}
-            {isCompanyId && <Col><Form.Item name='companyId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择公司'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'1'}>公司001</Select.Option>
-                    <Select.Option value={'2'}>公司002</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* cp名 */}
-            {isCpName && <Col><Form.Item name='cpName'>
-                <Input placeholder="CP名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* CPID */}
-            {isCpId && <Col><Form.Item name='cpId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择CP'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getCpChoiceList?.data?.map((item: { id: React.Key | null | undefined; cpName: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined }) => <Select.Option value={item.id} key={item.id}>{item.cpName}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* CP方订单ID */}
-            {isCpOrderId && <Col><Form.Item name='cpOrderId'>
-                <Input placeholder="CP订单号" style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* CP通知状态 */}
-            {isCpStatus && <Col><Form.Item name='cpStatus'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'CP通知状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'1'}>待处理</Select.Option>
-                    <Select.Option value={'2'}>成功</Select.Option>
-                    <Select.Option value={'3'}>失败</Select.Option>
-                </Select>
-            </Form.Item></Col>}
 
-            {/* 计划名称 */}
-            {isProjectName && <Col><Form.Item name='projectName'>
-                <Input placeholder="项目名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 计划ID */}
-            {isProjectId && <Col><Form.Item name='projectId'>
-                <Input placeholder="项目ID" allowClear style={{ width: 140 }} />
+            {/* 广告账号 */}
+            {isAccountId && <Col><Form.Item name='accountId'>
+                <Input placeholder="广告账号" style={{ width: 150 }} />
             </Form.Item></Col>}
+            
             {/* 广告名称 */}
             {isPromotionName && <Col><Form.Item name='promotionName'>
-                <Input placeholder="广告名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告ID */}
-            {isProjectId1 && <Col><Form.Item name='projectId'>
-                <Input placeholder="广告ID" allowClear style={{ width: 140 }} />
+                <Input placeholder="广告名称" style={{ width: 150 }} />
             </Form.Item></Col>}
+
             {/* 广告ID */}
             {isPromotionId && <Col><Form.Item name='promotionId'>
-                <Input placeholder="广告ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 计划ID */}
-            {isPromotionId1 && <Col><Form.Item name='promotionId'>
-                <Input placeholder="计划ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告状态 */}
-            {isAdTTStatus && <Col><Form.Item name='status'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 140 }}
-                    allowClear
-                    dropdownMatchSelectWidth={false}
-                    placeholder={'请选择广告状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(ADSTTTATUSEnum).map(key => <Select.Option value={key} key={key}>{ADSTTTATUSEnum[key as keyof typeof ADSTTTATUSEnum]}</Select.Option>)}
-                </Select>
+                <Input placeholder="广告ID" style={{ width: 150 }} />
             </Form.Item></Col>}
 
-            {isAdTXStatus && <Col><Form.Item name='status'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 140 }}
-                    allowClear
-                    dropdownMatchSelectWidth={false}
-                    placeholder={'请选择广告状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(ADSTATUSEnum).map(key => <Select.Option value={key} key={key}>{ADSTATUSEnum[key as keyof typeof ADSTATUSEnum]}</Select.Option>)}
-                </Select>
+            {/* 出价 */}
+            {isCpaBid && <Col><Form.Item name='cpaBid'>
+                <InputNumber placeholder="出价" style={{ width: 120 }} />
             </Form.Item></Col>}
 
-            {/* 客户端类型 */}
-            {isDeviceType && <Col><Form.Item name='deviceType'>
+            {/* 投手 */}
+            {isPutUserIdList && <Col><Form.Item name='putUserIdList'>
                 <Select
-                    maxTagCount={1}
                     showSearch
-                    style={{ width: 140 }}
                     allowClear
-                    dropdownMatchSelectWidth={false}
-                    placeholder={'请选择客户端类型'}
+                    mode="multiple"
+                    style={{ width: 120 }}
+                    placeholder={'投手'}
                     filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                        (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }
-                >
-                    {Object.keys(DeviceType).map(key => <Select.Option value={key} key={key}>{DeviceType[key as keyof typeof DeviceType]}</Select.Option>)}
-                </Select>
+                    loading={getPutUserList.loading}
+                    options={putUserList}
+                />
             </Form.Item></Col>}
 
-            {/* 登录类型 */}
-            {isLoginType && <Col><Form.Item name='type'>
+            {/* 出价方式 */}
+            {isPricing && <Col><Form.Item name='pricing'>
                 <Select
-                    maxTagCount={1}
                     showSearch
-                    style={{ width: 140 }}
                     allowClear
-                    dropdownMatchSelectWidth={false}
-                    placeholder={'请选择登录类型'}
+                    style={{ width: 120 }}
+                    placeholder={'出价方式'}
                     filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                        (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }
-                >
-                    {Object.keys(LoginType).map(key => <Select.Option value={key} key={key}>{LoginType[key as keyof typeof LoginType]}</Select.Option>)}
-                </Select>
+                    options={Object.keys(BID_MODE_ENUM).map(key => ({ label: BID_MODE_ENUM[key as keyof typeof BID_MODE_ENUM], value: key }))}
+                />
             </Form.Item></Col>}
 
-            {/* 操作设备 */}
-            {isDevice && <Col><Form.Item name='device'>
-                <Input placeholder="操作设备" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 游戏名 */}
-            {isRechargeGameName && <Col><Form.Item name='rechargeGameName'>
-                <Input placeholder="游戏名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 玩家ID */}
-            {isGameUserId && <Col><Form.Item name='gameUserId'>
-                <Input placeholder="玩家ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 游戏名 */}
-            {isGameName && <Col><Form.Item name='gameName'>
-                <Input placeholder="游戏名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 是否 开启 添加父游戏维度筛选 */}
-            {isGameDimension && <Col><Form.Item name='gameDimension'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 110 }}
-                    allowClear
-                    placeholder={'游戏维度'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                    onChange={() => form.setFieldsValue({ gameId: undefined })}
-                >
-                    <Select.Option value={1}>子游戏维度</Select.Option>
-                    <Select.Option value={2}>父游戏维度</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 游戏ID搜索 */}
-            {isGameId && <Col><Form.Item name='gameId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    loading={getGameListNew.loading || getGameChoiceList.loading}
-                    placeholder={'请选择游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isGameIds && <Col><Form.Item name='gameId'>
-                <Select
-                    maxTagCount={1}
-                    mode="multiple"
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    loading={getGameListNew.loading || getGameChoiceList.loading}
-                    placeholder={'请选择游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {/* {gameDimension === 2 ? parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>) : getGameChoiceList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)} */}
-                    {gameDimension === 2 ? parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>) : gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 充值游戏ID */}
-            {isOrderGameId && <Col><Form.Item name='orderGameId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择充值游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {/* {getGameChoiceList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)} */}
-                    {gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
 
-            {/* 超父游戏ID */}
-            {isSuperParentGameId && <Col><Form.Item name='superParentGameId'>
+            {/* 广告状态 */}
+            {isStatus && <Col><Form.Item name='status'>
                 <Select
-                    maxTagCount={1}
                     showSearch
-                    style={{ minWidth: 140 }}
                     allowClear
-                    disabled={parentId || parentGameIds?.length > 0}
-                    placeholder={'请选择超父游戏'}
+                    style={{ width: 120 }}
+                    placeholder={'广告状态'}
                     filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                        (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }
-                    onChange={(e) => {
-                        if (isServerIds && e) {
-                            form.setFieldsValue({ serverIds: undefined })
-                            getGameServerList.run({ gameId: e })
-                            getGameUnMergeServerList.run({ gameId: e })
-                        } else {
-                            getGameServerList?.data && getGameServerList.mutate([])
-                            getGameUnMergeServerList?.data && getGameUnMergeServerList.mutate([])
-                        }
-                    }}
-                >
-                    {superGameList?.map((item: any) => <Select.Option value={item.super_game_id} key={item.super_game_id}>{item.super_game_name}</Select.Option>)}
-                </Select>
+                    options={Object.keys(AD_STATUS_ENUM).map(key => ({ label: AD_STATUS_ENUM[key as keyof typeof AD_STATUS_ENUM], value: key }))}
+                />
             </Form.Item></Col>}
 
-            {/* 父游戏ID */}
-            {isParentId && <Col><Form.Item name='parentId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    disabled={superParentGameId}
-                    placeholder={'请选择父游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                    onChange={(e, option: any) => {
-                        if (isServerIds) {
-                            form.setFieldsValue({ serverIds: undefined })
-                            if (option?.['data-super-id']) {
-                                getGameServerList.run({ gameId: option['data-super-id'] })
-                            } else {
-                                getGameServerList?.data && getGameServerList.mutate([])
-                            }
-                        }
-                        if (isServerIdUn) {
-                            form.setFieldsValue({ serverId: undefined })
-                            if (option?.['data-super-id']) {
-                                getGameServerUnList.run({ gameId: option['data-super-id'] })
-                            } else {
-                                getGameServerUnList?.data && getGameServerUnList.mutate([])
-                            }
-                        }
-                    }}
-                >
-                    {parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isParentIds && <Col><Form.Item name='parentGameIds'>
+            {/* 是否退游 */}
+            {isDeleted && <Col><Form.Item name='deleted'>
                 <Select
-                    maxTagCount={1}
-                    mode="multiple"
                     showSearch
-                    style={{ minWidth: 140 }}
                     allowClear
-                    disabled={superParentGameId}
-                    placeholder={'请选择父游戏'}
+                    style={{ width: 120 }}
+                    placeholder={'是否删除?'}
                     filterOption={(input, option) =>
                         (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }
-                    onChange={(e, option) => {
-                        if (isServerIds) {
-                            form.setFieldsValue({ serverIds: undefined })
-                        }
-                        if (isServerIdUn) {
-                            form.setFieldsValue({ serverId: undefined })
-                        }
-                    }}
                 >
-                    {parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id}>{item.parent_game_name}</Select.Option>)}
+                    <Select.Option value={true}>是</Select.Option>
+                    <Select.Option value={false}>否</Select.Option>
                 </Select>
             </Form.Item></Col>}
 
-            {(parentId || superParentGameId) && <>
-                {/* 广告区服名称 */}
-                {isGameServerName && <Col><Form.Item name='serverName'>
-                    <Input placeholder="区服名称" allowClear style={{ width: 140 }} disabled={serverIds?.length > 0} />
-                </Form.Item></Col>}
-
-                {/* 区服id */}
-                {isServerIds && <Col><Form.Item name='serverIds'>
-                    <Select
-                        maxTagCount={1}
-                        mode="multiple"
-                        showSearch
-                        disabled={serverName}
-                        style={{ minWidth: 140 }}
-                        allowClear
-                        placeholder={'请选择区服'}
-                        filterOption={(input, option) =>
-                            (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                        }
-                        loading={getGameServerList.loading}
-                    >
-                        {(isIsParticipateMerge && isParticipateMerge)
-                            ? getGameUnMergeServerList?.data?.filter((item: { isSourceServer: any }) => (isIsMergeServer && ((!isMergeServer && item.isSourceServer) || (isMergeServer && !item.isSourceServer))) || !isIsMergeServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)
-                            : getGameServerList?.data?.filter((item: { isSourceServer: any }) => (isIsMergeServer && ((!isMergeServer && item.isSourceServer) || (isMergeServer && !item.isSourceServer))) || !isIsMergeServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)}
-                    </Select>
-                </Form.Item></Col>}
-
-                {/* 是否合服 */}
-                {isIsMergeServer && <Col><Form.Item name='isMergeServer' valuePropName="checked">
-                    <Checkbox onChange={() => form.setFieldsValue({ serverIds: undefined })}>是否合服</Checkbox>
-                </Form.Item></Col>}
-
-                {/* 是否参与过合服 */}
-                {isIsParticipateMerge && <Col><Form.Item name='isParticipateMerge' valuePropName="checked">
-                    <Checkbox onChange={() => form.setFieldsValue({ serverIds: undefined })}>未参与过合服</Checkbox>
-                </Form.Item></Col>}
-
-                {/* 区服id */}
-                {isServerIdUn && <Col><Form.Item name='serverId'>
-                    <Select
-                        maxTagCount={1}
-                        mode="multiple"
-                        showSearch
-                        disabled={serverName}
-                        style={{ minWidth: 140 }}
-                        allowClear
-                        placeholder={'请选择区服'}
-                        filterOption={(input, option) =>
-                            (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                        }
-                        loading={getGameServerUnList.loading}
-                    >
-                        {getGameServerUnList?.data?.filter((item: { isSourceServer: any }) => item.isSourceServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)}
-                    </Select>
-                </Form.Item></Col>}
-            </>}
+            {/* 日期选择框 */}
+            {day1 && <Col><Form.Item name='day1'>
+                <DatePicker.RangePicker style={{ width: 250 }} {...day1} />
+            </Form.Item></Col>}
 
-            {/* 游戏应用类型搜索 */}
-            {isGameType && <Col><Form.Item name='gameType'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择游戏应用类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getGameChoiceParentListType1?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 布谷游戏应用类型搜索 */}
-            {isBGGameClassify && <Col><Form.Item name='gameClassify'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 140 }}
-                    allowClear
-                    placeholder={'游戏应用类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(gameClassifyEnum).map(key => <Select.Option value={key} key={key}>{gameClassifyEnum[key as keyof typeof gameClassifyEnum]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 游戏角色名 */}
-            {isGameRoleName && <Col><Form.Item name='roleName'>
-                <Input placeholder="游戏角色名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 游戏角色名id搜索 */}
-            {isGameRoleId && <Col><Form.Item name='roleId'>
-                <Input placeholder="角色ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 客户微信号 */}
-            {isWeChat && <Col><Form.Item name='weChat'>
-                <Input placeholder="客户微信号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 客户微信号 */}
-            {isWeChatCompany && <Col><Form.Item name='weChatCompany'>
-                <Input placeholder="企业微信号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 是否首充 */}
-            {isFirstRecharge && <Col><Form.Item name='isFirstRecharge'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'是否首充'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'0'}>否</Select.Option>
-                    <Select.Option value={'1'}>是</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 是否切量 */}
-            {isSwitch && <Col><Form.Item name='isSwitch'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择是否切量'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'0'}>否</Select.Option>
-                    <Select.Option value={'1'}>是</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 收款商户号 */}
-            {isMerchantNo && <Col><Form.Item name='merchantNo'>
-                <Input placeholder="收款商户号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 收款商户号 */}
-            {isMerchantOrderNo && <Col><Form.Item name='merchantOrderNo'>
-                <Input placeholder="第三方支付订单号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 收款商户号 */}
-            {isOrderId && <Col><Form.Item name='orderId'>
-                <Input placeholder="商户订单号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 支付状态 */}
-            {isPayStatus && <Col><Form.Item name='orderStatus'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'支付状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(PayStatus).map(key => <Select.Option value={key} key={key}>{PayStatus[key as keyof typeof PayStatus]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 支付方式 */}
-            {isPayWay && <Col><Form.Item name='payWay'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'支付方式'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getPayList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.payName}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 推广媒体 */}
-            {isType && <Col><Form.Item name='type'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'推广媒体'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(TYPE).map(key => <Select.Option value={key} key={key}>{TYPE[key as keyof typeof TYPE]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 产品名称 */}
-            {isProductName && <Col><Form.Item name='productName'>
-                <Input placeholder="产品名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册渠道名 */}
-            {isRegAgent && <Col><Form.Item name='regAgent'>
-                <Input placeholder="注册渠道名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 渠道标识 */}
-            {isAgentKey && <Col><Form.Item name='agentKey'>
-                <Input placeholder="渠道标识" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 渠道名称 */}
-            {isAgentName && <Col><Form.Item name='agentName'>
-                <Input placeholder="渠道名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 推广渠道id */}
-            {isAgentId && <Col><Form.Item name='agentId'>
-                <Select
-                    maxTagCount={1}
-                    mode="multiple"
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择渠道'}
-                    loading={getChannelChoiceList.loading || getAgentListNew.loading}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {agentData?.map((item: any) => <Select.Option value={item.value} key={item.value}>{item.label}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 投放渠道名 */}
-            {isPutAgent && <Col><Form.Item name='putAgent'>
-                <Input placeholder="投放渠道名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 投手名 */}
-            {isSysUserName && <Col><Form.Item name='sysUserName'>
-                <Input placeholder="投手名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 投手ID */}
-            {isSysUserId && <Col><Form.Item name='pitcherId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    loading={getSubUserWithSelfList.loading || getPitcherListNew.loading}
-                    placeholder={'请选择投手'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {userIdList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isSysUserIds && <Col><Form.Item name='pitcherId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 120 }}
-                    allowClear
-                    mode="multiple"
-                    loading={getSubUserWithSelfList.loading || getPitcherListNew.loading}
-                    placeholder={'请选择投手'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {userIdList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 客服ID */}
-            {isCustomerServerId && <Col><Form.Item name='customerServerId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'请选择客服'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={0}>未操作</Select.Option>
-                    {customerList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 运营ID */}
-            {isOperatorId && <Col><Form.Item name='operatorId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'请选择运营'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={0}>未操作</Select.Option>
-                    {operateList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* GSID */}
-            {isGsId && <Col><Form.Item name='gsId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'请选择GS'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={0}>未操作</Select.Option>
-                    {gsList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家账号 */}
-            {isUserName && <Col><Form.Item name='username'>
-                <Input placeholder="玩家账号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 用户id */}
-            {isUserId && <Col><Form.Item name='userId'>
-                <Input placeholder="用户ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 玩家昵称 */}
-            {isNickname && <Col><Form.Item name='nickname'>
-                <Input placeholder="玩家昵称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 绑定手机 */}
-            {isMobile && <Col><Form.Item name='mobile'>
-                <Input placeholder="绑定手机" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册IP */}
-            {isRegIp && <Col><Form.Item name='regIp'>
-                <Input placeholder="注册IP" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册IP */}
-            {isIp && <Col><Form.Item name='ip'>
-                <Input placeholder="IP" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册IP */}
-            {isRankingNum && <Col><Form.Item name='rankingNum'>
-                <InputNumber placeholder="排名范围" min={1} />
-            </Form.Item></Col>}
-
-            {/* 是否充值 */}
-            {isIsRecharge && <Col><Form.Item name='isRecharge'>
-                <Select
-                    showSearch
-                    style={{ width: 98 }}
-                    allowClear
-                    placeholder={'是否充值'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={false}>否</Select.Option>
-                    <Select.Option value={true}>是</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 实名状态 */}
-            {isIsAuth && <Col><Form.Item name='isAuth'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 98 }}
-                    placeholder={'实名状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={false}>未实名</Select.Option>
-                    <Select.Option value={true}>已实名</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否绑定手机 */}
-            {isIsBindMobile && <Col><Form.Item name='isBindMobile'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 126 }}
-                    placeholder={'是否绑定手机'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={false}>未绑定</Select.Option>
-                    <Select.Option value={true}>已绑定</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家状态 */}
-            {isUserStatus && <Col><Form.Item name='userStatus'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 110 }}
-                    placeholder={'玩家状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'1'}>试玩</Select.Option>
-                    <Select.Option value={'2'}>正常</Select.Option>
-                    <Select.Option value={'3'}>冻结</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否创角 */}
-            {isCreateRole && <Col><Form.Item name='createRole'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 110 }}
-                    placeholder={'是否创角'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={true}>是</Select.Option>
-                    <Select.Option value={false}>否</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否转端 */}
-            {isIsChange && <Col><Form.Item name='isChange'>
-                <Select
-                    showSearch
-                    allowClear
-                    mode="multiple"
-                    style={{ width: 110 }}
-                    placeholder={'是否转端'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="2">未操作</Select.Option>
-                    <Select.Option value="1">是</Select.Option>
-                    <Select.Option value="0">不转端</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 邮件是否发送 */}
-            {isIsSendMail && <Col><Form.Item name='isSendMail'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 140 }}
-                    placeholder={'邮件是否发送'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="1">发送</Select.Option>
-                    <Select.Option value="0">不发送</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否退游 */}
-            {isRemoveGameForSystem && <Col><Form.Item name='isRemoveGameForSystem'>
-                <Select
-                    showSearch
-                    allowClear
-                    placeholder={'系统判定是否退游'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="1">退游</Select.Option>
-                    <Select.Option value="0">未退游</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否退游 */}
-            {isRemoveGame && <Col><Form.Item name='isRemoveGame'>
-                <Select
-                    showSearch
-                    allowClear
-                    mode="multiple"
-                    style={{ width: 110 }}
-                    placeholder={'是否退游'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="2">未操作</Select.Option>
-                    <Select.Option value="1">退游</Select.Option>
-                    <Select.Option value="0">未退游</Select.Option>
-                </Select>
+            {/* 日期选择框 */}
+            {day2 && <Col><Form.Item name='day2'>
+                <DatePicker.RangePicker style={{ width: 250 }} {...day2} />
             </Form.Item></Col>}
 
-            {/* 是否添加企微 */}
-            {isAddCorpWechat && <Col><Form.Item name='isAddCorpWechat'>
-                <Select
-                    showSearch
-                    allowClear
-                    mode="multiple"
-                    style={{ width: 135 }}
-                    placeholder={'是否添加企微'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="2">未操作</Select.Option>
-                    <Select.Option value="1">是</Select.Option>
-                    <Select.Option value="0">否</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否唤醒 */}
-            {isWakeUp && <Col><Form.Item name='isWakeUp'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 110 }}
-                    placeholder={'是否唤醒'}
-                    mode="multiple"
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="2">未操作</Select.Option>
-                    <Select.Option value="1">是</Select.Option>
-                    <Select.Option value="0">否</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* vip等级 */}
-            {isVipLevel && <Col><Form.Item name='vipLevel'>
-                <Select
-                    showSearch
-                    allowClear
-                    maxTagCount={1}
-                    mode="multiple"
-                    style={{ minWidth: 98 }}
-                    placeholder={'角色VIP'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Array(getVipLevel?.data || 0).fill('').map((_item, index) => <Select.Option value={index + 1} key={index + 1}>{index + 1}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 角色等级 */}
-            {isRoleLevel && <Col><Form.Item>
-                <Space>
-                    <Form.Item name='roleLevelMin' noStyle>
-                        <InputNumber style={{ width: 130 }} placeholder="角色等级最小值" />
-                    </Form.Item>
-                    <span>~</span>
-                    <Form.Item name='roleLevelMax' noStyle>
-                        <InputNumber style={{ width: 130 }} placeholder="角色等级最小值" />
-                    </Form.Item>
-                </Space>
-            </Form.Item></Col>}
-
-            {/* 操作系统 */}
-            {isOs && <Col><Form.Item name='os'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 110 }}
-                    allowClear
-                    placeholder={'操作系统'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getUserSystemTypeChoiceList?.data?.map((item: any) => <Select.Option value={item.os} key={item.os}>{item.os}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 支付状态 */}
-            {isBackStatus && <Col><Form.Item name='backStatus'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'回传状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={-1}>回传失败</Select.Option>
-                    <Select.Option value={0}>未回传</Select.Option>
-                    <Select.Option value={1}>回传成功</Select.Option>
-                    <Select.Option value={2}>部分成功</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家最新染色归因投手 */}
-            {isUserLastPitcherId && <Col><Form.Item name='userLastPitcherId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 160 }}
-                    allowClear
-                    loading={getSubUserWithSelfList.loading || getPitcherListNew.loading}
-                    placeholder={'最新染色归因投手'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {userIdList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家最新染色渠道ID */}
-            {isUserLastRegAgentId && <Col><Form.Item name='userLastRegAgentId'>
-                <Select
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'玩家最新染色渠道'}
-                    loading={getChannelChoiceList.loading || getAgentListNew.loading}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {agentData?.map((item: any) => <Select.Option value={item.value} key={item.value}>{item.label}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家最新染色时间 */}
-            {isUserLastRegTime && <Col><Form.Item name='userLastRegTime'>
-                <DatePicker placeholder={'最新染色时间'} />
-            </Form.Item></Col>}
-
-            {/* 用户注册日期搜索 */}
-            {isRegDay && <Col><Form.Item name='regDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['注册开始日期', '注册结束日期']} {...isRegDay} />
-            </Form.Item></Col>}
-
-            {/* 消耗日期 搜索 */}
-            {isConsumeDay && <Col><Form.Item name='consumeDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['消耗开始日期', '消耗结束日期']} {...isConsumeDay} />
-            </Form.Item></Col>}
-
-            {/* 消耗日期 搜索 */}
-            {isBeginDay && <Col><Form.Item name='beginDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['开始日期', '结束日期']} />
-            </Form.Item></Col>}
-
-            {/* 订单创建日期搜索 */}
-            {isCreateDay && <Col><Form.Item name='createDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['订单创建开始日期', '订单创建结束日期']} {...isCreateDay} />
-            </Form.Item></Col>}
-
-            {isCreateDayXz && <Col><Form.Item name='createDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} disabledDate={disabledDate} placeholder={['订单创建开始日期', '订单创建结束日期']} {...isCreateDay} />
-            </Form.Item></Col>}
-
-            {/* 充值日期搜索 */}
-            {rechargeDay && <Col><Form.Item name='rechargeDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['充值开始日期', '充值结束日期']} {...rechargeDay} />
-            </Form.Item></Col>}
-
-            {LastRechargeDay && <Col><Form.Item name='LastRechargeDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['最近充值开始日期', '最近充值结束日期']} {...LastRechargeDay} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {payTimeDay && <Col><Form.Item name='payTime'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['支付开始日期', '支付结束日期']} {...payTimeDay} />
-            </Form.Item></Col>}
-            {/* 单个充值日期搜索 */}
-            {placeAnOrderDay && <Col><Form.Item name='placeAnOrderTime'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['下单开始日期', '下单结束日期']} {...placeAnOrderDay} />
-            </Form.Item></Col>}
-
-            {/* 开服日期搜索 */}
-            {isServerDay && <Col><Form.Item name='serverDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['开服开始日期', '开服结束日期']} {...isServerDay} />
-            </Form.Item></Col>}
-
-            {/* 角色创建日期搜索 */}
-            {isCreateRoleDay && <Col><Form.Item name='createRoleDay'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['角色创建开始日期', '角色创建结束日期']} {...isCreateRoleDay} />
-            </Form.Item></Col>}
-
-            {/* 最近活跃 */}
-            {isLastActiveTime && <Col><Form.Item name='lastActiveTime'>
-                <DatePicker.RangePicker style={{ width: 230 }} placeholder={['最近活跃开始日期', '最近活跃结束日期']} {...isLastActiveTime} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {isRechargeDate && <Col><Form.Item name='rechargeDate'>
-                <DatePicker placeholder={'充值日期'} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {isPayIntervalTime && <Col><Form.Item name='regPayIntervalTime'>
-                <IntervalTime {...isPayIntervalTime} />
-            </Form.Item></Col>}
-
-            {isRoleCount && <Col><Form.Item name='roleCount'>
-                <IntervalTime {...isRoleCount} />
-            </Form.Item></Col>}
-
-            {/* 创角24小时内单笔充值金额 */}
-            {isRechargeAmountWithin24h && <Col><Form.Item name='roleCount'>
-                <Space size={0}>
-                    <Form.Item name={'rechargeAmountWithin24hUnit'} noStyle>
-                        <Select placeholder="条件" style={{ width: 70 }} allowClear>
-                            {/* <Select.Option value=">=">{`>=`}</Select.Option>
-                            <Select.Option value="<=">{`<=`}</Select.Option> */}
-                            <Select.Option value="=">{`=`}</Select.Option>
-                            <Select.Option value=">">{`>`}</Select.Option>
-                            <Select.Option value="<">{`<`}</Select.Option>
-                        </Select>
-                    </Form.Item>
-                    <Form.Item name={'rechargeAmountWithin24h'} noStyle>
-                        <Input placeholder="创角24小时内单笔充值金额" allowClear />
-                    </Form.Item>
-                    <Tooltip title={'创角24小时内单笔充值金额,条件默认">="'}>
-                        <QuestionCircleOutlined style={{ marginLeft: 10 }} />
-                    </Tooltip>
-                </Space>
-            </Form.Item></Col>}
-
-            {/* 创角24小时以内累计充值金额 */}
-            {isRechargeTotalAmountWithin24h && <Col><Form.Item name='roleCount'>
-                <Space size={0}>
-                    <Form.Item name={'rechargeTotalAmountWithin24hUnit'} noStyle>
-                        <Select placeholder="条件" style={{ width: 70 }} allowClear>
-                            <Select.Option value=">=">{`>=`}</Select.Option>
-                            <Select.Option value="<=">{`<=`}</Select.Option>
-                            <Select.Option value="=">{`=`}</Select.Option>
-                            <Select.Option value=">">{`>`}</Select.Option>
-                            <Select.Option value="<">{`<`}</Select.Option>
-                        </Select>
-                    </Form.Item>
-                    <Form.Item name={'rechargeTotalAmountWithin24h'} noStyle>
-                        <Input placeholder="创角24小时以内累计充值金额" allowClear />
-                    </Form.Item>
-                    <Tooltip title={'创角24小时以内累计充值金额,条件默认">="'}>
-                        <QuestionCircleOutlined style={{ marginLeft: 10 }} />
-                    </Tooltip>
-                </Space>
+            {/* 日期选择框 */}
+            {day3 && <Col><Form.Item name='day3'>
+                <DatePicker.RangePicker style={{ width: 250 }} {...day3} />
             </Form.Item></Col>}
 
             <Col>

+ 0 - 1195
src/components/QueryForm/indexGs.tsx

@@ -1,1195 +0,0 @@
-import { Button, Checkbox, Col, DatePicker, Form, Input, InputNumber, Radio, Row, Select, Space } from "antd"
-import React, { useEffect, useState } from "react"
-import moment from "moment"
-import { useAjax } from "@/Hook/useAjax"
-import { getAllOfOwnerUserApi, getChannelChoiceListApi, getGameChoiceListApi, getGameChoiceParentListType1Api, getPayListApi, getSubUserWithSelfListApi, getTtAllUserListApi, getUserSystemTypeChoiceListApi, getRoleUserListApi, getGameServerListApi, getGameServerUnListApi, getAccountListNewApi, getAgentListNewApi, getPitcherListNewApi, getGameListNewApi, getVipLevelApi, getGameUnMergeServerListApi } from "@/services/gameData"
-import { ActiveEnum, PayStatus, gameClassifyEnum } from "./const"
-import IntervalTime from "./intervalTime"
-import { RangePickerProps } from "antd/lib/date-picker"
-
-
-interface Props {
-    onChange?: (data: any) => void
-    /** 默认值 */
-    initialValues?: any
-    /** 开启数据源搜索 */
-    isSource?: boolean,
-    /** 是否开启角色来源搜索 */
-    isRoleSource?: boolean,
-    /** 是否开启 广告账户ID 搜索 */
-    isAccountId?: boolean
-    // 开启账号多选
-    isAccountIds?: boolean,
-    /** 是否开启 订单创建日期 搜索 */
-    isCreateDay?: {
-        ranges?: any
-    }
-    /** 订单创建日期 根据消耗时间 来限制可选范围 */
-    isCreateDayXz?: {
-        ranges?: any
-    }
-    /** 是否开启 角色创建日期 搜索 */
-    isCreateRoleDay?: RangePickerProps
-    /** 是否开启 最近活跃时间 搜索 */
-    isLastActiveTime?: {
-        ranges?: any
-    }
-    /** 是否开启 操作设备 搜索 */
-    isDevice?: boolean
-    /** 是否开启 注册游戏名 搜索 */
-    isRechargeGameName?: boolean
-    /** 是否开启 游戏名 搜索 */
-    isGameName?: boolean
-    /** 是否开启 游戏ID 搜索 */
-    isGameId?: boolean
-    isGameIds?: boolean
-    /** 是否开启 充值游戏ID 搜索 */
-    isOrderGameId?: boolean
-    /** 是否开启 父游戏ID 搜索 */
-    isParentId?: boolean
-    isParentIds?: boolean
-    /** 是否开启 超父游戏ID 搜索 */
-    isSuperParentGameId?: boolean
-    /** 是否开启 是否合服 搜索 */
-    isIsMergeServer?: boolean
-    /** 是否开启 是否未参与过合服 搜索 */
-    isIsParticipateMerge?: boolean
-    /** 是否开启 游戏应用类型 搜索 */
-    isGameType?: boolean
-    /** 是否开启 游戏角色名 搜索 */
-    isGameRoleName?: boolean
-    /** 是否开启 游戏角色名ID 搜索 */
-    isGameRoleId?: boolean
-    /** 是否开启 是否首充 搜索 */
-    isFirstRecharge?: boolean
-    /** 是否开启 支付状态 搜索 */
-    isPayStatus?: boolean
-    /** 是否开启 支付方式 搜索 */
-    isPayWay?: boolean
-    /** 是否开启 产品名称 搜索 */
-    isProductName?: boolean
-    /** 是否开启 注册渠道名 搜索 */
-    isRegAgent?: boolean
-    /** 是否开启 渠道名称 搜索 */
-    isAgentName?: boolean
-    /** 是否开启 注册渠道ID 搜索 */
-    isAgentId?: boolean
-    /** 是否开启 渠道标识 搜索 */
-    isAgentKey?: boolean
-    /** 是否开启 用户注册日期 搜索 */
-    isRegDay?: {
-        ranges?: any
-    }
-    /** 是否开启 投手ID 搜索 */
-    isSysUserId?: boolean
-    isSysUserIds?: boolean
-    /** 是否开启 玩家账号 搜索 */
-    isUserName?: boolean
-    /** 是否开启 用户ID 搜索 */
-    isUserId?: boolean
-    /** 是否开启 不同排行榜选择 搜索 */
-    isSelectRanking?: boolean
-    /** 是否开启 充值日期 搜索 */
-    rechargeDay?: RangePickerProps
-    /** 是否开启 服务日期 搜索 */
-    isServeDay?: RangePickerProps
-    /** 是否开启 支付时间 搜索 */
-    payTimeDay?: {
-        ranges?: any
-    }
-    /** 是否开启 下单时间 搜索 */
-    placeAnOrderDay?: {
-        ranges?: any
-    }
-    /** 是否开启布谷 游戏类型 筛选 */
-    isBGGameClassify?: boolean,
-    /** 是否开启 单个充值日期 选择 */
-    isRechargeDate?: boolean,
-    /** 是否开启 玩家ID 搜索 */
-    isGameUserId?: boolean
-    /** 是否开启 操作系统 选择 */
-    isOs?: boolean
-    /** 是否开启 展示数据类型(买量,自然,总) 搜索 */
-    isUserEnterType?: boolean
-    /** 是否开启 区服名称 搜索 */
-    isServerName?: boolean
-    /** 是否开启 所在原始服务器名称 搜索 */
-    isSourceServerName?: boolean
-    /** 是否开启区服ID 搜索 */
-    isServerId?: boolean | {
-        placeholder?: string
-    }
-    /** 是否开启 充值到支付的间隔时间 搜索 */
-    isPayIntervalTime?: {
-        tips?: string
-    }
-    /** 是否开启 留存数据的类型 搜索 */
-    isActiveTypes?: boolean
-    /** 是否开启 玩家昵称 搜索 */
-    isNickname?: boolean
-    /** 是否开启 绑定手机 搜索 */
-    isMobile?: boolean
-    /** 是否开启 是否充值 搜索 */
-    isIsRecharge?: boolean
-    /** 是否开启 玩家状态 搜索 */
-    isUserStatus?: boolean
-    /** 是否开启 角色VIP 搜索 */
-    isVipLevel?: boolean
-    /** 是否开启 角色等级 搜索 */
-    isRoleLevel?: boolean
-    /** 是否开启 是否转端 搜索 */
-    isIsChange?: boolean
-    /** 是否开启 企业微信号 搜索 */
-    isWeChatCompany?: boolean
-    /** 是否开启 企业微信号 搜索 */
-    isWeChat?: boolean
-    /** 是否开启 客服 搜索*/
-    isCustomerServerId?: boolean
-    /** 是否开启 运营 搜索 */
-    isOperatorId?: boolean
-    /** 是否开启多个区服id搜索 */
-    isServerIds?: boolean
-    /** 是否开启 游戏区服 搜索 */
-    isGameServerName?: boolean
-    /** 是否开启多个区服id搜索 */
-    isRankingNum?: boolean
-    /** 是否开启 原始区服列表 搜索 */
-    isServerIdUn?: boolean
-    /** 是否开启 是否退游 搜索 */
-    isRemoveGame?: boolean
-    /** 是否开启 是否退游系统 搜索 */
-    isRemoveGameForSystem?: boolean
-    /** 是否开启GS 搜索 */
-    isGsId?: boolean
-    /** 是否开启 服务状态 搜索 */
-    isServeStatus?: boolean
-    /** 是否开启 GS运营状态:1:独立运营;2:联合运营 搜索 */
-    isGsStatus?: boolean
-}
-/**
- * 游戏数据系统 请求参数
- * @returns 
- */
-const QueryFormGS: React.FC<Props> = (props) => {
-
-    /**************************/
-    const {
-        onChange, initialValues, isSource, isRoleSource, isGsId, isAccountId, isAccountIds, isAgentKey, isAgentName, isCreateDay, isCreateDayXz, isDevice, isGameName, isRechargeGameName, isGameId, isGameIds, isOrderGameId, isGameRoleId,
-        isGameRoleName, isFirstRecharge, isPayStatus, isPayWay, isProductName, isRegAgent, isAgentId, isRegDay, isOs, isParentId, isParentIds, isServeDay,
-        isRechargeDate, isBGGameClassify, isGameUserId, isSysUserId, isSysUserIds, isUserName, isUserId, isSelectRanking, isGameType, rechargeDay, isUserEnterType, isServerName, isServerId,
-        payTimeDay, placeAnOrderDay, isPayIntervalTime, isActiveTypes, isNickname, isMobile, isIsRecharge, isUserStatus, isVipLevel, isRoleLevel, isCreateRoleDay, isLastActiveTime, isIsChange, isWeChatCompany, isWeChat,
-        isCustomerServerId, isOperatorId, isServerIds, isGsStatus, isServeStatus, isRankingNum, isIsMergeServer, isIsParticipateMerge, isSuperParentGameId, isGameServerName, isServerIdUn, isSourceServerName, isRemoveGame, isRemoveGameForSystem,
-    } = props
-    const [form] = Form.useForm()
-    const parentId = Form.useWatch('parentId', form)
-    const superParentGameId = Form.useWatch('superParentGameId', form)
-    const isMergeServer = Form.useWatch('isMergeServer', form)
-    const serverName = Form.useWatch('serverName', form)
-    const serverIds = Form.useWatch('serverIds', form)
-    const sourceSystem = Form.useWatch('sourceSystem', form)
-    const parentGameIds = Form.useWatch('parentGameIds', form)
-    const gameDimension = Form.useWatch('gameDimension', form)
-    const consumeDay = Form.useWatch('consumeDay', form)
-    const isParticipateMerge = Form.useWatch('isParticipateMerge', form)
-    const [accountList, setAccountList] = useState<any[]>([])
-    const [userIdList, setUserIdList] = useState<any[]>([])
-    const [gsList, setGsList] = useState<any[]>([])
-    const [customerList, setCustomerList] = useState<any[]>([])
-    const [operateList, setOperateList] = useState<any[]>([])
-    const [gameList, setGameList] = useState<any[]>([])
-    const [parentGameList, setParentGameList] = useState<any[]>([])
-    const [superGameList, setSuperGameList] = useState<any[]>([])
-    const [agentData, setAgentData] = useState<{ label: string, value: string }[]>([])
-
-
-    const getAllOfOwnerUser = useAjax(() => getAllOfOwnerUserApi())
-    const getTtAllUserList = useAjax(() => getTtAllUserListApi())
-    const getGameChoiceList = useAjax(() => getGameChoiceListApi())
-    const getSubUserWithSelfList = useAjax(() => getSubUserWithSelfListApi())
-    const getChannelChoiceList = useAjax(() => getChannelChoiceListApi())
-    const getGameChoiceParentListType1 = useAjax(() => getGameChoiceParentListType1Api())
-    const getUserSystemTypeChoiceList = useAjax(() => getUserSystemTypeChoiceListApi())
-    const getPayList = useAjax(() => getPayListApi())
-    const getVipLevel = useAjax(() => getVipLevelApi())
-    const getRoleUserList = useAjax((params) => getRoleUserListApi(params))
-    const getGameServerList = useAjax((params) => getGameServerListApi(params))
-    const getGameUnMergeServerList = useAjax((params) => getGameUnMergeServerListApi(params))
-    const getGameServerUnList = useAjax((params) => getGameServerUnListApi(params))
-    const getAccountListNew = useAjax((params) => getAccountListNewApi(params))
-    const getAgentListNew = useAjax((params) => getAgentListNewApi(params))
-    const getPitcherListNew = useAjax((params) => getPitcherListNewApi(params))
-    const getGameListNew = useAjax((params) => getGameListNewApi(params))
-    /**************************/
-
-    useEffect(() => {
-        if (isCustomerServerId || isOperatorId || isGsId) {
-            const getList = async () => {
-                // 游戏GS
-                let gs = await getRoleUserList.run({ authType: 'GS' })
-                setGsList(gs ? Object.keys(gs)?.map(key => ({ userId: key, nickname: gs[key] })) : [])
-                // 运营
-                let operate = await getRoleUserList.run({ authType: 'OPERATE' })
-                setOperateList(operate ? Object.keys(operate)?.map(key => ({ userId: key, nickname: operate[key] })) : [])
-                // 客服
-                let customer = await getRoleUserList.run({ authType: 'CUSTOMER' })
-                setCustomerList(customer ? Object.keys(customer)?.map(key => ({ userId: key, nickname: customer[key] })) : [])
-            }
-            getList()
-        }
-    }, [isCustomerServerId, isOperatorId, isGsId])
-
-    useEffect(() => {
-        if (isAccountId) {
-            // 请求广告账号列表
-            async function getAccount() {
-                if (sourceSystem === 'ZX_ONE') {
-                    let data: any[] = []
-                    let res1 = await getAllOfOwnerUser.run()
-                    let data1 = []
-                    if (res1) {
-                        data1 = res1?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: item.corporationName }))
-                    }
-                    let res2 = await getTtAllUserList.run()
-                    let data2 = []
-                    if (res2) {
-                        data2 = res2?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: item.accountName }))
-                    }
-                    data = [...data1, ...data2]
-                    setAccountList(data)
-                } else if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                    let res1 = await getAccountListNew.run({ sourceSystem })
-                    setAccountList(res1?.map((item: any) => ({ label: item.accountId, value: item.accountId, corporationName: '' })))
-                }
-            }
-            getAccount()
-        }
-    }, [isAccountId, sourceSystem])
-
-    /** 游戏列表 */
-    useEffect(() => {
-        if (isGameId || isOrderGameId || isParentId || isParentIds || isGameIds || isSuperParentGameId) {
-            getGameListNew.run({ sourceSystem }).then((res: { gameList: any; parentGameList: any; superGameList: any }) => {
-                if (res) {
-                    const { gameList, parentGameList, superGameList } = res
-                    // if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                    setGameList(gameList?.map((item: { id: any; game_name: any }) => ({ id: item.id, name: item.game_name })) || [])
-                    // }
-                    // let isBg = ['289', '399', '402', '432', '445', '472'].includes(localStorage.getItem('userId') || '')
-                    // let newparentGameList: { parent_game_id: number }[] = parentGameList || []
-                    // if (isBg) {  //布谷过滤
-                    //     newparentGameList = newparentGameList.filter(item => ![9, 1, 7, 15, 11, 16, 13].includes(item.parent_game_id))
-                    // }
-                    setParentGameList(parentGameList)
-                    setSuperGameList(superGameList)
-                }
-            })
-
-            // if (sourceSystem === 'ZX_ONE') {
-            //     getGameChoiceList.run().then(res => {
-            //         setGameList(res || [])
-            //     })
-            // }
-        }
-    }, [isGameId, isGameIds, isOrderGameId, isParentId, isParentIds, isSuperParentGameId, sourceSystem])
-
-    useEffect(() => {
-        if (isVipLevel) {
-            getVipLevel.run()
-        }
-    }, [isVipLevel])
-
-    /** 投手列表 */
-    useEffect(() => {
-        if (isSysUserId || isSysUserIds) {
-            if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                getPitcherListNew.run({ sourceSystem }).then((res: { pitcherId: any; pitcherName: any }[]) => {
-                    setUserIdList(res?.map((item: { pitcherId: any; pitcherName: any }) => ({ userId: item.pitcherId, nickname: item.pitcherName })))
-                })
-            } else {
-                getSubUserWithSelfList.run().then((res: { [x: string]: any }) => {
-                    setUserIdList(res ? Object.keys(res)?.map(key => ({ userId: key, nickname: res[key] })) : [])
-                })
-            }
-        }
-    }, [isSysUserId, isSysUserIds, sourceSystem])
-
-    /** 推广渠道 */
-    useEffect(() => {
-        if (isAgentId) {
-            if (['BG_OLD', 'BG_NEW', 'ZX_SDK'].includes(sourceSystem)) {
-                getAgentListNew.run({ sourceSystem }).then((res: { agentName: any; agentId: any }[]) => {
-                    setAgentData(res?.map((item: { agentName: any; agentId: any }) => ({ label: item.agentName, value: item.agentId })))
-                })
-            } else {
-                getChannelChoiceList.run().then((res: { agentName: any; id: any }[]) => {
-                    console.log(res)
-                    setAgentData(res?.map((item: { agentName: any; id: any }) => ({ label: item.agentName, value: item.id })))
-                })
-            }
-        }
-    }, [isAgentId, sourceSystem])
-
-    /** 游戏应用类型 */
-    useEffect(() => {
-        if (isGameType) {
-            getGameChoiceParentListType1.run()
-        }
-    }, [isGameType])
-
-    /** 操作系统 */
-    useEffect(() => {
-        if (isOs) {
-            getUserSystemTypeChoiceList.run()
-        }
-    }, [isOs])
-
-    /** 支付方式 */
-    useEffect(() => {
-        if (isPayWay) {
-            getPayList.run()
-        }
-    }, [isPayWay])
-
-    const onFinish = (data: any) => {
-
-        // 处理订单创建日期
-        if (isCreateDay) {
-            if (data?.createDay && data?.createDay?.length > 0) {
-                data.beginOrderTime = moment(data?.createDay[0]).format('YYYY-MM-DD')
-                data.endOrderTime = moment(data?.createDay[1]).format('YYYY-MM-DD')
-            } else {
-                data.beginOrderTime = ''
-                data.endOrderTime = ''
-            }
-            delete data.createDay
-        }
-        // 处理 用户注册日期
-        if (isRegDay) {
-            if (data?.regDay && data?.regDay?.length > 0) {
-                data.regStartDay = moment(data?.regDay[0]).format('YYYY-MM-DD')
-                data.regEndDay = moment(data?.regDay[1]).format('YYYY-MM-DD')
-            } else {
-                data.regStartDay = ''
-                data.regEndDay = ''
-            }
-            delete data.regDay
-        }
-        // 处理 不同排行榜 选择
-        if (isSelectRanking) {
-            switch (data?.dateType) {
-                case 'all':
-                    data.beginDay = ''
-                    data.endDay = ''
-                    break;
-                case 'today':
-                    data.beginDay = moment().format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-                case 'yesterday':
-                    data.beginDay = moment().subtract(1, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().subtract(1, 'd').format('YYYY-MM-DD')
-                    break
-                case '7days':
-                    data.beginDay = moment().subtract(7, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-                case '30days':
-                    data.beginDay = moment().subtract(30, 'd').format('YYYY-MM-DD')
-                    data.endDay = moment().format('YYYY-MM-DD')
-                    break
-            }
-            delete data?.dateType
-        }
-        console.log('更新了字段---->', data);
-        onChange && onChange(data)
-    }
-
-
-    const disabledDate: RangePickerProps['disabledDate'] = (current) => {
-        // Can not select days before today and today
-        if (consumeDay && consumeDay?.length === 2) {
-            let [d1] = consumeDay
-            return current && (current < moment(d1) || current > moment().endOf('day'));
-        }
-        return current && current > moment().endOf('day');
-    };
-
-    return <Form layout="inline" className='queryForm' initialValues={initialValues} name="basicGs" form={form} onFinish={onFinish}>
-        <Row gutter={[0, 6]}>
-            {/* 数据源搜索 */}
-            {isSource && <Col><Form.Item name='sourceSystem'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'数据源选择'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="BG_OLD">布谷-old</Select.Option>
-                    <Select.Option value="BG_NEW">布谷-new</Select.Option>
-                    <Select.Option value="ZX_SDK">布谷-zx</Select.Option>
-                    <Select.Option value="ZX_ONE">赞象</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 角色来源 */}
-            {isRoleSource && <Col><Form.Item name='roleSource'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'角色来源选择'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={2}>角色指派</Select.Option>
-                    <Select.Option value={1}>区服指派</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-            {/* 展示数据类型 */}
-            {isUserEnterType && <Col><Form.Item name='tableTypes'>
-                <Select
-                    showSearch
-                    style={{ width: 130 }}
-                    allowClear
-                    placeholder={'展示数据类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="buy">买量</Select.Option>
-                    <Select.Option value="nature">自然量</Select.Option>
-                    <Select.Option value="total">总量</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {isActiveTypes && <Col><Form.Item name='activeTypes'>
-                <Select
-                    showSearch
-                    style={{ width: 130 }}
-                    placeholder={'留存数据的类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(ActiveEnum).map(key => <Select.Option value={key} key={key}>{ActiveEnum[key as keyof typeof ActiveEnum]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 不同排行榜选择 */}
-            {isSelectRanking && <Col><Form.Item name='dateType'>
-                <Radio.Group>
-                    <Radio.Button value="all">总排行</Radio.Button>
-                    <Radio.Button value="today">今日排行</Radio.Button>
-                    <Radio.Button value="yesterday">昨日排行</Radio.Button>
-                    <Radio.Button value="7days">7日排行</Radio.Button>
-                    <Radio.Button value="30days">30日排行</Radio.Button>
-                </Radio.Group>
-            </Form.Item></Col>}
-            {/* 所在原始服务器名称 */}
-            {isSourceServerName && <Col><Form.Item name='sourceServerName'>
-                <Input placeholder="原始服务器名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告区服名称 */}
-            {isServerName && <Col><Form.Item name='serverName'>
-                <Input placeholder="区服名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 广告区服ID */}
-            {isServerId && <Col><Form.Item name='serverId'>
-                <Input placeholder="区服ID" allowClear style={{ width: 140 }} {...(isServerId && typeof isServerId === 'object') ? isServerId : {}} />
-            </Form.Item></Col>}
-            {/* 广告账号ID */}
-            {isAccountId && <Col><Form.Item name='accountId'>
-                <Select
-                    maxTagCount={1}
-                    mode={isAccountIds ? 'multiple' : undefined}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'广告账号'}
-                    loading={getAccountListNew.loading || getAllOfOwnerUser.loading}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {accountList.map(item => <Select.Option key={item.value} value={item.value}>{item.label?.toString() + (item.corporationName ? `_${item.corporationName}` : '')}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 操作设备 */}
-            {isDevice && <Col><Form.Item name='device'>
-                <Input placeholder="操作设备" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 游戏名 */}
-            {isRechargeGameName && <Col><Form.Item name='rechargeGameName'>
-                <Input placeholder="游戏名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 玩家ID */}
-            {isGameUserId && <Col><Form.Item name='gameUserId'>
-                <Input placeholder="玩家ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-            {/* 游戏名 */}
-            {isGameName && <Col><Form.Item name='gameName'>
-                <Input placeholder="游戏名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 游戏ID搜索 */}
-            {isGameId && <Col><Form.Item name='gameId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    loading={getGameListNew.loading || getGameChoiceList.loading}
-                    placeholder={'请选择游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isGameIds && <Col><Form.Item name='gameId'>
-                <Select
-                    maxTagCount={1}
-                    mode="multiple"
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    loading={getGameListNew.loading || getGameChoiceList.loading}
-                    placeholder={'请选择游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {/* {gameDimension === 2 ? parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>) : getGameChoiceList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)} */}
-                    {gameDimension === 2 ? parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>) : gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 充值游戏ID */}
-            {isOrderGameId && <Col><Form.Item name='orderGameId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择充值游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {/* {getGameChoiceList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)} */}
-                    {gameList?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 超父游戏ID */}
-            {isSuperParentGameId && <Col><Form.Item name='superParentGameId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    disabled={parentId || parentGameIds?.length > 0}
-                    placeholder={'请选择超父游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                    onChange={(e) => {
-                        if (isServerIds && e) {
-                            form.setFieldsValue({ serverIds: undefined })
-                            getGameServerList.run({ gameId: e })
-                            getGameUnMergeServerList.run({ gameId: e })
-                        } else {
-                            getGameServerList?.data && getGameServerList.mutate([])
-                            getGameUnMergeServerList?.data && getGameUnMergeServerList.mutate([])
-                        }
-                    }}
-                >
-                    {superGameList?.map((item: any) => <Select.Option value={item.super_game_id} key={item.super_game_id}>{item.super_game_name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 父游戏ID */}
-            {isParentId && <Col><Form.Item name='parentId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    disabled={superParentGameId}
-                    placeholder={'请选择父游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                    onChange={(e, option: any) => {
-                        if (isServerIds) {
-                            form.setFieldsValue({ serverIds: undefined })
-                            if (option?.['data-super-id']) {
-                                getGameServerList.run({ gameId: option['data-super-id'] })
-                            } else {
-                                getGameServerList?.data && getGameServerList.mutate([])
-                            }
-                        }
-                        if (isServerIdUn) {
-                            form.setFieldsValue({ serverId: undefined })
-                            if (option?.['data-super-id']) {
-                                getGameServerUnList.run({ gameId: option['data-super-id'] })
-                            } else {
-                                getGameServerUnList?.data && getGameServerUnList.mutate([])
-                            }
-                        }
-                    }}
-                >
-                    {parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id} data-super-id={item.super_game_id}>{item.parent_game_name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isParentIds && <Col><Form.Item name='parentGameIds'>
-                <Select
-                    maxTagCount={1}
-                    mode="multiple"
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    disabled={superParentGameId}
-                    placeholder={'请选择父游戏'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                    onChange={(e, option) => {
-                        if (isServerIds) {
-                            form.setFieldsValue({ serverIds: undefined })
-                        }
-                        if (isServerIdUn) {
-                            form.setFieldsValue({ serverId: undefined })
-                        }
-                    }}
-                >
-                    {parentGameList?.map((item: any) => <Select.Option value={item.parent_game_id} key={item.parent_game_id}>{item.parent_game_name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {(parentId || superParentGameId) && <>
-                {/* 广告区服名称 */}
-                {isGameServerName && <Col><Form.Item name='serverName'>
-                    <Input placeholder="区服名称" allowClear style={{ width: 140 }} disabled={serverIds?.length > 0} />
-                </Form.Item></Col>}
-
-                {/* 区服id */}
-                {isServerIds && <Col><Form.Item name='serverIds'>
-                    <Select
-                        maxTagCount={1}
-                        mode="multiple"
-                        showSearch
-                        disabled={serverName}
-                        style={{ minWidth: 140 }}
-                        allowClear
-                        placeholder={'请选择区服'}
-                        filterOption={(input, option) =>
-                            (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                        }
-                        loading={getGameServerList.loading}
-                    >
-                        {(isIsParticipateMerge && isParticipateMerge)
-                            ? getGameUnMergeServerList?.data?.filter((item: { isSourceServer: any }) => (isIsMergeServer && ((!isMergeServer && item.isSourceServer) || (isMergeServer && !item.isSourceServer))) || !isIsMergeServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)
-                            : getGameServerList?.data?.filter((item: { isSourceServer: any }) => (isIsMergeServer && ((!isMergeServer && item.isSourceServer) || (isMergeServer && !item.isSourceServer))) || !isIsMergeServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)}
-                    </Select>
-                </Form.Item></Col>}
-
-                {/* 是否合服 */}
-                {isIsMergeServer && <Col><Form.Item name='isMergeServer' valuePropName="checked">
-                    <Checkbox onChange={() => form.setFieldsValue({ serverIds: undefined })}>是否合服</Checkbox>
-                </Form.Item></Col>}
-
-                {/* 是否参与过合服 */}
-                {isIsParticipateMerge && <Col><Form.Item name='isParticipateMerge' valuePropName="checked">
-                    <Checkbox onChange={() => form.setFieldsValue({ serverIds: undefined })}>未参与过合服</Checkbox>
-                </Form.Item></Col>}
-
-                {/* 区服id */}
-                {isServerIdUn && <Col><Form.Item name='serverId'>
-                    <Select
-                        maxTagCount={1}
-                        mode="multiple"
-                        showSearch
-                        disabled={serverName}
-                        style={{ minWidth: 140 }}
-                        allowClear
-                        placeholder={'请选择区服'}
-                        filterOption={(input, option) =>
-                            (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                        }
-                        loading={getGameServerUnList.loading}
-                    >
-                        {getGameServerUnList?.data?.filter((item: { isSourceServer: any }) => item.isSourceServer)?.map((item: any) => <Select.Option value={item.serverId} key={item.serverId}>{item.serverName}</Select.Option>)}
-                    </Select>
-                </Form.Item></Col>}
-            </>}
-
-            {/* 游戏应用类型搜索 */}
-            {isGameType && <Col><Form.Item name='gameType'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择游戏应用类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getGameChoiceParentListType1?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.name}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 布谷游戏应用类型搜索 */}
-            {isBGGameClassify && <Col><Form.Item name='gameClassify'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 140 }}
-                    allowClear
-                    placeholder={'游戏应用类型'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(gameClassifyEnum).map(key => <Select.Option value={key} key={key}>{gameClassifyEnum[key as keyof typeof gameClassifyEnum]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 游戏角色名 */}
-            {isGameRoleName && <Col><Form.Item name='roleName'>
-                <Input placeholder="游戏角色名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 游戏角色名id搜索 */}
-            {isGameRoleId && <Col><Form.Item name='roleId'>
-                <Input placeholder="角色ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 客户微信号 */}
-            {isWeChat && <Col><Form.Item name='weChat'>
-                <Input placeholder="客户微信号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 客户微信号 */}
-            {isWeChatCompany && <Col><Form.Item name='weChatCompany'>
-                <Input placeholder="企业微信号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 是否首充 */}
-            {isFirstRecharge && <Col><Form.Item name='isFirstRecharge'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'是否首充'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'0'}>否</Select.Option>
-                    <Select.Option value={'1'}>是</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {isGsStatus && <Col><Form.Item name='gsStatus'>
-                <Select
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'GS运营状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={1}>独立运营</Select.Option>
-                    <Select.Option value={2}>联合运营</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {isServeStatus && <Col><Form.Item name='serveStatus'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'服务状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={1}>服务中</Select.Option>
-                    <Select.Option value={2}>服务完成</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 支付状态 */}
-            {isPayStatus && <Col><Form.Item name='orderStatus'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'支付状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Object.keys(PayStatus).map(key => <Select.Option value={key} key={key}>{PayStatus[key as keyof typeof PayStatus]}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 支付方式 */}
-            {isPayWay && <Col><Form.Item name='payWay'>
-                <Select
-                    showSearch
-                    style={{ width: 100 }}
-                    allowClear
-                    placeholder={'支付方式'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getPayList?.data?.map((item: any) => <Select.Option value={item.id} key={item.id}>{item.payName}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 产品名称 */}
-            {isProductName && <Col><Form.Item name='productName'>
-                <Input placeholder="产品名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册渠道名 */}
-            {isRegAgent && <Col><Form.Item name='regAgent'>
-                <Input placeholder="注册渠道名" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 渠道标识 */}
-            {isAgentKey && <Col><Form.Item name='agentKey'>
-                <Input placeholder="渠道标识" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 渠道名称 */}
-            {isAgentName && <Col><Form.Item name='agentName'>
-                <Input placeholder="渠道名称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 推广渠道id */}
-            {isAgentId && <Col><Form.Item name='agentId'>
-                <Select
-                    maxTagCount={1}
-                    mode="multiple"
-                    showSearch
-                    style={{ minWidth: 140 }}
-                    allowClear
-                    placeholder={'请选择渠道'}
-                    loading={getChannelChoiceList.loading || getAgentListNew.loading}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {agentData?.map((item: any) => <Select.Option value={item.value} key={item.value}>{item.label}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 投手ID */}
-            {isSysUserId && <Col><Form.Item name='pitcherId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    loading={getSubUserWithSelfList.loading || getPitcherListNew.loading}
-                    placeholder={'请选择投手'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {userIdList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {isSysUserIds && <Col><Form.Item name='pitcherId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 120 }}
-                    allowClear
-                    mode="multiple"
-                    loading={getSubUserWithSelfList.loading || getPitcherListNew.loading}
-                    placeholder={'请选择投手'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {userIdList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 客服ID */}
-            {isCustomerServerId && <Col><Form.Item name='customerServerId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'请选择客服'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={0}>未操作</Select.Option>
-                    {customerList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* 运营ID */}
-            {isOperatorId && <Col><Form.Item name='operatorId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 120 }}
-                    allowClear
-                    placeholder={'请选择运营'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={0}>未操作</Select.Option>
-                    {operateList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-            {/* GSID */}
-            {isGsId && <Col><Form.Item name='gsId'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ minWidth: 120 }}
-                    allowClear
-                    mode="multiple"
-                    placeholder={'请选择GS'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {/* <Select.Option value={0}>未操作</Select.Option> */}
-                    {gsList.map((item: any) => <Select.Option value={item.userId} key={item.userId}>{item.nickname}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家账号 */}
-            {isUserName && <Col><Form.Item name='username'>
-                <Input placeholder="玩家账号" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 用户id */}
-            {isUserId && <Col><Form.Item name='userId'>
-                <Input placeholder="用户ID" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 玩家昵称 */}
-            {isNickname && <Col><Form.Item name='nickname'>
-                <Input placeholder="玩家昵称" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 绑定手机 */}
-            {isMobile && <Col><Form.Item name='mobile'>
-                <Input placeholder="绑定手机" allowClear style={{ width: 140 }} />
-            </Form.Item></Col>}
-
-            {/* 注册IP */}
-            {isRankingNum && <Col><Form.Item name='rankingNum'>
-                <InputNumber placeholder="排名范围" min={1} />
-            </Form.Item></Col>}
-
-            {/* 是否充值 */}
-            {isIsRecharge && <Col><Form.Item name='isRecharge'>
-                <Select
-                    showSearch
-                    style={{ width: 98 }}
-                    allowClear
-                    placeholder={'是否充值'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={false}>否</Select.Option>
-                    <Select.Option value={true}>是</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 玩家状态 */}
-            {isUserStatus && <Col><Form.Item name='userStatus'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 110 }}
-                    placeholder={'玩家状态'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value={'1'}>试玩</Select.Option>
-                    <Select.Option value={'2'}>正常</Select.Option>
-                    <Select.Option value={'3'}>冻结</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否转端 */}
-            {isIsChange && <Col><Form.Item name='isChange'>
-                <Select
-                    showSearch
-                    allowClear
-                    mode="multiple"
-                    style={{ width: 110 }}
-                    placeholder={'是否转端'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="2">未操作</Select.Option>
-                    <Select.Option value="1">是</Select.Option>
-                    <Select.Option value="0">不转端</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否退游 */}
-            {isRemoveGameForSystem && <Col><Form.Item name='systemRemoveGameStatus'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 170 }}
-                    placeholder={'角色当前状态(系统判定)'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="1">退游</Select.Option>
-                    <Select.Option value="0">正常</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 是否退游 */}
-            {isRemoveGame && <Col><Form.Item name='humanRemoveGameStatus'>
-                <Select
-                    showSearch
-                    allowClear
-                    style={{ width: 170 }}
-                    placeholder={'角色当前状态(人工判断)'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    <Select.Option value="1">退游</Select.Option>
-                    <Select.Option value="0">正常</Select.Option>
-                </Select>
-            </Form.Item></Col>}
-
-            {/* vip等级 */}
-            {isVipLevel && <Col><Form.Item name='vipLevel'>
-                <Select
-                    showSearch
-                    allowClear
-                    maxTagCount={1}
-                    mode="multiple"
-                    style={{ minWidth: 98 }}
-                    placeholder={'角色VIP'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {Array(getVipLevel?.data || 0).fill('').map((_item, index) => <Select.Option value={index + 1} key={index + 1}>{index + 1}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 角色等级 */}
-            {isRoleLevel && <Col><Form.Item>
-                <Space>
-                    <Form.Item name='roleLevelMin' noStyle>
-                        <InputNumber style={{ width: 130 }} placeholder="角色等级最小值" />
-                    </Form.Item>
-                    <span>~</span>
-                    <Form.Item name='roleLevelMax' noStyle>
-                        <InputNumber style={{ width: 130 }} placeholder="角色等级最小值" />
-                    </Form.Item>
-                </Space>
-            </Form.Item></Col>}
-
-            {/* 操作系统 */}
-            {isOs && <Col><Form.Item name='os'>
-                <Select
-                    maxTagCount={1}
-                    showSearch
-                    style={{ width: 110 }}
-                    allowClear
-                    placeholder={'操作系统'}
-                    filterOption={(input, option) =>
-                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
-                    }
-                >
-                    {getUserSystemTypeChoiceList?.data?.map((item: any) => <Select.Option value={item.os} key={item.os}>{item.os}</Select.Option>)}
-                </Select>
-            </Form.Item></Col>}
-
-            {/* 用户注册日期搜索 */}
-            {isRegDay && <Col><Form.Item name='regDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['注册开始日期', '注册结束日期']} {...isRegDay} />
-            </Form.Item></Col>}
-
-            {/* 订单创建日期搜索 */}
-            {isCreateDay && <Col><Form.Item name='createDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['订单创建开始日期', '订单创建结束日期']} {...isCreateDay} />
-            </Form.Item></Col>}
-
-            {isCreateDayXz && <Col><Form.Item name='createDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} disabledDate={disabledDate} placeholder={['订单创建开始日期', '订单创建结束日期']} {...isCreateDay} />
-            </Form.Item></Col>}
-
-            {/* 充值日期搜索 */}
-            {rechargeDay && <Col><Form.Item name='rechargeDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['充值开始日期', '充值结束日期']} {...rechargeDay} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {payTimeDay && <Col><Form.Item name='payTime'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['支付开始日期', '支付结束日期']} {...payTimeDay} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {placeAnOrderDay && <Col><Form.Item name='placeAnOrderTime'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['下单开始日期', '下单结束日期']} {...placeAnOrderDay} />
-            </Form.Item></Col>}
-
-            {/* 角色创建日期搜索 */}
-            {isCreateRoleDay && <Col><Form.Item name='createRoleDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['角色创建开始日期', '角色创建结束日期']} {...isCreateRoleDay} />
-            </Form.Item></Col>}
-
-            {/* 最近活跃 */}
-            {isLastActiveTime && <Col><Form.Item name='lastActiveTime'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['最近活跃开始日期', '最近活跃结束日期']} {...isLastActiveTime} />
-            </Form.Item></Col>}
-
-            {isServeDay && <Col><Form.Item name='serveDay'>
-                <DatePicker.RangePicker style={{ width: 250 }} placeholder={['服务开始日期', '服务结束日期']} {...isServeDay} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {isRechargeDate && <Col><Form.Item name='rechargeDate'>
-                <DatePicker placeholder={'充值日期'} />
-            </Form.Item></Col>}
-
-            {/* 单个充值日期搜索 */}
-            {isPayIntervalTime && <Col><Form.Item name='regPayIntervalTime'>
-                <IntervalTime {...isPayIntervalTime} />
-            </Form.Item></Col>}
-
-            <Col>
-                <Space>
-                    <Button type="primary" htmlType="submit">搜索</Button>
-                    <Button onClick={() => form.resetFields()}>重置</Button>
-                </Space>
-            </Col>
-        </Row>
-    </Form>
-}
-
-
-export default React.memo(QueryFormGS)

+ 1 - 9
src/components/RightContent/AvatarDropdown.tsx

@@ -10,7 +10,6 @@ import styles from './index.less';
 import { useAjax } from '@/Hook/useAjax';
 import { api } from '@/services/api'
 import useCopy from '@/Hook/useCopy';
-import { ReactComponent as LaunchSvg } from '@/assets/launch.svg'
 
 export interface GlobalHeaderRightProps {
   menu?: boolean;
@@ -142,13 +141,6 @@ const AvatarDropdown: React.FC<GlobalHeaderRightProps> = ({ menu }) => {
   items.push({ label: '修改密码', key: 'edit', icon: <EditOutlined /> })
   items.push({ label: '退出登录', key: 'logout', icon: <LogoutOutlined /> })
 
-  const menuHeaderDropdown = (
-    <Menu
-      items={items}
-      className={styles.menu} selectedKeys={[]} onClick={onMenuClick}
-    />
-  );
-
   // 切换公司
   const setCompanyHandle = (companyId: number) => {
     selectCompany.run(companyId).then((res: any) => {
@@ -159,7 +151,7 @@ const AvatarDropdown: React.FC<GlobalHeaderRightProps> = ({ menu }) => {
   }
   return (
     <>
-      <HeaderDropdown overlay={menuHeaderDropdown}>
+      <HeaderDropdown menu={{ items, onClick: onMenuClick }}>
         <span className={`${styles.action} ${styles.account}`} onClick={() => {
           let AdminToken: any = localStorage.getItem('Admin-Token')
           copy(AdminToken)

+ 33 - 2
src/components/RightContent/index.tsx

@@ -1,4 +1,4 @@
-import { Tag, Space, Badge, Modal } from 'antd';
+import { Tag, Space, Badge, Modal, Select } from 'antd';
 import React, { useCallback, useEffect, useState } from 'react';
 import { useModel } from 'umi';
 import Avatar from './AvatarDropdown';
@@ -7,6 +7,8 @@ import { exitFullScreen, requestFullScreen, isFull } from '@/utils/fullScreen'
 import { BellOutlined } from '@ant-design/icons';
 import { ReactComponent as GameSvg } from '@/assets/game.svg'
 import { ReactComponent as BiSvg } from '@/assets/bi.svg'
+import { getAppListApi } from '@/services/iaaData';
+import { useAjax } from '@/Hook/useAjax';
 
 export type SiderTheme = 'light' | 'dark';
 
@@ -14,11 +16,26 @@ export type SiderTheme = 'light' | 'dark';
 const GlobalHeaderRight: React.FC<{}> = () => {
 
   const [left, setLeft] = useState(0)
-  const { initialState } = useModel('@@initialState');
+  const { initialState, setInitialState } = useModel('@@initialState');
   const { state: { versionsOpen }, dispatch, getversions } = useModel('useOperating.useWxGroupList')
   if (!initialState || !initialState.settings) {
     return null;
   }
+  const [appList, setApplist] = useState<{ label: string, value: string }[]>([])
+  const getAppList = useAjax(() => getAppListApi())
+
+  useEffect(() => {
+    if (location.hash.includes('/iaaData')) {
+      getAppList.run().then(res => {
+        if (res?.data) {
+          let data: { label: string, value: string }[] = res.data.map((item: { second: any; first: string; third: string; }) => ({ label: item.second, value: item.first + '||' + item.third }))
+          let iaaApp = initialState?.iaaApp
+          setInitialState({ ...initialState, iaaApp: data.some(item => item.value === iaaApp) ? iaaApp : data?.[0].value || undefined as any })
+          setApplist(data)
+        }
+      })
+    }
+  }, [location.hash])
 
   useEffect(() => {
     let nav: any = document.querySelector('.top-nav-menu')
@@ -96,6 +113,20 @@ const GlobalHeaderRight: React.FC<{}> = () => {
           <span style={{ color: 'rgba(255, 255, 255, 0.65)' }}>BI商业分析</span>
         </Space>
       </div> */}
+      {location.hash.includes('/iaaData') && <div style={{ left: left + 10, position: 'absolute' }}>
+        <Select
+          showSearch
+          style={{ width: 150 }}
+          placeholder={'请选择应用'}
+          filterOption={(input, option) =>
+            (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+          }
+          value={initialState?.iaaApp}
+          onChange={(e) => setInitialState({ ...initialState, iaaApp: e })}
+          loading={getAppList.loading}
+          options={appList}
+        />
+      </div>}
 
       <Space className={className}>
         {versionsOpen && <div onClick={versionsOpen && inform}>

+ 43 - 0
src/components/Settings/index.tsx

@@ -0,0 +1,43 @@
+import { FullscreenExitOutlined, FullscreenOutlined, RedoOutlined, SearchOutlined, SettingOutlined } from "@ant-design/icons";
+import { Button, Col, Row, Space, Tooltip } from "antd";
+import React, { useContext } from "react";
+import { DispatchHeader } from "../TablePro";
+
+/**
+ * 头部
+ * @returns 
+ */
+const Settings: React.FC = () => {
+
+    /******************************/
+    const { isFullscreen, setIsFullscreen, isFull, toggleFull, setVisible, czChild, leftChild, ajax } = useContext(DispatchHeader)!;
+    const colData = czChild ? { span: 24 } : { flex: '1 1 150px' }
+    /******************************/
+
+    return <Col span={24}>
+        <Row gutter={[0, 10]} align='bottom'>
+            <Col {...colData}>
+                {isFullscreen && leftChild}
+            </Col>
+            {czChild && <Col flex='1 1 150px'>{czChild}</Col>}
+            <Col flex='0 1 150px'>
+                <Space style={{ float: 'right', marginBottom: 4 }}>
+                    <Button size='small' type='text' style={{ color: '#F56C6C' }} onClick={() => { setIsFullscreen(!isFullscreen) }}>
+                        <Tooltip title={isFullscreen ? '隐藏搜索' : '显示搜索'}><SearchOutlined /></Tooltip>
+                    </Button>
+                    {ajax && <Button size='small' type='text' style={{ color: '#67C23A' }} onClick={() => { ajax.refresh() }}>
+                        <Tooltip title='刷新'><RedoOutlined /></Tooltip>
+                    </Button>}
+                    <Button size='small' type='text' style={{ color: '#E6A23C' }} onClick={() => { setVisible(true) }}>
+                        <Tooltip title='设置'><SettingOutlined /></Tooltip>
+                    </Button>
+                    <Button type='text' size='small' style={{ color: '#409EFF' }} onClick={toggleFull}>
+                        {<Tooltip title={!isFull ? '全屏' : '退出全屏'}>{!isFull ? <FullscreenOutlined /> : <FullscreenExitOutlined />}</Tooltip>}
+                    </Button>
+                </Space>
+            </Col>
+        </Row>
+    </Col>
+}
+
+export default React.memo(Settings)

+ 158 - 0
src/components/TablePro/color.less

@@ -0,0 +1,158 @@
+.color0,
+.color0 > td {
+  background-color: #e1f5fe;
+  color: #000;
+}
+.color0,.color1,.color2,.color3,.color4,.color5,.color6,.color7,.color8,.color9,.color10,.color11,.color12,.color13,.color14,.color15,.color16,.color17,.color18,.color19,.color20,
+.color21,.color22,.color23,.color24,.color25,.color26,.color27,.color28,.color29,.color30 {
+  &:hover{
+    >td {
+      color: #fff;
+    }
+  }
+}
+.color1,
+.color1 > td {
+  background-color: #e8eaf6;
+  color: #000;
+}
+.color2,
+.color2 > td {
+  background-color: #f3e5f5;
+  color: #000;
+}
+.color3,
+.color3 > td {
+  background-color: #fff3e0;
+  color: #000;
+}
+.color4,
+.color4 > td {
+  background-color: #fce4ec;
+  color: #000;
+}
+.color5,
+.color5 > td {
+  background-color: #ffebee;
+  color: #000;
+}
+.color6,
+.color6 > td {
+  background-color: #fffde7;
+  color: #000;
+}
+.color7,
+.color7 > td {
+  background-color: #efebe9;
+  color: #000;
+}
+.color8,
+.color8 > td {
+  background-color: #f0f4c3;
+  color: #000;
+}
+.color9,
+.color9 > td {
+  background-color: #e8f5e9;
+  color: #000;
+}
+.color10,
+.color10 > td {
+  background-color: #e0f2f1;
+  color: #000;
+}
+.color11,
+.color11 > td {
+  background-color: #cfd8dc;
+  color: #000;
+}
+.color12,
+.color12 > td {
+  background-color: #d7ccc8;
+  color: #000;
+}
+.color13,
+.color13 > td {
+  background-color: #ffccbc;
+  color: #000;
+}
+.color14,
+.color14 > td {
+  background-color: #ffecb3;
+  color: #000;
+}
+.color15,
+.color15 > td {
+  background-color: #f0f4c3;
+  color: #000;
+}
+.color16,
+.color16 > td {
+  background-color: #dcedc8;
+  color: #000;
+}
+.color17,
+.color17 > td {
+  background-color: #c8e6c9;
+  color: #000;
+}
+.color18,
+.color18 > td {
+  background-color: #b2dfdb;
+  color: #000;
+}
+.color19,
+.color19 > td {
+  background-color: #b2ebf2;
+  color: #000;
+}
+.color21,
+.color21 > td {
+  background-color: #b3e5fc;
+  color: #000;
+}
+.color22,
+.color22 > td {
+  background-color: #bbdefb;
+  color: #000;
+}
+.color23,
+.color23 > td {
+  background-color: #c5cae9;
+  color: #000;
+}
+.color24,
+.color24 > td {
+  background-color: #d1c4e9;
+  color: #000;
+}
+.color25,
+.color25 > td {
+  background-color: #e1bee7;
+  color: #000;
+}
+.color26,
+.color26 > td {
+  background-color: #f8bbd0;
+  color: #000;
+}
+.color27,
+.color27 > td {
+  background-color: #ffcdd2;
+  color: #000;
+}
+.color28,
+.color28 > td {
+  background-color: #a5d6a7;
+  color: #000;
+}
+.color29,
+.color29 > td {
+  background-color: #ffcc80;
+  color: #000;
+}
+.color20,
+.color20 > td {
+  background-color: #80deea;
+  color: #000;
+}

+ 120 - 0
src/components/TablePro/index.less

@@ -0,0 +1,120 @@
+@import './color.less';
+
+.title {
+    text-align: center;
+    font-weight: bold;
+    padding: 4px 6px 6px;
+    font-size: 16px;
+    margin-bottom: 4px;
+    position: relative;
+}
+
+.cell {
+    text-align: center;
+    background-color: #fafafa;
+    color: rgb(212, 46, 46);
+}
+
+.middle {
+
+    tr,
+    td {
+        font-size: 14px !important;
+    }
+}
+
+.small {
+
+    tr,
+    td {
+        font-size: 13px !important;
+    }
+}
+
+.ranking {
+
+    tr,
+    td {
+        font-size: 14px !important;
+
+        span {
+            font-size: 14px;
+        }
+    }
+
+}
+
+.large {
+
+    tr,
+    td {
+        font-size: 14px !important;
+    }
+}
+
+.item_img {
+    width: 25px;
+    border-radius: 2px;
+    margin-right: 5px;
+    background-color: #efefef;
+}
+
+.blue {
+    background-color: cornflowerblue;
+}
+
+.cardtitle {
+    position: relative;
+    width: 100%;
+    height: 100%;
+
+    .text {
+        width: 100%;
+        height: 100%;
+        text-align: center;
+    }
+
+    .cardTab {
+        position: absolute;
+        width: 400px;
+        height: 100%;
+        top: 0;
+        left: 0;
+    }
+}
+
+
+.unfollow {
+    background-color: #fafafa;
+}
+
+.ant-table-row.expanded>.ant-table-cell {
+    padding: 5px 16px !important;
+}
+
+.ant-table-row.error {
+    background-color: #ffe9e9;
+}
+
+.ellipsisText {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    display: block;
+}
+
+.components-table-resizable-column .react-resizable {
+    position: relative;
+    background-clip: padding-box;
+}
+
+.components-table-resizable-column .react-resizable-handle {
+    position: absolute;
+    width: 10px;
+    height: 100%;
+    bottom: 0;
+    right: -9px;
+    cursor: col-resize;
+    z-index: 1;
+    border-left: white 1px solid;
+}

+ 247 - 0
src/components/TablePro/index.tsx

@@ -0,0 +1,247 @@
+import { QuestionCircleOutlined } from "@ant-design/icons";
+import { useDebounceFn, useFullscreen, useLocalStorageState, useMount, useSetState } from "ahooks";
+import { Card, Col, Row, Space, Tooltip } from "antd";
+import React, { useCallback, useEffect, useRef, useState } from "react"
+import style from './index.less'
+import Settings from "../Settings";
+import CustomListModel from "@/components/CustomList";
+import NewTable from "./newTable";
+
+const log = (text?: any, key?: string) => {
+    console.log(`pro_${key || ''}----->`, text)
+}
+export const DispatchContext = React.createContext<PROAPI.TableContentProps | null>(null);
+export const DispatchHeader = React.createContext<PROAPI.HeaderContentProps | null>(null);
+export const version = '1.0.0'
+const ran = Math.ceil(Math.random() * 100)
+/**
+ * 升级版表格
+ * @returns 
+ */
+const TablePro: React.FC<PROAPI.TableProProps> = ({
+    configName,
+    config,
+    fixed = { left: 0, right: 0 },
+    title,
+    tips,
+    ajax,
+    czChild,
+    leftChild,
+    size = 'small',
+    className,
+    total,
+    page,
+    pageSize,
+    scroll,
+    dataSource,
+    isZj,
+    totalData = [],
+    summary,
+    ...props
+}) => {
+
+    /*********************************************/
+    const [lsDataSource, setLsDataSource] = useLocalStorageState<PROAPI.ColumnsTypePro<any>>(`myAdMonitorConfig${version}_` + configName);
+    const [lsFixed] = useLocalStorageState<{ left: number, right: number }>(`myAdMonitorConfigFixed${version}_` + configName);
+    const [state, setState] = useSetState<PROAPI.State>({
+        // 所有配置用key转Object
+        configObj: {},
+        columns: [],
+        // 默认配置
+        defaultColumns: []
+    });
+    const ref = useRef(null)
+    const [isFull, { toggleFull }] = useFullscreen(ref);
+    const [isFullscreen, setIsFullscreen] = useState<boolean>(true);
+    const [visible, setVisible] = useState<boolean>(false)
+    // const { configObj, columns, defaultColumns } = state
+    /*********************************************/
+
+    // 首次渲染
+    useMount(() => {
+        log('----mount-----')
+        handleConfig()
+    });
+
+    /**
+     * 处理config成对象 减少后期轮询
+     * 拿到默认Columns
+     */
+    const handleConfig = () => {
+        // log(config)
+        let newColumns: PROAPI.ColumnsTypePro<any> = []
+        let newConfigObj: { [key: string]: PROAPI.ColumnTypePro<any>; } = {}
+        config?.forEach((item: { data: { default: any; dataIndex: string }[] }) => {
+            item?.data?.forEach((d: { default: any, dataIndex: string }) => {
+                newConfigObj[d.dataIndex] = { ...d }
+                if (d.default) {
+                    newColumns[d.default - 1] = d
+                }
+            })
+        })
+        setState({ defaultColumns: newColumns, configObj: newConfigObj })
+        handleColumns(newColumns, newConfigObj, lsDataSource, lsFixed)
+    }
+
+    // 处理columns
+    const handleColumns = (defaultColumns: PROAPI.ColumnsTypePro<any>, configObj: { [key: string]: PROAPI.ColumnTypePro<any>; }, lsDataSource?: PROAPI.ColumnsTypePro<any>, lsFixed?: { left: number, right: number }) => {
+        // log(defaultColumns, 'defaultColumns')
+        // log(configObj, 'configObj')
+        // log(lsDataSource, 'lsDataSource')
+
+        // 使用默认配置
+        let newColumns: PROAPI.ColumnsTypePro<any> = defaultColumns
+        let newFixed: { left: number, right: number } = fixed
+        if (lsFixed) {
+            newFixed = lsFixed
+        }
+        if (lsDataSource) { // 找到了设置的配置
+            newColumns = lsDataSource
+                .filter((item: { dataIndex: string | number; }) => !!item && configObj[item.dataIndex])
+                .map((item: { dataIndex: string | number; width: number }) => {
+                    let column = { ...configObj[item.dataIndex] }
+                    column['width'] = item.width
+                    return column
+                })
+        }
+        // log(newFixed, 'newFixed')
+        newColumns = newColumns.map(item => {
+            if (item?.tips && typeof item.title === 'string') {
+                let column: any = configObj[item.dataIndex]
+                item.title = <Space size={2}>
+                    {column.title}
+                    <Tooltip title={column?.tips} placement='bottom'>
+                        <QuestionCircleOutlined />
+                    </Tooltip>
+                </Space>
+            }
+            return { ...item, key: item.dataIndex }
+        })
+        if (newFixed.left || newFixed.right) {
+            for (let i = 0; i < Math.min(newFixed.left, newColumns.length); i++) {
+                newColumns[i] = { ...newColumns[i], fixed: 'left' };
+            }
+            const arrayLength = newColumns.length;
+            for (let i = Math.max(0, arrayLength - newFixed.right); i < arrayLength; i++) {
+                newColumns[i] = { ...newColumns[i], fixed: 'right' };
+            }
+        }
+        // log(newColumns, 'newColumns')
+        setState({ columns: newColumns })
+    }
+
+
+    useEffect(() => {
+        const contentBodyScroll = (e: any) => {
+            let el = document.querySelector(`.header_table_body_${ran} .ant-table-body`);
+            if (el) {
+                el.scrollLeft = e.target.scrollLeft
+            }
+        }
+        const headerBodyScroll = (e: any) => {
+            let el = document.querySelector(`.content_table_body_${ran} .ant-table-body`);
+            if (el) {
+                el.scrollLeft = e.target.scrollLeft
+            }
+        }
+        if (isZj) {
+            document.querySelector(`.content_table_body_${ran} .ant-table-body`)?.addEventListener('scroll', contentBodyScroll);
+            document.querySelector(`.header_table_body_${ran} .ant-table-body`)?.addEventListener('scroll', headerBodyScroll);
+        }
+        () => {
+            if (isZj) {
+                document.querySelector(`.content_table_body_${ran} .ant-table-body`)?.removeEventListener('scroll', contentBodyScroll);
+                document.querySelector(`.header_table_body_${ran} .ant-table-body`)?.removeEventListener('scroll', headerBodyScroll);
+            }
+        }
+    }, [isZj, ran])
+
+    const { run: runResize } = useDebounceFn((columns) => {
+        if (configName) {
+            let newSelectData: PROAPI.ColumnsTypePro<any> = []
+            state.columns?.forEach((item, index) => {
+                newSelectData.push({ ...JSON.parse(JSON.stringify(state.configObj[item.dataIndex])), width: columns[index]['width'] })
+            })
+            setLsDataSource(newSelectData)
+            if (isZj) { // 有总计需要刷新内容表格
+                handleColumns(state.defaultColumns, state.configObj, newSelectData, lsFixed)
+            }
+        }
+    }, { wait: 200 });
+
+    //拖动宽度设置设置保存
+    const handelResize = useCallback((columns: PROAPI.ColumnTypePro<any>) => {
+        runResize(columns)
+    }, [configName, state.columns])
+
+    return <>
+        {/* 设置展示参数 */}
+        {visible && <CustomListModel
+            columns={state.columns}
+            sysFixed={fixed}
+            version={version}
+            config={config}
+            configName={configName}
+            visible={visible}
+            onClose={() => { setVisible(false) }}
+            onChange={(value) => {
+                if (value) {
+                    handleColumns(state.defaultColumns, state.configObj, value?.selectData, value?.fixed)
+                } else {
+                    handleColumns(state.defaultColumns, state.configObj)
+                }
+            }}
+        />}
+        <Row gutter={[0, 20]} ref={ref} style={isFull ? { background: '#fff' } : {}}>
+            <Col span={24}>
+                <Card
+                    style={{ borderRadius: 8 }}
+                    headStyle={{ textAlign: 'left' }}
+                    bodyStyle={{ padding: '5px 10px' }}
+                >
+                    {title && <div className={style.title}>
+                        <Space><span>{title}</span>{tips && <Tooltip title={tips}><span><QuestionCircleOutlined /></span></Tooltip>}</Space>
+                    </div>}
+                    <Row gutter={[0, 16]}>
+                        <DispatchHeader.Provider value={{ setIsFullscreen, isFullscreen, isFull, toggleFull, setVisible, ajax, czChild, leftChild }}>
+                            <Settings />
+                        </DispatchHeader.Provider>
+                        <DispatchContext.Provider value={{ total, page, pageSize, handelResize }}>
+                            <Col span={24}>
+                                <div className={`${style[size]} ${className ? style[className] : ''} `}>
+                                    {
+                                        isZj && <NewTable
+                                            bordered
+                                            columns={state.columns}
+                                            dataSource={totalData?.length > 0 ? [...totalData] : [{ id: 1 }]}
+                                            scroll={scroll ? isFull ? { ...scroll, y: document.body.clientHeight - 300 } : scroll : {}}
+                                            size={size}
+                                            pagination={false}
+                                            className={`all_table header_table_body header_table_body_${ran} ${className ? className : ''}`}
+                                            sortDirections={['ascend', 'descend', null]}
+                                            {...props}
+                                        />
+                                    }
+                                    <NewTable
+                                        showHeader={!isZj}
+                                        sortDirections={['ascend', 'descend', null]}
+                                        bordered
+                                        className={`all_table content_table_body content_table_body_${ran} ${className ? className : ''}`}
+                                        scroll={scroll ? isFull ? { ...scroll, y: document.body.clientHeight - 300 } : scroll : {}}
+                                        columns={state.columns}
+                                        dataSource={dataSource}
+                                        summary={summary}
+                                        pagination={{}}
+                                        {...props}
+                                    />
+                                </div>
+                            </Col>
+                        </DispatchContext.Provider>
+                    </Row>
+                </Card>
+            </Col>
+        </Row>
+    </>
+}
+
+export default React.memo(TablePro)

+ 77 - 0
src/components/TablePro/newTable.tsx

@@ -0,0 +1,77 @@
+import { Table, TableProps, Tag } from "antd"
+import React, { useContext, useEffect, useRef, useState } from "react"
+import { DispatchContext } from ".";
+import { Resizable } from "react-resizable";
+import './index.less'
+
+const ResizableHeader = (props: { [x: string]: any; onResize: any; width: any }) => {
+    const { onResize, width, ...restProps } = props;
+    if (!width) {
+        return <th {...restProps} />
+    }
+    return <Resizable width={width} height={0} onResize={onResize} draggableOpts={{ enableUserSelectHack: false }}>
+        <th {...restProps} />
+    </Resizable>
+}
+
+const NewTable: React.FC<TableProps<any>> = ({ columns, pagination, ...props }) => {
+
+    /************************************/
+    const { total, page: current, pageSize, onPaginationChange, handelResize } = useContext(DispatchContext)!;
+    let ww = document.body.clientWidth < 415
+    const colsRef = useRef<any[]>([])
+    const [cols, setCols] = useState<any>(columns)
+    /************************************/
+
+    const components = {
+        header: {
+            cell: ResizableHeader
+        }
+    }
+
+    useEffect(() => {
+        setCols(columns)
+    }, [columns])
+
+    const handleResize = (index: any) => (e: any, { size }: any) => {
+        const nextColumns = [...cols]
+        nextColumns[index] = {
+            ...nextColumns[index],
+            width: size.width
+        }
+        setCols(nextColumns)
+        handelResize && handelResize(nextColumns)
+    }
+    colsRef.current = (cols || []).map((col: any, index: any) => ({
+        ...col,
+        onHeaderCell: (column: any) => ({
+            width: column.width,
+            onResize: handleResize(index)
+        })
+    }))
+
+    return <div className='components-table-resizable-column'>
+        <Table
+            rowKey={(a: any) => (JSON.stringify(a?.id) || JSON.stringify(a?.key))}
+            pagination={pagination ? {
+                size: 'small',
+                total,//总共多少条数据,服务器给,设置后分页自动计算页数
+                current,//当前页数,需state控制配合翻页
+                pageSize,
+                defaultCurrent: 1,//默认初始的当前页数
+                defaultPageSize: 20,//默认初始的每页条数
+                pageSizeOptions: ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],
+                showTotal: (total) => <Tag color="cyan">总共{total}数据</Tag>,
+                showSizeChanger: true, //手动开启条数筛选器,默认超过50条开启
+                onChange: onPaginationChange, //点击页码或条数筛选时触发获取当前页数和每页条数
+                simple: ww ? true : false,//开启简单分页
+                showLessItems: true
+            } : false}
+            components={components}
+            columns={colsRef?.current}
+            {...props}
+        />
+    </div>
+}
+
+export default React.memo(NewTable)

+ 53 - 0
src/components/TablePro/typings.d.ts

@@ -0,0 +1,53 @@
+declare namespace PROAPI {
+    type ColumnTypePro<RecordType = unknown> = (ColumnGroupType<RecordType> | ColumnType<RecordType>) & { label: string };
+    type ColumnsTypePro<RecordType = unknown> = ColumnTypePro[];
+    type TableProProps<RecordType = unknown> = TableProps<RecordType> & {
+        configName: string;
+        config: any;
+        fixed?: {
+            left: number,
+            right: number
+        };
+        title?: string;
+        tips?: JSX.Element; // 提示
+        czChild?: JSX.Element;
+        leftChild?: JSX.Element;
+        ajax?: any;//接口刷新
+        size?: 'small' | 'middle' | 'large',
+        className?: string,//自定义class
+        total?: number;
+        page?: number,
+        pageSize?: number,
+        scroll?: ({
+            x?: string | number | true | undefined;
+            y?: string | number | undefined;
+        } & {
+            scrollToFirstRowOnChange?: boolean | undefined;
+        }),
+        dataSource?: readonly any[]
+        isZj?: boolean,//是否查总计
+        totalData?: any[]
+    };
+    type State = {
+        columns: any[];
+        configObj: { [key: string]: ColumnTypePro<any>; };
+        defaultColumns: any[];
+    };
+    type HeaderContentProps = {
+        isFullscreen: boolean;
+        setIsFullscreen: React.Dispatch<React.SetStateAction<boolean>>;
+        isFull: boolean;
+        toggleFull: () => void;
+        setVisible: React.Dispatch<React.SetStateAction<boolean>>;
+        czChild?: JSX.Element;
+        leftChild?: JSX.Element;
+        ajax?: any; //接口刷新
+    };
+    type TableContentProps = {
+        total?: number;
+        page?: number;
+        pageSize?: number;
+        onPaginationChange?: (page: number, pageSize?: number) => void,
+        handelResize?: (columns: any) => void
+    }
+}

+ 23 - 21
src/global.less

@@ -141,24 +141,26 @@ select:-webkit-autofill {
 
 body {
   #root {
+    .all_table {
+
+      .ant-table.ant-table-small .ant-table-title,
+      .ant-table.ant-table-middle .ant-table-title,
+      .ant-table.ant-table-small .ant-table-footer,
+      .ant-table.ant-table-middle .ant-table-footer,
+      .ant-table.ant-table-small .ant-table-thead>tr>th,
+      .ant-table.ant-table-middle .ant-table-thead>tr>th,
+      .ant-table.ant-table-small .ant-table-tbody>tr>td,
+      .ant-table.ant-table-middle .ant-table-tbody>tr>td,
+      .ant-table.ant-table-small tfoot>tr>th,
+      .ant-table.ant-table-middle tfoot>tr>th,
+      .ant-table.ant-table-small tfoot>tr>td .ant-table.ant-table-middle tfoot>tr>td {
+        padding: 5px;
+      }
 
-    // .ant-table.ant-table-small .ant-table-title,
-    // .ant-table.ant-table-middle .ant-table-title,
-    // .ant-table.ant-table-small .ant-table-footer,
-    // .ant-table.ant-table-middle .ant-table-footer,
-    // .ant-table.ant-table-small .ant-table-thead>tr>th,
-    // .ant-table.ant-table-middle .ant-table-thead>tr>th,
-    // .ant-table.ant-table-small .ant-table-tbody>tr>td,
-    // .ant-table.ant-table-middle .ant-table-tbody>tr>td,
-    // .ant-table.ant-table-small tfoot>tr>th,
-    // .ant-table.ant-table-middle tfoot>tr>th,
-    // .ant-table.ant-table-small tfoot>tr>td .ant-table.ant-table-middle tfoot>tr>td {
-    //   padding: 5px;
-    // }
-
-    // .ant-table.ant-table-small .ant-table-thead .ant-table-column-sorters {
-    //   padding: 0;
-    // }
+      .ant-table.ant-table-small .ant-table-thead .ant-table-column-sorters {
+        padding: 0;
+      }
+    }
 
     // .ant-table.ant-table-small .ant-table-tbody > tr > td.ant-table-cell {
     //   padding-top: 8px;
@@ -302,9 +304,9 @@ body {
   border-radius: 0 6px 6px 0 !important;
 }
 
-// .ant-table-cell {
-//   padding: 2px 5px !important;
-// }
+.all_table .ant-table-cell {
+  padding: 2px 5px !important;
+}
 
 .progress {
   padding: 0 !important;
@@ -332,7 +334,7 @@ body {
   font-weight: 600;
 }
 
-.ant-table-tbody > tr.ant-table-row:hover > td {
+.ant-table-tbody>tr.ant-table-row:hover>td {
   background-color: #e9e9e9 !important;
 }
 

+ 15 - 0
src/pages/iaaData/tencentIaaAd/const.ts

@@ -0,0 +1,15 @@
+
+/** 出价方式 */
+export enum BID_MODE_ENUM {
+	BID_MODE_OCPM = 'oCPM',
+	BID_MODE_CPM = 'CPM',
+	BID_MODE_CPC = 'CPC',
+	BID_MODE_CPA = 'CPA',
+	BID_MODE_OCPC = 'oCPC',
+}
+
+/**广告状态*/
+export enum AD_STATUS_ENUM {
+	AD_STATUS_NORMAL = '有效',
+	AD_STATUS_SUSPEND = '暂停',
+}

+ 122 - 0
src/pages/iaaData/tencentIaaAd/index.tsx

@@ -0,0 +1,122 @@
+import React, { useEffect, useState } from "react"
+import { useAjax } from "@/Hook/useAjax"
+import { getGDTListApi, GetGDTListProps, getGDTTotalApi } from "@/services/iaaData"
+import TablePro from "@/components/TablePro"
+import columns12 from "./tableConfig"
+import QueryForm from "@/components/QueryForm"
+import moment from "moment"
+import { useModel } from "umi"
+
+/**
+ * 腾讯广告列表
+ * @returns 
+ */
+const TencentIaaAd: React.FC = () => {
+
+    /****************************************/
+    const { initialState } = useModel('@@initialState');
+    const [queryForm, setQueryForm] = useState<GetGDTListProps>({
+        pageNum: 1,
+        pageSize: 30
+    })
+    const [totalData, setTotalData] = useState<any[]>([])
+
+    const getGDTList = useAjax((params) => getGDTListApi(params))
+    const getGDTTotal = useAjax((params) => getGDTTotalApi(params))
+    /****************************************/
+
+    useEffect(() => {
+        if (initialState?.iaaApp) {
+            const [appId, productType] = initialState.iaaApp.split('||')
+            getGDTList.run({ ...queryForm, appId, productType })
+            getGDTTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; accountId: string } }) => {
+                if (res?.data) {
+                    let data = res?.data
+                    data.id = 1
+                    data.accountId = '总计'
+                    setTotalData([data])
+                } else {
+                    setTotalData([{ id: 1, accountId: '总计' }])
+                }
+            })
+        }
+
+    }, [queryForm, initialState?.iaaApp])
+
+    return <div>
+        <TablePro
+            leftChild={<QueryForm
+                initialValues={{}}
+                isAccountId
+                isPromotionName
+                isPutUserIdList
+                isCpaBid
+                isDeleted
+                isPricing
+                isStatus
+                day1={{ placeholder: ['广告创建日期开始', '广告创建日期结束'] }}
+                day2={{ placeholder: ['投放日期开始', '投放日期结束'] }}
+                day3={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
+                onChange={(data: any) => {
+                    console.log(data)
+                    const { day1, day2, day3, ...params } = data
+                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
+
+                    if (day1 && day1?.length === 2) {
+                        newQueryForm['adCreateBegin'] = moment(day1[0]).format('YYYY-MM-DD')
+                        newQueryForm['adCreateEnd'] = moment(day1[1]).format('YYYY-MM-DD')
+                    } else {
+                        delete newQueryForm['adCreateBegin']
+                        delete newQueryForm['adCreateEnd']
+                    }
+
+                    if (day2 && day2?.length === 2) {
+                        newQueryForm['putDayBegin'] = moment(day2[0]).format('YYYY-MM-DD')
+                        newQueryForm['putDayEnd'] = moment(day2[1]).format('YYYY-MM-DD')
+                    } else {
+                        delete newQueryForm['putDayBegin']
+                        delete newQueryForm['putDayEnd']
+                    }
+
+                    if (day3 && day3?.length === 2) {
+                        newQueryForm['costDayBegin'] = moment(day3[0]).format('YYYY-MM-DD')
+                        newQueryForm['costDayEnd'] = moment(day3[1]).format('YYYY-MM-DD')
+                    } else {
+                        delete newQueryForm['costDayBegin']
+                        delete newQueryForm['costDayEnd']
+                    }
+                    setQueryForm({ ...newQueryForm, ...params })
+                }}
+            />}
+            isZj
+            totalData={totalData}
+            config={columns12()}
+            configName={'腾讯广告列表'}
+            fixed={{ left: 4, right: 0 }}
+            scroll={{ x: 1000, y: 620 }}
+            title='腾讯广告列表'
+            loading={getGDTList.loading}
+            ajax={getGDTList}
+            page={getGDTList?.data?.data?.current || 1}
+            pageSize={getGDTList?.data?.data?.size || 20}
+            total={getGDTList?.data?.data?.total || 0}
+            dataSource={getGDTList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(queryForm.pageNum.toString() + (index + '')) }))}
+            onChange={(pagination: any, _: any, sortData: any) => {
+                let { current, pageSize } = pagination
+                let newQueryForm = JSON.parse(JSON.stringify(queryForm))
+                if (sortData && sortData?.order) {
+                    newQueryForm['sortAsc'] = sortData?.order === 'ascend' ? true : false
+                    newQueryForm['sortFiled'] = sortData?.field
+                } else {
+                    delete newQueryForm['sortAsc']
+                    delete newQueryForm['sortFiled']
+                }
+                newQueryForm.pageNum = current || newQueryForm.pageNum
+                newQueryForm.pageSize = pageSize || newQueryForm.pageSize
+                setQueryForm({ ...newQueryForm })
+            }}
+        />
+    </div>
+}
+
+export default TencentIaaAd

+ 394 - 0
src/pages/iaaData/tencentIaaAd/tableConfig.tsx

@@ -0,0 +1,394 @@
+import WidthEllipsis from "@/components/widthEllipsis"
+import { Statistic } from "antd"
+import React from "react"
+import { AD_STATUS_ENUM, BID_MODE_ENUM } from "./const"
+
+function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
+
+
+    return [
+        {
+            label: '腾讯广告列表',
+            data: [
+                {
+                    title: '广告账号', dataIndex: 'accountId', label: '腾讯广告列表', align: 'center', width: 80, default: 1,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '业务类型', dataIndex: 'productType', label: '腾讯广告列表', align: 'center', width: 80, default: 2,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '应用', dataIndex: 'appName', label: '腾讯广告列表', align: 'center', width: 80, default: 3,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '小程序ID', dataIndex: 'mpId', label: '腾讯广告列表', align: 'center', width: 100, default: 4,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '投手', dataIndex: 'pitcherName', label: '腾讯广告列表', align: 'center', width: 60, default: 5,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '广告名称', dataIndex: 'promotionName', label: '腾讯广告列表', align: 'center', width: 120, default: 6,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '广告ID', dataIndex: 'promotionId', label: '腾讯广告列表', align: 'center', width: 90, default: 7,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '广告状态', dataIndex: 'status', label: '腾讯广告列表', align: 'center', width: 75, default: 8,
+                    render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
+                },
+                {
+                    title: '服务商', dataIndex: 'service', label: '腾讯广告列表', align: 'center', width: 75, default: 9,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '投放媒体(腾讯)', dataIndex: 'accountType', label: '腾讯广告列表', align: 'center', width: 75, default: 10,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '余额', dataIndex: 'balance', label: '腾讯广告列表', align: 'right', width: 75, sorter: true, default: 11,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '出价方式', dataIndex: 'pricing', label: '腾讯广告列表', align: 'center', width: 70, default: 12,
+                    render: (a: string) => (<WidthEllipsis value={BID_MODE_ENUM[a as keyof typeof BID_MODE_ENUM]} />)
+                },
+                {
+                    title: '当前出价', dataIndex: 'cpaBid', label: '腾讯广告列表', align: 'center', width: 75, default: 13, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '腾讯广告列表', align: 'right', width: 75, default: 16,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告日预算', dataIndex: 'budget', label: '腾讯广告列表', align: 'right', width: 75, default: 17, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 90, default: 20,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50, default: 21,
+                    render: (a: boolean) => (<WidthEllipsis value={a === true ? '是' : a === false ? '否' : '--'} />)
+                },
+                {
+                    title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 22,
+                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
+                },
+                {
+                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 24,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '今日消耗', dataIndex: 'cost', label: '腾讯广告列表', align: 'right', width: 70, default: 25, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯广告列表', align: 'right', width: 85, default: 26, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯广告列表', align: 'center', width: 70, default: 27, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '点击率', dataIndex: 'ctr', label: '腾讯广告列表', align: 'center', width: 70, default: 28, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '曝光量', dataIndex: 'viewCount', label: '腾讯广告列表', align: 'center', width: 70, default: 29, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯广告列表', align: 'right', width: 65, default: 30, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '点击均价', dataIndex: 'cpc', label: '腾讯广告列表', align: 'center', width: 65, default: 31, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 32, sorter: true,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 33, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 34, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯广告列表', align: 'center', width: 70, default: 35, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '基本信息', align: 'center', width: 80, default: 36, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 37, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯广告列表', align: 'center', width: 75, default: 38, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                }
+            ]
+        },
+        {
+            label: 'IAA补充指标',
+            data: [
+                {
+                    title: '首日ROI', dataIndex: 'firstRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '24小时ROI', dataIndex: 'twentyFourHoursRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '总ROI', dataIndex: 'totalRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '广告总ROI', dataIndex: 'promotionTotalRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                }
+            ]
+        },
+        {
+            label: '其他业务(平台上报指标)',
+            data: [
+                {
+                    title: '激活首24小时广告变现ARPPU(平台上报)', dataIndex: 'firstDayAdPurArppuCost24hPla', label: '其他业务(平台上报指标)', width: 130, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '激活首24小时广告变现次数(平台上报)', dataIndex: 'incomePv24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                }
+            ]
+        },
+        {
+            label: '其他业务(其他指标)',
+            data: [
+                {
+                    title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                }
+            ]
+        },
+        {
+            label: '小游戏(平台上报)',
+            data: [
+                {
+                    title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGameIncomeRoi1', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                }
+            ]
+        }
+    ]
+}
+
+export default columns12

+ 1 - 1
src/pages/iaaSystem/manage/channel/modalChannel.tsx

@@ -108,7 +108,7 @@ const ModalChannel: React.FC<Props> = ({ onChange, visible, onClose, initialValu
                     options={appList}
                 />
             </Form.Item>
-            <Form.Item label={<strong>投放状态</strong>} name="putStatus">
+            <Form.Item label={<strong>投放状态</strong>} name="putStatus" rules={[{ required: true, message: '请选择投放状态!' }]}>
                 <Select
                     placeholder="请选择投放状态"
                     options={[

+ 2 - 1
src/pages/iaaSystem/manage/channel/tableConfig.tsx

@@ -24,7 +24,8 @@ const tableConfig = (backValueEnum: any, appObj: any) => {
             dataIndex: 'agentKey',
             align: 'center',
             width: 180,
-            ellipsis: true
+            ellipsis: true,
+            copyable: true,
         },
         {
             title: '广告账号',

+ 6 - 0
src/pages/iaaSystem/manage/power/modalPower.tsx

@@ -69,6 +69,9 @@ const ModalPower: React.FC<Props> = ({ roleTypeList, userList, onChange, visible
                     placeholder="请选择回传策略"
                     options={roleTypeList}
                     allowClear
+                    filterOption={(input, option) =>
+                        (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                    }
                 />
             </Form.Item>
             {!initialValues?.userId && <Form.Item label={<strong>用户</strong>} name="userIdList" rules={[{ required: true, message: '请选择用户!' }]}>
@@ -76,6 +79,9 @@ const ModalPower: React.FC<Props> = ({ roleTypeList, userList, onChange, visible
                     mode="multiple"
                     allowClear
                     placeholder="请选择用户"
+                    filterOption={(input, option) =>
+                        (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                    }
                     options={userList}
                 />
             </Form.Item>}

+ 4 - 1
src/pages/iaaSystem/manage/power/tableConfig.tsx

@@ -24,7 +24,10 @@ const tableConfig = (handleEdit: (data: any) => void, roleTypeEnum: any, userObj
             title: '用户',
             dataIndex: 'userId',
             hideInTable: true,
-            valueEnum: userObj
+            valueEnum: userObj,
+            fieldProps: {
+                showSearch: true
+            }
         },
         {
             title: '权限类型',

+ 3 - 3
src/pages/user/login/index.tsx

@@ -7,7 +7,7 @@ import { CopyrightOutlined, SwapRightOutlined } from '@ant-design/icons';
 import { useBase64 } from '@/Hook/useBase64';
 import Bg from './components/bg';
 import { history } from 'umi';
-import { erpApi } from '@/services/api';
+import { api } from '@/services/api';
 
 /**  退出登录,并且将当前的 url 保存 */
 const loginOut = async () => {
@@ -148,14 +148,14 @@ const Login: React.FC<{}> = () => {
 	// 选择公司
 	const setCompanyHandle = (companyId: number) => {
 		setLoading(() => true)
-		fetch(erpApi + `/erp/user/chooseCompany/${companyId}`, {
+		fetch(api + `/erp/user/chooseCompany/${companyId}`, {
 			method: 'PUT',
 			headers: { ['Authorization']: 'Bearer ' + localStorage.getItem('Admin-Token') }
 		}).then(res => res.json()).then((res: any) => {
 			setLoading(() => false)
 			if (res?.code === 200) {
 				// 验证服务器是否升级
-				fetch(erpApi + '/erp/config/sysVersion/preserve', {
+				fetch(api + '/erp/config/sysVersion/preserve', {
 					headers: {
 						'Authorization': 'Bearer ' + res?.data?.token
 					}

+ 0 - 1
src/services/api.ts

@@ -1,3 +1,2 @@
 export let api: any = process.env.NODE_ENV === 'development' ? 'api' : 'https://testapi.zanxiangwl.com'
-export let erpApi: any = process.env.NODE_ENV === 'development' ? 'erpApi' : 'https://testapi.zanxiangwl.com'
 export let gameApi: any = process.env.NODE_ENV === 'development' ? 'gameApi' : `https://game.84game.cn`

+ 78 - 0
src/services/iaaData/index.ts

@@ -0,0 +1,78 @@
+import { request } from 'umi';
+import { api } from '../api';
+let wapi = api + '/iaaData'
+
+/**
+ * 分页信息
+ * @param pageNum 页码
+ * @param pageSize 每页数量
+ */
+export interface Paging {
+    pageNum: number,
+    pageSize: number,
+    productType?: string  // 业务类型
+    appId?: string        // 应用
+}
+
+
+export interface SortProps {
+    sortFiled?: string, // 排序字段
+    sortType?: string,  // 排序方式:升序asc;降序desc
+    sortAsc?: boolean   // 排序类型:升序 true;降序 false
+}
+
+/**
+ * 投手列表
+ * @returns 
+ */
+export async function getPutUserListApi() {
+    return request(wapi + `/condition/putUserList`, {
+        method: 'POST'
+    });
+}
+
+/**
+ * iaa应用 业务列表
+ * @returns 
+ */
+export async function getAppListApi() {
+    return request(wapi + `/condition/appList`, {
+        method: 'POST'
+    });
+}
+
+export interface GetGDTListProps extends Paging, SortProps {
+    accountId?: string
+    putUserIdList?: number[]   // 投手ID列表
+    promotionId?: number       // 广告ID
+    promotionName?: string     // 广告账名称
+    status?: string            // 广告状态
+    cpaBid?: number            // 当前出价
+    pricing?: string           // 出价方式
+    adCreateBegin?: string     // 广告创建时间
+    adCreateEnd?: string
+    deleted?: boolean          // 删除状态
+    putDayBegin?: string       // 投放时间
+    putDayEnd?: string
+    costDayBegin?: string      // 消耗时间
+    costDayEnd?: string
+}
+/**
+ * 腾讯广告列表
+ * @param data 
+ * @returns 
+ */
+export async function getGDTListApi(data: GetGDTListProps) {
+    return request(wapi + `/monitor/gdt/listOfPage`, {
+        method: 'POST',
+        data
+    });
+}
+
+
+export async function getGDTTotalApi(data: GetGDTListProps) {
+    return request(wapi + `/monitor/gdt/total`, {
+        method: 'POST',
+        data
+    });
+}

+ 12 - 12
src/services/login.ts

@@ -1,5 +1,5 @@
 import { request } from 'umi';
-import { erpApi } from './api'
+import { api } from './api'
 export interface LoginParamsType {
   username: string;
   password: string;
@@ -15,7 +15,7 @@ export interface LoginParamsType {
 //   });
 // }
 export async function fakeAccountLogin(params: any) {
-  return request(erpApi + '/erp/user/login', {
+  return request(api + '/erp/user/login', {
     method: 'POST',
     data: params,
   });
@@ -26,7 +26,7 @@ export async function getFakeCaptcha(mobile: string) {
 }
 
 export async function outLogin() {
-  return request(erpApi + '/erp/user/logout', {
+  return request(api + '/erp/user/logout', {
     method: 'DELETE'
   });
 }
@@ -35,46 +35,46 @@ export async function outLogin() {
 // }
 /**查询版本号 */
 export async function getVersions() {
-  return request(erpApi + '/erp/config/sysVersion/versions')
+  return request(api + '/erp/config/sysVersion/versions')
 }
 /**查询私人定制用户 */
 export async function getPrivate() {
-  return request(erpApi + '/erp/config/sysVersion/private')
+  return request(api + '/erp/config/sysVersion/private')
 }
 /**获取钉钉扫码前的后台KEY*/
 export async function getDingKey() {
-  return request(erpApi + '/erp/user/dLoginState')
+  return request(api + '/erp/user/dLoginState')
 }
 /**钉钉登录*/
 export async function ddlogin(params: { code: string, stateKey: string, state: string }) {
   let { code, stateKey, state } = params
-  return request(erpApi + `/erp/user/dLogin?code=${code}&stateKey=${stateKey}&state=${state}`, {
+  return request(api + `/erp/user/dLogin?code=${code}&stateKey=${stateKey}&state=${state}`, {
     method: 'POST'
   })
 }
 // 选择公司
 export async function selectCompanyApi(companyId: number) {
-  return request(erpApi + `/erp/user/chooseCompany/${companyId}`, {
+  return request(api + `/erp/user/chooseCompany/${companyId}`, {
     method: 'PUT'
   });
 }
 // 手机钉钉验证码获取
 export async function getCode(phone: string) {
-  return request(erpApi + `/erp/user/dCodeLoginState/${phone}`)
+  return request(api + `/erp/user/dCodeLoginState/${phone}`)
 }
 // 手机短信验证码获取
 export async function getNoteCode(phone: string) {
-  return request(erpApi + `/erp/user/smsCodeLoginState/${phone}`)
+  return request(api + `/erp/user/smsCodeLoginState/${phone}`)
 }
 // 手机登录
 export async function phoneLogin(params: { phone: string, code: string }) {
   console.log('------------>', params)
-  return request(erpApi + `/erp/user/dCodeLogin`, {
+  return request(api + `/erp/user/dCodeLogin`, {
     method: 'POST',
     data: params
   })
 }
 // 查询是否在更新
 export async function isPreserve() {
-  return request(erpApi + '/erp/config/sysVersion/preserve')
+  return request(api + '/erp/config/sysVersion/preserve')
 }

+ 3 - 3
src/services/operating/account.ts

@@ -1,11 +1,11 @@
 import { request } from 'umi';
-import { erpApi } from '../api';
+import { api } from '../api';
 /** 获取账号 */
 export async function getAllZhMemBerApi() {
-  return request(`${erpApi}/erp/resourceOfUser/allOfMember/10`);
+  return request(`${api}/erp/resourceOfUser/allOfMember/10`);
 }
 
 /** 投手列表 */
 export async function getSubUserWithSelfListApi() {
-  return request(erpApi + '/choice/agent/user/list');
+  return request(api + '/choice/agent/user/list');
 }

+ 6 - 6
src/services/user.ts

@@ -1,6 +1,6 @@
 import { queryStr } from '@/utils/query';
 import { request } from 'umi';
-import { erpApi } from './api'
+import { api } from './api'
 
 export async function query() {
     return request('/api/users');
@@ -9,26 +9,26 @@ export async function query() {
 //   return request<API.CurrentUser>('/api/currentUser');
 // }
 export async function queryCurrent() {
-    return request(erpApi + '/erp/user/loginUserInfo');
+    return request(api + '/erp/user/loginUserInfo');
 }
 
 
 export async function getMenu(): Promise<any> {
-    return request(erpApi + '/erp/menu/getRouters', {
+    return request(api + '/erp/menu/getRouters', {
         method: 'PUT',
         data: ['iaa']
     })
 }
 
 export async function editUser(prams: { oldPassword: string, password: string }) {
-    return request(`${erpApi}/erp/user/profile/updatePwd${queryStr(prams)}`, {
+    return request(`${api}/erp/user/profile/updatePwd${queryStr(prams)}`, {
         method: 'PUT'
     })
 }
 /** 重置密码 */
 export async function modifyPasswordAjax(prams: { userId: string, password: string, oldPassword: string }) {
     let { userId, ...parm } = prams
-    return request(`${erpApi}/erp/user/modifyPassword/${userId}`, {
+    return request(`${api}/erp/user/modifyPassword/${userId}`, {
         method: 'PUT',
         data: parm
     })
@@ -39,5 +39,5 @@ export async function modifyPasswordAjax(prams: { userId: string, password: stri
  * @returns 
  */
 export async function getUserAllApi(): Promise<any> {
-    return request(erpApi + `/erp/user/all`)
+    return request(api + `/erp/user/all`)
 }