wjx 1 tahun lalu
induk
melakukan
01c49aed3e

+ 1 - 1
package.json

@@ -70,7 +70,7 @@
     "file-loader": "^6.2.0",
     "image-conversion": "^2.1.1",
     "jsmpeg-player": "^3.0.3",
-    "lodash": "^4.17.11",
+    "lodash": "^4.17.21",
     "moment": "^2.25.3",
     "omit.js": "^2.0.2",
     "path-to-regexp": "2.4.0",

+ 2 - 2
src/components/QueryForm/index.tsx

@@ -393,11 +393,11 @@ const QueryForm: React.FC<Props> = (props) => {
 
             {/* 计划名称 */}
             {isProjectName && <Col><Form.Item name='projectName'>
-                <Input placeholder="请输入计划名称" allowClear style={{ width: 140 }} />
+                <Input placeholder="请输入项目名称" allowClear style={{ width: 140 }} />
             </Form.Item></Col>}
             {/* 计划ID */}
             {isProjectId && <Col><Form.Item name='projectId'>
-                <Input placeholder="请输入计划ID" allowClear style={{ width: 140 }} />
+                <Input placeholder="请输入项目ID" allowClear style={{ width: 140 }} />
             </Form.Item></Col>}
             {/* 广告名称 */}
             {isPromotionName && <Col><Form.Item name='promotionName'>

+ 7 - 0
src/pages/gameDataStatistics/adlist/monitor/index.less

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

+ 1 - 1
src/pages/gameDataStatistics/adlist/monitor/index.tsx

@@ -22,7 +22,7 @@ const Monitor = () => {
         getPromotionDataDatList.run(queryForm)
         getPromotionDataDatTotal.run(queryForm).then(res => {
             res.id = 1
-            res.agentName = '总计'
+            res.accountName = '总计'
             setTotalData([res])
         })
     }, [queryForm])

+ 108 - 103
src/pages/gameDataStatistics/adlist/monitor/tableConfig.tsx

@@ -3,7 +3,7 @@ import WidthEllipsis from "@/components/widthEllipsis"
 import { Statistic } from "antd"
 import React from "react"
 import { ADSTATUSEnum, LANDINGTYPEEnum, PRICINGEnum } from './const'
-
+import './index.less'
 
 function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
 
@@ -16,6 +16,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
             label: '付费数据',
             align: 'center',
             width: 85,
+            className: 'payDataBackColorClass',
             children: [
                 {
                     title: 'ROI',
@@ -71,11 +72,11 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
             label: '账户信息',
             data: [
                 {
-                    title: '推广账号名称', dataIndex: 'accountName', label: '账户信息', align: 'center', width: 85, default: 2,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.day} />)
+                    title: '推广账号名称', dataIndex: 'accountName', label: '账户信息', align: 'center', width: 100, default: 1,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '推广账号ID', dataIndex: 'accountId', label: '账户信息', align: 'center', width: 120,
+                    title: '推广账号ID', dataIndex: 'accountId', label: '账户信息', align: 'center', width: 120, default: 2,
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
@@ -87,7 +88,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投放渠道', dataIndex: 'agentName', label: '账户信息', align: 'center', width: 75, default: 1,
+                    title: '投放渠道', dataIndex: 'agentName', label: '账户信息', align: 'center', width: 75, default: 3,
                     render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 },
                 {
@@ -99,7 +100,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string, b: any) => (<WidthEllipsis value={TYPE[a]} />)
                 },
                 {
-                    title: '余额', dataIndex: 'balance', label: '账户信息', align: 'center', width: 70, default: 3,
+                    title: '余额', dataIndex: 'balance', label: '账户信息', align: 'center', width: 70,
                     render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 }
             ]
