regIpRoleDetails.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { useAjax } from '@/Hook/useAjax';
  2. import { getRoleDetailListApi } from '@/services/gsData';
  3. import { Modal, Table } from 'antd';
  4. import React, { useEffect, useState } from 'react';
  5. /**
  6. * 查询同ip角色详情列表
  7. * @param param0
  8. * @returns
  9. */
  10. const RegIpRoleDetails: React.FC<{ ip: any, userId?: any, icon?: React.ReactNode }> = ({ ip, userId, icon }) => {
  11. /*********************************/
  12. const [visible, setVisible] = useState<boolean>(false)
  13. const getRoleDetailList = useAjax((params) => getRoleDetailListApi(params))
  14. /*********************************/
  15. useEffect(() => {
  16. if (visible) {
  17. const params: { regIp: string, excludeUserId?: any } = { regIp: ip }
  18. if (userId) {
  19. params.excludeUserId = userId
  20. }
  21. getRoleDetailList.run(params)
  22. }
  23. }, [ip, userId, visible])
  24. return <>
  25. <a onClick={() => setVisible(true)}>{icon}</a>
  26. {visible && <Modal
  27. title={<strong>同IP下角色列表{userId ? '(排除同玩家)' : ''}({ip})</strong>}
  28. visible={visible}
  29. onCancel={() => setVisible(false)}
  30. footer={null}
  31. width={700}
  32. >
  33. <Table
  34. columns={[
  35. {
  36. title: '角色名称',
  37. dataIndex: 'roleName',
  38. key: 'roleName',
  39. ellipsis: true
  40. },
  41. {
  42. title: '角色ID',
  43. dataIndex: 'roleId',
  44. key: 'roleId',
  45. align: 'center',
  46. ellipsis: true
  47. },
  48. {
  49. title: '玩家名称',
  50. dataIndex: 'userName',
  51. key: 'userName',
  52. align: 'center',
  53. ellipsis: true
  54. },
  55. {
  56. title: '玩家ID',
  57. dataIndex: 'userId',
  58. key: 'userId',
  59. align: 'center',
  60. ellipsis: true
  61. },
  62. {
  63. title: '游戏名称',
  64. dataIndex: 'gameName',
  65. key: 'gameName',
  66. align: 'center',
  67. ellipsis: true
  68. },
  69. {
  70. title: '游戏ID',
  71. dataIndex: 'gameId',
  72. key: 'gameId',
  73. align: 'center',
  74. ellipsis: true
  75. },
  76. {
  77. title: '区服名称',
  78. dataIndex: 'serverName',
  79. key: 'serverName',
  80. align: 'center',
  81. ellipsis: true
  82. },
  83. {
  84. title: '区服ID',
  85. dataIndex: 'serverId',
  86. key: 'serverId',
  87. align: 'center',
  88. ellipsis: true
  89. }
  90. ]}
  91. rowKey={'roleId'}
  92. dataSource={getRoleDetailList?.data?.records}
  93. loading={getRoleDetailList?.loading}
  94. size="small"
  95. bordered
  96. pagination={false}
  97. />
  98. </Modal>}
  99. </>
  100. };
  101. export default React.memo(RegIpRoleDetails);