wjx 6 månader sedan
förälder
incheckning
fe55668198
39 ändrade filer med 426 tillägg och 6722 borttagningar
  1. 20 59
      config/routerConfig.ts
  2. 19 1
      src/components/QueryForm/index.tsx
  3. 21 24
      src/pages/iaaData/game/ocenaengine/appCashTrendLTV/index.tsx
  4. 39 46
      src/pages/iaaData/game/ocenaengine/appCashTrendLTV/tableConfig.tsx
  5. 28 25
      src/pages/iaaData/game/ocenaengine/appCashTrendRetained/index.tsx
  6. 157 0
      src/pages/iaaData/game/ocenaengine/appCashTrendRetained/tableConfig.tsx
  7. 20 19
      src/pages/iaaData/game/ocenaengine/appCashTrendRoi/index.tsx
  8. 37 43
      src/pages/iaaData/game/ocenaengine/appCashTrendRoi/tableConfig.tsx
  9. 2 2
      src/pages/iaaData/game/tencent/adList/index.tsx
  10. 0 1
      src/pages/iaaData/game/tencent/appCashTrend/tableConfig.tsx
  11. 0 94
      src/pages/iaaData/ocenaengineIaa/adList/dayAd.tsx
  12. 0 7
      src/pages/iaaData/ocenaengineIaa/adList/index.less
  13. 0 250
      src/pages/iaaData/ocenaengineIaa/adList/index.tsx
  14. 0 566
      src/pages/iaaData/ocenaengineIaa/adList/tableConfig.tsx
  15. 0 539
      src/pages/iaaData/ocenaengineIaa/adList/tableConfigDay.tsx
  16. 0 700
      src/pages/iaaData/ocenaengineIaa/appEveryDayData/tableConfig.tsx
  17. 0 49
      src/pages/iaaData/tencentIaa/adList/const.tsx
  18. 0 94
      src/pages/iaaData/tencentIaa/adList/dayAd.tsx
  19. 0 0
      src/pages/iaaData/tencentIaa/adList/index.less
  20. 0 214
      src/pages/iaaData/tencentIaa/adList/index.tsx
  21. 0 40
      src/pages/iaaData/tencentIaa/adList/switchStatus.tsx
  22. 0 592
      src/pages/iaaData/tencentIaa/adList/tableConfig.tsx
  23. 0 390
      src/pages/iaaData/tencentIaa/adList/tableConfigDay.tsx
  24. 0 99
      src/pages/iaaData/tencentIaa/appCashAssay/index.tsx
  25. 0 213
      src/pages/iaaData/tencentIaa/appCashAssay/tableConfig.tsx
  26. 0 12
      src/pages/iaaData/tencentIaa/appCashRetained/index.less
  27. 0 100
      src/pages/iaaData/tencentIaa/appCashRetained/index.tsx
  28. 0 12
      src/pages/iaaData/tencentIaa/appCashTrend/index.less
  29. 0 100
      src/pages/iaaData/tencentIaa/appCashTrend/index.tsx
  30. 0 535
      src/pages/iaaData/tencentIaa/appEveryDayData/tableConfig.tsx
  31. 0 55
      src/pages/iaaData/tencentIaa/dynamic/const.tsx
  32. 0 98
      src/pages/iaaData/tencentIaa/dynamic/dayAd.tsx
  33. 0 0
      src/pages/iaaData/tencentIaa/dynamic/index.less
  34. 0 265
      src/pages/iaaData/tencentIaa/dynamic/index.tsx
  35. 0 41
      src/pages/iaaData/tencentIaa/dynamic/switchStatus.tsx
  36. 0 593
      src/pages/iaaData/tencentIaa/dynamic/tableConfig.tsx
  37. 0 544
      src/pages/iaaData/tencentIaa/dynamic/tableConfigDay.tsx
  38. 0 300
      src/pages/iaaData/tencentIaa/pitcherEveryDay/tableConfig.tsx
  39. 83 0
      src/services/iaaData/index.ts

+ 20 - 59
config/routerConfig.ts

@@ -120,6 +120,7 @@ const iaaSystem = {
     ]
 }
 
+/** 游戏 */
 const iaaGameData = [
     {
         path: '/iaaData/game/tencent',
@@ -169,17 +170,33 @@ const iaaGameData = [
             {
                 path: '/iaaData/game/ocenaengine/adList',
                 name: '广告列表',
-                component: './iaaData/game/ocenaengine/adList',
+                component: './iaaData/game/ocenaengine/adList'
             },
             {
                 path: '/iaaData/game/ocenaengine/appEveryDayData',
                 name: '应用每日数据',
-                component: './iaaData/game/ocenaengine/appEveryDayData',
+                component: './iaaData/game/ocenaengine/appEveryDayData'
+            },
+            {
+                path: '/iaaData/game/ocenaengine/appCashTrendRoi',
+                name: '应用变现趋势-ROI',
+                component: './iaaData/game/ocenaengine/appCashTrendRoi'
+            },
+            {
+                path: '/iaaData/game/ocenaengine/appCashTrendRetained',
+                name: '应用变现趋势-留存',
+                component: './iaaData/game/ocenaengine/appCashTrendRetained'
+            },
+            {
+                path: '/iaaData/game/ocenaengine/appCashTrendLTV',
+                name: '应用变现趋势-LTV',
+                component: './iaaData/game/ocenaengine/appCashTrendLTV'
             }
         ]
     }
 ]
 
