tableConfig.tsx 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. import WidthEllipsis from "@/components/widthEllipsis"
  2. import { Statistic } from "antd"
  3. import React from "react"
  4. import './index.less'
  5. import { copy } from "@/utils/utils"
  6. import { gameClassifyEnum } from "@/components/QueryForm/const"
  7. function columns12() {
  8. let newArr: { label: string, data: any[] }[] = [
  9. {
  10. label: '每日流水贡献',
  11. data: [
  12. { title: 'ID', dataIndex: 'id', label: '每日流水贡献', align: 'center', width: 75 },
  13. { title: '游戏名称', dataIndex: 'gameName', label: '每日流水贡献', align: 'center', width: 70, default: 1 },
  14. { title: '游戏ID', dataIndex: 'gameId', label: '每日流水贡献', align: 'center', width: 80, default: 2, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
  15. {
  16. title: '游戏类别', dataIndex: 'gameClassify', label: '每日流水贡献', align: 'center', width: 80, default: 3,
  17. render: (a: string) => (<span>{gameClassifyEnum[a]}</span>)
  18. },
  19. { title: '买量充值金额', dataIndex: 'buyAmount', label: '每日流水贡献', align: 'center', width: 100, default: 4, sorter: true, render: (a: number, b: any) => (<Statistic value={a || 0} valueStyle={a >= 10000 ? { color: 'red' } : { color: '#0f990f' }} />) },
  20. { title: '自然量充值金额', dataIndex: 'natureAmount', label: '每日流水贡献', align: 'center', width: 100, default: 5, sorter: true, render: (a: number, b: any) => (<Statistic value={a || 0} valueStyle={a >= 5000 ? { color: 'red' } : { color: '#0f990f' }} />) },
  21. { title: '总充值金额', dataIndex: 'amount', label: '每日流水贡献', align: 'center', width: 120, default: 6, sorter: true, render: (a: number) => <Statistic value={a || 0} valueStyle={a >= 50000 ? { color: 'red' } : { color: '#0f990f' }} /> },
  22. {
  23. title: '充值模板',
  24. dataIndex: 'rechargeTemplateVOList',
  25. label: '每日流水贡献',
  26. align: 'center',
  27. default: 7,
  28. children: [
  29. {
  30. title: '充值模板排序',
  31. dataIndex: 'amountOrderBy',
  32. key: 'amountOrderBy',
  33. width: 65,
  34. align: 'center',
  35. className: "h5BiomassClass adDataBackColorClass",
  36. render: (a: any, b: any) => {
  37. return <div className='h5BiomassTable'>
  38. {b?.rechargeTemplateVOList?.map((item: any, index: number) => {
  39. return <div key={'cc' + index}>
  40. <div><span>{item.amountOrderBy}</span></div>
  41. </div>
  42. })}
  43. {b?.rechargeTemplateVOList?.length < 10 && <>
  44. {Array(10 - b?.rechargeTemplateVOList?.length).fill('h').map((item, index) => {
  45. return <div key={item + index}>
  46. <div><span>--</span></div>
  47. </div>
  48. })}
  49. </>}
  50. </div>
  51. }
  52. },
  53. {
  54. title: '充值挡位',
  55. dataIndex: 'amountPost',
  56. key: 'amountPost',
  57. width: 65,
  58. align: 'center',
  59. className: "h5BiomassClass adDataBackColorClass",
  60. render: (a: any, b: any) => {
  61. return <div className='h5BiomassTable'>
  62. {b?.rechargeTemplateVOList?.map((item: any, index: number) => {
  63. return <div key={'aa' + index}>
  64. <div><span>{item.amountPost || '--'}</span></div>
  65. </div>
  66. })}
  67. {b?.rechargeTemplateVOList?.length < 10 && <>
  68. {Array(10 - b?.rechargeTemplateVOList?.length).fill('a').map((item, index) => {
  69. return <div key={item + index}>
  70. <div><span>--</span></div>
  71. </div>
  72. })}
  73. </>}
  74. </div>
  75. }
  76. },
  77. {
  78. title: '充值次数',
  79. dataIndex: 'amountCount',
  80. key: 'amountCount',
  81. width: 65,
  82. align: 'center',
  83. className: "h5BiomassClass adDataBackColorClass",
  84. render: (a: any, b: any) => {
  85. return <div className='h5BiomassTable'>
  86. {b?.rechargeTemplateVOList?.map((item: any, index: number) => {
  87. return <div key={'dd' + index}>
  88. <div><Statistic value={item?.amountCount || 0} valueStyle={item.amountCount >= 10 ? { color: 'red' } : { color: '#0f990f' }} groupSeparator="" /></div>
  89. </div>
  90. })}
  91. {b?.rechargeTemplateVOList?.length < 10 && <>
  92. {Array(10 - b?.rechargeTemplateVOList?.length).fill('d').map((item, index) => {
  93. return <div key={item + index}>
  94. <div><span>--</span></div>
  95. </div>
  96. })}
  97. </>}
  98. </div>
  99. }
  100. },
  101. {
  102. title: '充值人数',
  103. dataIndex: 'amountNum',
  104. key: 'amountNum',
  105. width: 65,
  106. align: 'center',
  107. className: "h5BiomassClass adDataBackColorClass",
  108. render: (a: any, b: any) => {
  109. return <div className='h5BiomassTable'>
  110. {b?.rechargeTemplateVOList?.map((item: any, index: number) => {
  111. return <div key={'bb' + index}>
  112. <div><Statistic value={item?.amountNum || 0} valueStyle={item?.amountNum >= 30 ? { color: 'red' } : { color: '#0f990f' }} groupSeparator="" /></div>
  113. </div>
  114. })}
  115. {b?.rechargeTemplateVOList?.length < 10 && <>
  116. {Array(10 - b?.rechargeTemplateVOList?.length).fill('b').map((item, index) => {
  117. return <div key={item + index}>
  118. <div><span>--</span></div>
  119. </div>
  120. })}
  121. </>}
  122. </div>
  123. }
  124. }
  125. ]
  126. },
  127. {
  128. title: '玩家模板',
  129. dataIndex: 'playerTemplateVOS',
  130. label: '玩家模板排序',
  131. align: 'center',
  132. default: 8,
  133. children: [
  134. {
  135. title: '玩家模板排序',
  136. dataIndex: 'userOrderBy',
  137. key: 'userOrderBy',
  138. width: 65,
  139. align: 'center',
  140. className: "h5BiomassClass payDataBackColorClass",
  141. render: (a: any, b: any) => {
  142. return <div className='h5BiomassTable'>
  143. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  144. return <div key={'gg' + index}>
  145. <div><span>{item.userOrderBy || '--'}</span></div>
  146. </div>
  147. })}
  148. {b?.playerTemplateVOS?.length < 10 && <>
  149. {Array(10 - b?.playerTemplateVOS?.length).fill('g').map((item, index) => {
  150. return <div key={item + index}>
  151. <div><span>--</span></div>
  152. </div>
  153. })}
  154. </>}
  155. </div>
  156. }
  157. },
  158. {
  159. title: '用户名称',
  160. dataIndex: 'userName',
  161. key: 'userName',
  162. width: 80,
  163. align: 'center',
  164. className: "h5BiomassClass payDataBackColorClass",
  165. render: (a: any, b: any) => {
  166. return <div className='h5BiomassTable'>
  167. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  168. return <div key={'ll' + index}>
  169. <div style={{ overflow: 'hidden' }}><span style={{ color: '#1890ff' }} onClick={() => copy(item.userName)}>{item.userName || '--'}</span></div>
  170. </div>
  171. })}
  172. {b?.playerTemplateVOS?.length < 10 && <>
  173. {Array(10 - b?.playerTemplateVOS?.length).fill('l').map((item, index) => {
  174. return <div key={item + index}>
  175. <div><span>--</span></div>
  176. </div>
  177. })}
  178. </>}
  179. </div>
  180. }
  181. },
  182. {
  183. title: '游戏服',
  184. dataIndex: 'serverName',
  185. key: 'serverName',
  186. align: 'center',
  187. width: 80,
  188. className: "h5BiomassClass payDataBackColorClass",
  189. render: (a: any, b: any) => {
  190. return <div className='h5BiomassTable'>
  191. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  192. return <div key={'ll' + index}>
  193. <div style={{ overflow: 'hidden' }}><span>{item.serverName || '--'}</span></div>
  194. </div>
  195. })}
  196. {b?.playerTemplateVOS?.length < 10 && <>
  197. {Array(10 - b?.playerTemplateVOS?.length).fill('l').map((item, index) => {
  198. return <div key={item + index}>
  199. <div><span>--</span></div>
  200. </div>
  201. })}
  202. </>}
  203. </div>
  204. }
  205. },
  206. {
  207. title: '角色名称',
  208. dataIndex: 'roleName',
  209. key: 'roleName',
  210. align: 'center',
  211. width: 80,
  212. className: "h5BiomassClass payDataBackColorClass",
  213. render: (a: any, b: any) => {
  214. return <div className='h5BiomassTable'>
  215. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  216. return <div key={'ll' + index}>
  217. <div style={{ overflow: 'hidden' }}><span>{item.roleName || '--'}</span></div>
  218. </div>
  219. })}
  220. {b?.playerTemplateVOS?.length < 10 && <>
  221. {Array(10 - b?.playerTemplateVOS?.length).fill('l').map((item, index) => {
  222. return <div key={item + index}>
  223. <div><span>--</span></div>
  224. </div>
  225. })}
  226. </>}
  227. </div>
  228. }
  229. },
  230. {
  231. title: '用户充值金额',
  232. dataIndex: 'userAmount',
  233. key: 'userAmount',
  234. width: 80,
  235. align: 'center',
  236. className: "h5BiomassClass payDataBackColorClass",
  237. render: (a: any, b: any) => {
  238. return <div className='h5BiomassTable'>
  239. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  240. return <div key={'jj' + index}>
  241. <div><Statistic value={item?.userAmount} valueStyle={item?.userAmount >= 500 ? { color: 'red' } : { color: '#0f990f' }} /></div>
  242. </div>
  243. })}
  244. {b?.playerTemplateVOS?.length < 10 && <>
  245. {Array(10 - b?.playerTemplateVOS?.length).fill('l').map((item, index) => {
  246. return <div key={item + index}>
  247. <div><span>--</span></div>
  248. </div>
  249. })}
  250. </>}
  251. </div>
  252. }
  253. },
  254. {
  255. title: '用户充值占比',
  256. dataIndex: 'proportion',
  257. key: 'proportion',
  258. width: 80,
  259. align: 'center',
  260. className: "h5BiomassClass payDataBackColorClass",
  261. render: (a: any, b: any) => {
  262. return <div className='h5BiomassTable'>
  263. {b?.playerTemplateVOS?.map((item: any, index: number) => {
  264. return <div key={'qq' + index}>
  265. <div><Statistic value={item?.proportion * 100} suffix='%' precision={2} valueStyle={!item?.proportion ? {} : item?.proportion >= 0.3 ? { color: 'red' } : { color: '#0f990f' }} /></div>
  266. </div>
  267. })}
  268. {b?.playerTemplateVOS?.length < 10 && <>
  269. {Array(10 - b?.playerTemplateVOS?.length).fill('l').map((item, index) => {
  270. return <div key={item + index}>
  271. <div><span>--</span></div>
  272. </div>
  273. })}
  274. </>}
  275. </div>
  276. }
  277. },
  278. ]
  279. },
  280. ]
  281. },
  282. ]
  283. return newArr
  284. }
  285. export default columns12