@@ -125,7 +126,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
-                    title: '广告ID', dataIndex: 'promotionId', label: '广告信息', align: 'center', width: 90,
+                    title: '广告ID', dataIndex: 'promotionId', label: '广告信息', align: 'center', width: 90, default: 5,
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
@@ -137,7 +138,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
-                    title: '广告状态', dataIndex: 'status', label: '广告信息', align: 'center', width: 85, default: 5,
+                    title: '广告状态', dataIndex: 'status', label: '广告信息', align: 'center', width: 85, default: 6,
                     render: (a: string, b: any) => (<WidthEllipsis value={ADSTATUSEnum[a]} />)
                 },
                 {
@@ -145,11 +146,11 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: string, b: any) => (<WidthEllipsis value={LANDINGTYPEEnum[a]} />)
                 },
                 {
-                    title: '出价方式', dataIndex: 'pricing', label: '广告信息', align: 'center', width: 100, default: 6,
+                    title: '出价方式', dataIndex: 'pricing', label: '广告信息', align: 'center', width: 100, default: 7,
                     render: (a: string, b: any) => (<WidthEllipsis value={PRICINGEnum[a]} />)
                 },
                 {
-                    title: '当前出价', dataIndex: 'cpaBid', label: '广告信息', align: 'center', width: 70, default: 7,
+                    title: '当前出价', dataIndex: 'cpaBid', label: '广告信息', align: 'center', width: 70, default: 8,
                     render: (a: any) => <Statistic value={a || '--'} />
                 },
                 {
@@ -157,110 +158,114 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '日预算', dataIndex: 'budget', label: '广告信息', align: 'center', width: 70,
+                    title: '日预算', dataIndex: 'budget', label: '广告信息', align: 'center', width: 70, default: 9,
                     render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投放时间', dataIndex: 'scheduleTime', label: '广告信息', align: 'center', width: 135,
+                    title: '投放时间', dataIndex: 'scheduleTime', label: '广告信息', align: 'center', width: 135, default: 10,
                     render: (a: string, b: any) => (<WidthEllipsis value={a} />)
-                },
+                }
+            ]
+        },
+        {
+            label: '消耗',
+            data: [
                 {
-                    title: '注册人数(广告)', dataIndex: 'active', label: '广告信息', align: 'center', width: 70,
+                    title: '今日消耗', dataIndex: 'todayCost', label: '消耗', align: 'center', width: 85, sorter: true, default: 11,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '注册成本(广告)', dataIndex: 'activeCost', label: '广告信息', align: 'center', width: 70,
+                    title: '总消耗', dataIndex: 'promotionTotalCost', label: '消耗', align: 'center', width: 100,
+                    render: (a: any) => <Statistic value={a || 0} />
+                }
+            ]
+        },
+        {
+            label: '广告媒体端数据',
+            data: [
+                {
+                    title: '曝光量', dataIndex: 'showCount', label: '广告媒体端数据', align: 'center', width: 60, sorter: true, default: 12, className: "adDataBackColorClass",
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日转化成本(广告)', dataIndex: 'firstConvertCost', label: '广告信息', align: 'center', width: 70,
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告媒体端数据', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass", default: 14,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首次付费率(广告)', dataIndex: 'firstActivePayRate', label: '广告信息', align: 'center', width: 70,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                    title: '点击量', dataIndex: 'clickCount', label: '广告媒体端数据', align: 'center', width: 60, sorter: true, className: "adDataBackColorClass", default: 13,
+                    render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日付费金额(广告)', dataIndex: 'firstAttributionGameInAppLtv1day', label: '广告信息', align: 'center', width: 70,
+                    title: '点击均价', dataIndex: 'avgClickCost', label: '广告媒体端数据', align: 'center', width: 60, sorter: true, className: "adDataBackColorClass", default: 15,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日付费ROI(广告)', dataIndex: 'firstAttributionGameInAppRoi1day', label: '广告信息', align: 'center', width: 70,
+                    title: '点击率', dataIndex: 'ctr', label: '广告媒体端数据', align: 'center', width: 60, sorter: true, className: "adDataBackColorClass", default: 16,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '付费次数(广告)', dataIndex: 'gamePayCount', label: '广告信息', align: 'center', width: 70,
-                    render: (a: any) => <Statistic value={a || 0} />
+                    title: '转化目标', dataIndex: 'convertTarget', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
                 },
-            ]
-        },
-        {
-            label: '消耗',
-            data: [
                 {
-                    title: '今日消耗', dataIndex: 'todayCost', label: '消耗', align: 'center', width: 85, sorter: true, default: 8,
+                    title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 60, sorter: true,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总消耗', dataIndex: 'promotionTotalCost', label: '消耗', align: 'center', width: 100,
-                    render: (a: any) => <Statistic value={a || 0} />
-                }
-            ]
-        },
-        {
-            label: '曝光数据',
-            data: [
-                {
-                    title: '曝光量', dataIndex: 'showCount', label: '曝光数据', align: 'center', width: 60, sorter: true,
+                    title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 75, sorter: true,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '曝光数据', align: 'center', width: 65, sorter: true, default: 9,
-                    render: (a: any) => <Statistic value={a || 0} />
+                    title: '目标转化率', dataIndex: 'convertRate', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 60, sorter: true,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '点击量', dataIndex: 'clickCount', label: '曝光数据', align: 'center', width: 60, sorter: true,
+                    title: '注册人数(广告)', dataIndex: 'active', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 17,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击均价', dataIndex: 'avgClickCost', label: '曝光数据', align: 'center', width: 60, sorter: true, default: 10,
+                    title: '注册成本(广告)', dataIndex: 'activeCost', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 18,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击率', dataIndex: 'ctr', label: '曝光数据', align: 'center', width: 60, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                    title: '首日转化数(广告)', dataIndex: 'firstConvertCount', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 19,
+                    render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '曝光数据', align: 'center', width: 70,
-                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                    title: '首日转化成本(广告)', dataIndex: 'firstConvertCost', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 20,
+                    render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '转化目标量', dataIndex: 'convertCount', label: '曝光数据', align: 'center', width: 60, sorter: true,
-                    render: (a: any) => <Statistic value={a || 0} />
+                    title: '首次付费率(广告)', dataIndex: 'firstActivePayRate', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 21,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '曝光数据', align: 'center', width: 75, sorter: true, default: 11,
+                    title: '首日付费金额(广告)', dataIndex: 'firstAttributionGameInAppLtv1day', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 22,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '目标转化率', dataIndex: 'convertRate', label: '曝光数据', align: 'center', width: 60, sorter: true,
+                    title: '首日付费ROI(广告)', dataIndex: 'firstAttributionGameInAppRoi1day', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 85, sorter: true, default: 23,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
+                {
+                    title: '付费次数(广告)', dataIndex: 'gamePayCount', label: '广告媒体端数据', align: 'center', className: "adDataBackColorClass", width: 70, sorter: true, default: 24,
+                    render: (a: any) => <Statistic value={a || 0} />
+                }
             ]
         },
         {
             label: '用户数据',
             data: [
                 {
-                    title: '新增用户数', dataIndex: 'regNum', label: '用户数据', align: 'center', width: 60, sorter: true,
+                    title: '新增用户数', dataIndex: 'regNum', label: '用户数据', align: 'center', width: 60, sorter: true, default: 29,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总注册人数', dataIndex: 'regTotalNum', label: '用户数据', align: 'center', width: 60, default: 12,
+                    title: '总注册人数', dataIndex: 'regTotalNum', label: '用户数据', align: 'center', width: 60,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日创角人数', dataIndex: 'firstRoleNum', label: '用户数据', align: 'center', width: 60, sorter: true,
+                    title: '首日创角人数', dataIndex: 'firstRoleNum', label: '用户数据', align: 'center', width: 60, sorter: true, default: 31,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
@@ -272,7 +277,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '注册成本', dataIndex: 'regCost', label: '用户数据', align: 'center', width: 70, sorter: true, default: 13,
+                    title: '注册成本', dataIndex: 'regCost', label: '用户数据', align: 'center', width: 70, sorter: true, default: 30,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
@@ -280,7 +285,7 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日创角成本', dataIndex: 'firstRoleCost', label: '用户数据', align: 'center', width: 60, sorter: true,
+                    title: '首日创角成本', dataIndex: 'firstRoleCost', label: '用户数据', align: 'center', width: 60, sorter: true, default: 32,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
@@ -292,11 +297,11 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日创角率', dataIndex: 'firstRoleRate', label: '用户数据', align: 'center', width: 70, sorter: true,
+                    title: '首日创角率', dataIndex: 'firstRoleRate', label: '用户数据', align: 'center', width: 70, sorter: true, default: 33,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '新用户创角率', dataIndex: 'newUserTotalRoleRate', label: '用户数据', align: 'center', width: 70, sorter: true, default: 14,
+                    title: '新用户创角率', dataIndex: 'newUserTotalRoleRate', label: '用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
@@ -309,187 +314,187 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
             label: '付费数据',
             data: [
                 {
-                    title: '新增付费次数', dataIndex: 'firstNewUserAmountCount', label: '付费数据', align: 'center', width: 60, sorter: true,
+                    title: '新增付费次数', dataIndex: 'firstNewUserAmountCount', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass', default: 25,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费人数', dataIndex: 'firstNewUserAmountNum', label: '付费数据', align: 'center', width: 60, sorter: true, default: 15,
+                    title: '新增付费人数', dataIndex: 'firstNewUserAmountNum', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass', default: 26,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费金额', dataIndex: 'firstNewUserAmount', label: '付费数据', align: 'center', width: 80, sorter: true, default: 16,
+                    title: '新增付费金额', dataIndex: 'firstNewUserAmount', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass', default: 27,
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费次数', dataIndex: 'newUserTotalAmountCount', label: '付费数据', align: 'center', width: 60, sorter: true,
+                    title: '至今付费次数', dataIndex: 'newUserTotalAmountCount', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费人数', dataIndex: 'newUserTotalAmountNum', label: '付费数据', align: 'center', width: 60, sorter: true, default: 18,
+                    title: '至今付费人数', dataIndex: 'newUserTotalAmountNum', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费金额', dataIndex: 'newUserTotalAmount', label: '付费数据', align: 'center', width: 80, sorter: true, default: 19,
+                    title: '至今付费金额', dataIndex: 'newUserTotalAmount', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新用户24小时充值金额', dataIndex: 'twentyFourHoursAmount', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '新用户24小时充值金额', dataIndex: 'twentyFourHoursAmount', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总充值金额', dataIndex: 'totalAmount', label: '付费数据', align: 'center', width: 60,
+                    title: '总充值金额', dataIndex: 'totalAmount', label: '付费数据', align: 'center', width: 60, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总充值次数', dataIndex: 'totalAmountCount', label: '付费数据', align: 'center', width: 50,
+                    title: '总充值次数', dataIndex: 'totalAmountCount', label: '付费数据', align: 'center', width: 50, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总充值人数', dataIndex: 'totalAmountNum', label: '付费数据', align: 'center', width: 50,
+                    title: '总充值人数', dataIndex: 'totalAmountNum', label: '付费数据', align: 'center', width: 50, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总充值金额', dataIndex: 'totalAmount', label: '付费数据', align: 'center', width: 70,
+                    title: '总充值金额', dataIndex: 'totalAmount', label: '付费数据', align: 'center', width: 70, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日ROI', dataIndex: 'firstRoi', label: '付费数据', align: 'center', width: 65, sorter: true, default: 21,
+                    title: '首日ROI', dataIndex: 'firstRoi', label: '付费数据', align: 'center', width: 65, sorter: true, default: 34, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '24小时ROI', dataIndex: 'twentyFourHoursRoi', label: '付费数据', align: 'center', width: 70, sorter: true, default: 22,
+                    title: '24小时ROI', dataIndex: 'twentyFourHoursRoi', label: '付费数据', align: 'center', width: 70, sorter: true, default: 35, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总ROI', dataIndex: 'totalRoi', label: '付费数据', align: 'center', width: 70, sorter: true, default: 23,
+                    title: '总ROI', dataIndex: 'totalRoi', label: '付费数据', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '广告总ROI', dataIndex: 'promotionTotalRoi', label: '付费数据', align: 'center', width: 70,
+                    title: '广告总ROI', dataIndex: 'promotionTotalRoi', label: '付费数据', align: 'center', width: 70, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '新增付费成本', dataIndex: 'firstNewUserRechargeCost', label: '付费数据', align: 'center', width: 70, sorter: true, default: 17,
+                    title: '新增付费成本', dataIndex: 'firstNewUserRechargeCost', label: '付费数据', align: 'center', width: 70, sorter: true, default: 28, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费成本', dataIndex: 'newUserTotalRechargeCost', label: '付费数据', align: 'center', width: 70, sorter: true, default: 20,
+                    title: '至今付费成本', dataIndex: 'newUserTotalRechargeCost', label: '付费数据', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总付费成本', dataIndex: 'totalRechargeCost', label: '付费数据', align: 'center', width: 70,
+                    title: '总付费成本', dataIndex: 'totalRechargeCost', label: '付费数据', align: 'center', width: 70, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费ARPPU', dataIndex: 'firstNewUserArppu', label: '付费数据', align: 'center', width: 60, sorter: true, default: 24,
+                    title: '新增付费ARPPU', dataIndex: 'firstNewUserArppu', label: '付费数据', align: 'center', width: 60, sorter: true, default: 37, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费ARPPU', dataIndex: 'newUserTotalAmountArppu', label: '付费数据', align: 'center', width: 60, sorter: true, default: 25,
+                    title: '至今付费ARPPU', dataIndex: 'newUserTotalAmountArppu', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费100+用户数', dataIndex: 'firstNewUserHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '新增付费100+用户数', dataIndex: 'firstNewUserHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费100+用户付费成本', dataIndex: 'firstNewUserHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true,
+                    title: '新增付费100+用户付费成本', dataIndex: 'firstNewUserHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费100+用户付费成本', dataIndex: 'newUserTotalHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true,
+                    title: '至今付费100+用户付费成本', dataIndex: 'newUserTotalHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首充50~100元用户数', dataIndex: 'firstRechargeFiftyHundredNum', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '首充50~100元用户数', dataIndex: 'firstRechargeFiftyHundredNum', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首充50~100元占比', dataIndex: 'firstRechargeFiftyHundredRate', label: '付费数据', align: 'center', width: 70, sorter: true,
+                    title: '首充50~100元占比', dataIndex: 'firstRechargeFiftyHundredRate', label: '付费数据', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '新增付费200+人数', dataIndex: 'firstNewUserTwoHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '新增付费200+人数', dataIndex: 'firstNewUserTwoHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '新增付费200+用户付费成本', dataIndex: 'firstNewUserTwoHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true,
+                    title: '新增付费200+用户付费成本', dataIndex: 'firstNewUserTwoHundredUserCost', label: '付费数据', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今付费100+用户数', dataIndex: 'newUserTotalHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '至今付费100+用户数', dataIndex: 'newUserTotalHundredUserNum', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日IOS付费次数', dataIndex: 'firstIosAmountCount', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费次数', dataIndex: 'firstIosAmountCount', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日IOS付费人数', dataIndex: 'firstIosAmountNum', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费人数', dataIndex: 'firstIosAmountNum', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日IOS付费金额', dataIndex: 'firstIosAmount', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费金额', dataIndex: 'firstIosAmount', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日IOS付费人数占比', dataIndex: 'firstIosAmountNumRate', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费人数占比', dataIndex: 'firstIosAmountNumRate', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日IOS付费金额占比', dataIndex: 'firstIosAmountRate', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费金额占比', dataIndex: 'firstIosAmountRate', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日IOS付费ROI', dataIndex: 'firstIosAmountRoi', label: '付费数据', align: 'center', width: 75, sorter: true,
+                    title: '首日IOS付费ROI', dataIndex: 'firstIosAmountRoi', label: '付费数据', align: 'center', width: 75, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日Android付费次数', dataIndex: 'firstAndroidAmountCount', label: '付费数据', align: 'center', width: 78, sorter: true,
+                    title: '首日Android付费次数', dataIndex: 'firstAndroidAmountCount', label: '付费数据', align: 'center', width: 78, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日Android付费人数', dataIndex: 'firstAndroidAmountNum', label: '付费数据', align: 'center', width: 78, sorter: true,
+                    title: '首日Android付费人数', dataIndex: 'firstAndroidAmountNum', label: '付费数据', align: 'center', width: 78, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日Android付费金额', dataIndex: 'firstAndroidAmount', label: '付费数据', align: 'center', width: 78, sorter: true,
+                    title: '首日Android付费金额', dataIndex: 'firstAndroidAmount', label: '付费数据', align: 'center', width: 78, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '首日Android付费人数占比', dataIndex: 'firstAndroidAmountNumRate', label: '付费数据', align: 'center', width: 95, sorter: true,
+                    title: '首日Android付费人数占比', dataIndex: 'firstAndroidAmountNumRate', label: '付费数据', align: 'center', width: 95, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日Android付费金额占比', dataIndex: 'firstAndroidAmountRate', label: '付费数据', align: 'center', width: 95, sorter: true,
+                    title: '首日Android付费金额占比', dataIndex: 'firstAndroidAmountRate', label: '付费数据', align: 'center', width: 95, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日Android付费ROI', dataIndex: 'firstAndroidAmountRoi', label: '付费数据', align: 'center', width: 80, sorter: true,
+                    title: '首日Android付费ROI', dataIndex: 'firstAndroidAmountRoi', label: '付费数据', align: 'center', width: 80, sorter: true, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '首日付费率', dataIndex: 'firstAmountRate', label: '付费数据', align: 'center', width: 70, sorter: true,
+                    title: '首日付费率', dataIndex: 'firstAmountRate', label: '付费数据', align: 'center', width: 70, sorter: true, default: 36, className: 'payDataBackColorClass',
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '新增客单价', dataIndex: 'firstNewUserAvgPrice', label: '付费数据', align: 'center', width: 60, sorter: true,
+                    title: '新增客单价', dataIndex: 'firstNewUserAvgPrice', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '至今客单价', dataIndex: 'newUserTotalAvgPrice', label: '付费数据', align: 'center', width: 60, sorter: true,
+                    title: '至今客单价', dataIndex: 'newUserTotalAvgPrice', label: '付费数据', align: 'center', width: 60, sorter: true, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: 'ltv1', dataIndex: 'ltvDay1', label: '付费数据', align: 'center', width: 60,
+                    title: 'ltv1', dataIndex: 'ltvDay1', label: '付费数据', align: 'center', width: 60, sorter: true, default: 38, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '每日扣单数', dataIndex: 'subOrderNum', label: '付费数据', align: 'center', width: 60,
+                    title: '每日扣单数', dataIndex: 'subOrderNum', label: '付费数据', align: 'center', width: 60, sorter: true, default: 39, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '每日扣单金额', dataIndex: 'subOrderAmount', label: '付费数据', align: 'center', width: 60,
+                    title: '每日扣单金额', dataIndex: 'subOrderAmount', label: '付费数据', align: 'center', width: 60, sorter: true, default: 40, className: 'payDataBackColorClass',
                     render: (a: any) => <Statistic value={a || 0} />
                 },
                 ...date

+ 55 - 42
src/pages/gameDataStatistics/components/TableData/index.tsx

@@ -1,11 +1,12 @@
 import CustomListModel from '@/components/CustomList'
 import Tables from '@/components/Tables'
 import { FullscreenExitOutlined, FullscreenOutlined, RedoOutlined, SearchOutlined, SettingOutlined } from '@ant-design/icons'
-import { useFullscreen } from 'ahooks'
+import { useDebounceFn, useFullscreen, useThrottleFn } from 'ahooks'
 import { Button, Card, Col, Row, Space, Tooltip, } from 'antd'
 import React, { useEffect, useRef, useState, useCallback } from 'react'
 import style from './index.less'
 import moment from 'moment'
+import lodash from 'lodash';
 
 interface Prosp {
     isZj?: boolean,//是否查总计
@@ -60,6 +61,47 @@ function TableData(props: Prosp) {
     const oldName = useRef(null)
     /*************************/
 
+    const { run: runSet } = useThrottleFn((newArr, newConfig, fixedData) => {
+        setoldSelectData(selectData.selectData)
+        setoldFixed(selectData.fixed)
+        if (newArr.length > 0) {
+            let c: any[] = []
+            newArr.forEach((newItem: any, index: number) => {
+                let oldItem = newConfig.find((c: { dataIndex: any }) => c.dataIndex === newItem.dataIndex)
+                if (oldItem) {
+                    // if (newItem?.width !== oldItem?.width) {
+                    oldItem.width = newItem?.width
+                    // }
+                    if (index < Number(fixedData.left)) {//设置左悬浮
+                        oldItem['fixed'] = 'left'
+                    } else if (index > (newArr?.length - Number(fixedData.right) - 1)) {//设置右悬浮
+                        oldItem['fixed'] = 'right'
+                    } else {
+                        oldItem['fixed'] = false
+                    }
+                    let { label, default: a, ...ite } = oldItem
+                    c.push(ite)
+                }
+            })
+            setNewColumns(c)
+            // setNewColumns(newArr.map((newItem: any, index: number) => {
+            //     let oldItem = newConfig.find((c: { dataIndex: any }) => c.dataIndex === newItem.dataIndex)
+            //     if (newItem?.width !== oldItem?.width) {
+            //         oldItem.width = newItem?.width
+            //     }
+            //     if (index < Number(fixedData.left)) {//设置左悬浮
+            //         oldItem['fixed'] = 'left'
+            //     } else if (index > (newArr?.length - Number(fixedData.right) - 1)) {//设置右悬浮
+            //         oldItem['fixed'] = 'right'
+            //     } else {
+            //         oldItem['fixed'] = false
+            //     }
+            //     let { label, default: a, ...ite } = oldItem
+            //     return ite
+            // }))
+        }
+    }, { wait: 500 });
+
     /**重组选中的字段 */
     useEffect(() => {
         let oldConfigName = oldName.current || ''
@@ -98,44 +140,7 @@ function TableData(props: Prosp) {
             }
             if ((JSON.stringify(oldSelectDataString) !== JSON.stringify(selectData?.selectData)) || (JSON.stringify(selectData.fixed) !== JSON.stringify(oldFixed))) {
                 console.log('设置配置改变重新赋值')
-                setoldSelectData(() => selectData.selectData)
-                setoldFixed(() => selectData.fixed)
-                if (newArr.length > 0) {
-                    let c: any[] = []
-                    newArr.forEach((newItem: any, index: number) => {
-                        let oldItem = newConfig.find((c: { dataIndex: any }) => c.dataIndex === newItem.dataIndex)
-                        if (oldItem) {
-                            if (newItem?.width !== oldItem?.width) {
-                                oldItem.width = newItem?.width
-                            }
-                            if (index < Number(fixedData.left)) {//设置左悬浮
-                                oldItem['fixed'] = 'left'
-                            } else if (index > (newArr?.length - Number(fixedData.right) - 1)) {//设置右悬浮
-                                oldItem['fixed'] = 'right'
-                            } else {
-                                oldItem['fixed'] = false
-                            }
-                            let { label, default: a, ...ite } = oldItem
-                            c.push(ite)
-                        }
-                    })
-                    setNewColumns(c)
-                    // setNewColumns(newArr.map((newItem: any, index: number) => {
-                    //     let oldItem = newConfig.find((c: { dataIndex: any }) => c.dataIndex === newItem.dataIndex)
-                    //     if (newItem?.width !== oldItem?.width) {
-                    //         oldItem.width = newItem?.width
-                    //     }
-                    //     if (index < Number(fixedData.left)) {//设置左悬浮
-                    //         oldItem['fixed'] = 'left'
-                    //     } else if (index > (newArr?.length - Number(fixedData.right) - 1)) {//设置右悬浮
-                    //         oldItem['fixed'] = 'right'
-                    //     } else {
-                    //         oldItem['fixed'] = false
-                    //     }
-                    //     let { label, default: a, ...ite } = oldItem
-                    //     return ite
-                    // }))
-                }
+                runSet(newArr, newConfig, fixedData)
             }
         }
         if (configName !== oldConfigName) {
@@ -143,8 +148,7 @@ function TableData(props: Prosp) {
         }
     }, [selectData, oldSelectData, dataSource, oldFixed, configName, config, timer])
 
-    //拖动宽度设置设置保存
-    const handelResize = useCallback((columns: any) => {
+    const { run: runResize } = useDebounceFn((columns) => {
         if (configName) {
             let newSelectData = selectData?.selectData?.map((item, index) => {
                 item['width'] = columns[index]['width']
@@ -152,6 +156,11 @@ function TableData(props: Prosp) {
             })
             localStorage.setItem(`myAdMonitorConfig${version}_` + configName, JSON.stringify(newSelectData))
         }
+    }, { wait: 100 });
+
+    //拖动宽度设置设置保存
+    const handelResize = useCallback((columns: any) => {
+        runResize(columns)
     }, [configName, selectData])
 
     const header = <Col span={24}>
@@ -276,6 +285,7 @@ const Tab = React.memo((props: any) => {
                     hideOnSinglePage
                     className={`all_table header_table_body ${className ? className : ''}`}
                     sortDirections={['ascend', 'descend', null]}
+                    handelResize={((columns: any) => handelResize(columns))}
                     onChange={(pagination: any, filters: any, sorter: any) => onChange && onChange({ pagination, filters, sortData: sorter })}
                 />
             }
@@ -302,4 +312,7 @@ const Tab = React.memo((props: any) => {
         </div>
     </Col >
 })
-export default React.memo(TableData)
+
+export default React.memo(TableData, (prevProps, nextProps) => {
+    return lodash.isEqual(nextProps, prevProps); // 假设 deepEqual 是一个深层比较函数
+})

+ 4 - 4
src/pages/gameDataStatistics/extensionData/everyday/tableConfig.tsx

@@ -249,10 +249,10 @@ function columns12(rechargeTrendHandle: (data: any) => void): { label: string, f
                 { title: '老用户充值次数成本', dataIndex: 'oldUserRechargeCountCost', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
                 { title: '账面充值次数成本', dataIndex: 'showRechargeCountCost', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
                 { title: '新用户累计充值次数成本', dataIndex: 'newUserRechargeCountCost', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
-                {
-                    title: '复充率', dataIndex: 'repeatRechargeRate', label: '付费数据', align: 'center', width: 70, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
+                // {
+                //     title: '复充率', dataIndex: 'repeatRechargeRate', label: '付费数据', align: 'center', width: 70, sorter: true,
+                //     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                // },
                 { title: '新增注册ARPPU', dataIndex: 'newRegArpu', label: '付费数据', align: 'center', width: 70, sorter: true, render: (a: string) => <Statistic value={a || 0} /> },
                 { title: '首日付费ARPPU', dataIndex: 'firstRechargeArpu', label: '付费数据', align: 'center', width: 70, sorter: true, render: (a: string) => <Statistic value={a || 0} /> },
                 { title: '当天付费ARPPU', dataIndex: 'todayRechargeArpu', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} /> },

+ 8 - 8
src/pages/gameDataStatistics/extensionData/total/tableConfig.tsx

@@ -202,18 +202,18 @@ function columns12(gameType: any) {
                 { title: '账面充值次数成本', dataIndex: 'showRechargeCountCost', label: '付费数据', align: 'center', width: 90, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
                 { title: '新用户累计充值次数成本', dataIndex: 'newUserRechargeCountCost', label: '付费数据', align: 'center', width: 90, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
                 { title: '新用户充值次数成本', dataIndex: 'userRechargeCountCost', label: '付费数据', align: 'center', width: 90, render: (a: string) => <Statistic value={a || 0} precision={2} /> },
-                {
-                    title: '复充率', dataIndex: 'repeatRechargeRate', label: '付费数据', align: 'center', width: 70,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
+                // {
+                //     title: '复充率', dataIndex: 'repeatRechargeRate', label: '付费数据', align: 'center', width: 70,
+                //     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                // },
                 {
                     title: '新用户复充率', dataIndex: 'userRepeatRechargeRate', label: '付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                {
-                    title: '当天复充率', dataIndex: 'todayRepeatRechargeRate', label: '付费数据', align: 'center', width: 70, sorter: true,
-                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
-                },
+                // {
+                //     title: '当天复充率', dataIndex: 'todayRepeatRechargeRate', label: '付费数据', align: 'center', width: 70, sorter: true,
+                //     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                // },
                 { title: '新增注册ARPPU', dataIndex: 'newRegArpu', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2}/> },
                 { title: '首日付费ARPPU', dataIndex: 'firstRechargeArpu', label: '付费数据', align: 'center', width: 80, sorter: true, render: (a: string) => <Statistic value={a || 0} precision={2}/> },
                 { title: '新用户付费ARPPU', dataIndex: 'userRechargeArpu', label: '付费数据', align: 'center', width: 80, render: (a: string) => <Statistic value={a || 0} precision={2}/> },

+ 43 - 43
src/pages/gameDataStatistics/gameData/everyday/tableConfig.tsx

@@ -294,47 +294,47 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
 
 
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -429,46 +429,46 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
                 },
 
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -563,47 +563,47 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
                 },
 
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 

+ 44 - 44
src/pages/gameDataStatistics/gameData/everyday/tableConfigBuy.tsx

@@ -292,49 +292,49 @@ function columnsBuy12(rechargeTrendHandle: (data: any) => void): { label: string
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
-                
+
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -431,46 +431,46 @@ function columnsBuy12(rechargeTrendHandle: (data: any) => void): { label: string
 
 
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -567,47 +567,47 @@ function columnsBuy12(rechargeTrendHandle: (data: any) => void): { label: string
 
 
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 

+ 43 - 43
src/pages/gameDataStatistics/gameData/everyday/tableConfigNature.tsx

@@ -293,47 +293,47 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
 
 
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -428,46 +428,46 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
                 },
 
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -562,47 +562,47 @@ function columnsNature12(rechargeTrendHandle: (data: any) => void): { label: str
                 },
 
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 75, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 

+ 10 - 1
src/pages/gameDataStatistics/gameData/total/index.tsx

@@ -4,7 +4,7 @@ import columns12 from "./tableConfig"
 import columnsBuy12 from './tableConfigBuy'
 import columnsNature12 from './tableConfigNature'
 import { useAjax } from "@/Hook/useAjax"
-import { GameTotalProps, getGameTotalListApi } from "@/services/gameData/game"
+import { GameTotalProps, getGameTotalListApi, getGameTotalTotalApi } from "@/services/gameData/game"
 import QueryForm from "@/components/QueryForm"
 import { getPresets } from "@/components/QueryForm/const"
 import moment from "moment"
@@ -27,12 +27,19 @@ const Total: React.FC = () => {
         rechargeEndDate: moment().format('YYYY-MM-DD')
     })
     const [accessKey, setAccessKey] = useState<string>('1')
+    const [totalData, setTotalData] = useState<any[]>([])
 
     const getGameTotalList = useAjax((params) => getGameTotalListApi(params))
+    const getGameTotalTotal = useAjax((params) => getGameTotalTotalApi(params))
     /*****************************/
 
     useEffect(() => {
         getGameTotalList.run(queryForm)
+        getGameTotalTotal.run(queryForm).then(res => {
+            res.id = 1
+            res.gameName = '总计'
+            setTotalData([res])
+        })
     }, [queryForm])
 
     return <div>
@@ -71,6 +78,8 @@ const Total: React.FC = () => {
                 isBGGameClassify
                 rechargeDay={{ ranges: getPresets() }}
             />}
+            isZj
+            totalData={totalData}
             scroll={{ x: 1000, y: 600 }}
             ajax={getGameTotalList}
             fixed={{ left: 5, right: 0 }}

+ 183 - 77
src/pages/gameDataStatistics/gameData/total/tableConfig.tsx

@@ -11,7 +11,10 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '游戏信息',
             data: [
-                { title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1, render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />) },
+                {
+                    title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1,
+                    render: (a: string, b: any) => (<WidthEllipsis isCopy={a !== '总计'} value={a} />)
+                },
                 {
                     title: '推广游戏应用类型', dataIndex: 'gameClassify', label: '游戏信息', align: 'center', width: 85,
                     render: (a: string) => <WidthEllipsis value={gameClassifyEnum[a]} />
@@ -30,7 +33,10 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '买量用户数据',
             data: [
-                { title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量注册成本', dataIndex: 'buyRegCost', label: '买量用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -40,7 +46,10 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '自然量用户数据',
             data: [
-                { title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量注册成本', dataIndex: 'natureRegCost', label: '自然量用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -50,7 +59,10 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '总用户数据',
             data: [
-                { title: '总注册人数', dataIndex: 'regNum', label: '总用户数据', align: 'center', width: 70, sorter: true, default: 3 },
+                {
+                    title: '总注册人数', dataIndex: 'regNum', label: '总用户数据', align: 'center', width: 70, sorter: true, default: 3,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总注册成本', dataIndex: 'regCost', label: '总用户数据', align: 'center', width: 70, sorter: true, default: 4,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -60,8 +72,14 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '买量付费数据',
             data: [
-                { title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户充值金额', dataIndex: 'buyNewUserAmount', label: '买量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -74,26 +92,50 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     title: '买量新用户回收率', dataIndex: 'buyNewUserRechargeRate', label: '买量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量首日新用户充值金额', dataIndex: 'buyFirstNewUserAmount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量老用户充值金额', dataIndex: 'buyOldUserAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量账面充值金额', dataIndex: 'buyAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户累计充值金额', dataIndex: 'buyNewUserTotalAmount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -152,47 +194,47 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                 },
 
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -229,8 +271,14 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '自然量付费数据',
             data: [
-                { title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70 },
+                {
+                    title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户充值金额', dataIndex: 'natureNewUserAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -243,26 +291,50 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     title: '自然量新用户回收率', dataIndex: 'natureNewUserRechargeRate', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量首日新用户充值金额', dataIndex: 'natureFirstNewUserAmount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70, },
-                { title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70, },
+                {
+                    title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量老用户充值金额', dataIndex: 'natureOldUserAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70 },
+                {
+                    title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量账面充值金额', dataIndex: 'natureAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户累计充值金额', dataIndex: 'natureNewUserTotalAmount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -320,50 +392,52 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
                     title: '自然量新用户复充率', dataIndex: 'natureNewUserAgainRate', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
@@ -397,8 +471,14 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
         {
             label: '总付费数据',
             data: [
-                { title: '总新用户充值次数', dataIndex: 'newUserAmountCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总新用户充值人数', dataIndex: 'newUserAmountNum', label: '总付费数据', align: 'center', width: 70, default: 5 },
+                {
+                    title: '总新用户充值次数', dataIndex: 'newUserAmountCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总新用户充值人数', dataIndex: 'newUserAmountNum', label: '总付费数据', align: 'center', width: 70, default: 5,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总新用户充值金额', dataIndex: 'newUserAmount', label: '总付费数据', align: 'center', width: 70, default: 6,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -411,26 +491,50 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     title: '总新用户回收率', dataIndex: 'newUserRechargeRate', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 11,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 7 },
+                {
+                    title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 7,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总首日新用户充值金额', dataIndex: 'firstNewUserAmount', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 8,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总老用户充值金额', dataIndex: 'oldUserAmount', label: '总付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总账面充值金额', dataIndex: 'amount', label: '总付费数据', align: 'center', width: 85,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 9 },
+                {
+                    title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 9,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总新用户累计充值金额', dataIndex: 'newUserTotalAmount', label: '总付费数据', align: 'center', width: 70, sorter: true, default: 10,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -488,51 +592,53 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
                     title: '总新用户复充率', dataIndex: 'newUserAgainRate', label: '总付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />

+ 176 - 75
src/pages/gameDataStatistics/gameData/total/tableConfigBuy.tsx

@@ -11,7 +11,10 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '游戏信息',
             data: [
-                { title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1, render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />) },
+                {
+                    title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1,
+                    render: (a: string, b: any) => (<WidthEllipsis isCopy={a !== '总计'} value={a} />)
+                },
                 {
                     title: '推广游戏应用类型', dataIndex: 'gameClassify', label: '游戏信息', align: 'center', width: 85,
                     render: (a: string) => <WidthEllipsis value={gameClassifyEnum[a]} />
@@ -30,7 +33,10 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '买量用户数据',
             data: [
-                { title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, default: 3, sorter: true },
+                {
+                    title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, default: 3, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量注册成本', dataIndex: 'buyRegCost', label: '买量用户数据', align: 'center', width: 70, default: 4, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -40,7 +46,10 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '自然量用户数据',
             data: [
-                { title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量注册成本', dataIndex: 'natureRegCost', label: '自然量用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -50,7 +59,10 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '总用户数据',
             data: [
-                { title: '总注册人数', dataIndex: 'regNum', label: '总用户数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '总注册人数', dataIndex: 'regNum', label: '总用户数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总注册成本', dataIndex: 'regCost', label: '总用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -60,8 +72,14 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '买量付费数据',
             data: [
-                { title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', default: 5, width: 70 },
+                {
+                    title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', default: 5, width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户充值金额', dataIndex: 'buyNewUserAmount', label: '买量付费数据', align: 'center', default: 6, width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -74,26 +92,50 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                     title: '买量新用户回收率', dataIndex: 'buyNewUserRechargeRate', label: '买量付费数据', align: 'center', width: 70, default: 11,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, default: 7, sorter: true },
+                {
+                    title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, default: 7, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量首日新用户充值金额', dataIndex: 'buyFirstNewUserAmount', label: '买量付费数据', align: 'center', width: 70, default: 8, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量老用户充值金额', dataIndex: 'buyOldUserAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量账面充值金额', dataIndex: 'buyAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, default: 9, sorter: true },
+                {
+                    title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, default: 9, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户累计充值金额', dataIndex: 'buyNewUserTotalAmount', label: '买量付费数据', align: 'center', width: 70, default: 10, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -152,47 +194,47 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                 },
 
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -229,8 +271,14 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
         {
             label: '自然量付费数据',
             data: [
-                { title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70 },
+                {
+                    title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户充值金额', dataIndex: 'natureNewUserAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -243,26 +291,50 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                     title: '自然量新用户回收率', dataIndex: 'natureNewUserRechargeRate', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量首日新用户充值金额', dataIndex: 'natureFirstNewUserAmount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70, },
-                { title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70, },
+                {
+                    title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量老用户充值金额', dataIndex: 'natureOldUserAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70 },
+                {
+                    title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量账面充值金额', dataIndex: 'natureAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户累计充值金额', dataIndex: 'natureNewUserTotalAmount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -320,50 +392,53 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
                     title: '自然量新用户复充率', dataIndex: 'natureNewUserAgainRate', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
@@ -411,26 +486,50 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                     title: '总新用户回收率', dataIndex: 'newUserRechargeRate', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总首日新用户充值金额', dataIndex: 'firstNewUserAmount', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总老用户充值金额', dataIndex: 'oldUserAmount', label: '总付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总账面充值金额', dataIndex: 'amount', label: '总付费数据', align: 'center', width: 85,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总新用户累计充值金额', dataIndex: 'newUserTotalAmount', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -488,51 +587,53 @@ function columnsBuy12(): { label: string, fieldSHow?: { label: string, saveField
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
                     title: '总新用户复充率', dataIndex: 'newUserAgainRate', label: '总付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />

+ 178 - 77
src/pages/gameDataStatistics/gameData/total/tableConfigNature.tsx

@@ -11,7 +11,10 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '游戏信息',
             data: [
-                { title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1, render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />) },
+                {
+                    title: '推广游戏名称', dataIndex: 'gameName', label: '游戏信息', align: 'center', width: 70, default: 1,
+                    render: (a: string, b: any) => (<WidthEllipsis isCopy={a !== '总计'} value={a} />)
+                },
                 {
                     title: '推广游戏应用类型', dataIndex: 'gameClassify', label: '游戏信息', align: 'center', width: 85,
                     render: (a: string) => <WidthEllipsis value={gameClassifyEnum[a]} />
@@ -30,7 +33,10 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '买量用户数据',
             data: [
-                { title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量注册人数', dataIndex: 'buyRegNum', label: '买量用户数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量注册成本', dataIndex: 'buyRegCost', label: '买量用户数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -40,7 +46,10 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '自然量用户数据',
             data: [
-                { title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, default: 3, sorter: true },
+                {
+                    title: '自然量注册人数', dataIndex: 'natureRegNum', label: '自然量用户数据', align: 'center', width: 70, default: 3, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量注册成本', dataIndex: 'natureRegCost', label: '自然量用户数据', align: 'center', width: 70, default: 4, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -60,8 +69,14 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '买量付费数据',
             data: [
-                { title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量新用户充值次数', dataIndex: 'buyNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户充值人数', dataIndex: 'buyNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户充值金额', dataIndex: 'buyNewUserAmount', label: '买量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -74,26 +89,50 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                     title: '买量新用户回收率', dataIndex: 'buyNewUserRechargeRate', label: '买量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量首日新用户充值次数', dataIndex: 'buyFirstNewUserAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量首日新用户充值人数', dataIndex: 'buyFirstNewUserAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量首日新用户充值金额', dataIndex: 'buyFirstNewUserAmount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量老用户充值次数', dataIndex: 'buyOldUserCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量老用户充值人数', dataIndex: 'buyOldUserNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量老用户充值金额', dataIndex: 'buyOldUserAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70 },
-                { title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70 },
+                {
+                    title: '买量账面充值次数', dataIndex: 'buyAmountCount', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量账面充值人数', dataIndex: 'buyAmountNum', label: '买量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量账面充值金额', dataIndex: 'buyAmount', label: '买量付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '买量新用户累计充值次数', dataIndex: 'buyNewUserTotalAmountCount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '买量新用户累计充值人数', dataIndex: 'buyNewUserTotalAmountNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '买量新用户累计充值金额', dataIndex: 'buyNewUserTotalAmount', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -152,47 +191,47 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                 },
 
                 {
-                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+人数', dataIndex: 'buyHundredUserNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量单日付费100+成本', dataIndex: 'buyHundredUserNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量首日创角人数', dataIndex: 'buyFirstRoleNum', label: '买量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角人数', dataIndex: 'buyRoleNum', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 80,
+                    title: '买量新用户累计创角人数', dataIndex: 'buyNewUserTotalRoleNum', label: '买量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量首日创角人数成本', dataIndex: 'buyFirstRoleNumCost', label: '买量付费数据', align: 'center', width: 85, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量创角人数成本', dataIndex: 'buyRoleNumCost', label: '买量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '买量新用户累计创角人数成本', dataIndex: 'buyNewUserTotalRoleNumCost', label: '买量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量首日创角率', dataIndex: 'buyFirstRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70,
+                    title: '买量创角率', dataIndex: 'buyRoleNumRate', label: '买量付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 70, 
+                    title: '买量新用户累计创角率', dataIndex: 'buyNewUserTotalRoleNumRate', label: '买量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
@@ -229,8 +268,14 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '自然量付费数据',
             data: [
-                { title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', default: 5, width: 70 },
+                {
+                    title: '自然量新用户充值次数', dataIndex: 'natureNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户充值人数', dataIndex: 'natureNewUserAmountNum', label: '自然量付费数据', align: 'center', default: 5, width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户充值金额', dataIndex: 'natureNewUserAmount', label: '自然量付费数据', align: 'center', default: 6, width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -243,26 +288,50 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                     title: '自然量新用户回收率', dataIndex: 'natureNewUserRechargeRate', label: '自然量付费数据', align: 'center', width: 70, default: 11,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, default: 7, sorter: true },
+                {
+                    title: '自然量首日新用户充值次数', dataIndex: 'natureFirstNewUserAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量首日新用户充值人数', dataIndex: 'natureFirstNewUserAmountNum', label: '自然量付费数据', align: 'center', width: 70, default: 7, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量首日新用户充值金额', dataIndex: 'natureFirstNewUserAmount', label: '自然量付费数据', align: 'center', width: 70, default: 8, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70, },
-                { title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70, },
+                {
+                    title: '自然量老用户充值次数', dataIndex: 'natureOldUserCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量老用户充值人数', dataIndex: 'natureOldUserNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量老用户充值金额', dataIndex: 'natureOldUserAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70 },
-                { title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70 },
+                {
+                    title: '自然量账面充值次数', dataIndex: 'natureAmountCount', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量账面充值人数', dataIndex: 'natureAmountNum', label: '自然量付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量账面充值金额', dataIndex: 'natureAmount', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true },
-                { title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, default: 9, sorter: true },
+                {
+                    title: '自然量新用户累计充值次数', dataIndex: 'natureNewUserTotalAmountCount', label: '自然量付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '自然量新用户累计充值人数', dataIndex: 'natureNewUserTotalAmountNum', label: '自然量付费数据', align: 'center', width: 70, default: 9, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '自然量新用户累计充值金额', dataIndex: 'natureNewUserTotalAmount', label: '自然量付费数据', align: 'center', width: 70, default: 10, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -320,50 +389,52 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
-                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量单日付费100+人数', dataIndex: 'natureHundredUserNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 80, 
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量单日付费100+成本', dataIndex: 'natureHundredUserNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量首日创角人数', dataIndex: 'natureFirstRoleNum', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                 },
                 {
-                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 70, 
+                    title: '自然量创角人数', dataIndex: 'natureRoleNum', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 70,
+                    title: '自然量新用户累计创角人数', dataIndex: 'natureNewUserTotalRoleNum', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量首日创角人数成本', dataIndex: 'natureFirstRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '自然量创角人数成本', dataIndex: 'natureRoleNumCost', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角人数成本', dataIndex: 'natureNewUserTotalRoleNumCost', label: '自然量付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量首日创角率', dataIndex: 'natureFirstRoleNumRate', label: '自然量付费数据', align: 'center', width: 80, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75,
+                    title: '自然量创角率', dataIndex: 'natureRoleNumRate', label: '自然量付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 80,
+                    title: '自然量新用户累计创角率', dataIndex: 'natureNewUserTotalRoleNumRate', label: '自然量付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
+
                 {
                     title: '自然量新用户复充率', dataIndex: 'natureNewUserAgainRate', label: '自然量付费数据', align: 'center', width: 70,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
@@ -397,8 +468,14 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
         {
             label: '总付费数据',
             data: [
-                { title: '总新用户充值次数', dataIndex: 'newUserAmountCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总新用户充值人数', dataIndex: 'newUserAmountNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总新用户充值次数', dataIndex: 'newUserAmountCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总新用户充值人数', dataIndex: 'newUserAmountNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总新用户充值金额', dataIndex: 'newUserAmount', label: '总付费数据', align: 'center', width: 70,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -411,26 +488,50 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                     title: '总新用户回收率', dataIndex: 'newUserRechargeRate', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
-                { title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '总首日新用户充值次数', dataIndex: 'firstNewUserAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总首日新用户充值人数', dataIndex: 'firstNewUserAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总首日新用户充值金额', dataIndex: 'firstNewUserAmount', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总老用户充值次数', dataIndex: 'oldUserCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总老用户充值人数', dataIndex: 'oldUserNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总老用户充值金额', dataIndex: 'oldUserAmount', label: '总付费数据', align: 'center', width: 80,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70 },
-                { title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70 },
+                {
+                    title: '总账面充值次数', dataIndex: 'amountCount', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总账面充值人数', dataIndex: 'amountNum', label: '总付费数据', align: 'center', width: 70,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总账面充值金额', dataIndex: 'amount', label: '总付费数据', align: 'center', width: 85,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
-                { title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true },
-                { title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true },
+                {
+                    title: '总新用户累计充值次数', dataIndex: 'newUserTotalAmountCount', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总新用户累计充值人数', dataIndex: 'newUserTotalAmountNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
                 {
                     title: '总新用户累计充值金额', dataIndex: 'newUserTotalAmount', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
@@ -484,52 +585,52 @@ function columnsNature12(): { label: string, fieldSHow?: { label: string, saveFi
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总复充率', dataIndex: 'userAgainRate', label: '总付费数据', align: 'center', width: 70,
+                    title: '总复充率', dataIndex: 'userAgainRate', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 
                 {
-                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 80,
+                    title: '总单日付费100+人数', dataIndex: 'hundredUserNum', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总单日付费100+成本', dataIndex: 'hundredUserNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总首日创角人数', dataIndex: 'firstRoleNum', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70,
+                    title: '总创角人数', dataIndex: 'roleNum', label: '总付费数据', align: 'center', width: 70, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 75,
+                    title: '总新用户累计创角人数', dataIndex: 'newUserTotalRoleNum', label: '总付费数据', align: 'center', width: 85, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总首日创角人数成本', dataIndex: 'firstRoleNumCost', label: '总付费数据', align: 'center', width: 80, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总创角人数成本', dataIndex: 'roleNumCost', label: '总付费数据', align: 'center', width: 70, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 80,
-                    render: (a: string) => <Statistic value={a || 0} precision={2}/>
+                    title: '总新用户累计创角人数成本', dataIndex: 'newUserTotalRoleNumCost', label: '总付费数据', align: 'center', width: 90, sorter: true,
+                    render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总首日创角率', dataIndex: 'firstRoleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75,
+                    title: '总创角率', dataIndex: 'roleNumRate', label: '总付费数据', align: 'center', width: 75, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 80,
+                    title: '总新用户累计创角率', dataIndex: 'newUserTotalRoleNumRate', label: '总付费数据', align: 'center', width: 90, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
 

+ 11 - 0
src/services/gameData/game.ts

@@ -41,6 +41,17 @@ export async function getGameTotalListApi(data: GameTotalProps) {
         data
     });
 }
+/**
+ * 游戏总数据总计
+ * @param data 
+ * @returns 
+ */
+export async function getGameTotalTotalApi(data: GameTotalProps) {
+    return request(wapi + `/gameData/total`, {
+        method: 'POST',
+        data
+    });
+}
 
 export type GameDayProps = Omit<GameTotalProps, 'rechargeBeginDate' | 'rechargeEndDate'>
 /**