+/** 小说 */
 const iaaNovelData = [
     {
         path: '/iaaData/novel/tencent',
@@ -199,6 +216,7 @@ const iaaNovelData = [
     }
 ]
 
+/** 短剧 */
 const iaaPlayletData = [
     {
         path: '/iaaData/playlet/tencent',
@@ -221,63 +239,6 @@ const iaaPlayletData = [
 const iaaData = {
     path: '/iaaData',
     routes: [
-        {
-            path: '/iaaData/tencentIaa',
-            name: '腾讯',
-            routes: [
-                {
-                    path: '/iaaData/tencentIaa/adList',
-                    name: '广告列表',
-                    component: './iaaData/tencentIaa/adList',
-                },
-                {
-                    path: '/iaaData/tencentIaa/dynamic',
-                    name: '创意列表',
-                    component: './iaaData/tencentIaa/dynamic',
-                },
-                {
-                    path: '/iaaData/tencentIaa/appEveryDayData',
-                    name: '应用每日数据',
-                    component: './iaaData/tencentIaa/appEveryDayData',
-                },
-                {
-                    path: '/iaaData/tencentIaa/appCashTrend',
-                    name: '应用变现趋势',
-                    component: './iaaData/tencentIaa/appCashTrend',
-                },
-                {
-                    path: '/iaaData/tencentIaa/appCashRetained',
-                    name: '应用变现留存',
-                    component: './iaaData/tencentIaa/appCashRetained',
-                },
-                {
-                    path: '/iaaData/tencentIaa/appCashAssay',
-                    name: '应用变现分析',
-                    component: './iaaData/tencentIaa/appCashAssay',
-                },
-                {
-                    path: '/iaaData/tencentIaa/pitcherEveryDay',
-                    name: '投手每日数据',
-                    component: './iaaData/tencentIaa/pitcherEveryDay',
-                },
-            ]
-        },
-        {
-            path: '/iaaData/ocenaengineIaa',
-            name: '头条',
-            routes: [
-                {
-                    path: '/iaaData/ocenaengineIaa/adList',
-                    name: '广告列表',
-                    component: './iaaData/ocenaengineIaa/adList',
-                },
-                {
-                    path: '/iaaData/ocenaengineIaa/appEveryDayData',
-                    name: '应用每日数据',
-                    component: './iaaData/ocenaengineIaa/appEveryDayData',
-                }
-            ]
-        },
         ...iaaGameData,
         ...iaaNovelData,
         ...iaaPlayletData

+ 19 - 1
src/components/QueryForm/index.tsx

@@ -34,6 +34,8 @@ interface Props {
     isTTStatus?: boolean,
     /** 是否开启 删除状态 搜索 */
     isDeleted?: boolean,
+    /** 是否开启 留存类型 搜索 */
+    isRetainedType?: boolean,
 
     /** 是否开启 日期 搜索 */
     day1?: RangePickerProps
@@ -51,7 +53,7 @@ const QueryForm: React.FC<Props> = (props) => {
     /**************************/
     const { initialState } = useModel('@@initialState');
     const {
-        onChange, initialValues, isAccountId, isPromotionName, isPromotionId, isDynamicCreativeId, isCpaBid, isPutUserIdList, isPricing, isTTPricing, isStatus, isTTStatus, isDeleted, day1, day2, day3
+        onChange, initialValues, isAccountId, isPromotionName, isPromotionId, isDynamicCreativeId, isCpaBid, isPutUserIdList, isPricing, isTTPricing, isStatus, isTTStatus, isDeleted, isRetainedType, day1, day2, day3
     } = props
     const [form] = Form.useForm()
     const [putUserList, setPutUserList] = useState<{ label: string, value: string }[]>([])
@@ -197,6 +199,22 @@ const QueryForm: React.FC<Props> = (props) => {
                 </Select>
             </Form.Item></Col>}
 
+            {/* 留存类型 */}
+            {isRetainedType && <Col><Form.Item name='retainedType'>
+                <Select
+                    showSearch
+                    style={{ width: 120 }}
+                    placeholder={'留存类型'}
+                    filterOption={(input, option) =>
+                        (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                    }
+                >
+                    <Select.Option value={'new_user'}>新增留存</Select.Option>
+                    <Select.Option value={'active_user'}>活跃留存</Select.Option>
+                    <Select.Option value={'first'}>首日激活留存</Select.Option>
+                </Select>
+            </Form.Item></Col>}
+
             {/* 日期选择框 */}
             {day1 && <Col><Form.Item name='day1'>
                 {/* @ts-ignore */}

+ 21 - 24
src/pages/iaaData/ocenaengineIaa/appEveryDayData/index.tsx → src/pages/iaaData/game/ocenaengine/appCashTrendLTV/index.tsx

@@ -1,21 +1,17 @@
-
-import React, { useEffect, useState } from "react"
-import columns12 from "./tableConfig";
-import TablePro from "@/components/TablePro";
 import QueryForm from "@/components/QueryForm";
+import TablePro from "@/components/TablePro";
+import React, { useEffect, useState } from "react"
 import moment from "moment";
 import { useModel } from "umi";
 import { useAjax } from "@/Hook/useAjax";
-import { getByteAppListApi, GetByteAppListProps, getByteAppTotalApi } from "@/services/iaaData";
+import columns12 from "./tableConfig";
+import { getByteAppTrendLtvListApi, getByteAppTrendLtvTotalApi, GetByteAppTrendRoiListApi } from "@/services/iaaData";
+
+const AppCashTrendRoi: React.FC = () => {
 
-/**
- * 应用每日数据
- * @returns 
- */
-const AppEveryDayData: React.FC = () => {
     /****************************************/
     const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<GetByteAppListProps>({
+    const [queryForm, setQueryForm] = useState<GetByteAppTrendRoiListApi>({
         pageNum: 1,
         pageSize: 30,
         costDayBegin: moment().format('YYYY-MM-DD'),
@@ -23,18 +19,19 @@ const AppEveryDayData: React.FC = () => {
     })
     const [totalData, setTotalData] = useState<any[]>([])
 
-    const getByteAppList = useAjax((params) => getByteAppListApi(params))
-    const getByteAppTotal = useAjax((params) => getByteAppTotalApi(params))
+    const getByteAppTrendLtvList = useAjax((params) => getByteAppTrendLtvListApi(params))
+    const getByteAppTrendLtvTotal = useAjax((params) => getByteAppTrendLtvTotalApi(params))
     /****************************************/
 
     useEffect(() => {
         if (initialState?.iaaApp) {
             const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAppList.run({ ...queryForm, appId, productType })
-            getByteAppTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string } }) => {
+            getByteAppTrendLtvList.run({ ...queryForm, appId, productType })
+            getByteAppTrendLtvTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
+                    data.costDayBegin = queryForm.costDayBegin || moment().format('YYYY-MM-DD')
                     data.appName = '总计'
                     setTotalData([data])
                 } else {
@@ -68,16 +65,16 @@ const AppEveryDayData: React.FC = () => {
             isZj
             totalData={totalData}
             config={columns12()}
-            configName={'头条应用每日数据'}
+            configName={'头条应用变现趋势LTV'}
             fixed={{ left: 4, right: 0 }}
             scroll={{ x: 1000, y: 620 }}
-            title='头条应用每日数据'
-            loading={getByteAppList.loading}
-            ajax={getByteAppList}
-            page={getByteAppList?.data?.data?.current || 1}
-            pageSize={getByteAppList?.data?.data?.size || 20}
-            total={getByteAppList?.data?.data?.total || 0}
-            dataSource={getByteAppList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(queryForm.pageNum.toString() + (index + '')) }))}
+            title='应用变现趋势-LTV'
+            loading={getByteAppTrendLtvList.loading}
+            ajax={getByteAppTrendLtvList}
+            page={getByteAppTrendLtvList?.data?.data?.current || 1}
+            pageSize={getByteAppTrendLtvList?.data?.data?.size || 20}
+            total={getByteAppTrendLtvList?.data?.data?.total || 0}
+            dataSource={getByteAppTrendLtvList?.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))
@@ -96,4 +93,4 @@ const AppEveryDayData: React.FC = () => {
     </div>
 }
 
-export default AppEveryDayData
+export default AppCashTrendRoi

+ 39 - 46
src/pages/iaaData/tencentIaa/appCashRetained/tableConfig.tsx → src/pages/iaaData/game/ocenaengine/appCashTrendLTV/tableConfig.tsx

@@ -1,32 +1,30 @@
 import WidthEllipsis from "@/components/widthEllipsis"
 import { Progress, Statistic } from "antd"
 import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-import { formatSecondsToTime } from "@/utils/utils"
-import style from './index.less'
+import { PRODUCT_TYPE_ENUM } from "../../../const"
+import style from '../../tencent/appCashRetained/index.less'
 import moment from "moment"
-import { ACCOUNTTYPE, APPTYPE } from "@/pages/iaaSystem/manage/const"
+import { APPTYPE } from "@/pages/iaaSystem/manage/const"
 
 function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
 
-    const defaultIndex = 23
-    const trend = [1, 2, 3, 4, 5, 6, 7, 14, 30, 45, 60, 75, 90].map((index, count) => {
+    const defaultIndex = 22
+    const trend = [1, 2, 3, 4, 5, 6, 7, 15, 30, 60, 90, 120, 150].map((index, count) => {
 
-        const dataIndex = `d${index}`
+        const dataIndex = `day${index}`
         return {
-            title: `D${index}`, dataIndex, label: '基本信息', default: defaultIndex + count, width: 120,
+            title: `D${index}`, dataIndex, label: '基本信息', default: defaultIndex + count, width: 110,
             render: (_: any, b: any) => {
-                if (moment().subtract(1, 'days') >= moment(b.dt === '总计' ? b.costDayBegin : b.dt).add(index - 1, 'days')) {
+                if (moment().subtract(1, 'days') >= moment(b.appName === '总计' ? b.costDayBegin : b.dt).add(index - 1, 'days')) {
                     const data = b?.[dataIndex]?.split('/')
-                    return <div className={style.dbox} style={{ height: 45.84 }}>
-                        <span style={{ color: '#d81b60', fontWeight: 600 }}>人数:<span><Statistic value={data?.[0] || 0} precision={2} /></span></span>
-                        <span style={{ color: '#0f538a', fontWeight: 600 }}>留存率:<span><Statistic value={data?.[1] ? data?.[1] * 100 : 0} precision={2} valueStyle={!data?.[1] ? {} : data?.[1] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
+                    return <div className={style.dbox} style={{ height: 40 }}>
+                        <span style={{ color: '#0f538a', fontWeight: 600 }}>累计:<span><Statistic value={data?.[0] || 0} precision={2} /></span></span>
+                        <span style={{ color: '#d81b60', fontWeight: 600 }}>LTV:<span><Statistic value={data?.[1] || 0} precision={2} /></span></span>
                     </div>
                 }
-                return <div style={{ height: 45.84, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
+                return <div style={{ height: 40, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
             }
         }
-
     })
 
     return [
@@ -62,17 +60,9 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
                 },
                 {
-                    title: '推广媒体', dataIndex: 'accountType', label: '基本信息', align: 'center', width: 80, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={ACCOUNTTYPE[a as keyof typeof ACCOUNTTYPE]?.text} />)
-                },
-                {
-                    title: '变现广告位', dataIndex: 'realizationAdUnit', label: '基本信息', align: 'center', width: 80, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '总消耗', dataIndex: 'totalCost', label: '基本信息', align: 'right', width: 95, default: 8, sorter: true,
+                    title: '每日真实消耗', dataIndex: 'realCost', label: '基本信息', align: 'right', width: 95, default: 6, sorter: true,
                     className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 53.8, position: 'relative' }}>
+                    render: (a: number) => <div style={{ height: 40, position: 'relative' }}>
                         <Progress
                             strokeColor={{
                                 from: '#10c1e9',
@@ -86,9 +76,9 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     </div>
                 },
                 {
-                    title: '消耗', dataIndex: 'cost', label: '基本信息', align: 'right', width: 85, default: 9, sorter: true,
+                    title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'right', width: 85, default: 7, sorter: true,
                     className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 53.8, position: 'relative' }}>
+                    render: (a: number) => <div style={{ height: 40, position: 'relative' }}>
                         <Progress
                             strokeColor={{
                                 from: '#ff5900',
@@ -102,57 +92,60 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     </div>
                 },
                 {
-                    title: '赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 10, sorter: true,
+                    title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '注册人数', dataIndex: 'userRegCnt', label: '基本信息', align: 'center', width: 80, default: 11, sorter: true,
+                    title: '新增用户人数', dataIndex: 'newUser1', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '注册成本', dataIndex: 'regPaid', label: '基本信息', align: 'center', width: 80, default: 12, sorter: true,
+                    title: '新增用户成本', dataIndex: 'newUserCost', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '今日留存人数', dataIndex: 'userRetentionCnt', label: '基本信息', align: 'center', width: 80, default: 13, sorter: true,
+                    title: 'DAU', dataIndex: 'dau1', label: '基本信息', align: 'center', width: 80, default: 11, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '今日留存率', dataIndex: 'userRetentionCntRatio', label: '基本信息', align: 'center', width: 80, default: 14, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                    title: '首日激活人数', dataIndex: 'firstUser', label: '基本信息', align: 'center', width: 80, default: 12, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日广告变现人数', dataIndex: 'appAdPayingUsers', label: '基本信息', align: 'center', width: 75, default: 15, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '首日激活成本', dataIndex: 'costPerAction', label: '基本信息', align: 'center', width: 80, default: 13, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
-
                 {
-                    title: '总ecpm', dataIndex: 'totalEcpm', label: '基本信息', align: 'center', width: 80, default: 16, sorter: true,
+                    title: '新增广告arpu', dataIndex: 'newPayArpu', label: '基本信息', align: 'center', width: 80, default: 14, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增ecpm', dataIndex: 'newEcpm', label: '基本信息', align: 'center', width: 80, default: 15, sorter: true,
                     render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总arpu', dataIndex: 'totalArpu', label: '基本信息', align: 'center', width: 80, default: 17, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                    title: '新增ecpm(应用自算)', dataIndex: 'newEcpm1', label: '基本信息', align: 'center', width: 80, default: 16, sorter: true,
+                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '广告总曝光量', dataIndex: 'viewTotal', label: '基本信息', align: 'center', width: 80, default: 18, sorter: true,
-                    render: (a: number, b: any) => <Statistic value={a || 0} />
+                    title: '首日激活变现人数', dataIndex: 'newAdUser', label: '基本信息', align: 'center', width: 80, default: 17, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '累计总收入', dataIndex: 'totalIncome', label: '基本信息', align: 'right', width: 80, default: 19, sorter: true,
+                    title: '首日新增收入', dataIndex: 'newAdIncome', label: '基本信息', align: 'center', width: 80, default: 18, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '累计总回收', dataIndex: 'totalIncomRoi', label: '基本信息', align: 'right', width: 80, default: 20, sorter: true,
+                    title: '首日新增ROI', dataIndex: 'newAdRoi', label: '基本信息', align: 'center', width: 80, default: 19, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '分享成功人数', dataIndex: 'shareUv', label: '基本信息', align: 'center', width: 75, default: 21, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '首日激活用户LTV', dataIndex: 'motivateUserFirstLtv', label: '基本信息', align: 'center', width: 85, default: 20, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
                 },
                 {
-                    title: '分享后活跃人数', dataIndex: 'shareClkUv', label: '基本信息', align: 'center', width: 80, default: 22, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '"新增曝光pv', dataIndex: 'adShowPv', label: '基本信息', align: 'center', width: 85, default: 21, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
                 },
                 ...trend
             ]

+ 28 - 25
src/pages/iaaData/tencentIaa/pitcherEveryDay/index.tsx → src/pages/iaaData/game/ocenaengine/appCashTrendRetained/index.tsx

@@ -1,45 +1,47 @@
-import { useAjax } from "@/Hook/useAjax";
-import { getPutUserTxEveryDayListApi, getPutUserTxEveryDayListProps, getPutUserTxEveryDayTotalApi } from "@/services/iaaData";
+import QueryForm from "@/components/QueryForm";
+import TablePro from "@/components/TablePro";
 import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
 import moment from "moment";
-import TablePro from "@/components/TablePro";
-import QueryForm from "@/components/QueryForm";
+import { useModel } from "umi";
+import { useAjax } from "@/Hook/useAjax";
 import columns12 from "./tableConfig";
+import { getByteAppTrendLtvListApi, getByteAppTrendLtvTotalApi, getByteAppTrendRetainedListApi, getByteAppTrendRetainedTotalApi, GetByteAppTrendRoiListApi } from "@/services/iaaData";
 
 /**
- * 投手每日数据
+ * 变现趋势留存
  * @returns 
  */
-const PitcherEveryDay: React.FC = () => {
+const AppCashTrendRetained: React.FC = () => {
 
 
     /****************************************/
     const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<getPutUserTxEveryDayListProps>({
+    const [queryForm, setQueryForm] = useState<GetByteAppTrendRoiListApi>({
         pageNum: 1,
         pageSize: 30,
         costDayBegin: moment().format('YYYY-MM-DD'),
         costDayEnd: moment().format('YYYY-MM-DD'),
+        retainedType: 'new_user'
     })
     const [totalData, setTotalData] = useState<any[]>([])
 
-    const getPutUserTxEveryDayList = useAjax((params) => getPutUserTxEveryDayListApi(params))
-    const getPutUserTxEveryDayTotal = useAjax((params) => getPutUserTxEveryDayTotalApi(params))
+    const getByteAppTrendRetainedList = useAjax((params) => getByteAppTrendRetainedListApi(params))
+    const getByteAppTrendRetainedTotal = useAjax((params) => getByteAppTrendRetainedTotalApi(params))
     /****************************************/
 
     useEffect(() => {
         if (initialState?.iaaApp) {
             const [appId, productType] = initialState.iaaApp.split('||')
-            getPutUserTxEveryDayList.run({ ...queryForm, appId, productType })
-            getPutUserTxEveryDayTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; pitcher: string } }) => {
+            getByteAppTrendRetainedList.run({ ...queryForm, appId, productType })
+            getByteAppTrendRetainedTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
-                    data.pitcher = '总计'
+                    data.costDayBegin = queryForm.costDayBegin || moment().format('YYYY-MM-DD')
+                    data.appName = '总计'
                     setTotalData([data])
                 } else {
-                    setTotalData([{ id: 1, pitcher: '总计' }])
+                    setTotalData([{ id: 1, appName: '总计' }])
                 }
             })
         }
@@ -49,13 +51,14 @@ const PitcherEveryDay: React.FC = () => {
     return <div>
         <TablePro
             leftChild={<QueryForm
-                initialValues={{ day1: [moment(), moment()] }}
+                initialValues={{ day1: [moment(), moment()], retainedType: 'new_user' }}
+                isRetainedType
                 day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-                isPutUserIdList
                 onChange={(data: any) => {
                     console.log(data)
                     const { day1, ...params } = data
                     let newQueryForm = JSON.parse(JSON.stringify(queryForm))
+                    newQueryForm.pageNum = 1
                     if (day1 && day1?.length === 2) {
                         newQueryForm['costDayBegin'] = moment(day1[0]).format('YYYY-MM-DD')
                         newQueryForm['costDayEnd'] = moment(day1[1]).format('YYYY-MM-DD')
@@ -69,16 +72,16 @@ const PitcherEveryDay: React.FC = () => {
             isZj
             totalData={totalData}
             config={columns12()}
-            configName={'投手每日数据'}
+            configName={`头条应用变现趋势留存`}
             fixed={{ left: 4, right: 0 }}
             scroll={{ x: 1000, y: 620 }}
-            title='投手每日数据'
-            loading={getPutUserTxEveryDayList.loading}
-            ajax={getPutUserTxEveryDayList}
-            page={getPutUserTxEveryDayList?.data?.data?.current || 1}
-            pageSize={getPutUserTxEveryDayList?.data?.data?.size || 20}
-            total={getPutUserTxEveryDayList?.data?.data?.total || 0}
-            dataSource={getPutUserTxEveryDayList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(queryForm.pageNum.toString() + (index + '')) }))}
+            title='应用变现趋势-留存'
+            loading={getByteAppTrendRetainedList.loading}
+            ajax={getByteAppTrendRetainedList}
+            page={getByteAppTrendRetainedList?.data?.data?.current || 1}
+            pageSize={getByteAppTrendRetainedList?.data?.data?.size || 20}
+            total={getByteAppTrendRetainedList?.data?.data?.total || 0}
+            dataSource={getByteAppTrendRetainedList?.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))
@@ -97,4 +100,4 @@ const PitcherEveryDay: React.FC = () => {
     </div>
 }
 
-export default PitcherEveryDay
+export default AppCashTrendRetained

+ 157 - 0
src/pages/iaaData/game/ocenaengine/appCashTrendRetained/tableConfig.tsx

@@ -0,0 +1,157 @@
+import WidthEllipsis from "@/components/widthEllipsis"
+import { Progress, Statistic } from "antd"
+import React from "react"
+import { PRODUCT_TYPE_ENUM } from "../../../const"
+import style from '../../tencent/appCashRetained/index.less'
+import moment from "moment"
+import { APPTYPE } from "@/pages/iaaSystem/manage/const"
+
+function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
+
+    let dayArray = [1, 2, 3, 4, 5, 6, 7, 8, 16, 31, 61, 91, 121, 151]
+    const defaultIndex = 22
+    const trend = dayArray.map((index, count) => {
+
+        const dataIndex = `day${index}`
+        return {
+            title: `D${index}`, dataIndex, label: '基本信息', default: defaultIndex + count, width: 110,
+            render: (_: any, b: any) => {
+                if (moment().subtract(1, 'days') >= moment(b.appName === '总计' ? b.costDayBegin : b.dt).add(index - 1, 'days')) {
+                    const data = b?.[dataIndex]?.split('/')
+                    return <div className={style.dbox} style={{ height: 40 }}>
+                        <span style={{ color: '#0f538a', fontWeight: 600 }}>人数:<span><Statistic value={data?.[0] || 0} /></span></span>
+                        <span style={{ color: '#ff5722', fontWeight: 600 }}>率:<span><Statistic value={data?.[1] ? data?.[1] * 100 : 0} precision={2} valueStyle={!data?.[1] ? {} : data?.[1] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
+                    </div>
+                }
+                return <div style={{ height: 40, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
+            }
+        }
+    })
+
+    return [
+        {
+            label: '基本信息',
+            data: [
+                {
+                    title: '日期', dataIndex: 'dt', label: '基本信息', align: 'center', width: 80, default: 1,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '应用', dataIndex: 'appName', label: '基本信息', align: 'center', width: 120, default: 2,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '应用ID', dataIndex: 'appId', label: '基本信息', align: 'center', width: 80,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '小程序名称', dataIndex: 'mpName', label: '基本信息', align: 'center', width: 85, default: 3,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '小程序ID', dataIndex: 'mpId', label: '基本信息', align: 'center', width: 80,
+                    render: (a: string) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '业务类型', dataIndex: 'productType', label: '基本信息', align: 'center', width: 80, default: 4,
+                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
+                },
+                {
+                    title: '应用类型', dataIndex: 'appType', label: '基本信息', align: 'center', width: 80, default: 5,
+                    render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
+                },
+                {
+                    title: '每日真实消耗', dataIndex: 'realCost', label: '基本信息', align: 'right', width: 95, default: 6, sorter: true,
+                    className: 'padding_0',
+                    render: (a: number) => <div style={{ height: 40, position: 'relative' }}>
+                        <Progress
+                            strokeColor={{
+                                from: '#10c1e9',
+                                to: '#6892d0',
+                            }}
+                            status="active"
+                            showInfo={false}
+                            percent={a ? a / 20000 * 100 : 0}
+                        />
+                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic style={{ fontWeight: 'bold' }} value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
+                    </div>
+                },
+                {
+                    title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'right', width: 85, default: 7, sorter: true,
+                    className: 'padding_0',
+                    render: (a: number) => <div style={{ height: 40, position: 'relative' }}>
+                        <Progress
+                            strokeColor={{
+                                from: '#ff5900',
+                                to: '#ffd380',
+                            }}
+                            status="active"
+                            showInfo={false}
+                            percent={a ? a / 20000 * 100 : 0}
+                        />
+                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
+                    </div>
+                },
+                {
+                    title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增用户人数', dataIndex: 'newUser1', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '新增用户成本', dataIndex: 'newUserCost', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: 'DAU', dataIndex: 'dau1', label: '基本信息', align: 'center', width: 80, default: 11, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '首日激活人数', dataIndex: 'firstUser', label: '基本信息', align: 'center', width: 80, default: 12, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '首日激活成本', dataIndex: 'costPerAction', label: '基本信息', align: 'center', width: 80, default: 13, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增广告arpu', dataIndex: 'newPayArpu', label: '基本信息', align: 'center', width: 80, default: 14, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增ecpm', dataIndex: 'newEcpm', label: '基本信息', align: 'center', width: 80, default: 15, sorter: true,
+                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增ecpm(应用自算)', dataIndex: 'newEcpm1', label: '基本信息', align: 'center', width: 80, default: 16, sorter: true,
+                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '首日激活变现人数', dataIndex: 'newAdUser', label: '基本信息', align: 'center', width: 80, default: 17, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '首日新增收入', dataIndex: 'newAdIncome', label: '基本信息', align: 'center', width: 80, default: 18, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '首日新增ROI', dataIndex: 'newAdRoi', label: '基本信息', align: 'center', width: 80, default: 19, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '首日激活用户LTV', dataIndex: 'motivateUserFirstLtv', label: '基本信息', align: 'center', width: 85, default: 20, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                },
+                {
+                    title: '"新增曝光pv', dataIndex: 'adShowPv', label: '基本信息', align: 'center', width: 85, default: 21, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                ...trend
+            ]
+        }
+    ]
+}
+
+export default columns12

+ 20 - 19
src/pages/iaaData/tencentIaa/appEveryDayData/index.tsx → src/pages/iaaData/game/ocenaengine/appCashTrendRoi/index.tsx

@@ -1,21 +1,21 @@
 import QueryForm from "@/components/QueryForm";
 import TablePro from "@/components/TablePro";
-import { useAjax } from "@/Hook/useAjax";
-import { getAppTxEveryDayListApi, GetAppTxEveryDayListProps, getAppTxEveryDayTotalApi } from "@/services/iaaData";
 import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
 import moment from "moment";
+import { useModel } from "umi";
+import { useAjax } from "@/Hook/useAjax";
 import columns12 from "./tableConfig";
+import { GetByteAppTrendRoiListApi, getByteAppTrendRoiListApi, getByteAppTrendRoiTotalApi } from "@/services/iaaData";
 
 /**
- * 应用每日数据
+ * 应用变现趋势-ROI
  * @returns 
  */
-const AppEveryDayData: React.FC = () => {
+const AppCashTrendRoi: React.FC = () => {
 
     /****************************************/
     const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<GetAppTxEveryDayListProps>({
+    const [queryForm, setQueryForm] = useState<GetByteAppTrendRoiListApi>({
         pageNum: 1,
         pageSize: 30,
         costDayBegin: moment().format('YYYY-MM-DD'),
@@ -23,18 +23,19 @@ const AppEveryDayData: React.FC = () => {
     })
     const [totalData, setTotalData] = useState<any[]>([])
 
-    const getAppTxEveryDayList = useAjax((params) => getAppTxEveryDayListApi(params))
-    const getAppTxEveryDayTotal = useAjax((params) => getAppTxEveryDayTotalApi(params))
+    const getByteAppTrendRoiList = useAjax((params) => getByteAppTrendRoiListApi(params))
+    const getByteAppTrendRoiTotal = useAjax((params) => getByteAppTrendRoiTotalApi(params))
     /****************************************/
 
     useEffect(() => {
         if (initialState?.iaaApp) {
             const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTxEveryDayList.run({ ...queryForm, appId, productType })
-            getAppTxEveryDayTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string } }) => {
+            getByteAppTrendRoiList.run({ ...queryForm, appId, productType })
+            getByteAppTrendRoiTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
+                    data.costDayBegin = queryForm.costDayBegin || moment().format('YYYY-MM-DD')
                     data.appName = '总计'
                     setTotalData([data])
                 } else {
@@ -68,16 +69,16 @@ const AppEveryDayData: React.FC = () => {
             isZj
             totalData={totalData}
             config={columns12()}
-            configName={'应用每日数据'}
+            configName={'头条应用变现趋势ROI'}
             fixed={{ left: 4, right: 0 }}
             scroll={{ x: 1000, y: 620 }}
-            title='应用每日数据'
-            loading={getAppTxEveryDayList.loading}
-            ajax={getAppTxEveryDayList}
-            page={getAppTxEveryDayList?.data?.data?.current || 1}
-            pageSize={getAppTxEveryDayList?.data?.data?.size || 20}
-            total={getAppTxEveryDayList?.data?.data?.total || 0}
-            dataSource={getAppTxEveryDayList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(queryForm.pageNum.toString() + (index + '')) }))}
+            title='应用变现趋势-ROI'
+            loading={getByteAppTrendRoiList.loading}
+            ajax={getByteAppTrendRoiList}
+            page={getByteAppTrendRoiList?.data?.data?.current || 1}
+            pageSize={getByteAppTrendRoiList?.data?.data?.size || 20}
+            total={getByteAppTrendRoiList?.data?.data?.total || 0}
+            dataSource={getByteAppTrendRoiList?.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))
@@ -96,4 +97,4 @@ const AppEveryDayData: React.FC = () => {
     </div>
 }
 
-export default AppEveryDayData
+export default AppCashTrendRoi

+ 37 - 43
src/pages/iaaData/tencentIaa/appCashTrend/tableConfig.tsx → src/pages/iaaData/game/ocenaengine/appCashTrendRoi/tableConfig.tsx

@@ -1,34 +1,33 @@
 import WidthEllipsis from "@/components/widthEllipsis"
 import { Progress, Statistic } from "antd"
 import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-import style from './index.less'
+import { PRODUCT_TYPE_ENUM } from "../../../const"
+import style from '../../tencent/appCashRetained/index.less'
 import moment from "moment"
-import { ACCOUNTTYPE, APPTYPE } from "@/pages/iaaSystem/manage/const"
+import { APPTYPE } from "@/pages/iaaSystem/manage/const"
 
 function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
 
-    const defaultIndex = 23
-    const trend = [1, 2, 3, 4, 5, 6, 7, 14, 30, 45, 60, 75, 90].map((index, count) => {
+    const defaultIndex = 22
+    const trend = [1, 2, 3, 4, 5, 6, 7, 15, 30, 60, 90, 120, 150].map((index, count) => {
 
-        const dataIndex = `d${index}`
+        const dataIndex = `day${index}`
         return {
             title: `D${index}`, dataIndex, label: '基本信息', default: defaultIndex + count, width: 110,
             render: (_: any, b: any) => {
-                if (moment().subtract(1, 'days') >= moment(b.dt === '总计' ? b.costDayBegin : b.dt).add(index - 1, 'days')) {
+                if (moment().subtract(1, 'days') >= moment(b.appName === '总计' ? b.costDayBegin : b.dt).add(index - 1, 'days')) {
                     const data = b?.[dataIndex]?.split('/')
                     return <div className={style.dbox} style={{ height: 102 }}>
-                        <span style={{ color: '#d81b60', fontWeight: 600 }}>新增:<span><Statistic value={data?.[2] || 0} precision={2} /></span></span>
-                        <span style={{ color: '#0f538a', fontWeight: 600 }}>累计:<span><Statistic value={data?.[3] || 0} precision={2} /></span></span>
-                        <span style={{ color: 'rgb(12,130,16)', fontWeight: 600 }}>增:<span><Statistic value={data?.[4] ? data?.[4] * 100 : 0} precision={2} valueStyle={!data?.[4] ? {} : data?.[4] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
-                        <span style={{ color: '#ff5722', fontWeight: 600 }}>回:<span><Statistic value={data?.[5] ? data?.[5] * 100 : 0} precision={2} valueStyle={!data?.[5] ? {} : data?.[5] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
-                        <span style={{ color: '#d81b60', fontWeight: 600 }}>倍:<span><Statistic value={data?.[6] || 0} precision={2} /></span></span>
+                        <span style={{ color: '#d81b60', fontWeight: 600 }}>新增:<span><Statistic value={data?.[0] || 0} precision={2} /></span></span>
+                        <span style={{ color: '#0f538a', fontWeight: 600 }}>累计:<span><Statistic value={data?.[1] || 0} precision={2} /></span></span>
+                        <span style={{ color: 'rgb(12,130,16)', fontWeight: 600 }}>增:<span><Statistic value={data?.[2] ? data?.[2] * 100 : 0} precision={2} valueStyle={!data?.[2] ? {} : data?.[2] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
+                        <span style={{ color: '#ff5722', fontWeight: 600 }}>回:<span><Statistic value={data?.[3] ? data?.[3] * 100 : 0} precision={2} valueStyle={!data?.[3] ? {} : data?.[3] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
+                        <span style={{ color: '#d81b60', fontWeight: 600 }}>倍:<span><Statistic value={data?.[4] || 0} precision={2} /></span></span>
                     </div>
                 }
                 return <div style={{ height: 102, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
             }
         }
-
     })
 
     return [
@@ -64,15 +63,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
                 },
                 {
-                    title: '推广媒体', dataIndex: 'accountType', label: '基本信息', align: 'center', width: 80, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={ACCOUNTTYPE[a as keyof typeof ACCOUNTTYPE]?.text} />)
-                },
-                {
-                    title: '变现广告位', dataIndex: 'realizationAdUnit', label: '基本信息', align: 'center', width: 80, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '总消耗', dataIndex: 'totalCost', label: '基本信息', align: 'right', width: 95, default: 8, sorter: true,
+                    title: '每日真实消耗', dataIndex: 'realCost', label: '基本信息', align: 'right', width: 95, default: 6, sorter: true,
                     className: 'padding_0',
                     render: (a: number) => <div style={{ height: 107, position: 'relative' }}>
                         <Progress
@@ -88,7 +79,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     </div>
                 },
                 {
-                    title: '消耗', dataIndex: 'cost', label: '基本信息', align: 'right', width: 85, default: 9, sorter: true,
+                    title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'right', width: 85, default: 7, sorter: true,
                     className: 'padding_0',
                     render: (a: number) => <div style={{ height: 107, position: 'relative' }}>
                         <Progress
@@ -104,57 +95,60 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     </div>
                 },
                 {
-                    title: '赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 10, sorter: true,
+                    title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '注册人数', dataIndex: 'userRegCnt', label: '基本信息', align: 'center', width: 80, default: 11, sorter: true,
+                    title: '新增用户人数', dataIndex: 'newUser1', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '注册成本', dataIndex: 'regPaid', label: '基本信息', align: 'center', width: 80, default: 12, sorter: true,
+                    title: '新增用户成本', dataIndex: 'newUserCost', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '今日留存人数', dataIndex: 'userRetentionCnt', label: '基本信息', align: 'center', width: 80, default: 13, sorter: true,
+                    title: 'DAU', dataIndex: 'dau1', label: '基本信息', align: 'center', width: 80, default: 11, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '今日留存率', dataIndex: 'userRetentionCntRatio', label: '基本信息', align: 'center', width: 80, default: 14, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                    title: '首日激活人数', dataIndex: 'firstUser', label: '基本信息', align: 'center', width: 80, default: 12, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日广告变现人数', dataIndex: 'appAdPayingUsers', label: '基本信息', align: 'center', width: 75, default: 15, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '首日激活成本', dataIndex: 'costPerAction', label: '基本信息', align: 'center', width: 80, default: 13, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
-
                 {
-                    title: '总ecpm', dataIndex: 'totalEcpm', label: '基本信息', align: 'center', width: 80, default: 16, sorter: true,
+                    title: '新增广告arpu', dataIndex: 'newPayArpu', label: '基本信息', align: 'center', width: 80, default: 14, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                },
+                {
+                    title: '新增ecpm', dataIndex: 'newEcpm', label: '基本信息', align: 'center', width: 80, default: 15, sorter: true,
                     render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总arpu', dataIndex: 'totalArpu', label: '基本信息', align: 'center', width: 80, default: 17, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
+                    title: '新增ecpm(应用自算)', dataIndex: 'newEcpm1', label: '基本信息', align: 'center', width: 80, default: 16, sorter: true,
+                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '广告总曝光量', dataIndex: 'viewTotal', label: '基本信息', align: 'center', width: 80, default: 18, sorter: true,
-                    render: (a: number, b: any) => <Statistic value={a || 0} />
+                    title: '首日激活变现人数', dataIndex: 'newAdUser', label: '基本信息', align: 'center', width: 80, default: 17, sorter: true,
+                    render: (a: number) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '累计总收入', dataIndex: 'totalIncome', label: '基本信息', align: 'right', width: 80, default: 19, sorter: true,
+                    title: '首日新增收入', dataIndex: 'newAdIncome', label: '基本信息', align: 'center', width: 80, default: 18, sorter: true,
                     render: (a: number) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '累计总回收', dataIndex: 'totalIncomRoi', label: '基本信息', align: 'right', width: 80, default: 20, sorter: true,
+                    title: '首日新增ROI', dataIndex: 'newAdRoi', label: '基本信息', align: 'center', width: 80, default: 19, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '分享成功人数', dataIndex: 'shareUv', label: '基本信息', align: 'center', width: 75, default: 21, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '首日激活用户LTV', dataIndex: 'motivateUserFirstLtv', label: '基本信息', align: 'center', width: 85, default: 20, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
                 },
                 {
-                    title: '分享后活跃人数', dataIndex: 'shareClkUv', label: '基本信息', align: 'center', width: 80, default: 22, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
+                    title: '"新增曝光pv', dataIndex: 'adShowPv', label: '基本信息', align: 'center', width: 85, default: 21, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
                 },
                 ...trend
             ]

+ 2 - 2
src/pages/iaaData/game/tencent/adList/index.tsx

@@ -93,8 +93,8 @@ const TencentIaaAd: React.FC = () => {
         <TablePro
             czChild={<Space>
                 {/* <Switch checkedChildren="开启全选" unCheckedChildren="关闭全选" checked={!isZj} onChange={(e) => { setIsZj(!e); }} /> */}
-                <Button type='primary' size="small" style={{ background: '#67c23a', borderColor: '#67c23a' }} loading={modifyStatusBatch.loading} icon={<PlayCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus(true)}>启动</Button>
-                <Button type='primary' size="small" style={{ background: '#e6a23c', borderColor: '#e6a23c' }} loading={modifyStatusBatch.loading} icon={<PauseCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus(false)}>暂停</Button>
+                <Button type='primary' style={{ background: '#67c23a', borderColor: '#67c23a' }} loading={modifyStatusBatch.loading} icon={<PlayCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus(true)}>启动</Button>
+                <Button type='primary' style={{ background: '#e6a23c', borderColor: '#e6a23c' }} loading={modifyStatusBatch.loading} icon={<PauseCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus(false)}>暂停</Button>
                 <Button type='primary' danger icon={<DeleteOutlined />} disabled={selectedRows.length === 0} onClick={() => {
                     setUpdateDate({ visible: true, type: '删除' })
                 }}>删除</Button>

+ 0 - 1
src/pages/iaaData/game/tencent/appCashTrend/tableConfig.tsx

@@ -28,7 +28,6 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                 return <div style={{ height: 102, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
             }
         }
-
     })
 
     return [

+ 0 - 94
src/pages/iaaData/ocenaengineIaa/adList/dayAd.tsx

@@ -1,94 +0,0 @@
-import { useAjax } from "@/Hook/useAjax"
-import { Button, Drawer } from "antd"
-import React, { useEffect, useState } from "react"
-import QueryForm from "@/components/QueryForm"
-import { CloseOutlined } from "@ant-design/icons"
-import TablePro from "@/components/TablePro"
-import moment from "moment"
-import { getByteAdEveryListApi } from "@/services/iaaData"
-import columns12 from "./tableConfigDay"
-
-interface Props {
-    queryForm: {
-        costDayBegin?: string,
-        costDayEnd?: string
-    }
-    iaaApp: string,
-    adName: string,
-    promotionId?: number
-    onClose?: () => void
-    visible?: boolean
-}
-
-/**
- * 广告每日监控
- * @returns 
- */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClose, visible }) => {
-
-    /***********************************/
-    const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
-    const [date, setDate] = useState<[string, string] | undefined>((queryForm?.costDayBegin && queryForm.costDayEnd) ? [queryForm.costDayBegin, queryForm.costDayEnd] : undefined)
-    const getByteAdEveryList = useAjax((params) => getByteAdEveryListApi(params))
-    /***********************************/
-
-    useEffect(() => {
-        let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
-        if (promotionId) {
-            params.adId = promotionId
-        }
-        if (date && date?.length > 0) {
-            params.costDayBegin = date[0]
-            params.costDayEnd = date[1]
-        } else {
-            delete params?.costDayBegin
-            delete params?.costDayEnd
-        }
-        getByteAdEveryList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, queryForm, data, date, iaaApp])
-
-    return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯广告每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: queryForm?.costDayBegin ? [moment(queryForm?.costDayBegin), moment(queryForm?.costDayEnd)] : null }}
-                onChange={(data: any) => {
-                    const { day1 } = data
-                    if (day1 && day1?.length === 2) {
-                        setDate([moment(day1[0]).format('YYYY-MM-DD'), moment(day1[1]).format('YYYY-MM-DD')])
-                    } else {
-                        setDate(undefined)
-                    }
-                }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-            />}
-            scroll={{ x: 1000, y: 600 }}
-            ajax={getByteAdEveryList}
-            loading={getByteAdEveryList.loading}
-            fixed={{ left: 3, right: 0 }}
-            dataSource={getByteAdEveryList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(data.pageNum.toString() + index.toString()) }))}
-            page={getByteAdEveryList?.data?.data?.current || 1}
-            pageSize={getByteAdEveryList?.data?.data?.size || 20}
-            total={getByteAdEveryList?.data?.data?.total || 0}
-            title='头条广告每日监控'
-            onChange={(pagination: any, _: any, sortData: any) => {
-                let { current, pageSize } = pagination
-                let newQueryForm = JSON.parse(JSON.stringify(data))
-                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
-                setData({ ...newQueryForm })
-            }}
-            config={columns12()}
-            configName={'头条广告每日监控'}
-        />
-    </Drawer>
-}
-
-export default React.memo(DayAd)

+ 0 - 7
src/pages/iaaData/ocenaengineIaa/adList/index.less

@@ -1,7 +0,0 @@
-.adDataBackColorClass {
-    background-color: #fff2e8;
-}
-
-.payDataBackColorClass {
-    background-color: #f9f0ff;
-}

+ 0 - 250
src/pages/iaaData/ocenaengineIaa/adList/index.tsx

@@ -1,250 +0,0 @@
-import QueryForm from "@/components/QueryForm";
-import TablePro from "@/components/TablePro";
-import { Button, message, Modal, notification, Space, Table } from "antd";
-import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
-import moment from "moment";
-import { getByteAdListApi, GetByteAdListProps, getByteAdTotalApi } from "@/services/iaaData";
-import { useAjax } from "@/Hook/useAjax";
-import columns12 from "./tableConfig";
-import { PauseCircleOutlined, PlayCircleOutlined } from "@ant-design/icons";
-import DayAd from "./dayAd";
-import { newEditTTAdgroupsDataApi } from "@/services/gameData";
-
-
-/**
- * 头条广告列表
- * @returns 
- */
-const AdList: React.FC = () => {
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [selectedRows, setSelectedRows] = useState<any[]>([])
-    const [queryForm, setQueryForm] = useState<GetByteAdListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().format('YYYY-MM-DD'),
-        costDayEnd: moment().format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([])
-    const [visible, setVisible] = useState<boolean>(false)
-    const [promotionId, setPromotionId] = useState<number>()
-    const [adName, setAdName] = useState<string>('')
-    const [failIdList, setFailIdList] = useState<{ adgroupId: number, code: number, message: string, messageCn: string }[]>([])
-    const [failVisible, setFailVisible] = useState<boolean>(false)
-
-    // const editAdqAdgroupsData = useAjax((params) => newEditAdqAdgroupsDataApi(params))
-    const getByteAdList = useAjax((params) => getByteAdListApi(params))
-    const getByteAdTotal = useAjax((params) => getByteAdTotalApi(params))
-    const newEditTTAdgroupsData = useAjax((params) => newEditTTAdgroupsDataApi(params))
-    /****************************************/
-
-    useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAdList.run({ ...queryForm, appId, productType })
-            getByteAdTotal.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])
-
-    const dayHandle = (data: any) => {
-        setVisible(true)
-        setAdName(data.adName)
-        setPromotionId(data.adId)
-    }
-
-    // 批量启停
-    const adStatus = (type: 'play' | 'suspend') => {
-        let params: any = {}
-        params.suspend = type === 'play' ? false : true
-        params.adgroupIds = selectedRows.map(item => item.accountId + ',' + item.adId)
-        if (params.adgroupIds.length === 0) {
-            message.warn(`所以账号都是${type === 'play' ? '启动' : '暂停'}状态,无需${type === 'play' ? '启动' : '暂停'}操作`)
-            return
-        }
-        let hide =  message.loading(`正在设置...`, 0, () => {
-            message.success('设置成功');
-        });
-        newEditTTAdgroupsData.run(params).then((res: any) => {
-            if (res?.failIdList?.length === 0) {
-                message.success(`操作完成!`)
-                getByteAdList.refresh()
-                setSelectedRows([])
-            } else {
-                setFailIdList(res?.list || [])
-                setFailVisible(true)
-            }
-            hide()
-        })
-    }
-
-    return <div>
-        <TablePro
-            czChild={<Space>
-                {/* <Switch checkedChildren="开启全选" unCheckedChildren="关闭全选" checked={!isZj} onChange={(e) => { setIsZj(!e); }} /> */}
-                <Button type='primary' size="small" style={{ background: '#67c23a', borderColor: '#67c23a' }} loading={newEditTTAdgroupsData.loading} icon={<PlayCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus('play')}>启动</Button>
-                <Button type='primary' size="small" style={{ background: '#e6a23c', borderColor: '#e6a23c' }} loading={newEditTTAdgroupsData.loading} icon={<PauseCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus('suspend')}>暂停</Button>
-                <span style={{ color: 'red' }}>操作完数据结果延时5分钟之内,即时结果去腾讯后台查看</span>
-            </Space>}
-            leftChild={<QueryForm
-                initialValues={{ day3: [moment(), moment()] }}
-                isAccountId
-                isPromotionName
-                isPutUserIdList
-                isCpaBid
-                isDeleted
-                isTTPricing
-                isTTStatus
-                isPromotionId
-                day1={{ placeholder: ['广告创建日期开始', '广告创建日期结束'] }}
-                day2={{ placeholder: ['投放日期开始', '投放日期结束'] }}
-                day3={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-                onChange={(data: any) => {
-                    console.log(data)
-                    const { promotionId, promotionName, day1, day2, day3, ...params } = data
-                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
-                    newQueryForm.adId = promotionId
-                    newQueryForm.adName = promotionName
-                    newQueryForm.pageNum = 1
-                    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(dayHandle)}
-            configName={'头条广告列表'}
-            fixed={{ left: 4, right: 2 }}
-            scroll={{ x: 1000, y: 620 }}
-            title='头条广告列表'
-            loading={getByteAdList.loading}
-            ajax={getByteAdList}
-            page={getByteAdList?.data?.data?.current || 1}
-            pageSize={getByteAdList?.data?.data?.size || 20}
-            total={getByteAdList?.data?.data?.total || 0}
-            dataSource={getByteAdList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: item.adId.toString(16) }))}
-            rowKey={'id'}
-            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 })
-            }}
-            rowSelection={{
-                selectedRowKeys: selectedRows.map(item => item.id),
-                getCheckboxProps: (record: any) => ({
-                    disabled: record.adStatus === 'PROJECT_STATUS_DELETE' || record?.accountId === '总计'
-                }),
-                onSelect: (record: { adId: string }, selected: boolean) => {
-                    if (selected) {
-                        selectedRows.push({ ...record })
-                        setSelectedRows([...selectedRows])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { adId: string }) => item.adId !== record.adId)
-                        setSelectedRows([...newSelectAccData])
-                    }
-                },
-                onSelectAll: (selected: boolean, selectedRowss: { adId: number }[], changeRows: { adId: number }[]) => {
-                    if (selected) {
-                        let newSelectAccData = [...selectedRows]
-                        changeRows.forEach((item: { adId: number }) => {
-                            let index = newSelectAccData.findIndex((ite: { adId: number }) => ite.adId === item.adId)
-                            if (index === -1) {
-                                newSelectAccData.push({ ...item })
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { adId: number }) => {
-                            let index = changeRows.findIndex((ite: { adId: number }) => ite.adId === item.adId)
-                            if (index !== -1) {
-                                return false
-                            } else {
-                                return true
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    }
-                }
-            }}
-        />
-
-        {visible && <DayAd iaaApp={initialState?.iaaApp as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
-        {failVisible && <Modal
-            title={<strong>报错信息</strong>}
-            open={failVisible}
-            className='modalResetCss'
-            width={650}
-            onCancel={() => { setFailVisible(false); setFailIdList([]) }}
-            footer={null}
-        >
-            <Table
-                size="small"
-                bordered
-                rowKey={'creativeId'}
-                columns={[{
-                    title: '创意ID',
-                    dataIndex: 'creativeId',
-                    key: 'creativeId',
-                    width: 110,
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                }, {
-                    title: 'code',
-                    dataIndex: 'code',
-                    key: 'code',
-                    width: 70,
-                    align: 'center',
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                }, {
-                    title: '错误信息',
-                    dataIndex: 'messageCn',
-                    key: 'messageCn',
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                }]}
-                dataSource={failIdList}
-            />
-        </Modal>}
-    </div>
-}
-
-export default AdList

+ 0 - 566
src/pages/iaaData/ocenaengineIaa/adList/tableConfig.tsx

@@ -1,566 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Progress, Space, Statistic } from "antd"
-import React from "react"
-import { ADSTATUSEnum, LANDINGTYPE, PRICINGEnum, PRODUCT_TYPE_ENUM, PROJECTSTATUs } from "../../const"
-import { APPTYPE } from "@/pages/iaaSystem/manage/const"
-import './index.less'
-
-function columns12(dayHandle: (data: any) => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-
-    return [
-        {
-            label: '账户信息',
-            data: [
-                {
-                    title: '推广账号名称', dataIndex: 'accountName', label: '账户信息', align: 'center', width: 100, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '推广账号ID', dataIndex: 'accountId', label: '账户信息', align: 'center', width: 100, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '备注', dataIndex: 'notes', label: '账户信息', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', label: '账户信息', align: 'center', width: 100, default: 5,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '渠道名称', dataIndex: 'agentName', label: '账户信息', align: 'center', width: 80, default: 16,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '渠道ID', dataIndex: 'agentId', label: '账户信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'zxPitcherName', label: '账户信息', align: 'center', width: 60, default: 15,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '余额', dataIndex: 'balance', label: '账户信息', align: 'right', width: 75, sorter: true, default: 21,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '账户信息', align: 'center', width: 80, default: 11,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用类型', dataIndex: 'appType', label: '账户信息', align: 'center', width: 80, default: 12,
-                    render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '账户信息', align: 'center', width: 100, default: 13,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '账户信息', align: 'center', width: 100,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序名称', dataIndex: 'mpName', label: '账户信息', align: 'center', width: 100, default: 14,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '账户信息', align: 'center', width: 100,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                }
-            ]
-        },
-        {
-            label: '广告信息',
-            data: [
-                {
-                    title: '广告组', dataIndex: 'campaignId', label: '广告信息', align: 'center', width: 100, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告组名称', dataIndex: 'campaignName', label: '广告信息', align: 'center', width: 100, default: 8,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'adName', label: '广告信息', align: 'center', width: 100, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'adId', label: '广告信息', align: 'center', width: 80, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '广告状态', dataIndex: 'adStatus', label: '广告信息', align: 'center', width: 95, default: 17,
-                    render: (a: string) => (<WidthEllipsis value={(ADSTATUSEnum as any)[a]} />)
-                },
-                {
-                    title: '项目名称', dataIndex: 'projectName', label: '广告信息', align: 'center', width: 75, default: 18,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '项目ID', dataIndex: 'projectId', label: '广告信息', align: 'center', width: 75,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '项目类型', dataIndex: 'adType', label: '广告信息', align: 'center', width: 75, default: 19,
-                    render: (a: string) => (<WidthEllipsis value={a === 'ALL' ? '所有广告' : a === 'SEARCH' ? '搜索广告' : '--'} />)
-                },
-                {
-                    title: '项目状态', dataIndex: 'proStatus', label: '广告信息', align: 'center', width: 75, default: 20,
-                    render: (a: string) => (<WidthEllipsis value={(PROJECTSTATUs as any)[a]} />)
-                },
-                {
-                    title: '项目预算', dataIndex: 'proBudget', label: '广告信息', align: 'right', width: 75, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '预算类型', dataIndex: 'budgetMode', label: '广告信息', align: 'center', width: 70, default: 29, 
-                    render: (a: string) => (<WidthEllipsis value={a === 'BUDGET_MODE_DAY' ? '日预算' : a === 'BUDGET_MODE_TOTAL' ? '总预算' : '--'} />)
-                },
-                {
-                    title: '推广目标', dataIndex: 'landingType', label: '广告信息', align: 'center', width: 100, default: 10,
-                    render: (a: string) => (<WidthEllipsis value={(LANDINGTYPE as any)[a]} />)
-                },
-                {
-                    title: '媒体平台', dataIndex: 'mediaPlatform', label: '广告信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '出价方式', dataIndex: 'pricing', label: '广告信息', align: 'center', width: 80, default: 22,
-                    render: (a: string) => (<WidthEllipsis value={(PRICINGEnum as any)[a]} />)
-                },
-                {
-                    title: '当前出价', dataIndex: 'cpaBid', label: '广告信息', align: 'center', width: 75, default: 23, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'dayBudget', label: '广告信息', align: 'right', width: 75, default: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '投放时间', dataIndex: 'startTime', label: '广告信息', align: 'center', width: 180, default: 31,
-                    render: (a: string, b: any) => b?.accountId === '总计' ? '--' : <WidthEllipsis value={a + (b?.endTime ? '~' + b?.endTime : '')} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'promotionCreateTime', label: '广告信息', align: 'center', width: 130, default: 32,
-                    render: (a: string, b: any) => <WidthEllipsis value={a} />
-                },
-                {
-                    title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '广告信息', align: 'center', width: 75, default: 30,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '消耗数据',
-            data: [
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '消耗数据', align: 'center', width: 85, default: 33, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'adTotalCost', label: '消耗数据', align: 'center', width: 85, default: 34, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                }
-            ]
-        },
-        {
-            label: '广告媒体端展示数据指标',
-            data: [
-                {
-                    title: '曝光量', dataIndex: 'showCount', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 35, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击量', dataIndex: 'click', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 36, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 37, sorter: true, 
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '点击均价', dataIndex: 'avgClickCost', label: '广告媒体端展示数据指标', align: 'center', width: 65, default: 38, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'avgShowCost', label: '广告媒体端展示数据指标', align: 'right', width: 65, default: 39, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-            ]
-        },
-        {
-            label: '广告媒体端转化数据指标',
-            data: [
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 25, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a} />
-                },
-                {
-                    title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 40, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 27, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 26, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活数', dataIndex: 'active', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 41, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活成本', dataIndex: 'activeCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 42, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活率', dataIndex: 'activeRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 43, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册数', dataIndex: 'register', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 49, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(广告)', dataIndex: 'activeRegisterCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 50, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册率', dataIndex: 'activeRegisterRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 51, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '关键行为数', dataIndex: 'gameAddiction', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 46, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '关键行为成本', dataIndex: 'gameAddictionCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 44, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '关键行为率', dataIndex: 'gameAddictionRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 45, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次留成本', dataIndex: 'attributionNextDayOpenCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存数', dataIndex: 'attributionNextDayOpenCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次留率(广告)', dataIndex: 'attributionNextDayOpenRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 72, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次留回传数', dataIndex: 'nextDayOpen', label: '广告媒体端转化数据指标', align: 'center', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存数', dataIndex: 'attributionRetention2dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存成本', dataIndex: 'attributionRetention2dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存率', dataIndex: 'attributionRetention2dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '3日留存数', dataIndex: 'attributionRetention3dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存成本', dataIndex: 'attributionRetention3dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存率', dataIndex: 'attributionRetention3dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '4日留存数', dataIndex: 'attributionRetention4dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '4日留存成本', dataIndex: 'attributionRetention4dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '4日留存率', dataIndex: 'attributionRetention4dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '5日留存数', dataIndex: 'attributionRetention5dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存成本', dataIndex: 'attributionRetention5dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存率', dataIndex: 'attributionRetention5dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '6日留存数', dataIndex: 'attributionRetention6dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '6日留存成本', dataIndex: 'attributionRetention6dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '6日留存率', dataIndex: 'attributionRetention6dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存数', dataIndex: 'attributionRetention7dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存总数', dataIndex: 'attributionRetention7dSumCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, default: 74, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存率', dataIndex: 'attributionRetention7dTotalCost', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存总成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, default: 73, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '小程序/小游戏变现指标',
-            data: [
-                {
-                    title: '小程序/小游戏当日LTV(首日)', dataIndex: 'attributionMicroGame0dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小程序/小游戏激活后三日LTV', dataIndex: 'attributionMicroGame3dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小程序/小游戏当日(首日)广告变现ROI', dataIndex: 'attributionMicroGame0dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, 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: 'attributionMicroGame3dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, 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: 'attributionMicroGame7dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小程序/小游戏激活后七日LTV', dataIndex: 'attributionMicroGame7dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '应用端数据指标',
-            data: [
-                {
-                    title: '今日注册人数', dataIndex: 'todayRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 47, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告总注册人数', dataIndex: 'totalRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 48, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(应用)', dataIndex: 'regCost', label: '应用端数据指标', align: 'right', width: 75, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均新增成本', dataIndex: 'totalRegCost', label: '应用端数据指标', align: 'right', width: 75, default: 52, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现人数', dataIndex: 'regFirstUser', label: '应用端数据指标', align: 'center', width: 85, default: 53, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现次数', dataIndex: 'regFirstCnt', label: '应用端数据指标', align: 'center', width: 85, default: 54, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现金额', dataIndex: 'regFirstAmount', label: '应用端数据指标', align: 'right', width: 85, default: 55, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日变现ROI', dataIndex: 'regFirstRoi', label: '应用端数据指标', align: 'center', width: 70, default: 56, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册24小时广告变现人数', dataIndex: 'regTwentyFourUser', label: '应用端数据指标', align: 'center', width: 85, default: 57, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现次数', dataIndex: 'regTwentyFourCnt', label: '应用端数据指标', align: 'center', width: 85, default: 58, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现金额', dataIndex: 'regTwentyFourAmount', label: '应用端数据指标', align: 'right', width: 85, default: 59, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时变现ROI', dataIndex: 'regTwentyFourRoi', label: '应用端数据指标', align: 'center', width: 70, default: 60, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册3日广告变现人数', dataIndex: 'regThreeUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数', dataIndex: 'regThreeCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现金额', dataIndex: 'regThreeAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日变现ROI', dataIndex: 'regThreeRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册7日广告变现人数', dataIndex: 'regSevenUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现次数', dataIndex: 'regSevenCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现金额', dataIndex: 'regSevenAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日变现ROI', dataIndex: 'regSevenRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '累计广告变现人数', dataIndex: 'regTotalUser', label: '应用端数据指标', align: 'center', width: 85, default: 61, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现次数', dataIndex: 'regTotalCnt', label: '应用端数据指标', align: 'center', width: 85, default: 62, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现金额', dataIndex: 'regTotalAmount', label: '应用端数据指标', align: 'right', width: 85, default: 63, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现ROI', dataIndex: 'regTotalRoi', label: '应用端数据指标', align: 'center', width: 70, default: 64, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '首日新增ARPU', dataIndex: 'firstNewArpu', label: '应用端数据指标', align: 'center', width: 80, default: 65, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告总ARPU', dataIndex: 'adTotalArpu', label: '应用端数据指标', align: 'center', width: 80, default: 66, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日ecpm', dataIndex: 'firstEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 67, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '总ecpm', dataIndex: 'totalEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 68, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均广告有效观看次数', dataIndex: 'userAvgLookCnt', label: '应用端数据指标', align: 'center', width: 85, default: 69, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '用户广告转化率', dataIndex: 'userAdConvertRate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-
-                {
-                    title: '次日留存率(应用)', dataIndex: 'active2Rate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存人数', dataIndex: 'active2User', label: '应用端数据指标', align: 'center', width: 75, default: 71, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '操作',
-            data: [
-                {
-                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 75,
-                    render: (_: number, b: any) => {
-                        if (b?.accountId === '总计') return '--'
-                        return <Space>
-                            <a onClick={() => dayHandle(b)} style={{ fontSize: 12 }}>广告每日监控</a>
-                            <a onClick={() => {
-                                window.open(`https://ad.oceanengine.com/superior/promote-manage/ad?aadvid=${b?.accountId}&searchInput=%2522${b?.adId}%2522&searchType=%25229%2522`)
-                            }} style={{ fontSize: 12 }}>头条广告</a>
-                        </Space>
-                    }
-                },
-                // {
-                //     title: '启停',
-                //     dataIndex: 'configuredStatus',
-                //     label: '操作',
-                //     align: 'center',
-                //     width: 45,
-                //     default: 1,
-                //     render: (a: string, b: any) => {
-                //         if (b?.accountId === '总计') {
-                //             return '--'
-                //         }
-                //         return <SwitchStatus configuredStatus={a} isDeleted={b?.isDeleted} adgroupId={b?.promotionId} onChange={onChange} />
-                //     }
-                // }
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 539
src/pages/iaaData/ocenaengineIaa/adList/tableConfigDay.tsx

@@ -1,539 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Progress, Statistic } from "antd"
-import React from "react"
-import { ADSTATUSEnum, LANDINGTYPE, PRICINGEnum, PRODUCT_TYPE_ENUM, PROJECTSTATUs } from "../../const"
-import { APPTYPE } from "@/pages/iaaSystem/manage/const"
-import './index.less'
-
-function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-
-    return [
-        {
-            label: '账户信息',
-            data: [
-                {
-                    title: '推广账号名称', dataIndex: 'accountName', label: '账户信息', align: 'center', width: 100, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '推广账号ID', dataIndex: 'accountId', label: '账户信息', align: 'center', width: 100, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '备注', dataIndex: 'notes', label: '账户信息', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', label: '账户信息', align: 'center', width: 100, default: 5,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '渠道名称', dataIndex: 'agentName', label: '账户信息', align: 'center', width: 80, default: 16,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '渠道ID', dataIndex: 'agentId', label: '账户信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'zxPitcherName', label: '账户信息', align: 'center', width: 60, default: 15,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '余额', dataIndex: 'balance', label: '账户信息', align: 'right', width: 75, sorter: true, default: 21,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '账户信息', align: 'center', width: 80, default: 11,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用类型', dataIndex: 'appType', label: '账户信息', align: 'center', width: 80, default: 12,
-                    render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '账户信息', align: 'center', width: 100, default: 13,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '账户信息', align: 'center', width: 100,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序名称', dataIndex: 'mpName', label: '账户信息', align: 'center', width: 100, default: 14,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '账户信息', align: 'center', width: 100,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                }
-            ]
-        },
-        {
-            label: '广告信息',
-            data: [
-                {
-                    title: '广告组', dataIndex: 'campaignId', label: '广告信息', align: 'center', width: 100, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告组名称', dataIndex: 'campaignName', label: '广告信息', align: 'center', width: 100, default: 8,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'adName', label: '广告信息', align: 'center', width: 100, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'adId', label: '广告信息', align: 'center', width: 80, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '广告状态', dataIndex: 'adStatus', label: '广告信息', align: 'center', width: 95, default: 17,
-                    render: (a: string) => (<WidthEllipsis value={(ADSTATUSEnum as any)[a]} />)
-                },
-                {
-                    title: '项目名称', dataIndex: 'projectName', label: '广告信息', align: 'center', width: 75, default: 18,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '项目ID', dataIndex: 'projectId', label: '广告信息', align: 'center', width: 75,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '项目类型', dataIndex: 'adType', label: '广告信息', align: 'center', width: 75, default: 19,
-                    render: (a: string) => (<WidthEllipsis value={a === 'ALL' ? '所有广告' : a === 'SEARCH' ? '搜索广告' : '--'} />)
-                },
-                {
-                    title: '项目状态', dataIndex: 'proStatus', label: '广告信息', align: 'center', width: 75, default: 20,
-                    render: (a: string) => (<WidthEllipsis value={(PROJECTSTATUs as any)[a]} />)
-                },
-                {
-                    title: '项目预算', dataIndex: 'proBudget', label: '广告信息', align: 'right', width: 75, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '预算类型', dataIndex: 'budgetMode', label: '广告信息', align: 'center', width: 70, default: 29, 
-                    render: (a: string) => (<WidthEllipsis value={a === 'BUDGET_MODE_DAY' ? '日预算' : a === 'BUDGET_MODE_TOTAL' ? '总预算' : '--'} />)
-                },
-                {
-                    title: '推广目标', dataIndex: 'landingType', label: '广告信息', align: 'center', width: 100, default: 10,
-                    render: (a: string) => (<WidthEllipsis value={(LANDINGTYPE as any)[a]} />)
-                },
-                {
-                    title: '媒体平台', dataIndex: 'mediaPlatform', label: '广告信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '出价方式', dataIndex: 'pricing', label: '广告信息', align: 'center', width: 80, default: 22,
-                    render: (a: string) => (<WidthEllipsis value={(PRICINGEnum as any)[a]} />)
-                },
-                {
-                    title: '当前出价', dataIndex: 'cpaBid', label: '广告信息', align: 'center', width: 75, default: 23, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'dayBudget', label: '广告信息', align: 'right', width: 75, default: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '投放时间', dataIndex: 'startTime', label: '广告信息', align: 'center', width: 180, default: 31,
-                    render: (a: string, b: any) => b?.accountId === '总计' ? '--' : <WidthEllipsis value={a + (b?.endTime ? '~' + b?.endTime : '')} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'promotionCreateTime', label: '广告信息', align: 'center', width: 130, default: 32,
-                    render: (a: string, b: any) => <WidthEllipsis value={a} />
-                },
-                {
-                    title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '广告信息', align: 'center', width: 75, default: 30,
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '消耗数据',
-            data: [
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '消耗数据', align: 'center', width: 100,
-                    render: (a: string) => <WidthEllipsis value={a} />
-                },
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '消耗数据', align: 'center', width: 85, default: 33, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'adTotalCost', label: '消耗数据', align: 'center', width: 85, default: 34, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                }
-            ]
-        },
-        {
-            label: '广告媒体端展示数据指标',
-            data: [
-                {
-                    title: '曝光量', dataIndex: 'showCount', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 35, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击量', dataIndex: 'click', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 36, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 37, sorter: true, 
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '点击均价', dataIndex: 'avgClickCost', label: '广告媒体端展示数据指标', align: 'center', width: 65, default: 38, sorter: true, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'avgShowCost', label: '广告媒体端展示数据指标', align: 'right', width: 65, default: 39, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-            ]
-        },
-        {
-            label: '广告媒体端转化数据指标',
-            data: [
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 25, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a} />
-                },
-                {
-                    title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 40, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 27, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 26, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活数', dataIndex: 'active', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 41, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活成本', dataIndex: 'activeCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 42, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活率', dataIndex: 'activeRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 43, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册数', dataIndex: 'register', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 49, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(广告)', dataIndex: 'activeRegisterCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 50, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册率', dataIndex: 'activeRegisterRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 51, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '关键行为数', dataIndex: 'gameAddiction', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 46, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '关键行为成本', dataIndex: 'gameAddictionCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 44, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '关键行为率', dataIndex: 'gameAddictionRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 45, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次留成本', dataIndex: 'attributionNextDayOpenCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存数', dataIndex: 'attributionNextDayOpenCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次留率(广告)', dataIndex: 'attributionNextDayOpenRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 72, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次留回传数', dataIndex: 'nextDayOpen', label: '广告媒体端转化数据指标', align: 'center', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存数', dataIndex: 'attributionRetention2dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存成本', dataIndex: 'attributionRetention2dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '2日留存率', dataIndex: 'attributionRetention2dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '3日留存数', dataIndex: 'attributionRetention3dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存成本', dataIndex: 'attributionRetention3dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存率', dataIndex: 'attributionRetention3dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '4日留存数', dataIndex: 'attributionRetention4dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '4日留存成本', dataIndex: 'attributionRetention4dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '4日留存率', dataIndex: 'attributionRetention4dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '5日留存数', dataIndex: 'attributionRetention5dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存成本', dataIndex: 'attributionRetention5dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存率', dataIndex: 'attributionRetention5dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '6日留存数', dataIndex: 'attributionRetention6dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '6日留存成本', dataIndex: 'attributionRetention6dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '6日留存率', dataIndex: 'attributionRetention6dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存数', dataIndex: 'attributionRetention7dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存总数', dataIndex: 'attributionRetention7dSumCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, default: 74, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存率', dataIndex: 'attributionRetention7dTotalCost', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存总成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, default: 73, className: "adDataBackColorClass",
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '小程序/小游戏变现指标',
-            data: [
-                {
-                    title: '小程序/小游戏当日LTV(首日)', dataIndex: 'attributionMicroGame0dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小程序/小游戏激活后三日LTV', dataIndex: 'attributionMicroGame3dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小程序/小游戏当日(首日)广告变现ROI', dataIndex: 'attributionMicroGame0dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, 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: 'attributionMicroGame3dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, 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: 'attributionMicroGame7dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小程序/小游戏激活后七日LTV', dataIndex: 'attributionMicroGame7dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '应用端数据指标',
-            data: [
-                {
-                    title: '今日注册人数', dataIndex: 'todayRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 47, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告总注册人数', dataIndex: 'totalRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 48, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(应用)', dataIndex: 'regCost', label: '应用端数据指标', align: 'right', width: 75, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均新增成本', dataIndex: 'totalRegCost', label: '应用端数据指标', align: 'right', width: 75, default: 52, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现人数', dataIndex: 'regFirstUser', label: '应用端数据指标', align: 'center', width: 85, default: 53, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现次数', dataIndex: 'regFirstCnt', label: '应用端数据指标', align: 'center', width: 85, default: 54, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现金额', dataIndex: 'regFirstAmount', label: '应用端数据指标', align: 'right', width: 85, default: 55, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日变现ROI', dataIndex: 'regFirstRoi', label: '应用端数据指标', align: 'center', width: 70, default: 56, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册24小时广告变现人数', dataIndex: 'regTwentyFourUser', label: '应用端数据指标', align: 'center', width: 85, default: 57, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现次数', dataIndex: 'regTwentyFourCnt', label: '应用端数据指标', align: 'center', width: 85, default: 58, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现金额', dataIndex: 'regTwentyFourAmount', label: '应用端数据指标', align: 'right', width: 85, default: 59, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时变现ROI', dataIndex: 'regTwentyFourRoi', label: '应用端数据指标', align: 'center', width: 70, default: 60, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册3日广告变现人数', dataIndex: 'regThreeUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数', dataIndex: 'regThreeCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现金额', dataIndex: 'regThreeAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日变现ROI', dataIndex: 'regThreeRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册7日广告变现人数', dataIndex: 'regSevenUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现次数', dataIndex: 'regSevenCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现金额', dataIndex: 'regSevenAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日变现ROI', dataIndex: 'regSevenRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '累计首日广告变现人数', dataIndex: 'regTotalUser', label: '应用端数据指标', align: 'center', width: 85, default: 61, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现次数', dataIndex: 'regTotalCnt', label: '应用端数据指标', align: 'center', width: 85, default: 62, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现金额', dataIndex: 'regTotalAmount', label: '应用端数据指标', align: 'right', width: 85, default: 63, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现ROI', dataIndex: 'regTotalRoi', label: '应用端数据指标', align: 'center', width: 70, default: 64, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '首日新增ARPU', dataIndex: 'firstNewArpu', label: '应用端数据指标', align: 'center', width: 80, default: 65, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告总ARPU', dataIndex: 'adTotalArpu', label: '应用端数据指标', align: 'center', width: 80, default: 66, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日ecpm', dataIndex: 'firstEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 67, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '总ecpm', dataIndex: 'totalEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 68, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均广告有效观看次数', dataIndex: 'userAvgLookCnt', label: '应用端数据指标', align: 'center', width: 85, default: 69, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '用户广告转化率', dataIndex: 'userAdConvertRate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                
-                {
-                    title: '次日留存率(应用)', dataIndex: 'active2Rate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存人数', dataIndex: 'active2User', label: '应用端数据指标', align: 'center', width: 75, default: 71, sorter: true, className: 'payDataBackColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 700
src/pages/iaaData/ocenaengineIaa/appEveryDayData/tableConfig.tsx

@@ -1,700 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Progress, Statistic } from "antd"
-import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-import { formatSecondsToTime } from "@/utils/utils"
-
-function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-
-    return [
-        {
-            label: '基本信息',
-            data: [
-                {
-                    title: '应用', dataIndex: 'appName', label: '基本信息', align: 'center', width: 120, default: 1,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '基本信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序名称', dataIndex: 'mpName', label: '基本信息', align: 'center', width: 85, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '基本信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '基本信息', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 80, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '累计消耗', dataIndex: 'costTotal', label: '基本信息', align: 'center', width: 95, default: 5, sorter: true,
-                    className: 'padding_0 redColorClass',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic style={{ fontWeight: 'bold' }} value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '每日真实消耗', dataIndex: 'costDruth', label: '基本信息', align: 'center', width: 90, default: 6, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'center', width: 85, default: 7, sorter: true,
-                    className: 'padding_0 redColorClass',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '推广广告账号数量', tips: '消耗大于0', dataIndex: 'accountCount', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '推广广告数量', tips: '消耗大于0', dataIndex: 'adCount', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '广告媒体端指标',
-            data: [
-                {
-                    title: '点击量(广告)', dataIndex: 'click', label: '广告媒体端指标', align: 'center', width: 65, default: 11, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '曝光量(广告)', dataIndex: 'showCount', label: '广告媒体端指标', align: 'center', width: 65, default: 12, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本(广告)', dataIndex: 'avgShowCost', label: '广告媒体端指标', align: 'right', width: 80, default: 13, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '点击均价(广告)', dataIndex: 'avgClickCost', label: '广告媒体端指标', align: 'right', width: 65, default: 14, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '点击率(广告)', dataIndex: 'ctr', label: '广告媒体端指标', align: 'center', width: 80, default: 15, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端指标', align: 'center', width: 65, default: 16, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端指标', align: 'right', width: 65, default: 17, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '广告媒体端指标', align: 'center', width: 80, default: 18, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活数(广告)', dataIndex: 'active', label: '广告媒体端指标', align: 'center', width: 65, default: 19, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活成本(广告)', dataIndex: 'activeCost', label: '广告媒体端指标', align: 'right', width: 65, default: 20, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '激活率(广告)', dataIndex: 'activeRate', label: '广告媒体端指标', align: 'center', width: 80, default: 21, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册数(广告)', dataIndex: 'register', label: '广告媒体端指标', align: 'center', width: 65, default: 22, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(广告)', dataIndex: 'activeRegisterCost', label: '广告媒体端指标', align: 'right', width: 65, default: 23, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '注册率(广告)', dataIndex: 'activeRegisterRate', label: '广告媒体端指标', align: 'center', width: 80, default: 24, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '当日LTV(首日)', dataIndex: 'attributionMicroGame0dLtv', label: '广告媒体端指标', align: 'center', width: 75, default: 25, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活后三日LTV', dataIndex: 'attributionMicroGame3dLtv', label: '广告媒体端指标', align: 'center', width: 65, default: 26, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活后七日LTV', dataIndex: 'attributionMicroGame7dLtv', label: '广告媒体端指标', align: 'center', width: 65, default: 27, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '当日(首日)广告变现ROI', dataIndex: 'attributionMicroGame0dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 28, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活后三日广告变现ROI', dataIndex: 'attributionMicroGame3dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 29, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活后七日广告变现ROI', dataIndex: 'attributionMicroGame7dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 30, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                }
-            ]
-        },
-        {
-            label: '应用系统数据',
-            data: [
-                {
-                    title: '今日新增注册人数(系统)', dataIndex: 'todayRegUserSys', label: '应用系统数据', align: 'center', width: 80, default: 31, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计注册人数(系统)', dataIndex: 'totalRegUserSys', label: '应用系统数据', align: 'center', width: 80, default: 32, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'DAU(系统)', dataIndex: 'dau', label: '应用系统数据', align: 'center', width: 80, default: 33, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '新增占比(系统)', dataIndex: 'newPro', label: '应用系统数据', align: 'center', width: 90, default: 34, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '今日新增注册成本(系统)', dataIndex: 'newRegCost', label: '应用系统数据', align: 'right', width: 80, default: 35, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
-                },
-                {
-                    title: '人均新增成本(系统)', dataIndex: 'avgNewRegCost', label: '应用系统数据', align: 'right', width: 80, default: 36, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
-                },
-                {
-                    title: '人均活跃成本(系统)', dataIndex: 'avgActiveCost', label: '应用系统数据', align: 'right', width: 80, default: 37, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
-                },
-                {
-                    title: '注册首日广告变现人数', dataIndex: 'regFirstUser', label: '应用系统数据', align: 'center', width: 80, default: 38, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现次数', dataIndex: 'regFirstCnt', label: '应用系统数据', align: 'center', width: 80, default: 39, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现金额', dataIndex: 'regFirstAmount', label: '应用系统数据', align: 'right', width: 100, default: 40, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册首日变现ROI', dataIndex: 'regFirstRoi', label: '应用系统数据', align: 'center', width: 80, default: 41, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册24小时广告变现人数', dataIndex: 'regTwentyFourUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现次数', dataIndex: 'regTwentyFourCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册24小时广告变现金额', dataIndex: 'regTwentyFourAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册24小时变现ROI', dataIndex: 'regTwentyFourRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册3日广告变现人数', dataIndex: 'regThreeUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数', dataIndex: 'regThreeCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现金额', dataIndex: 'regThreeAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册3日变现ROI', dataIndex: 'regThreeRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册7日广告变现人数', dataIndex: 'regSevenUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现次数', dataIndex: 'regSevenCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册7日广告变现金额', dataIndex: 'regSevenAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册7日变现ROI', dataIndex: 'regSevenRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册累计广告变现人数(系统)', dataIndex: 'regTotalUser', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册累计广告变现次数(系统)', dataIndex: 'regTotalCnt', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册累计广告变现金额(系统)', dataIndex: 'regTotalAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册累计广告变现ROI(系统)', dataIndex: 'regTotalRoi', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '首日新增ARPU(系统)', dataIndex: 'firstNewArpu', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告总ARPU(系统)', dataIndex: 'adTotalArpu', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日ecpm(系统)', dataIndex: 'firstEcpm', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '总ecpm(系统)', dataIndex: 'totalEcpm', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均广告有效观看次数', dataIndex: 'userAvgLookCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存人数(系统)', dataIndex: 'active2User', label: '应用系统数据', align: 'center', width: 70, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存率(系统)', dataIndex: 'active2Rate', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '用户广告转化率(系统)', dataIndex: 'userAdConvertRate', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '应用媒体数据',
-            data: [
-                {
-                    title: '今日新增用户人数(应用)', dataIndex: 'newUser1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计新增用户人数(应用)', dataIndex: 'totalNewUser1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'DAU(应用活跃用户人数)', dataIndex: 'dau1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '今日新增占比(应用)', dataIndex: 'newPro1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '今日新增用户成本(应用)', dataIndex: 'newUserCost', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '人均新增成本(应用)', dataIndex: 'avgNewCost', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '人均活跃成本(应用)', dataIndex: 'avgActiveCost1', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '分享次数', dataIndex: 'shareTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '打开次数', dataIndex: 'openTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均打开次数', dataIndex: 'perUserOpenTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '用户总停留时长', dataIndex: 'totalUserStayTimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
-                    render: (a: number) => {
-                        return formatSecondsToTime(a ? Math.round(a) : 0)
-                    }
-                },
-                {
-                    title: '人均停留时长', dataIndex: 'perUserStayTimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
-                    render: (a: number) => {
-                        return formatSecondsToTime(a ? Math.round(a) : 0)
-                    }
-                },
-                {
-                    title: '次均停留时长', dataIndex: 'avgStaytimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
-                    render: (a: number) => {
-                        return formatSecondsToTime(a ? Math.round(a) : 0)
-                    }
-                },
-                {
-                    title: '新增用户次日留存人数(应用)', dataIndex: 'newUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '新增用户次日留存率(应用)', dataIndex: 'newUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '活跃用户次日留存人数(应用)', dataIndex: 'actUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '活跃用户次日留存率(应用)', dataIndex: 'actUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '首日激活用户人数(应用)', dataIndex: 'firstUser', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '首日激活用户成本(应用)', dataIndex: 'costPerAction', label: '应用媒体数据', align: 'right', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '注册用户首日激活率(应用)', dataIndex: 'firstUserRate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日新增广告收入(应用)', dataIndex: 'newAdIncome', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '激活首日新增广告ROI(应用)', dataIndex: 'newAdRoi', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '首日激活用户变现人数(应用)', dataIndex: 'newAdUser', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '首日激活变现率(应用)', dataIndex: 'newAdRate', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '注册首日变现率(应用)', dataIndex: 'regAdFirstRate', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活用户首日新增ecpm', dataIndex: 'newEcpm', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活用户首日新增ARPU', dataIndex: 'newPayArpu', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
-                    render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活用户首日曝光pv(应用)', dataIndex: 'adShowPv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活用户首日点击数pv(应用)', dataIndex: 'adClickPv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活用户首日cpc', dataIndex: 'costPerClick', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活用户首日ctr', dataIndex: 'clickRate', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活用户次日留存人数(应用)', dataIndex: 'motivateUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活用户次日留存率(应用)', dataIndex: 'motivateUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活用户首日LTV(应用)', dataIndex: 'motivateUserFirstLtv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告变现收入(应用)', dataIndex: 'totalAdIncome', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '广告变现累计利润(应用)', dataIndex: 'totalAdProfit', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2}/>
-                },
-                {
-                    title: '广告变现成本利润率(应用)', dataIndex: 'totalAdProfitRate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '毛利率(应用)', dataIndex: 'grossMargin', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '累计广告变现ROI(应用)', dataIndex: 'totalAdRoi', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告位总数据(账面)', dataIndex: 'adZMTotal', label: '应用媒体数据', align: 'center',
-                    children: [
-                        {
-                            title: '广告请求PV',
-                            dataIndex: 'totalRequest',
-                            key: 'totalRequest',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '曝光PV',
-                            dataIndex: 'totalShow',
-                            key: 'totalShow',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击PV',
-                            dataIndex: 'totalClick',
-                            key: 'totalClick',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击率',
-                            dataIndex: 'totalClickRate',
-                            key: 'totalClickRate',
-                            width: 80,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                        },
-                        {
-                            title: 'ecpm',
-                            dataIndex: 'totalEcpm1',
-                            key: 'totalEcpm1',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                        {
-                            title: '广告收入',
-                            dataIndex: 'totalRealCost',
-                            key: 'totalRealCost',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                    ]
-                },
-                {
-                    title: '激励式视频(账面)', dataIndex: 'jlZMTotal', label: '应用媒体数据', align: 'center',
-                    children: [
-                        {
-                            title: '广告请求PV',
-                            dataIndex: 'videoRequest',
-                            key: 'videoRequest',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '曝光PV',
-                            dataIndex: 'videoShow',
-                            key: 'videoShow',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击PV',
-                            dataIndex: 'videoClick',
-                            key: 'videoClick',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击率',
-                            dataIndex: 'videoClickRate',
-                            key: 'videoClickRate',
-                            width: 80,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                        },
-                        {
-                            title: 'ecpm',
-                            dataIndex: 'videoEcpm',
-                            key: 'videoEcpm',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                        {
-                            title: '广告收入',
-                            dataIndex: 'videoRealCost',
-                            key: 'videoRealCost',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                    ]
-                },
-                {
-                    title: 'Banner广告(账面)', dataIndex: 'bannerZMTotal', label: '应用媒体数据', align: 'center',
-                    children: [
-                        {
-                            title: '广告请求PV',
-                            dataIndex: 'bannerRequest',
-                            key: 'bannerRequest',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '曝光PV',
-                            dataIndex: 'bannerShow',
-                            key: 'bannerShow',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击PV',
-                            dataIndex: 'bannerClick',
-                            key: 'bannerClick',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击率',
-                            dataIndex: 'bannerClickRate',
-                            key: 'bannerClickRate',
-                            width: 80,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                        },
-                        {
-                            title: 'ecpm',
-                            dataIndex: 'bannerEcpm',
-                            key: 'bannerEcpm',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                        {
-                            title: '广告收入',
-                            dataIndex: 'bannerRealCost',
-                            key: 'bannerRealCost',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                    ]
-                },
-                {
-                    title: '插屏广告(账面)', dataIndex: 'cpZMTotal', label: '应用媒体数据', align: 'center',
-                    children: [
-                        {
-                            title: '广告请求PV',
-                            dataIndex: 'plaqueRequest',
-                            key: 'plaqueRequest',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '曝光PV',
-                            dataIndex: 'plaqueShow',
-                            key: 'plaqueShow',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击PV',
-                            dataIndex: 'plaqueClick',
-                            key: 'plaqueClick',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a || 0} />
-                        },
-                        {
-                            title: '点击率',
-                            dataIndex: 'plaqueClickRate',
-                            key: 'plaqueClickRate',
-                            width: 80,
-                            align: 'center',
-                            render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                        },
-                        {
-                            title: 'ecpm',
-                            dataIndex: 'plaqueEcpm',
-                            key: 'plaqueEcpm',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                        {
-                            title: '广告收入',
-                            dataIndex: 'plaqueRealCost',
-                            key: 'plaqueRealCost',
-                            width: 70,
-                            align: 'center',
-                            render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
-                        },
-                    ]
-                },
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 49
src/pages/iaaData/tencentIaa/adList/const.tsx

@@ -1,49 +0,0 @@
-import { Badge } from "antd";
-import React from "react";
-
-/** 广告状态 */
-export const ADSTATUSEnum = {
-    'STATUS_PENDING': <Badge status="success" text={<span style={{ fontSize: 12 }}>审核中</span>} />,
-    'STATUS_DENIED': <Badge status="error" text={<span style={{ fontSize: 12 }}>审核不通过</span>} />,
-    'STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>暂停中</span>} />,
-    'STATUS_READY': <Badge status="default" text={<span style={{ fontSize: 12 }}>未到投放时间</span>} />,
-    'STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中</span>} />,
-    'STATUS_STOP': '投放结束',
-    'STATUS_ACTIVE_CAMPAIGN_SUSPEND': '广告被暂停',
-    'STATUS_PART_READY': '部分待投放',
-    'STATUS_PART_ACTIVE': '部分投放中',
-    'STATUS_DELETED': <Badge status="error" text={<span style={{ fontSize: 12 }}>已删除</span>} />,
-    'STATUS_UNKNOWN': '未知状态',
-    'STATUS_FROZEN': '冻结',
-    'STATUS_PREPARE': '准备中',
-    'STATUS_ACTIVE_ACCOUNT_LIMIT': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户达日限额</span>} />,
-    'STATUS_ACTIVE_ACCOUNT_EMPTY': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
-    'STATUS_ACTIVE_ACCOUNT_FROZEN': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
-    'STATUS_ACTIVE_AD_LIMIT': <Badge status="error" text={<span style={{ fontSize: 12 }}>广告达日限额(预算不足)</span>} />,
-}
-
-/** 出价方式 */
-export enum PRICINGEnum {
-    "BID_MODE_CPC" = "CPC",
-    "BID_MODE_CPA" = "CPA",
-    "BID_MODE_CPM" = "CPM",
-    "BID_MODE_OCPC" = "oCPC",
-    "BID_MODE_OCPM" = "oCPM"
-}
-
-export enum LANDINGTYPEEnum {
-    'PROMOTED_OBJECT_TYPE_APP_ANDROID' = 'Android 应用',
-    'PROMOTED_OBJECT_TYPE_APP_IOS' = 'IOS 应用',
-    'PROMOTED_OBJECT_TYPE_ECOMMERCE' = '电商推广',
-    'PROMOTED_OBJECT_TYPE_LINK_WECHAT' = '品牌活动推广',
-    'PROMOTED_OBJECT_TYPE_APP_ANDROID_MYAPP' = '应用宝推广',
-    'PROMOTED_OBJECT_TYPE_LOCAL_ADS_WECHAT' = '本地广告',
-    'PROMOTED_OBJECT_TYPE_QQ_BROWSER_MINI_PROGRAM' = 'QQ 浏览器小程序',
-    'PROMOTED_OBJECT_TYPE_QQ_MESSAGE' = 'QQ 消息',
-    'PROMOTED_OBJECT_TYPE_QZONE_VIDEO_PAGE' = '视频说说',
-    'PROMOTED_OBJECT_TYPE_LEAD_AD' = '销售线索收集',
-    'PROMOTED_OBJECT_TYPE_MINI_GAME_WECHAT' = '微信小游戏',
-    'PROMOTED_OBJECT_TYPE_MINI_GAME_QQ' = 'QQ 小游戏',
-    'PROMOTED_OBJECT_TYPE_WECHAT_OFFICIAL_ACCOUNT' = '微信公众号',
-    'PROMOTED_OBJECT_TYPE_APP_QUICK_APP' = '快应用',
-}

+ 0 - 94
src/pages/iaaData/tencentIaa/adList/dayAd.tsx

@@ -1,94 +0,0 @@
-import { useAjax } from "@/Hook/useAjax"
-import { Button, Drawer } from "antd"
-import React, { useEffect, useState } from "react"
-import columns12 from './tableConfigDay'
-import QueryForm from "@/components/QueryForm"
-import { CloseOutlined } from "@ant-design/icons"
-import TablePro from "@/components/TablePro"
-import moment from "moment"
-import { getGDTDailyListApi } from "@/services/iaaData"
-
-interface Props {
-    queryForm: {
-        costDayBegin?: string,
-        costDayEnd?: string
-    }
-    iaaApp: string,
-    adName: string,
-    promotionId?: number
-    onClose?: () => void
-    visible?: boolean
-}
-
-/**
- * 广告每日监控
- * @returns 
- */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClose, visible }) => {
-
-    /***********************************/
-    const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
-    const [date, setDate] = useState<[string, string] | undefined>((queryForm?.costDayBegin && queryForm.costDayEnd) ? [queryForm.costDayBegin, queryForm.costDayEnd] : undefined)
-    const getGDTDailyList = useAjax((params) => getGDTDailyListApi(params))
-    /***********************************/
-
-    useEffect(() => {
-        let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
-        if (promotionId) {
-            params.promotionId = promotionId
-        }
-        if (date && date?.length > 0) {
-            params.costDayBegin = date[0]
-            params.costDayEnd = date[1]
-        } else {
-            delete params?.costDayBegin
-            delete params?.costDayEnd
-        }
-        getGDTDailyList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, queryForm, data, date, iaaApp])
-
-    return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯广告每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: queryForm?.costDayBegin ? [moment(queryForm?.costDayBegin), moment(queryForm?.costDayEnd)] : null }}
-                onChange={(data: any) => {
-                    const { day1 } = data
-                    if (day1 && day1?.length === 2) {
-                        setDate([moment(day1[0]).format('YYYY-MM-DD'), moment(day1[1]).format('YYYY-MM-DD')])
-                    } else {
-                        setDate(undefined)
-                    }
-                }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-            />}
-            scroll={{ x: 1000, y: 600 }}
-            ajax={getGDTDailyList}
-            loading={getGDTDailyList.loading}
-            fixed={{ left: 3, right: 0 }}
-            dataSource={getGDTDailyList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(data.pageNum.toString() + index.toString()) }))}
-            page={getGDTDailyList?.data?.data?.current || 1}
-            pageSize={getGDTDailyList?.data?.data?.size || 20}
-            total={getGDTDailyList?.data?.data?.total || 0}
-            title='腾讯广告每日监控'
-            onChange={(pagination: any, _: any, sortData: any) => {
-                let { current, pageSize } = pagination
-                let newQueryForm = JSON.parse(JSON.stringify(data))
-                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
-                setData({ ...newQueryForm })
-            }}
-            config={columns12()}
-            configName={'腾讯广告每日监控'}
-        />
-    </Drawer>
-}
-
-export default React.memo(DayAd)

+ 0 - 0
src/pages/iaaData/tencentIaa/adList/index.less


+ 0 - 214
src/pages/iaaData/tencentIaa/adList/index.tsx

@@ -1,214 +0,0 @@
-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"
-import { Button, message, notification, Space } from "antd"
-import { newEditAdqAdgroupsDataApi } from "@/services/gameData"
-import { PauseCircleOutlined, PlayCircleOutlined } from "@ant-design/icons"
-import DayAd from "./dayAd"
-
-/**
- * 腾讯广告列表
- * @returns 
- */
-const TencentIaaAd: React.FC = () => {
-
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [selectedRows, setSelectedRows] = useState<any[]>([])
-    const [queryForm, setQueryForm] = useState<GetGDTListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().format('YYYY-MM-DD'),
-        costDayEnd: moment().format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([])
-    const [visible, setVisible] = useState<boolean>(false)
-    const [promotionId, setPromotionId] = useState<number>()
-    const [adName, setAdName] = useState<string>('')
-
-    const editAdqAdgroupsData = useAjax((params) => newEditAdqAdgroupsDataApi(params))
-    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])
-
-    const dayHandle = (data: any) => {
-        setVisible(true)
-        setAdName(data.promotionName)
-        setPromotionId(data.promotionId)
-    }
-
-    // 批量启停
-    const adStatus = (type: 'play' | 'suspend') => {
-        let params: any = {}
-        if (type === 'play') {
-            params.configuredStatus = 'AD_STATUS_NORMAL'
-            params.adgroupIds = selectedRows.filter((item: { configuredStatus: string, promotionId: number }) => item.configuredStatus === 'AD_STATUS_SUSPEND').map(item => item.promotionId)
-        } else {
-            params.configuredStatus = 'AD_STATUS_SUSPEND'
-            params.adgroupIds = selectedRows.filter((item: { configuredStatus: string, promotionId: number }) => item.configuredStatus === 'AD_STATUS_NORMAL').map(item => item.promotionId)
-        }
-        if (params.adgroupIds.length === 0) {
-            message.warn(`所以账号都是${type === 'play' ? '启动' : '暂停'}状态,无需${type === 'play' ? '启动' : '暂停'}操作`)
-            return
-        }
-        editAdqAdgroupsData.run(params).then(res => {
-            message.success(`${type === 'play' ? '启动' : '暂停'}成功: ${res.success},失败: ${res.fail}`)//
-            if (res?.fail) {
-                notification.error({
-                    message: `${type === 'play' ? '启动' : '暂停'}失败`,
-                    description: `成功: ${res.success},修改失败${res.fail}条,失败的请到任务列表查看`,
-                    duration: 0
-                });
-            }
-            getGDTList.refresh()
-            setSelectedRows([])
-        })
-    }
-
-
-    return <div>
-        <TablePro
-            czChild={<Space>
-                {/* <Switch checkedChildren="开启全选" unCheckedChildren="关闭全选" checked={!isZj} onChange={(e) => { setIsZj(!e); }} /> */}
-                <Button type='primary' size="small" style={{ background: '#67c23a', borderColor: '#67c23a' }} loading={editAdqAdgroupsData.loading} icon={<PlayCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus('play')}>启动</Button>
-                <Button type='primary' size="small" style={{ background: '#e6a23c', borderColor: '#e6a23c' }} loading={editAdqAdgroupsData.loading} icon={<PauseCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => adStatus('suspend')}>暂停</Button>
-                <span style={{ color: 'red' }}>操作完数据结果延时5分钟之内,即时结果去腾讯后台查看</span>
-            </Space>}
-            leftChild={<QueryForm
-                initialValues={{ day3: [moment(), moment()] }}
-                isAccountId
-                isPromotionName
-                isPutUserIdList
-                isCpaBid
-                isDeleted
-                isPricing
-                isStatus
-                isPromotionId
-                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))
-                    newQueryForm.pageNum = 1
-                    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(dayHandle, () => { getGDTList.refresh() })}
-            configName={'腾讯广告列表'}
-            fixed={{ left: 4, right: 2 }}
-            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) => ({ ...item, id: item.promotionId }))}
-            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 })
-            }}
-            rowSelection={{
-                selectedRowKeys: selectedRows.map(item => item.promotionId + ''),
-                getCheckboxProps: (record: any) => ({
-                    disabled: record.status === 'STATUS_DELETED' || record?.accountId === '总计'
-                }),
-                onSelect: (record: { promotionId: number }, selected: boolean) => {
-                    if (selected) {
-                        selectedRows.push({ ...record })
-                        setSelectedRows([...selectedRows])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { promotionId: number }) => item.promotionId !== record.promotionId)
-                        setSelectedRows([...newSelectAccData])
-                    }
-                },
-                onSelectAll: (selected: boolean, selectedRowss: { promotionId: number }[], changeRows: { promotionId: number }[]) => {
-                    if (selected) {
-                        let newSelectAccData = [...selectedRows]
-                        changeRows.forEach((item: { promotionId: number }) => {
-                            let index = newSelectAccData.findIndex((ite: { promotionId: number }) => ite.promotionId === item.promotionId)
-                            if (index === -1) {
-                                newSelectAccData.push({ ...item })
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { promotionId: number }) => {
-                            let index = changeRows.findIndex((ite: { promotionId: number }) => ite.promotionId === item.promotionId)
-                            if (index !== -1) {
-                                return false
-                            } else {
-                                return true
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    }
-                }
-            }}
-        />
-
-        {visible && <DayAd iaaApp={initialState?.iaaApp as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
-    </div>
-}
-
-export default TencentIaaAd

+ 0 - 40
src/pages/iaaData/tencentIaa/adList/switchStatus.tsx

@@ -1,40 +0,0 @@
-import { useAjax } from "@/Hook/useAjax"
-import { newEditAdqAdgroupsDataApi } from "@/services/gameData"
-import { message, notification, Switch } from "antd"
-import React from "react"
-
-
-
-/**
- * 修改启停
- */
-interface Props {
-    configuredStatus: string,
-    isDeleted?: boolean,
-    adgroupId: number,
-    onChange?: () => void
-}
-const SwitchStatus: React.FC<Props> = (prosp) => {
-
-    const { configuredStatus, isDeleted, adgroupId, onChange } = prosp
-    const editAdqAdgroupsData = useAjax((params) => newEditAdqAdgroupsDataApi(params))
-    
-    const switchHandle = (adgroupIds: number[], configuredStatus: string) => {
-        editAdqAdgroupsData.run({ adgroupIds, configuredStatus }).then(res => {
-            message.success(`${configuredStatus === 'AD_STATUS_NORMAL' ? '启动' : '暂停'}成功`)
-            if (res?.fail) {
-                notification.error({
-                    message: `${configuredStatus === 'AD_STATUS_NORMAL' ? '启动' : '暂停'}失败`,
-                    description: `修改失败${res.fail}条,失败的请到任务列表查看`,
-                    duration: 0
-                });
-            }
-            onChange?.()
-        })
-    }
-
-    return <Switch size="small" checked={configuredStatus === 'AD_STATUS_NORMAL'} loading={editAdqAdgroupsData.loading} disabled={isDeleted} onChange={(checked) => switchHandle([adgroupId] ,checked ? 'AD_STATUS_NORMAL' : 'AD_STATUS_SUSPEND')}/>
-}
-
-
-export default React.memo(SwitchStatus)

+ 0 - 592
src/pages/iaaData/tencentIaa/adList/tableConfig.tsx

@@ -1,592 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Badge, Progress, Space, Statistic } from "antd"
-import React from "react"
-import { AD_STATUS_ENUM, BID_MODE_ENUM, PRODUCT_TYPE_ENUM } from "../../const"
-import SwitchStatus from "./switchStatus"
-import CreativePreview from "../../components/CreativePreview"
-
-function columns12(dayHandle: (data: any) => void, onChange?: () => void): { 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: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '腾讯广告列表', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '腾讯广告列表', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '腾讯广告列表', align: 'center', width: 100, default: 5,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'pitcherName', label: '腾讯广告列表', align: 'center', width: 60, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'promotionName', label: '腾讯广告列表', align: 'center', width: 120, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'promotionId', label: '腾讯广告列表', align: 'center', width: 90, default: 8,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告状态', dataIndex: 'status', label: '腾讯广告列表', align: 'center', width: 75, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', 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} precision={2} />
-                },
-                {
-                    title: '竞价信用账户', dataIndex: 'creditRollBalance', label: '腾讯广告列表', align: 'center', width: 85,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '专用账户', dataIndex: 'specialGiftBalance', label: '腾讯广告列表', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '微信小游戏内购赠送金', dataIndex: 'mpGameDeveloperGiftBalance', label: '腾讯广告列表', align: 'center', width: 75,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏直接激励金资金账户', dataIndex: 'gameChargeDirectRewardsGiftBalance', label: '腾讯广告列表', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '微信小游戏内购快周转', dataIndex: 'mpGameDeveloperWorkingFundBalance', label: '腾讯广告列表', align: 'center', width: 90,
-                    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: 14,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'budget', label: '腾讯广告列表', align: 'right', width: 75, default: 15, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 90, default: 16,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50, default: 17,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a === 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 18,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 19,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '腾讯广告列表', align: 'center', width: 85, default: 20, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯广告列表', align: 'center', width: 85, default: 21, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯广告列表', align: 'center', width: 70, default: 22, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯广告列表', align: 'center', width: 70, default: 23, 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: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯广告列表', align: 'right', width: 65, default: 25, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯广告列表', align: 'center', width: 65, default: 26, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯广告列表', align: 'center', width: 70, default: 30, 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: 31, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯广告列表', align: 'center', width: 75, default: 33, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 34,
-                    render: (a: any, b: any) => {
-                        if (b?.accountId === '总计') {
-                            return '--'
-                        }
-                        if (a?.length) {
-                            let deliveryMode: string[] = []
-                            let creativePreview = a?.map((item: { creativeComponents: any, deliveryMode: string }) => {
-                                deliveryMode.push(item.deliveryMode)
-                                return { ...item?.creativeComponents }
-                            })
-                            return <CreativePreview creativePreview={creativePreview} deliveryMode={deliveryMode} />
-                        }
-                        return null
-                    }
-                }
-            ]
-        },
-        {
-            label: 'IAA补充指标',
-            data: [
-                {
-                    title: '首日ROI', dataIndex: 'firstRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '其他业务(其他指标)',
-            data: [
-                {
-                    title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数', dataIndex: 'regPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数', dataIndex: 'regDedupPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本', dataIndex: 'regCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: 'APP激活次数', dataIndex: 'activatedCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'APP点击激活率', dataIndex: 'clickActivatedRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: 'APP激活成本', dataIndex: 'activatedCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活注册率', dataIndex: 'activateRegisterRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存次数', dataIndex: 'retentionCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存人数', dataIndex: 'miniGameRetentionD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存率', dataIndex: 'retentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存成本', dataIndex: 'retentionCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '关键页面次日留存率', dataIndex: 'appKeyPageRetentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存率', dataIndex: 'miniGameRetentionD1Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存成本', dataIndex: 'miniGameRetentionD1Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存人数', dataIndex: 'appRetentionD3Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存成本(人数)', dataIndex: 'appRetentionD3Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存率(人数)', dataIndex: 'appRetentionD3Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '5日留存人数', dataIndex: 'appRetentionD5Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存成本(人数)', dataIndex: 'appRetentionD5Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '5日留存率(人数)', dataIndex: 'appRetentionD5Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存人数', dataIndex: 'appRetentionD7Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存成本(人数)', dataIndex: 'appRetentionD7Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日留存率(人数)', dataIndex: 'appRetentionD7Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '小游戏(平台上报)',
-            data: [
-                {
-                    title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGameIncomeRoi1', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数(平台上报)', dataIndex: 'regPlaPv', label: '小游戏(平台上报)', width: 90, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '操作',
-            data: [
-                {
-                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
-                    render: (_: number, b: any) => {
-                        if (b?.accountId === '总计') return '--'
-                        return <Space>
-                            <a onClick={() => dayHandle(b)} style={{ fontSize: 12 }}>广告每日监控</a>
-                            <a onClick={() => {
-                                window.open(`https://ad.qq.com/atlas/${b?.accountId}/admanage/adgroup?tab=adgroup&query={%22operation_status%22:[%22CALCULATE_STATUS_EXCLUDE_DEL%22],%22system_status%22:[],%22search_name%22:%22${b.promotionId}%22}`)
-                            }} style={{ fontSize: 12 }}>腾讯广告</a>
-                        </Space>
-                    }
-                },
-                {
-                    title: '启停',
-                    dataIndex: 'configuredStatus',
-                    label: '操作',
-                    align: 'center',
-                    width: 45,
-                    default: 1,
-                    render: (a: string, b: any) => {
-                        if (b?.accountId === '总计') {
-                            return '--'
-                        }
-                        return <SwitchStatus configuredStatus={a} isDeleted={b?.isDeleted} adgroupId={b?.promotionId} onChange={onChange} />
-                    }
-                }
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 390
src/pages/iaaData/tencentIaa/adList/tableConfigDay.tsx

@@ -1,390 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Badge, Statistic } from "antd"
-import React from "react"
-import { AD_STATUS_ENUM, BID_MODE_ENUM, PRODUCT_TYPE_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: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '腾讯广告列表', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '腾讯广告列表', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '腾讯广告列表', align: 'center', width: 100, default: 5,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'pitcherName', label: '腾讯广告列表', align: 'center', width: 60, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'promotionName', label: '腾讯广告列表', align: 'center', width: 120, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'promotionId', label: '腾讯广告列表', align: 'center', width: 90, default: 8,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告状态', dataIndex: 'status', label: '腾讯广告列表', align: 'center', width: 75, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', 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: 14,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'budget', label: '腾讯广告列表', align: 'right', width: 75, default: 15, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 90, default: 16,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50, default: 17,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a === 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 18,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 19,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '腾讯广告列表', align: 'right', width: 70, default: 20, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯广告列表', align: 'right', width: 85, default: 21, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯广告列表', align: 'center', width: 70, default: 22, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯广告列表', align: 'center', width: 70, default: 23, 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: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯广告列表', align: 'right', width: 65, default: 25, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯广告列表', align: 'center', width: 65, default: 26, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯广告列表', align: 'center', width: 70, default: 30, 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: 31, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯广告列表', align: 'center', width: 75, default: 33, 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

+ 0 - 99
src/pages/iaaData/tencentIaa/appCashAssay/index.tsx

@@ -1,99 +0,0 @@
-import QueryForm from "@/components/QueryForm";
-import TablePro from "@/components/TablePro";
-import { useAjax } from "@/Hook/useAjax";
-import { getAppAnalysisListApi, GetAppAnalysisListProps, getAppAnalysisTotalApi } from "@/services/iaaData";
-import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
-import moment from "moment";
-import columns12 from "./tableConfig";
-
-/**
- * 应用变现分析
- * @returns 
- */
-const AppCashAssay: React.FC = () => {
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<GetAppAnalysisListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-        costDayEnd: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([])
-
-    const getAppAnalysisList = useAjax((params) => getAppAnalysisListApi(params))
-    const getAppAnalysisTotal = useAjax((params) => getAppAnalysisTotalApi(params))
-    /****************************************/
-
-    useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppAnalysisList.run({ ...queryForm, appId, productType })
-            getAppAnalysisTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
-                if (res?.data) {
-                    let data = res?.data
-                    data.id = 1
-                    data.costDayBegin = queryForm?.costDayBegin || moment().format('YYYY-MM-DD')
-                    data.dt = '总计'
-                    setTotalData([data])
-                } else {
-                    setTotalData([{ id: 1, dt: '总计' }])
-                }
-            })
-        }
-
-    }, [queryForm, initialState?.iaaApp])
-
-    return <div>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: [moment().subtract(1, 'days'), moment().subtract(1, 'days')] }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-                onChange={(data: any) => {
-                    console.log(data)
-                    const { day1, ...params } = data
-                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
-                    newQueryForm.pageNum = 1
-                    if (day1 && day1?.length === 2) {
-                        newQueryForm['costDayBegin'] = moment(day1[0]).format('YYYY-MM-DD')
-                        newQueryForm['costDayEnd'] = moment(day1[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={getAppAnalysisList.loading}
-            ajax={getAppAnalysisList}
-            page={getAppAnalysisList?.data?.data?.current || 1}
-            pageSize={getAppAnalysisList?.data?.data?.size || 20}
-            total={getAppAnalysisList?.data?.data?.total || 0}
-            dataSource={getAppAnalysisList?.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 AppCashAssay

+ 0 - 213
src/pages/iaaData/tencentIaa/appCashAssay/tableConfig.tsx

@@ -1,213 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Progress, Statistic } from "antd"
-import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-import style from '../appCashRetained/index.less'
-import moment from "moment"
-import { formatSecondsToTime } from "@/utils/utils"
-import { ACCOUNTTYPE, APPTYPE } from "@/pages/iaaSystem/manage/const"
-
-function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-    const defaultIndex = 23
-    const days = Array(90).fill('').map((_, index) => {
-
-        const dataIndex = `d${index + 1}`
-        let day: any = {
-            title: `D${index + 1}`, dataIndex, label: '应用变现分析', width: 120,
-            children: [
-                {
-                    title: '注册用户留存',
-                    dataIndex: `trend${index + 1}`,
-                    key: `trend${index + 1}`,
-                    width: 100,
-                    align: 'center',
-                    className: index % 2 ? "goldColor1Class" : undefined,
-                    render: (_: any, b: any) => {
-                        if (moment().subtract(1, 'days') >= moment(b.dt === '总计' ? b.costDayBegin : b.dt).add(index, 'days')) {
-                            const data = b?.[dataIndex]?.split('/')
-                            return <div className={style.dbox}>
-                                <span style={{ color: '#d81b60', fontWeight: 600 }}>人数:<span><Statistic value={data?.[0] || 0} /></span></span>
-                                <span style={{ color: '#0f538a', fontWeight: 600 }}>率:<span><Statistic value={data?.[1] ? data?.[1] * 100 : 0} precision={2} valueStyle={!data?.[1] ? {} : data?.[1] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
-                            </div>
-                        }
-                        return <div style={{ height: 45.84, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
-                    },
-                },
-                {
-                    title: '人均',
-                    dataIndex: `income${index}`,
-                    key: `income${index}`,
-                    width: 140,
-                    align: 'center',
-                    className: index % 2 ? "goldColor1Class" : undefined,
-                    render: (_: any, b: any) => {
-                        if (moment().subtract(1, 'days') >= moment(b.dt === '总计' ? b.costDayBegin : b.dt).add(index, 'days')) {
-                            const data = b?.[dataIndex]?.split('/')
-                            return <div className={style.dbox}>
-                                <span style={{ color: '#d81b60', fontWeight: 600 }}>在线时长:<span>{formatSecondsToTime(data?.[2] ? Math.round(data?.[2]) : 0)}</span></span>
-                                <span style={{ color: '#0f538a', fontWeight: 600 }}>启动次数:<span><Statistic value={data?.[3] || 0} precision={2} /></span></span>
-                                <span style={{ color: 'rgb(12,130,16)', fontWeight: 600 }}>看广告数:<span><Statistic value={data?.[4] || 0} precision={2} /></span></span>
-                            </div>
-                        }
-                        return <div style={{ height: 45.84, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
-                    }
-                },
-                {
-                    title: '广告',
-                    dataIndex: `ad${index}`,
-                    key: `ad${index}`,
-                    width: 120,
-                    align: 'center',
-                    className: index % 2 ? "goldColor1Class" : undefined,
-                    render: (_: any, b: any) => {
-                        if (moment().subtract(1, 'days') >= moment(b.dt === '总计' ? b.costDayBegin : b.dt).add(index, 'days')) {
-                            const data = b?.[dataIndex]?.split('/')
-                            return <div className={style.dbox}>
-                                <span style={{ color: 'rgb(12,130,16)', fontWeight: 600 }}>渗透率:<span><Statistic value={data?.[5] ? data?.[5] * 100 : 0} precision={2} valueStyle={!data?.[5] ? {} : data?.[5] >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" /></span></span>
-                                <span style={{ color: '#ff5722', fontWeight: 600 }}>eCPM:<span><Statistic value={data?.[6] || 0} precision={2} /></span></span>
-                                <span style={{ color: '#d81b60', fontWeight: 600 }}>ARPU:<span><Statistic value={data?.[7] || 0} precision={2} /></span></span>
-                            </div>
-                        }
-                        return <div style={{ height: 45.84, width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>--</div>
-                    }
-                },
-            ]
-        }
-        if (index < 30) {
-            day.default = defaultIndex + index
-        }
-        return day
-    })
-
-    return [
-        {
-            label: '应用变现分析',
-            data: [
-                {
-                    title: '日期', dataIndex: 'dt', label: '应用变现分析', align: 'center', width: 80, default: 1,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '应用变现分析', align: 'center', width: 120, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '应用变现分析', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序名称', dataIndex: 'mpName', label: '应用变现分析', align: 'center', width: 85, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '应用变现分析', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '应用变现分析', align: 'center', width: 80, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用类型', dataIndex: 'appType', label: '应用变现分析', align: 'center', width: 80, default: 5,
-                    render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
-                },
-                {
-                    title: '推广媒体', dataIndex: 'accountType', label: '应用变现分析', align: 'center', width: 80, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={ACCOUNTTYPE[a as keyof typeof ACCOUNTTYPE]?.text} />)
-                },
-                {
-                    title: '变现广告位', dataIndex: 'realizationAdUnit', label: '应用变现分析', align: 'center', width: 80, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '总消耗', dataIndex: 'totalCost', label: '应用变现分析', align: 'right', width: 95, default: 8, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 66.27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '消耗', dataIndex: 'cost', label: '应用变现分析', align: 'right', width: 85, default: 9, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 66.27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '赔付金', dataIndex: 'payout', label: '应用变现分析', align: 'right', width: 80, default: 10, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册人数', dataIndex: 'userRegCnt', label: '应用变现分析', align: 'center', width: 80, default: 11, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本', dataIndex: 'regPaid', label: '应用变现分析', align: 'center', width: 80, default: 12, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '最新留存人数', dataIndex: 'userRetentionCnt', label: '应用变现分析', align: 'center', width: 80, default: 13, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '最新留存率', dataIndex: 'userRetentionRatio', label: '应用变现分析', align: 'center', width: 80, default: 14, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现人数', dataIndex: 'adMonetizeUv', label: '应用变现分析', align: 'center', width: 75, default: 15, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '总广告ecpm', dataIndex: 'totalAdEcpm', label: '应用变现分析', align: 'center', width: 80, default: 16, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '总广告ARPU', dataIndex: 'totalAdArpu', label: '应用变现分析', align: 'center', width: 80, default: 17, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告曝光量', dataIndex: 'viewTotal', label: '应用变现分析', align: 'center', width: 80, default: 18, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计总收入', dataIndex: 'totalIncome', label: '应用变现分析', align: 'right', width: 80, default: 19, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '累计总回收', dataIndex: 'incomeRoi', label: '应用变现分析', align: 'center', width: 80, default: 20, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '分享成功人数', dataIndex: 'shareUv', label: '应用变现分析', align: 'center', width: 75, default: 21, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '分享后活跃人数', dataIndex: 'shareClkUv', label: '应用变现分析', align: 'center', width: 80, default: 22, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                ...days
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 12
src/pages/iaaData/tencentIaa/appCashRetained/index.less

@@ -1,12 +0,0 @@
-.dbox{
-    display: flex;
-    flex-flow: column;
-    align-items: center;
-    font-size: 12px;
-    // padding: 10px;
-    >span{
-        display: flex;
-        justify-content: left;
-        width: 100%;
-    }
-}

+ 0 - 100
src/pages/iaaData/tencentIaa/appCashRetained/index.tsx

@@ -1,100 +0,0 @@
-import { getAppTrendListApi, GetAppTrendListProps, getAppTrendTotalApi } from "@/services/iaaData";
-import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
-import moment from "moment";
-import { useAjax } from "@/Hook/useAjax";
-import TablePro from "@/components/TablePro";
-import QueryForm from "@/components/QueryForm";
-import columns12 from "./tableConfig";
-
-/**
- * 应用变现留存
- * @returns 
- */
-const AppCashTrend: React.FC = () => {
-
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<GetAppTrendListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-        costDayEnd: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([])
-
-    const getAppTrendList = useAjax((params) => getAppTrendListApi(params))
-    const getAppTrendTotal = useAjax((params) => getAppTrendTotalApi(params))
-    /****************************************/
-
-    useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTrendList.run({ ...queryForm, appId, productType })
-            getAppTrendTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
-                if (res?.data) {
-                    let data = res?.data
-                    data.id = 1
-                    data.costDayBegin = queryForm?.costDayBegin || moment().format('YYYY-MM-DD')
-                    data.dt = '总计'
-                    setTotalData([data])
-                } else {
-                    setTotalData([{ id: 1, dt: '总计' }])
-                }
-            })
-        }
-
-    }, [queryForm, initialState?.iaaApp])
-
-    return <div>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: [moment().subtract(1, 'days'), moment().subtract(1, 'days')] }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-                onChange={(data: any) => {
-                    console.log(data)
-                    const { day1, ...params } = data
-                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
-                    newQueryForm.pageNum = 1
-                    if (day1 && day1?.length === 2) {
-                        newQueryForm['costDayBegin'] = moment(day1[0]).format('YYYY-MM-DD')
-                        newQueryForm['costDayEnd'] = moment(day1[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={getAppTrendList.loading}
-            ajax={getAppTrendList}
-            page={getAppTrendList?.data?.data?.current || 1}
-            pageSize={getAppTrendList?.data?.data?.size || 20}
-            total={getAppTrendList?.data?.data?.total || 0}
-            dataSource={getAppTrendList?.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 AppCashTrend

+ 0 - 12
src/pages/iaaData/tencentIaa/appCashTrend/index.less

@@ -1,12 +0,0 @@
-.dbox{
-    display: flex;
-    flex-flow: column;
-    align-items: center;
-    font-size: 12px;
-    // padding: 10px;
-    >span{
-        display: flex;
-        justify-content: left;
-        width: 100%;
-    }
-}

+ 0 - 100
src/pages/iaaData/tencentIaa/appCashTrend/index.tsx

@@ -1,100 +0,0 @@
-import { getAppTrendListApi, GetAppTrendListProps, getAppTrendNewListApi, getAppTrendNewTotalApi, getAppTrendTotalApi } from "@/services/iaaData";
-import React, { useEffect, useState } from "react"
-import { useModel } from "umi";
-import moment from "moment";
-import { useAjax } from "@/Hook/useAjax";
-import TablePro from "@/components/TablePro";
-import QueryForm from "@/components/QueryForm";
-import columns12 from "./tableConfig";
-
-/**
- * 应用变现趋势
- * @returns 
- */
-const AppCashTrend: React.FC = () => {
-
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [queryForm, setQueryForm] = useState<GetAppTrendListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-        costDayEnd: moment().subtract(1, 'days').format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([])
-
-    const getAppTrendList = useAjax((params) => getAppTrendNewListApi(params))
-    const getAppTrendTotal = useAjax((params) => getAppTrendNewTotalApi(params))
-    /****************************************/
-
-    useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTrendList.run({ ...queryForm, appId, productType })
-            getAppTrendTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
-                if (res?.data) {
-                    let data = res?.data
-                    data.id = 1
-                    data.costDayBegin = queryForm?.costDayBegin || moment().format('YYYY-MM-DD')
-                    data.dt = '总计'
-                    setTotalData([data])
-                } else {
-                    setTotalData([{ id: 1, dt: '总计' }])
-                }
-            })
-        }
-
-    }, [queryForm, initialState?.iaaApp])
-
-    return <div>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: [moment().subtract(1, 'days'), moment().subtract(1, 'days')] }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-                onChange={(data: any) => {
-                    console.log(data)
-                    const { day1, ...params } = data
-                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
-                    newQueryForm.pageNum = 1
-                    if (day1 && day1?.length === 2) {
-                        newQueryForm['costDayBegin'] = moment(day1[0]).format('YYYY-MM-DD')
-                        newQueryForm['costDayEnd'] = moment(day1[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={getAppTrendList.loading}
-            ajax={getAppTrendList}
-            page={getAppTrendList?.data?.data?.current || 1}
-            pageSize={getAppTrendList?.data?.data?.size || 20}
-            total={getAppTrendList?.data?.data?.total || 0}
-            dataSource={getAppTrendList?.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 AppCashTrend

+ 0 - 535
src/pages/iaaData/tencentIaa/appEveryDayData/tableConfig.tsx

@@ -1,535 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Progress, Statistic } from "antd"
-import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-import { formatSecondsToTime } from "@/utils/utils"
-
-function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-
-    return [
-        {
-            label: '基本信息',
-            data: [
-                {
-                    title: '应用', dataIndex: 'appName', label: '基本信息', align: 'center', width: 120, default: 1,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '基本信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序名称', dataIndex: 'mpName', label: '基本信息', align: 'center', width: 85, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '基本信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '基本信息', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 80, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '累计消耗', dataIndex: 'costToday', label: '基本信息', align: 'center', width: 95, default: 5, sorter: true,
-                    className: 'padding_0 redColorClass',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic style={{ fontWeight: 'bold' }} value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '每日真实消耗', dataIndex: 'costTotal', label: '基本信息', align: 'center', width: 90, default: 6, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'center', width: 85, default: 7, sorter: true,
-                    className: 'padding_0 redColorClass',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '推广广告账号数量', tips: '消耗大于0', dataIndex: 'accountCount', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '推广广告数量', tips: '消耗大于0', dataIndex: 'adCount', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true, className: 'redColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '应用端指标',
-            data: [
-                {
-                    title: '累计注册人数', dataIndex: 'regUserTotal', label: '应用端指标', align: 'center', width: 80, default: 11, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '新增注册人数', dataIndex: 'regUserNew', label: '应用端指标', align: 'center', width: 80, default: 12, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'DAU', tips: '日活用户人数', dataIndex: 'dau', label: '应用端指标', align: 'center', width: 80, default: 13, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '新增占比', tips: '新增注册人数/DAU', dataIndex: 'newProportion', label: '应用端指标', align: 'center', width: 90, default: 14, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现累计利润', tips: '广告变现累计收入-累计消耗', dataIndex: 'totalProfit', label: '应用端指标', align: 'right', width: 100, default: 15, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现利润率', tips: '(广告变现累计收入-累计消耗)/累计消耗*100%', dataIndex: 'profitRate', label: '应用端指标', align: 'center', width: 100, default: 16, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现收入', dataIndex: 'adMonRevenue', label: '应用端指标', align: 'right', width: 80, default: 17, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
-                },
-                {
-                    title: '广告变现累计收入', dataIndex: 'adMonRevenueTotal', label: '应用端指标', align: 'right', width: 85, default: 18, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
-                },
-                {
-                    title: '新增用户成本', tips: '总消耗/新增注册人数', dataIndex: 'newUserRate', label: '应用端指标', align: 'right', width: 80, default: 19, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均新增成本', tips: '累计消耗/累计注册人数', dataIndex: 'avgUserRate', label: '应用端指标', align: 'right', width: 80, default: 20, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均活跃成本', tips: '累计消耗/DAU', dataIndex: 'avgActiveRate', label: '应用端指标', align: 'right', width: 80, default: 21, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '分享用户人数', dataIndex: 'shareUser', label: '应用端指标', align: 'center', width: 70, default: 22, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '分享次数', dataIndex: 'shareCount', label: '应用端指标', align: 'center', width: 60, default: 23, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均分享次数', tips: '分享次数/分享用户人数', dataIndex: 'avgShareCount', label: '应用端指标', align: 'center', width: 80, default: 24, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '分享用户占比', tips: '分享用户人数/DAU', dataIndex: 'shareUserProportion', label: '应用端指标', align: 'center', width: 80, default: 25, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '新增次日留存人数', dataIndex: 'newRetainedTomorrow', label: '应用端指标', align: 'center', width: 80, default: 26, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '新增注册次日留存率', tips: '新增注册次日留存人数/新增注册人数', dataIndex: 'newRetainedTomorrowRate', label: '应用端指标', align: 'center', width: 80, default: 27, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '活跃用户次日留存人数', dataIndex: 'retainedUserTomorrow', label: '应用端指标', align: 'center', width: 85, default: 28, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={0} />
-                },
-                {
-                    title: '活跃用户次日留存率', tips: '指定时间活跃(即访问小游戏)的用户,在之后的第1天(或周、月),再次访问小游戏的用户数占比', dataIndex: 'retainedUserTomorrowRate', label: '应用端指标', align: 'center', width: 85, default: 29, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '活跃用户访问次数', dataIndex: 'activeUserAccessCount', label: '应用端指标', align: 'center', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '活跃用户人均访问次数', tips: '活跃用户访问次数/活跃用户人数', dataIndex: 'avgActiveUserAccessCount', label: '应用端指标', align: 'center', width: 100, default: 30, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '活跃用户停留总时长', tips: '活跃用户人均停留时长*活跃用户人数', dataIndex: 'activeDuration', label: '应用端指标', align: 'center', width: 110, default: 31, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => {
-                        return formatSecondsToTime(a ? Math.round(a) : 0)
-                    }
-                },
-                {
-                    title: '活跃用户人均停留时长', tips: '活跃用户停留总时长/活跃用户人数', dataIndex: 'avgActiveDuration', label: '应用端指标', align: 'center', width: 120, default: 32, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => {
-                        return formatSecondsToTime(a ? Math.round(a) : 0)
-                    }
-                },
-                {
-                    title: '广告新增ARPU', tips: '广告变现收入/新增注册人数', dataIndex: 'nweAdArpu', label: '应用端指标', align: 'center', width: 80, default: 33, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告总ARPU', tips: '广告累计变现收入/累计注册人数', dataIndex: 'adArpuTotal', label: '应用端指标', align: 'center', width: 80, default: 34, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激励视频广告收入', dataIndex: 'videoAdIncome', label: '应用端指标', align: 'right', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激励视频广告ecpm', dataIndex: 'videoAdEcpm', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激励视频拉取量', dataIndex: 'videoAdCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均视频次数', dataIndex: 'avgUserVideoCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '插屏广告收入', dataIndex: 'plaqueAdIncome', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '插屏广告ecpm', dataIndex: 'plaqueAdEcpm', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '插屏广告拉取量', dataIndex: 'plaqueAdCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '插屏广告曝光量', dataIndex: 'interstitialExposureCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '插屏广告点击量', dataIndex: 'interstitialClickCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激励视频曝光量', dataIndex: 'videoExposureCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激励视频点击量', dataIndex: 'videoClickCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'Banner广告点击量', dataIndex: 'bannerClickCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'Banner广告曝光量', dataIndex: 'bannerExposureCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'Banner广告收入', dataIndex: 'bannerIncome', label: '应用端指标', align: 'right', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: 'Banner广告ecpm', dataIndex: 'bannerEcpm', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: 'banner广告拉取量', dataIndex: 'bannerReqSuccCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均Banner广告广告收益', dataIndex: 'avgUserBannerIncome', label: '应用端指标', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均激励视频收益', dataIndex: 'avgUserVideoIncome', label: '应用端指标', align: 'right', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '人均插屏广告次数', dataIndex: 'avgUserInterstitialCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均插屏广告收益', dataIndex: 'avgPlaqueAdIncome', label: '应用端指标', align: 'right', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '人均Banner广告次数', dataIndex: 'avgUserBannerCount', label: '应用端指标', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '广告媒体端指标',
-            data: [
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '广告媒体端指标', align: 'center', width: 65, default: 35, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '广告媒体端指标', align: 'center', width: 80, default: 36, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '广告媒体端指标', align: 'center', width: 80, default: 37, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '广告媒体端指标', align: 'right', width: 80, default: 38, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日变现ARPPU', tips: '注册首日广告变现金额(平台上报)/小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日变现ARPU', tips: '小游戏注册首日广告变现金额(平台上报)/小游戏注册人数', dataIndex: 'miniGameFirstDayAdPayingArppu', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '广告媒体端指标', align: 'right', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日ROI', tips: '小游戏注册首日广告变现金额(平台上报)/消耗*100%', dataIndex: 'miniGameFirstDayAdPayingRoi', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现次数(平台上报)', dataIndex: 'incomePv24hPla', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现ARPPU(平台上报)', dataIndex: 'firstDayAdPurArppuCost24hPla', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现ARPU(平台上报)', dataIndex: 'firstDayAdPurArpuCost24hPla', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现成本', dataIndex: 'firstDayAdPurArpuCost24hPlaCost', label: '广告媒体端指标', align: 'right', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现ROI', dataIndex: 'firstDayAdPurArpuCost24hPlaRoi', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ARPPU(平台上报)', dataIndex: 'adPurArppuDay3Cost', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ARPU(平台上报)', dataIndex: 'adPurArpuDay3Cost', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现成本(平台上报)', dataIndex: 'adPurDay3Cost', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ROI', dataIndex: 'adPurDay3Roi', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册7日广告变现金额(平台上报)', dataIndex: 'miniGameRegD7Amount', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ARPPU(平台上报)', dataIndex: 'miniGameRegD7Arppu', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ARPU(平台上报)', dataIndex: 'miniGameRegD7Arpu', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现成本(平台上报', dataIndex: 'miniGameRegD7Cost', label: '广告媒体端指标', align: 'right', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ROI', dataIndex: 'miniGameRegD7Roi', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '广告媒体端指标', align: 'center', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '广告媒体端指标', align: 'right', width: 100, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现ARPPU(平台上报)', dataIndex: 'miniGameAdMonetizationArppu', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '广告媒体端指标', align: 'center', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '广告媒体端指标', align: 'right', width: 80, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现总ROI', dataIndex: 'miniGameAdMonetizationRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 39, sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                }
-            ]
-        },
-        {
-            label: '应用广告金指标',
-            data: [
-                {
-                    title: '广告金账户余额', dataIndex: 'totalBalance', label: '应用广告金指标', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告金账户即将过期金额', dataIndex: 'expireBalance', label: '应用广告金指标', align: 'right', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告金账户余额过期时间', dataIndex: 'expireTime', label: '应用广告金指标', align: 'center', width: 85,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告金结算金额', dataIndex: 'amt', label: '应用广告金指标', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告金结算金额有效期', dataIndex: 'amtExpireTime', label: '应用广告金指标', align: 'center', width: 85,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告金金额', dataIndex: 'adFund', label: '应用广告金指标', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '累计广告金金额', dataIndex: 'adFundTotal', label: '应用广告金指标', align: 'right', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '30天内激励用户人数', dataIndex: 'usersWithinThirtyDays', label: '应用广告金指标', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '30天以上的激励用户人数', dataIndex: 'usersBeyondThirtyDays', label: '应用广告金指标', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '30天内激励用户广告流水', dataIndex: 'amtWithinThirtyDays', label: '应用广告金指标', align: 'right', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '30天以上的激励用户广告流水', dataIndex: 'amtBeyondThirtyDays', label: '应用广告金指标', align: 'right', width: 100, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '外部应用激励用户广告流水', dataIndex: 'outerAdFund', label: '应用广告金指标', align: 'right', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '30天内激励用户占比', dataIndex: 'usersWithinThirtyPro', label: '应用广告金指标', align: 'center', width: 85, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                }
-            ]
-        },
-        {
-            label: '应用回收数据指标',
-            data: [
-                {
-                    title: '应用总收入', dataIndex: 'appTotalAmount', label: '应用回收数据指标', align: 'right', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '应用累计收入', dataIndex: 'appAddAmount', label: '应用回收数据指标', align: 'right', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '应用累计利润', dataIndex: 'appTotalProfit', label: '应用回收数据指标', align: 'right', width: 100, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '应用累计利润率', dataIndex: 'appTotalProfitRate', label: '应用回收数据指标', align: 'center', width: 100, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                }
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 55
src/pages/iaaData/tencentIaa/dynamic/const.tsx

@@ -1,55 +0,0 @@
-import { Badge } from "antd";
-import React from "react";
-
-/** 广告状态 */
-export const ADSTATUSEnum = {
-    'STATUS_PENDING': <Badge status="success" text={<span style={{ fontSize: 12 }}>审核中</span>} />,
-    'STATUS_DENIED': <Badge status="error" text={<span style={{ fontSize: 12 }}>审核不通过</span>} />,
-    'STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>暂停中</span>} />,
-    'STATUS_READY': <Badge status="default" text={<span style={{ fontSize: 12 }}>未到投放时间</span>} />,
-    'STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中</span>} />,
-    'STATUS_STOP': '投放结束',
-    'STATUS_ACTIVE_CAMPAIGN_SUSPEND': '广告被暂停',
-    'STATUS_PART_READY': '部分待投放',
-    'STATUS_PART_ACTIVE': '部分投放中',
-    'STATUS_DELETED': <Badge status="error" text={<span style={{ fontSize: 12 }}>已删除</span>} />,
-    'STATUS_UNKNOWN': '未知状态',
-    'STATUS_FROZEN': '冻结',
-    'STATUS_PREPARE': '准备中',
-    'STATUS_ACTIVE_ACCOUNT_LIMIT': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户达日限额</span>} />,
-    'STATUS_ACTIVE_ACCOUNT_EMPTY': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
-    'STATUS_ACTIVE_ACCOUNT_FROZEN': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
-    'STATUS_ACTIVE_AD_LIMIT': <Badge status="error" text={<span style={{ fontSize: 12 }}>广告达日限额(预算不足)</span>} />,
-}
-
-/** 出价方式 */
-export enum PRICINGEnum {
-    "BID_MODE_CPC" = "CPC",
-    "BID_MODE_CPA" = "CPA",
-    "BID_MODE_CPM" = "CPM",
-    "BID_MODE_OCPC" = "oCPC",
-    "BID_MODE_OCPM" = "oCPM"
-}
-
-export enum LANDINGTYPEEnum {
-    'PROMOTED_OBJECT_TYPE_APP_ANDROID' = 'Android 应用',
-    'PROMOTED_OBJECT_TYPE_APP_IOS' = 'IOS 应用',
-    'PROMOTED_OBJECT_TYPE_ECOMMERCE' = '电商推广',
-    'PROMOTED_OBJECT_TYPE_LINK_WECHAT' = '品牌活动推广',
-    'PROMOTED_OBJECT_TYPE_APP_ANDROID_MYAPP' = '应用宝推广',
-    'PROMOTED_OBJECT_TYPE_LOCAL_ADS_WECHAT' = '本地广告',
-    'PROMOTED_OBJECT_TYPE_QQ_BROWSER_MINI_PROGRAM' = 'QQ 浏览器小程序',
-    'PROMOTED_OBJECT_TYPE_QQ_MESSAGE' = 'QQ 消息',
-    'PROMOTED_OBJECT_TYPE_QZONE_VIDEO_PAGE' = '视频说说',
-    'PROMOTED_OBJECT_TYPE_LEAD_AD' = '销售线索收集',
-    'PROMOTED_OBJECT_TYPE_MINI_GAME_WECHAT' = '微信小游戏',
-    'PROMOTED_OBJECT_TYPE_MINI_GAME_QQ' = 'QQ 小游戏',
-    'PROMOTED_OBJECT_TYPE_WECHAT_OFFICIAL_ACCOUNT' = '微信公众号',
-    'PROMOTED_OBJECT_TYPE_APP_QUICK_APP' = '快应用',
-}
-
-// 投放模式
-export enum DELIVERY_MODE_Enum {
-    DELIVERY_MODE_CUSTOMIZE = '自定义创意',
-    DELIVERY_MODE_COMPONENT = '组件化创意'
-}

+ 0 - 98
src/pages/iaaData/tencentIaa/dynamic/dayAd.tsx

@@ -1,98 +0,0 @@
-import { useAjax } from "@/Hook/useAjax"
-import { Button, Drawer } from "antd"
-import React, { useEffect, useState } from "react"
-import columns12 from './tableConfigDay'
-import QueryForm from "@/components/QueryForm"
-import { CloseOutlined } from "@ant-design/icons"
-import TablePro from "@/components/TablePro"
-import moment from "moment"
-import { getGDTDynamicDayListApi } from "@/services/iaaData"
-
-interface Props {
-    queryForm: {
-        costDayBegin?: string,
-        costDayEnd?: string
-    }
-    iaaApp: string,
-    adName: string,
-    promotionId?: number
-    dynamicCreativeId?: number
-    onClose?: () => void
-    visible?: boolean
-}
-
-/**
- * 广告每日监控
- * @returns 
- */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynamicCreativeId, onClose, visible }) => {
-
-    /***********************************/
-    const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
-    const [date, setDate] = useState<[string, string] | undefined>((queryForm?.costDayBegin && queryForm.costDayEnd) ? [queryForm.costDayBegin, queryForm.costDayEnd] : undefined)
-    const getGDTDynamicDayList = useAjax((params) => getGDTDynamicDayListApi(params))
-    /***********************************/
-
-    useEffect(() => {
-        let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
-        if (promotionId) {
-            params.promotionId = promotionId
-        }
-        if (dynamicCreativeId) {
-            params.dynamicCreativeId = dynamicCreativeId
-        }
-        if (date && date?.length > 0) {
-            params.costDayBegin = date[0]
-            params.costDayEnd = date[1]
-        } else {
-            delete params?.costDayBegin
-            delete params?.costDayEnd
-        }
-        getGDTDynamicDayList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, dynamicCreativeId, queryForm, data, date, iaaApp])
-
-    return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯创意每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
-        <TablePro
-            leftChild={<QueryForm
-                initialValues={{ day1: queryForm?.costDayBegin ? [moment(queryForm?.costDayBegin), moment(queryForm?.costDayEnd)] : null }}
-                onChange={(data: any) => {
-                    const { day1 } = data
-                    if (day1 && day1?.length === 2) {
-                        setDate([moment(day1[0]).format('YYYY-MM-DD'), moment(day1[1]).format('YYYY-MM-DD')])
-                    } else {
-                        setDate(undefined)
-                    }
-                }}
-                day1={{ placeholder: ['消耗日期开始', '消耗日期结束'] }}
-            />}
-            scroll={{ x: 1000, y: 600 }}
-            ajax={getGDTDynamicDayList}
-            loading={getGDTDynamicDayList.loading}
-            fixed={{ left: 3, right: 0 }}
-            dataSource={getGDTDynamicDayList?.data?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(data.pageNum.toString() + index.toString()) }))}
-            page={getGDTDynamicDayList?.data?.data?.current || 1}
-            pageSize={getGDTDynamicDayList?.data?.data?.size || 20}
-            total={getGDTDynamicDayList?.data?.data?.total || 0}
-            title='腾讯创意每日监控'
-            onChange={(pagination: any, _: any, sortData: any) => {
-                let { current, pageSize } = pagination
-                let newQueryForm = JSON.parse(JSON.stringify(data))
-                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
-                setData({ ...newQueryForm })
-            }}
-            config={columns12()}
-            configName={'腾讯创意每日监控'}
-        />
-    </Drawer>
-}
-
-export default React.memo(DayAd)

+ 0 - 0
src/pages/iaaData/tencentIaa/dynamic/index.less


+ 0 - 265
src/pages/iaaData/tencentIaa/dynamic/index.tsx

@@ -1,265 +0,0 @@
-import React, { useEffect, useState } from "react"
-import { useAjax } from "@/Hook/useAjax"
-import { getDynamicListApi, getDynamicTotalApi, GetGDTListProps } 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"
-import { Button, message, Modal, notification, Space, Table } from "antd"
-import { newEditAdqAdgroupsDataApi, updateBatchDynamicCreativesInfoApi } from "@/services/gameData"
-import { PauseCircleOutlined, PlayCircleOutlined } from "@ant-design/icons"
-import DayAd from "./dayAd"
-
-/**
- * 腾讯创意列表
- * @returns 
- */
-const Dynamic: React.FC = () => {
-
-    /****************************************/
-    const { initialState } = useModel('@@initialState');
-    const [selectedRows, setSelectedRows] = useState<any[]>([])
-    const [queryForm, setQueryForm] = useState<GetGDTListProps>({
-        pageNum: 1,
-        pageSize: 30,
-        costDayBegin: moment().format('YYYY-MM-DD'),
-        costDayEnd: moment().format('YYYY-MM-DD'),
-    })
-    const [totalData, setTotalData] = useState<any[]>([{ dynamicCreativeId: 1, accountId: '总计' }])
-    const [visible, setVisible] = useState<boolean>(false)
-    const [promotionId, setPromotionId] = useState<number>()
-    const [dynamicCreativeId, setDynamicCreativeId] = useState<number>()
-    const [adName, setAdName] = useState<string>('')
-    const [failIdList, setFailIdList] = useState<{ adgroupId: number, code: number, message: string, messageCn: string }[]>([])
-    const [failVisible, setFailVisible] = useState<boolean>(false)
-
-    const updateBatchDynamicCreativesInfo = useAjax((params) => updateBatchDynamicCreativesInfoApi(params))
-    const getDynamicList = useAjax((params) => getDynamicListApi(params))
-    const getDynamicTotal = useAjax((params) => getDynamicTotalApi(params))
-    /****************************************/
-
-    useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getDynamicList.run({ ...queryForm, appId, productType })
-            getDynamicTotal.run({ ...queryForm, appId, productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => {
-                if (res?.data) {
-                    let data = res?.data
-                    data.dynamicCreativeId = 1
-                    data.accountId = '总计'
-                    setTotalData([data])
-                } else {
-                    setTotalData([{ dynamicCreativeId: 1, accountId: '总计' }])
-                }
-            })
-        }
-
-    }, [queryForm, initialState?.iaaApp])
-
-    const dayHandle = (data: any) => {
-        setVisible(true)
-        setAdName(data.promotionName)
-        setPromotionId(data.promotionId)
-        setDynamicCreativeId(data.dynamicCreativeId)
-    }
-
-    const dynamicHandle = (type: '删除' | '启动' | '暂停', data?: any) => {
-        let accountAdgroupMaps = data ? [data.accountId + ',' + data.dynamicCreativeId] : [...new Set(selectedRows?.map(item => item.accountId + ',' + item.dynamicCreativeId))]
-        let hide: any
-        if (data) {
-            hide = message.loading(`正在设置...`, 0, () => {
-                message.success('设置成功');
-            });
-        }
-        switch (type) {
-            case '启动':
-            case '暂停':
-                updateBatchDynamicCreativesInfo.run({ accountAdgroupMaps, suspend: type === '暂停' }).then(res => {
-                    if (res?.failIdList?.length === 0) {
-                        message.success(`修改操作完成!`)
-                        getDynamicList.refresh()
-                        setSelectedRows([])
-                    } else {
-                        setFailIdList(res?.list || [])
-                        setFailVisible(true)
-                    }
-                    if (hide) {
-                        hide()
-                    }
-                })
-                break
-        }
-    }
-
-
-    return <div>
-        <TablePro
-            czChild={<Space>
-                {/* <Switch checkedChildren="开启全选" unCheckedChildren="关闭全选" checked={!isZj} onChange={(e) => { setIsZj(!e); }} /> */}
-                <Button type='primary' size="small" style={{ background: '#67c23a', borderColor: '#67c23a' }} loading={updateBatchDynamicCreativesInfo.loading} icon={<PlayCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => dynamicHandle('启动')}>启动</Button>
-                <Button type='primary' size="small" style={{ background: '#e6a23c', borderColor: '#e6a23c' }} loading={updateBatchDynamicCreativesInfo.loading} icon={<PauseCircleOutlined />} disabled={selectedRows.length === 0} onClick={() => dynamicHandle('暂停')}>暂停</Button>
-                <span style={{ color: 'red' }}>操作完数据结果延时5分钟之内,即时结果去腾讯后台查看</span>
-            </Space>}
-            leftChild={<QueryForm
-                initialValues={{ day3: [moment(), moment()] }}
-                isAccountId
-                isPromotionName
-                isDynamicCreativeId
-                isPutUserIdList
-                isCpaBid
-                isDeleted
-                isPricing
-                isStatus
-                isPromotionId
-                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))
-                    newQueryForm.pageNum = 1
-                    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(dayHandle, () => { getDynamicList.refresh() })}
-            configName={'腾讯创意列表'}
-            fixed={{ left: 4, right: 2 }}
-            scroll={{ x: 1000, y: 620 }}
-            title='腾讯创意列表'
-            rowKey={'dynamicCreativeId'}
-            loading={getDynamicList.loading}
-            ajax={getDynamicList}
-            page={getDynamicList?.data?.data?.current || 1}
-            pageSize={getDynamicList?.data?.data?.size || 20}
-            total={getDynamicList?.data?.data?.total || 0}
-            dataSource={getDynamicList?.data?.data?.records?.map((item: any) => ({ ...item, id: item.promotionId }))}
-            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 })
-            }}
-            rowSelection={{
-                selectedRowKeys: selectedRows.map(item => item.dynamicCreativeId),
-                getCheckboxProps: (record: any) => ({
-                    disabled: record.dynamicCreativeIsDeleted == 1 || record?.accountId === '总计'
-                }),
-                onSelect: (record: { dynamicCreativeId: number }, selected: boolean) => {
-                    if (selected) {
-                        selectedRows.push({ ...record })
-                        setSelectedRows([...selectedRows])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { dynamicCreativeId: number }) => item.dynamicCreativeId !== record.dynamicCreativeId)
-                        setSelectedRows([...newSelectAccData])
-                    }
-                },
-                onSelectAll: (selected: boolean, selectedRowss: { dynamicCreativeId: number }[], changeRows: { dynamicCreativeId: number }[]) => {
-                    if (selected) {
-                        let newSelectAccData = [...selectedRows]
-                        changeRows.forEach((item: { dynamicCreativeId: number }) => {
-                            let index = newSelectAccData.findIndex((ite: { dynamicCreativeId: number }) => ite.dynamicCreativeId === item.dynamicCreativeId)
-                            if (index === -1) {
-                                newSelectAccData.push({ ...item })
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    } else {
-                        let newSelectAccData = selectedRows.filter((item: { dynamicCreativeId: number }) => {
-                            let index = changeRows.findIndex((ite: { dynamicCreativeId: number }) => ite.dynamicCreativeId === item.dynamicCreativeId)
-                            if (index !== -1) {
-                                return false
-                            } else {
-                                return true
-                            }
-                        })
-                        setSelectedRows([...newSelectAccData])
-                    }
-                }
-            }}
-        />
-
-        {visible && <DayAd
-            iaaApp={initialState?.iaaApp as string}
-            adName={adName}
-            visible={visible}
-            onClose={() => { setVisible(false); setPromotionId(undefined); setDynamicCreativeId(undefined) }}
-            queryForm={queryForm}
-            promotionId={promotionId}
-            dynamicCreativeId={dynamicCreativeId}
-        />}
-
-        {failVisible && <Modal
-            title={<strong>报错信息</strong>}
-            open={failVisible}
-            className='modalResetCss'
-            width={650}
-            onCancel={() => { setFailVisible(false); setFailIdList([]) }}
-            footer={null}
-        >
-            <Table
-                size="small"
-                bordered
-                rowKey={'adgroupId'}
-                columns={[{
-                    title: '广告ID',
-                    dataIndex: 'adgroupId',
-                    key: 'adgroupId',
-                    width: 110,
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                },
-                {
-                    title: 'code',
-                    dataIndex: 'code',
-                    key: 'code',
-                    width: 70,
-                    align: 'center',
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                },
-                {
-                    title: '错误信息',
-                    dataIndex: 'messageCn',
-                    key: 'messageCn',
-                    render: (value) => <span style={{ fontSize: 12 }}>{value}</span>,
-                }]}
-                dataSource={failIdList}
-            />
-        </Modal>}
-    </div>
-}
-
-export default Dynamic

+ 0 - 41
src/pages/iaaData/tencentIaa/dynamic/switchStatus.tsx

@@ -1,41 +0,0 @@
-import { useAjax } from "@/Hook/useAjax"
-import { newEditAdqAdgroupsDataApi, updateBatchDynamicCreativesInfoApi } from "@/services/gameData"
-import { message, notification, Switch } from "antd"
-import React from "react"
-
-
-
-/**
- * 修改启停
- */
-interface Props {
-    configuredStatus: string,
-    isDeleted?: boolean,
-    accountId: number,
-    dynamicCreativeId: number,
-    onChange?: () => void
-}
-const SwitchStatus: React.FC<Props> = (prosp) => {
-
-    const { configuredStatus, isDeleted, accountId, dynamicCreativeId, onChange } = prosp
-    const updateBatchDynamicCreativesInfo = useAjax((params) => updateBatchDynamicCreativesInfoApi(params))
-    
-    const switchHandle = (status: boolean) => {
-        updateBatchDynamicCreativesInfo.run({ accountAdgroupMaps: [accountId + ',' + dynamicCreativeId], suspend: !status }).then(res => {
-            message.success(`${configuredStatus === 'AD_STATUS_NORMAL' ? '启动' : '暂停'}成功`)
-            if (res?.fail) {
-                notification.error({
-                    message: `${configuredStatus === 'AD_STATUS_NORMAL' ? '启动' : '暂停'}失败`,
-                    description: `修改失败${res.fail}条,失败的请到任务列表查看`,
-                    duration: 0
-                });
-            }
-            onChange?.()
-        })
-    }
-
-    return <Switch size="small" checked={configuredStatus === 'AD_STATUS_NORMAL'} loading={updateBatchDynamicCreativesInfo.loading} disabled={isDeleted} onChange={(checked) => switchHandle(checked)}/>
-}
-
-
-export default React.memo(SwitchStatus)

+ 0 - 593
src/pages/iaaData/tencentIaa/dynamic/tableConfig.tsx

@@ -1,593 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Badge, Progress, Space, Statistic } from "antd"
-import React from "react"
-import { AD_STATUS_ENUM, BID_MODE_ENUM, PRODUCT_TYPE_ENUM } from "../../const"
-import SwitchStatus from "./switchStatus"
-import CreativePreview from "../../components/CreativePreview"
-import { DELIVERY_MODE_Enum } from "./const"
-
-function columns12(dayHandle: (data: any) => void, onChange?: () => void): { 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: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '腾讯创意基本信息', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '腾讯创意基本信息', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '腾讯创意基本信息', align: 'center', width: 100, default: 5,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'pitcherName', label: '腾讯创意基本信息', align: 'center', width: 60, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '创意名称', dataIndex: 'dynamicCreativeName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '创意ID', dataIndex: 'dynamicCreativeId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 8,
-                    render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'promotionName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'promotionId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 10,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy/>)
-                },
-                {
-                    title: '广告状态', dataIndex: 'status', label: '腾讯创意基本信息', align: 'center', width: 75, default: 11,
-                    render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
-                },
-                {
-                    title: '投放模式', dataIndex: 'deliveryMode', label: '腾讯创意基本信息', align: 'center', width: 75, 
-                    render: (a: string) => (<WidthEllipsis value={DELIVERY_MODE_Enum[a as keyof typeof DELIVERY_MODE_Enum]} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', label: '腾讯创意基本信息', align: 'center', width: 75, 
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '余额', dataIndex: 'balance', label: '腾讯创意基本信息', align: 'right', width: 75, sorter: true, default: 12,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '出价方式', dataIndex: 'pricing', label: '腾讯创意基本信息', align: 'center', width: 70, default: 13,
-                    render: (a: string) => (<WidthEllipsis value={BID_MODE_ENUM[a as keyof typeof BID_MODE_ENUM]} />)
-                },
-                {
-                    title: '当前出价', dataIndex: 'cpaBid', label: '腾讯创意基本信息', align: 'center', width: 75, default: 14, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '腾讯创意基本信息', align: 'right', width: 75, default: 15,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'budget', label: '腾讯创意基本信息', align: 'right', width: 75, default: 16, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 140,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a == 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '创意已删除?', dataIndex: 'dynamicCreativeIsDeleted', label: '基本信息', align: 'center', width: 50, default: 17,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a == 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '创意创建时间', dataIndex: 'dynamicCreativeCreatedTime', label: '基本信息', align: 'center', width: 140,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}`} />)
-                },
-                {
-                    title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 18,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 19,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 20, sorter: true, 
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 21, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, 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: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 25, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 30, 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: 31, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 33, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯创意基本信息', width: 150, default: 34,
-                    render: (a: any, b: any) => {
-                        if (b?.accountId === '总计') {
-                            return '--'
-                        }
-                        if (a?.length) {
-                            let deliveryMode: string[] = []
-                            let creativePreview = a?.map((item: { creativeComponents: any, deliveryMode: string }) => {
-                                deliveryMode.push(item.deliveryMode)
-                                return { ...item?.creativeComponents }
-                            })
-                            return <CreativePreview creativePreview={creativePreview} deliveryMode={deliveryMode} />
-                        }
-                        return null
-                    }
-                }
-            ]
-        },
-        {
-            label: 'IAA补充指标',
-            data: [
-                {
-                    title: '首日ROI', dataIndex: 'firstRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '其他业务(其他指标)',
-            data: [
-                {
-                    title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数', dataIndex: 'regPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数', dataIndex: 'regDedupPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本', dataIndex: 'regCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: 'APP激活次数', dataIndex: 'activatedCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'APP点击激活率', dataIndex: 'clickActivatedRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: 'APP激活成本', dataIndex: 'activatedCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活注册率', dataIndex: 'activateRegisterRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存次数', dataIndex: 'retentionCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存人数', dataIndex: 'miniGameRetentionD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存率', dataIndex: 'retentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存成本', dataIndex: 'retentionCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '关键页面次日留存率', dataIndex: 'appKeyPageRetentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存率', dataIndex: 'miniGameRetentionD1Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存成本', dataIndex: 'miniGameRetentionD1Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存人数', dataIndex: 'appRetentionD3Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存成本(人数)', dataIndex: 'appRetentionD3Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存率(人数)', dataIndex: 'appRetentionD3Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '5日留存人数', dataIndex: 'appRetentionD5Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存成本(人数)', dataIndex: 'appRetentionD5Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '5日留存率(人数)', dataIndex: 'appRetentionD5Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存人数', dataIndex: 'appRetentionD7Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存成本(人数)', dataIndex: 'appRetentionD7Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日留存率(人数)', dataIndex: 'appRetentionD7Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '小游戏(平台上报)',
-            data: [
-                {
-                    title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGameIncomeRoi1', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数(平台上报)', dataIndex: 'regPlaPv', label: '小游戏(平台上报)', width: 90, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '操作',
-            data: [
-                {
-                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
-                    render: (_: number, b: any) => {
-                        if (b?.accountId === '总计') return '--'
-                        return <Space>
-                            <a onClick={() => dayHandle(b)}>创意每日监控</a>
-                            <a onClick={() => {
-                                window.open(`https://ad.qq.com/atlas/${b?.accountId}/admanage/adgroup?tab=adgroup&query={%22operation_status%22:[%22CALCULATE_STATUS_EXCLUDE_DEL%22],%22system_status%22:[],%22search_name%22:%22${b.promotionId}%22}`)
-                            }}>腾讯广告</a>
-                        </Space>
-                    }
-                },
-                {
-                    title: '启停',
-                    dataIndex: 'configuredStatus',
-                    label: '操作',
-                    align: 'center',
-                    width: 45,
-                    default: 1,
-                    render: (a: string, b: any) => {
-                        if (b?.accountId === '总计') {
-                            return '--'
-                        }
-                        return <SwitchStatus configuredStatus={a} isDeleted={b?.dynamicCreativeIsDeleted == 1} accountId={b?.accountId} dynamicCreativeId={b?.dynamicCreativeId} onChange={onChange} />
-                    }
-                }
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 544
src/pages/iaaData/tencentIaa/dynamic/tableConfigDay.tsx

@@ -1,544 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Badge, Progress, Statistic } from "antd"
-import React from "react"
-import { AD_STATUS_ENUM, BID_MODE_ENUM, PRODUCT_TYPE_ENUM } from "../../const"
-import CreativePreview from "../../components/CreativePreview"
-import { DELIVERY_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: 2,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '腾讯创意基本信息', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用', dataIndex: 'appName', label: '腾讯创意基本信息', align: 'center', width: 100, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '腾讯创意基本信息', align: 'center', width: 100, default: 5,
-                    render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
-                },
-                {
-                    title: '投手', dataIndex: 'pitcherName', label: '腾讯创意基本信息', align: 'center', width: 60, default: 6,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '创意名称', dataIndex: 'dynamicCreativeName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 7,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '创意ID', dataIndex: 'dynamicCreativeId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 8,
-                    render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <WidthEllipsis value={a} isCopy />)
-                },
-                {
-                    title: '广告名称', dataIndex: 'promotionName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 9,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告ID', dataIndex: 'promotionId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 10,
-                    render: (a: string) => (<WidthEllipsis value={a} isCopy/>)
-                },
-                {
-                    title: '广告状态', dataIndex: 'status', label: '腾讯创意基本信息', align: 'center', width: 75, default: 11,
-                    render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
-                },
-                {
-                    title: '投放模式', dataIndex: 'deliveryMode', label: '腾讯创意基本信息', align: 'center', width: 75, 
-                    render: (a: string) => (<WidthEllipsis value={DELIVERY_MODE_Enum[a as keyof typeof DELIVERY_MODE_Enum]} />)
-                },
-                {
-                    title: '服务商', dataIndex: 'service', label: '腾讯创意基本信息', align: 'center', width: 75, 
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '余额', dataIndex: 'balance', label: '腾讯创意基本信息', align: 'right', width: 75, sorter: true, default: 12,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '出价方式', dataIndex: 'pricing', label: '腾讯创意基本信息', align: 'center', width: 70, default: 13,
-                    render: (a: string) => (<WidthEllipsis value={BID_MODE_ENUM[a as keyof typeof BID_MODE_ENUM]} />)
-                },
-                {
-                    title: '当前出价', dataIndex: 'cpaBid', label: '腾讯创意基本信息', align: 'center', width: 75, default: 14, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '腾讯创意基本信息', align: 'right', width: 75, default: 15,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告日预算', dataIndex: 'budget', label: '腾讯创意基本信息', align: 'right', width: 75, default: 16, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 140,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a === 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '创意已删除?', dataIndex: 'dynamicCreativeIsDeleted', label: '基本信息', align: 'center', width: 50, default: 17,
-                    render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a === 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
-                },
-                {
-                    title: '创意创建时间', dataIndex: 'dynamicCreativeCreatedTime', label: '基本信息', align: 'center', width: 140,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}`} />)
-                },
-                {
-                    title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 18,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 19,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '今日消耗', dataIndex: 'cost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 20, sorter: true, 
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 21, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, 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: 24, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 25, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 30, 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: 31, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 33, 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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'redColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    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, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '其他业务(其他指标)',
-            data: [
-                {
-                    title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数', dataIndex: 'regPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数', dataIndex: 'regDedupPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本', dataIndex: 'regCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: 'APP激活次数', dataIndex: 'activatedCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: 'APP点击激活率', dataIndex: 'clickActivatedRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: 'APP激活成本', dataIndex: 'activatedCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活注册率', dataIndex: 'activateRegisterRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存次数', dataIndex: 'retentionCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存人数', dataIndex: 'miniGameRetentionD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '次日留存率', dataIndex: 'retentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '次日留存成本', dataIndex: 'retentionCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '关键页面次日留存率', dataIndex: 'appKeyPageRetentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存率', dataIndex: 'miniGameRetentionD1Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏次日留存成本', dataIndex: 'miniGameRetentionD1Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存人数', dataIndex: 'appRetentionD3Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '3日留存成本(人数)', dataIndex: 'appRetentionD3Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日留存率(人数)', dataIndex: 'appRetentionD3Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '5日留存人数', dataIndex: 'appRetentionD5Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '5日留存成本(人数)', dataIndex: 'appRetentionD5Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '5日留存率(人数)', dataIndex: 'appRetentionD5Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '7日留存人数', dataIndex: 'appRetentionD7Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '7日留存成本(人数)', dataIndex: 'appRetentionD7Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日留存率(人数)', dataIndex: 'appRetentionD7Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '小游戏(平台上报)',
-            data: [
-                {
-                    title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGameIncomeRoi1', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-                {
-                    title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册次数(平台上报)', dataIndex: 'regPlaPv', label: '小游戏(平台上报)', width: 90, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        }
-    ]
-}
-
-export default columns12

+ 0 - 300
src/pages/iaaData/tencentIaa/pitcherEveryDay/tableConfig.tsx

@@ -1,300 +0,0 @@
-import WidthEllipsis from "@/components/widthEllipsis"
-import { Badge, Progress, Statistic } from "antd"
-import React from "react"
-import { PRODUCT_TYPE_ENUM } from "../../const"
-
-function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
-
-
-    return [
-        {
-            label: '基本信息',
-            data: [
-                {
-                    title: '投手', dataIndex: 'pitcher', label: '基本信息', align: 'center', width: 120, default: 1,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '业务类型', dataIndex: 'productType', label: '基本信息', align: 'center', width: 80, default: 2,
-                    render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
-                },
-                {
-                    title: '应用名称', dataIndex: 'appName', label: '基本信息', align: 'center', width: 80, default: 3,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '应用ID', dataIndex: 'appId', label: '基本信息', align: 'center', width: 80,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '小程序ID', dataIndex: 'mpId', label: '基本信息', align: 'center', width: 80, default: 4,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 80, default: 5,
-                    render: (a: string) => (<WidthEllipsis value={a} />)
-                },
-                {
-                    title: '总消耗', dataIndex: 'cost', label: '基本信息', align: 'center', width: 90, default: 6, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic style={{ fontWeight: 'bold' }} value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '消耗', dataIndex: 'costToday', label: '基本信息', align: 'center', width: 85, default: 7, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#ff5900',
-                                to: '#ffd380',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
-                    </div>
-                },
-                {
-                    title: '赔付金', dataIndex: 'payout', label: '基本信息', align: 'center', width: 80, default: 8, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '推广广告账号数量', tips: '消耗大于0', dataIndex: 'accountCount', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '推广广告数量', tips: '消耗大于0', dataIndex: 'adCount', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true,
-                    render: (a: string) => <Statistic value={a || 0} />
-                },
-            ]
-        },
-        {
-            label: '基础数据',
-            data: [
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '基础数据', align: 'center', width: 80, default: 11, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '曝光量', dataIndex: 'viewCount', label: '基础数据', align: 'center', width: 80, default: 12, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '基础数据', align: 'center', width: 80, default: 13, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '点击均价', dataIndex: 'cpc', label: '基础数据', align: 'center', width: 80, default: 14, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '基础数据', align: 'center', width: 80, default: 15, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基础数据', align: 'center', width: 80, default: 16, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '基础数据', align: 'center', width: 80, default: 17, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: 'D1数据',
-            data: [
-                {
-                    title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: 'D1数据', align: 'center', width: 100, default: 18, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: 'D1数据', align: 'center', width: 90, default: 19, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: 'D1数据', align: 'center', width: 90, default: 20, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: 'D1数据', align: 'center', width: 90, default: 21, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日变现ARPPU', dataIndex: 'miniGameFirstDayAdPayingArppu', label: 'D1数据', align: 'center', width: 80, default: 22, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日变现ARPU', dataIndex: 'miniGameFirstDayAdPayingArpu', label: 'D1数据', align: 'center', width: 80, default: 23, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: 'D1数据', align: 'center', width: 80, default: 24, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '首日ROI', dataIndex: 'miniGameFirstDayAdPayingRoi', label: 'D1数据', align: 'center', width: 80, default: 25, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: '24小时数据',
-            data: [
-                {
-                    title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '24小时数据', align: 'center', width: 90, default: 26, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现次数(平台上报)', dataIndex: 'incomePv24hPla', label: '24小时数据', align: 'center', width: 90, default: 27, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '24小时数据', align: 'center', width: 90, default: 28, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '激活首24小时广告变现ARPPU(平台上报)', dataIndex: 'firstDayAdPurArppuCost24hPla', label: '24小时数据', align: 'center', width: 100, default: 29, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现ARPU(平台上报)', dataIndex: 'firstDayAdPurArpuCost24hPla', label: '24小时数据', align: 'center', width: 90, default: 30, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现成本', dataIndex: 'firstDayAdPurArpuCost24hPlaCost', label: '24小时数据', align: 'center', width: 80, default: 31, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '24小时广告变现ROI', dataIndex: 'firstDayAdPurArpuCost24hPlaRoi', label: '24小时数据', align: 'center', width: 80, default: 32, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: 'D3数据',
-            data: [
-                {
-                    title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现人数(平台上报)', dataIndex: 'regUserTotal', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ARPPU(平台上报)', dataIndex: 'adPurArppuDay3Cost', label: 'D3数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ARPU(平台上报)', dataIndex: 'adPurArpuDay3Cost', label: 'D3数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现成本(平台上报)', dataIndex: 'adPurDay3Cost', label: 'D3数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '3日广告变现ROI', dataIndex: 'adPurDay3Roi', label: 'D3数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        },
-        {
-            label: 'D7数据',
-            data: [
-                {
-                    title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: 'D7数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '小游戏注册7日广告变现金额(平台上报)', dataIndex: 'miniGameRegD7Amount', label: 'D7数据', align: 'center', width: 90, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ARPPU(平台上报)', dataIndex: 'miniGameRegD7Arppu', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ARPU(平台上报)', dataIndex: 'miniGameRegD7Arpu', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现成本(平台上报)', dataIndex: 'miniGameRegD7Cost', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '7日广告变现ROI', dataIndex: 'miniGameRegD7Roi', label: 'D7数据', align: 'center', width: 80, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                }
-            ]
-        },
-        {
-            label: 'D总数据',
-            data: [
-                {
-                    title: '广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: 'D总数据', align: 'center', width: 80, default: 33, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: 'D总数据', align: 'center', width: 80, default: 34, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} />
-                },
-                {
-                    title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: 'D总数据', align: 'center', width: 80, default: 35, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现ARPPU(平台上报)', dataIndex: 'miniGameAdMonetizationArppu', label: 'D总数据', align: 'center', width: 80, default: 36, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: 'D总数据', align: 'center', width: 80, default: 37, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: 'D总数据', align: 'center', width: 80, default: 38, sorter: true,
-                    render: (a: number) => <Statistic value={a || 0} precision={2} />
-                },
-                {
-                    title: '广告变现总ROI', dataIndex: 'miniGameAdMonetizationRoi', label: 'D总数据', align: 'center', width: 80, default: 39, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
-            ]
-        }
-    ]
-}
-
-export default columns12

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

@@ -518,4 +518,87 @@ export async function getNovelDynamicDetailListApi(data: GetNovelDynamicDetailLi
         method: 'POST',
         data
     });
+}
+
+
+
+
+export interface GetByteAppTrendRoiListApi extends Paging, SortProps {
+    costDayBegin?: string
+    costDayEnd?: string
+    // new_user:新增留存; active_user:活跃留存; first:首日激活留存
+    retainedType?: string 
+}
+/**
+ * 头条应用变现趋势-ROI
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendRoiListApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/roi`, {
+        method: 'POST',
+        data
+    });
+}
+
+/**
+ * 头条应用变现趋势-ROI 总计
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendRoiTotalApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/roi/total`, {
+        method: 'POST',
+        data
+    });
+}
+
+
+/**
+ * 头条应用变现趋势-LTV
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendLtvListApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/ltv`, {
+        method: 'POST',
+        data
+    });
+}
+
+/**
+ * 头条应用变现趋势-LTV 总计
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendLtvTotalApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/ltv/total`, {
+        method: 'POST',
+        data
+    });
+}
+
+
+/**
+ * 头条应用变现趋势-留存
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendRetainedListApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/retained`, {
+        method: 'POST',
+        data
+    });
+}
+
+/**
+ * 头条应用变现趋势-留存 总计
+ * @param data 
+ * @returns 
+ */
+export async function getByteAppTrendRetainedTotalApi(data: GetByteAppTrendRoiListApi) {
+    return request(wapi + `/monitor/byte/app/trend/retained/total`, {
+        method: 'POST',
+        data
+    });
 }