wjx 1 год назад
Родитель
Сommit
d33c337355

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

@@ -1,4 +1,4 @@
-import { Button, Col, DatePicker, Form, Input, Radio, Row, Select, Space } from "antd"
+import { Button, Col, DatePicker, Form, Input, InputNumber, Radio, Row, Select, Space } from "antd"
 import React, { useEffect, useState } from "react"
 import moment from "moment"
 import { useAjax } from "@/Hook/useAjax"
@@ -190,6 +190,8 @@ interface Props {
     isGsId?: boolean
     /** 是否开启多个区服id搜索 */
     isServerIds?: boolean
+    /** 是否开启多个区服id搜索 */
+    isRankingNum?: boolean
 }
 /**
  * 游戏数据系统 请求参数
@@ -203,7 +205,7 @@ const QueryForm: React.FC<Props> = (props) => {
         isGameRoleName, isFirstRecharge, isSwitch, isMerchantNo, isOrderId, isMerchantOrderNo, isPayStatus, isPayWay, isProductName, isRegAgent, isAgentId, isPutAgent, isRegDay, isOs, isParentId, isProjectId, isProjectName, isPromotionId, isPromotionName,
         isSysUserName, isRechargeDate, isBGGameClassify, isGameUserId, isSysUserId, isUserName, isUserId, isSelectRanking, isGameType, isConsumeDay, rechargeDay, isBeginDay, isType, isAdTTStatus, isUserEnterType, isServerName, isServerId, isServerDay, isAdTXStatus,
         payTimeDay, placeAnOrderDay, isPayIntervalTime, isActiveTypes, isNickname, isMobile, isRegIp, isIsAuth, isIsBindMobile, isIsRecharge, isUserStatus, isCreateRole, isRoleCount, isVipLevel, isCreateRoleDay, isIsChange, isIsSendMail, isWeChatCompany, isWeChat,
-        isCustomerServerId, isOperatorId, isGsId, isServerIds
+        isCustomerServerId, isOperatorId, isGsId, isServerIds, isRankingNum
     } = props
     const [form] = Form.useForm()
     const parentId = Form.useWatch('parentId', form)
@@ -295,13 +297,6 @@ const QueryForm: React.FC<Props> = (props) => {
     useEffect(() => {
         if (isSysUserId) {
             getSubUserWithSelfList.run().then(res => {
-                // let loginUserId = localStorage.getItem('userId')
-                // let nameList = ['杨安明', '曹春林', '杨泽健', '金勇旭', '杨雨霏', '毛斌峰', '董平']
-                // if (loginUserId && ['158', '120', '119', '289', '399'].includes(loginUserId)) {
-                //     setUserIdList(res.filter((item: any) => nameList.includes(item.nickname)))
-                // } else {
-                //     setUserIdList(res)
-                // }
                 setUserIdList(res ? Object.keys(res)?.map(key => ({ userId: key, nickname: res[key] })) : [])
             })
         }
@@ -966,6 +961,11 @@ const QueryForm: React.FC<Props> = (props) => {
                 <Input placeholder="注册IP" allowClear style={{ width: 140 }} />
             </Form.Item></Col>}
 
+            {/* 注册IP */}
+            {isRankingNum && <Col><Form.Item name='rankingNum'>
+                <InputNumber placeholder="排名范围" />
+            </Form.Item></Col>}
+
             {/* 是否充值 */}
             {isIsRecharge && <Col><Form.Item name='isRecharge'>
                 <Select

+ 16 - 0
src/global.less

@@ -337,4 +337,20 @@ body {
 
 .minHeight .ant-form-item-control-input {
   min-height: auto;
+}
+
+.orangeColorClass {
+  background-color: #fff2e8;
+}
+
+.volcanoColorClass {
+  background-color: #ffe7ba;
+}
+
+.redColorClass {
+  background-color: #fff7e6;
+}
+
+.green2ColorClass {
+  background-color: #f6ffed;
 }

+ 9 - 3
src/pages/gameDataStatistics/components/TableData/index.tsx

@@ -16,6 +16,7 @@ interface Prosp {
     tableTotal?: { [key: string]: string },//是个开启总计
     scroll?: { x?: number, y?: number },//开启行滑动并设置容器最大宽度
     title?: string,//tabel的标题
+    tips?: string, // 提示
     tooltip?: JSX.Element,//是否在标题后加问号展示说明
     dataSource: any[],//table的数据
     expandedRowRender?: (data: any) => JSX.Element,
@@ -61,7 +62,7 @@ export const version = '1.0.0'
 function TableData(props: Prosp) {
 
     /*************************/
-    const { isZj, totalData, czChild, scroll, title, dataSource, expandedRowRender, isVirtually = true, rowSelection, sortData, headerHeight, className, rowClassName, leftChild, page = undefined, pageSize = undefined, size = 'small', total = 0, onChange, config, configName, ajax, fixed = { left: 0, right: 1 }, summary, estimatedRowHeight } = props
+    const { isZj, totalData, czChild, scroll, title, tips, dataSource, expandedRowRender, isVirtually = true, rowSelection, sortData, headerHeight, className, rowClassName, leftChild, page = undefined, pageSize = undefined, size = 'small', total = 0, onChange, config, configName, ajax, fixed = { left: 0, right: 1 }, summary, estimatedRowHeight } = props
     const [visible, setVisible] = useState<boolean>(false)
     const [isFullscreen, setIsFullscreen] = useState<boolean>(true)
     const [oldSelectData, setoldSelectData] = useState<any[]>([])
@@ -282,7 +283,12 @@ function TableData(props: Prosp) {
                 bodyStyle={{ padding: '5px 10px' }}
             >
                 <div style={{ textAlign: 'center', fontWeight: 'bold', padding: '4px 6px 6px', fontSize: 16, marginBottom: 4, position: 'relative' }}>
-                    {title}
+                    <Space>
+                        <span>{title}</span>
+                        {tips && <Tooltip title={tips}>
+                            <span><QuestionCircleOutlined /></span>
+                        </Tooltip>}
+                    </Space>
                     {isVirtually && <IsVirtually title={title} />}
                 </div>
                 <Row gutter={[0, 16]}>
@@ -301,7 +307,7 @@ function TableData(props: Prosp) {
                 bodyStyle={{ padding: '5px 10px' }}
             >
                 <div style={{ textAlign: 'center', fontWeight: 'bold', padding: '4px 6px 6px', fontSize: 16, marginBottom: 4, position: 'relative' }}>
-                    {title}
+                    <Space>{title}</Space>
                     {isVirtually && <IsVirtually title={title} />}
                 </div>
                 <Row gutter={[0, 16]}>

+ 69 - 6
src/pages/gameDataStatistics/roleOperate/roleFightingRanking/index.tsx

@@ -1,5 +1,11 @@
-import React from "react"
-
+import { useAjax } from "@/Hook/useAjax"
+import { GetCombatRankingProps, getCombatRankingListApi } from "@/services/gameData/roleOperate"
+import React, { useEffect, useState } from "react"
+import moment from "moment"
+import TableData from "../../components/TableData"
+import QueryForm from "@/components/QueryForm"
+import { getPresetsRanking } from "@/components/QueryForm/const"
+import columns12 from "./tableConfig"
 
 /**
  * 角色战力排行榜
@@ -7,12 +13,69 @@ import React from "react"
  */
 const RoleFightingRanking: React.FC = () => {
 
-    /*************************************/
-    
-    /*************************************/
+    /********************************/
+    const [queryForm, setQueryForm] = useState<GetCombatRankingProps>({ pageNum: 1, pageSize: 100, sourceSystem: 'ZX_ONE', beginDate: moment().format('YYYY-MM-DD'), endDate: moment().format('YYYY-MM-DD') })
+
+    const getCombatRankingList = useAjax((params) => getCombatRankingListApi(params))
+    /********************************/
+
+    useEffect(() => {
+        getCombatRankingList.run(queryForm)
+    }, [queryForm])
 
     return <div>
-        11111
+        <TableData
+            leftChild={<QueryForm
+                initialValues={{ sourceSystem: 'ZX_ONE', serverDay: [moment(), moment()] }}
+                onChange={(data: any) => {
+                    console.log(data)
+                    const { parentId, serverDay, ...params } = data
+                    let newQueryForm = JSON.parse(JSON.stringify(queryForm))
+                    newQueryForm.pageNum = 1
+                    newQueryForm.parentGameId = parentId
+                    if (serverDay && serverDay?.length === 2) {
+                        newQueryForm.beginDate = moment(serverDay[0]).format('YYYY-MM-DD')
+                        newQueryForm.endDate = moment(serverDay[1]).format('YYYY-MM-DD')
+                    } else {
+                        delete newQueryForm.beginDate
+                        delete newQueryForm.endDate
+                    }
+                    setQueryForm({ ...newQueryForm, ...params })
+                }}
+                isSource
+                isServerDay={{ ranges: getPresetsRanking() }}
+                isGameId
+                isParentId
+                isServerIds
+                isRankingNum
+            />}
+            isVirtually={false}
+            scroll={{ x: 1000, y: 600 }}
+            ajax={getCombatRankingList}
+            fixed={{ left: 2, right: 0 }}
+            dataSource={getCombatRankingList?.data?.records?.map((item: any, index: number) => ({ ...item, id: Number(queryForm.pageNum.toString() + index.toString()) }))}
+            total={getCombatRankingList?.data?.total}
+            page={queryForm.pageNum}
+            pageSize={queryForm.pageSize}
+            title='角色战力排行榜'
+            onChange={(props: any) => {
+                let { pagination, sortData } = props
+                let { current, pageSize } = pagination
+                let newQueryForm = JSON.parse(JSON.stringify(queryForm))
+                if (sortData && sortData?.order) {
+                    newQueryForm['sortType'] = sortData?.order === 'ascend' ? 'asc' : 'desc'
+                    newQueryForm['sortFiled'] = sortData?.field
+                } else {
+                    delete newQueryForm['sortType']
+                    delete newQueryForm['sortFiled']
+                }
+                newQueryForm.pageNum = current
+                newQueryForm.pageSize = pageSize
+                setQueryForm({ ...newQueryForm })
+            }}
+            config={columns12()}
+            configName={'角色战力排行榜'}
+        />
     </div>
 }
 

+ 238 - 0
src/pages/gameDataStatistics/roleOperate/roleFightingRanking/tableConfig.tsx

@@ -0,0 +1,238 @@
+import WidthEllipsis from "@/components/widthEllipsis"
+import { Statistic } from "antd"
+import React from "react"
+import '../../gameData/flowingWater/index.less'
+
+function columns12() {
+
+    let newArr: { label: string, data: any[] }[] = [
+        {
+            label: '游戏',
+            data: [
+                {
+                    title: '游戏', dataIndex: 'parent_game_name', label: '游戏', align: 'center', width: 90, default: 1,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+            ]
+        },
+        {
+            label: '区服信息',
+            data: [
+                {
+                    title: '区服名称', dataIndex: 'server_name', label: '区服信息', align: 'center', width: 70, default: 2,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '开服时间', dataIndex: 'dt', label: '区服信息', align: 'center', width: 140, default: 3,
+                    render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+                },
+                {
+                    title: '开服天数', dataIndex: 'start_day', label: '区服信息', align: 'center', width: 60, default: 4,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '区服战力', dataIndex: 'server_combat_num', label: '区服信息', align: 'center', width: 90, default: 5,
+                    render: (a: string) => <Statistic value={a || 0} />
+                }
+            ]
+        },
+        {
+            label: '用户信息',
+            data: [
+                {
+                    title: '新用户人数', dataIndex: 'new_user_count', label: '用户信息', align: 'center', width: 70, default: 6,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '创角人数', dataIndex: 'create_role_count', label: '用户信息', align: 'center', width: 70, default: 7,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '角色数量', dataIndex: 'role_count', label: '用户信息', align: 'center', width: 70, default: 8,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+            ]
+        },
+        {
+            label: '付费数据',
+            data: [
+                {
+                    title: '总付费人数', dataIndex: 'total_num', label: '付费数据', align: 'center', width: 80, default: 9,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '总付费金额', dataIndex: 'total_amount', label: '付费数据', align: 'center', width: 85, default: 10,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '付费ARPPU', dataIndex: 'total_arppu', label: '付费数据', align: 'center', width: 80, default: 11,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '付费率', dataIndex: 'amount_rate', label: '付费数据', align: 'center', width: 80, default: 12,
+                    render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 1 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
+                },
+                {
+                    title: '今天付费人数', dataIndex: 'ba1_num', label: '付费数据', align: 'center', width: 70, default: 13, className: "redColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '今天付费次数', dataIndex: 'ba1_count', label: '付费数据', align: 'center', width: 65, default: 14, className: "redColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '今天付费金额', dataIndex: 'ba1', label: '付费数据', align: 'center', width: 75, default: 15, className: "redColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '昨天付费人数', dataIndex: 'ba2_num', label: '付费数据', align: 'center', width: 70, default: 16, className: "orangeColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '昨天付费次数', dataIndex: 'ba2_count', label: '付费数据', align: 'center', width: 65, default: 17, className: "orangeColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '昨天付费金额', dataIndex: 'ba2', label: '付费数据', align: 'center', width: 75, default: 18, className: "orangeColorClass",
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '前天付费人数', dataIndex: 'ba3_num', label: '付费数据', align: 'center', width: 65, default: 19, className: 'volcanoColorClass',
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '前天付费次数', dataIndex: 'ba3_count', label: '付费数据', align: 'center', width: 65, default: 20, className: 'volcanoColorClass',
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '前天付费金额', dataIndex: 'ba3', label: '付费数据', align: 'center', width: 75, default: 21, className: 'volcanoColorClass',
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+            ]
+        },
+        {
+            label: '活跃数据',
+            data: [
+                {
+                    title: '今日活跃人数', dataIndex: 'ba1_active_num', label: '活跃数据', align: 'center', width: 65, default: 22,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '昨天活跃人数', dataIndex: 'ba2_active_num', label: '活跃数据', align: 'center', width: 65, default: 23,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+                {
+                    title: '前天活跃人数', dataIndex: 'ba3_active_num', label: '活跃数据', align: 'center', width: 65, default: 24,
+                    render: (a: string) => <Statistic value={a || 0} />
+                },
+            ]
+        },
+        {
+            label: '角色信息',
+            data: [
+                {
+                    title: '充值模板',
+                    dataIndex: 'roleInfo',
+                    label: '角色信息',
+                    align: 'center',
+                    default: 25,
+                    children: [
+                        {
+                            title: '角色排名',
+                            dataIndex: 'rank_num',
+                            key: 'rank_num',
+                            width: 65,
+                            align: 'center',
+                            className: "h5BiomassClass green2ColorClass",
+                            render: (a: any, b: any) => {
+                                return <div className='h5BiomassTable'>
+                                    {b?.role_rank_date?.map((item: any, index: number) => {
+                                        return <div key={'cc' + index}>
+                                            <div><span>{item.rank_num}</span></div>
+                                        </div>
+                                    })}
+                                </div>
+                            }
+                        },
+                        {
+                            title: '角色名称',
+                            dataIndex: 'role_name',
+                            key: 'role_name',
+                            width: 65,
+                            align: 'center',
+                            className: "h5BiomassClass green2ColorClass",
+                            render: (a: any, b: any) => {
+                                return <div className='h5BiomassTable'>
+                                    {b?.role_rank_date?.map((item: any, index: number) => {
+                                        return <div key={'cc' + index}>
+                                            <div><span><WidthEllipsis value={item.role_name} /></span></div>
+                                        </div>
+                                    })}
+                                </div>
+                            }
+                        },
+                        {
+                            title: '角色等级',
+                            dataIndex: 'role_level',
+                            key: 'role_level',
+                            width: 65,
+                            align: 'center',
+                            className: "h5BiomassClass green2ColorClass",
+                            render: (a: any, b: any) => {
+                                return <div className='h5BiomassTable'>
+                                    {b?.role_rank_date?.map((item: any, index: number) => {
+                                        return <div key={'cc' + index}>
+                                            <div><span>{item.role_level}</span></div>
+                                        </div>
+                                    })}
+                                </div>
+                            }
+                        },
+                        {
+                            title: '角色攻击力',
+                            dataIndex: 'combat_num',
+                            key: 'combat_num',
+                            width: 65,
+                            align: 'center',
+                            className: "h5BiomassClass green2ColorClass",
+                            render: (a: any, b: any) => {
+                                return <div className='h5BiomassTable'>
+                                    {b?.role_rank_date?.map((item: any, index: number) => {
+                                        return <div key={'cc' + index}>
+                                            <div><span>{item.combat_num}</span></div>
+                                        </div>
+                                    })}
+                                </div>
+                            }
+                        },
+                    ]
+                }
+            ]
+        }
+        // {
+        //     label: '角色信息',
+        //     data: [
+        //         {
+        //             title: '角色排名', dataIndex: 'rank_num', label: '角色信息', align: 'center', width: 55, default: 9,
+        //             render: (a: string) => <Statistic value={a || 0} />
+        //         },
+        //         {
+        //             title: '角色名称', dataIndex: 'role_name', label: '区服信息', align: 'center', width: 80, default: 10,
+        //             render: (a: string, b: any) => (<WidthEllipsis value={a} />)
+        //         },
+        //         {
+        //             title: '角色等级', dataIndex: 'role_level', label: '角色信息', align: 'center', width: 70, default: 11,
+        //             render: (a: string) => <Statistic value={a || 0} />
+        //         },
+        //         {
+        //             title: '角色攻击力', dataIndex: 'combat_num', label: '角色信息', align: 'center', width: 85, default: 12,
+        //             render: (a: string) => <Statistic value={a || 0} />
+        //         },
+        //     ]
+        // },
+    ]
+
+    return newArr
+}
+
+export default columns12

+ 2 - 2
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/assign.tsx

@@ -55,10 +55,10 @@ const Assign: React.FC<Props> = ({ startTime, id, visible, data, onClose, onChan
         let params: any = { startTime: moment(startTime).format('YYYY-MM-DD'), ...par }
         let roleInfoAndAgentParamList = data.map(item => {
             return {
-                gameId: item.user_reg_game_id,
+                gameId: item.role_reg_game_id,
                 roleId: item.role_id,
                 serverId: item.server_id,
-                userId: item.user_id,
+                userId: item.association_user_id,
                 regAgentId: item.agent_id
             }
         })

+ 10 - 1
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/index.tsx

@@ -90,7 +90,7 @@ const RoleRechargeRanking: React.FC = () => {
             czChild={<Space>
                 <Button type="primary" size="small" disabled={selectedRowKeys.length === 0} onClick={() => sendPack(selectedRowKeys)}>批量发送礼包</Button>
                 <Button type="primary" size="small" disabled={selectedRowKeys.length === 0} onClick={() => sendEmail(selectedRowKeys)}>批量发送邮件</Button>
-                <Button type="primary" size="small" disabled={selectedRowKeys.length === 0} onClick={() => roleHandle(selectedRowKeys)}>批量角色操作</Button>
+                {/* <Button type="primary" size="small" disabled={selectedRowKeys.length === 0} onClick={() => roleHandle(selectedRowKeys)}>批量角色操作</Button> */}
                 <Button type="primary" size="small" disabled={selectedRowKeys.length === 0} onClick={() => assignHandle(selectedRowKeys)}>批量指派</Button>
             </Space>}
             leftChild={<QueryForm
@@ -146,6 +146,15 @@ const RoleRechargeRanking: React.FC = () => {
             pageSize={getRoleRechargeRankingList?.data?.size || 20}
             total={getRoleRechargeRankingList?.data?.total || 0}
             title='角色充值排行榜'
+            tips={`
+                角色VIP等级档位:(根据角色累计充值划分等级,上限不包含原则)
+                1档——【0,2000】
+                2档——【2000,5000】
+                3档——【5000,10000】
+                4档——【10000,20000】
+                5档——【20000,50000】
+                6档——【50000,+∞】
+            `}
             onChange={(props: any) => {
                 console.log('props--->', props)
                 let { pagination, sortData } = props

+ 7 - 7
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/roleCz.tsx

@@ -30,12 +30,12 @@ const RoleCz: React.FC<Props> = ({ data = [], visible, onClose, onChange }) => {
             form.setFieldsValue({
                 userWechat: user_wechat,
                 userPhone: user_phone,
-                isRemoveGame: is_remove_game || '0',
-                isWakeUp: is_wake_up || '0',
+                isRemoveGame: is_remove_game?.toString() || '0',
+                isWakeUp: is_wake_up?.toString() || '0',
                 remark,
                 add_corp_user_id,
-                isAddCorpWechat: is_add_corp_wechat || '0',
-                isChangeGameType: is_change_game_type || '0'
+                isAddCorpWechat: is_add_corp_wechat?.toString() || '0',
+                isChangeGameType: is_change_game_type?.toString() || '0'
             })
         }
     }, [data])
@@ -52,10 +52,10 @@ const RoleCz: React.FC<Props> = ({ data = [], visible, onClose, onChange }) => {
         let params: any = { ...validate }
         let roleInfoList = data.map(item => {
             return {
-                gameId: item.user_reg_game_id,
+                gameId: item.role_reg_game_id,
                 roleId: item.role_id,
                 serverId: item.server_id,
-                userId: item.user_id
+                userId: item.association_user_id,
             }
         })
         params.roleInfoList = roleInfoList
@@ -93,7 +93,7 @@ const RoleCz: React.FC<Props> = ({ data = [], visible, onClose, onChange }) => {
                     </Form.Item>
                 </Col>
                 <Col span={12}>
-                    <Form.Item label="客户企微号" name="addCorpUserId">
+                    <Form.Item label="运营企微号" name="addCorpUserId">
                         <Input placeholder="请输入客户企微号" />
                     </Form.Item>
                 </Col>

+ 2 - 2
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/sendMail.tsx

@@ -39,10 +39,10 @@ const SendMail: React.FC<Props> = ({ data = [], ids, visible, onClose, onChange
         }
         let roleInfoList = data.map(item => {
             return {
-                gameId: item.user_reg_game_id,
+                gameId: item.role_reg_game_id,
                 roleId: item.role_id,
                 serverId: item.server_id,
-                userId: item.user_id
+                userId: item.association_user_id,
             }
         })
         params.roleInfoList = roleInfoList

+ 2 - 2
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/sendPack.tsx

@@ -44,10 +44,10 @@ const SendPack: React.FC<Props> = ({ data = [], ids, visible, onClose, onChange
         }
         let roleInfoList = data.map(item => {
             return {
-                gameId: item.user_reg_game_id,
+                gameId: item.role_reg_game_id,
                 roleId: item.role_id,
                 serverId: item.server_id,
-                userId: item.user_id
+                userId: item.association_user_id,
             }
         })
         params.roleInfoList = roleInfoList

+ 1 - 0
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/tableConfig.tsx

@@ -26,6 +26,7 @@ function columns12(
                 { title: '游戏区服', dataIndex: 'server_name', label: '玩家信息', align: 'center', width: 90, default: 4, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '区服ID', dataIndex: 'server_id', label: '角色信息', align: 'center', width: 70, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '角色名称', dataIndex: 'role_name', label: '角色信息', align: 'center', width: 90, default: 2, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
+                { title: '角色ID', dataIndex: 'role_id', label: '角色信息', align: 'center', width: 90, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '角色创建时间', dataIndex: 'role_create_time', label: '角色信息', align: 'center', width: 140, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '角色VIP等级', dataIndex: 'vip_level', label: '角色信息', align: 'center', width: 60, default: 3, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '角色等级', dataIndex: 'role_level', label: '角色信息', align: 'center', width: 65, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },

+ 1 - 1
src/services/gameData/roleOperate.ts

@@ -229,7 +229,7 @@ export interface GetCombatRankingProps extends Paging, SortProps {
     gameId?: number,        // 游戏ID
     parentGameId?: number   // 主游戏ID
     rankingNum?: number     // 排名的范围
-    serverIds?: number[],
+    serverIds?: number[],   // 区服
 }
 
 export async function getCombatRankingListApi(data: GetCombatRankingProps) {