tableConfig.tsx 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. import WidthEllipsis from "@/components/widthEllipsis"
  2. import { Progress, Statistic } from "antd"
  3. import React from "react"
  4. import { PRODUCT_TYPE_ENUM } from "../../../const"
  5. import { APPTYPE } from "@/pages/iaaSystem/manage/const"
  6. import './index.less'
  7. function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[], bcColor?: string }[] {
  8. return [
  9. {
  10. label: '基础信息',
  11. data: [
  12. {
  13. title: '统计日', dataIndex: 'day', label: '基础信息', align: 'center', width: 80, default: 1,
  14. render: (a: string) => (<WidthEllipsis value={a} />)
  15. },
  16. {
  17. title: '应用', dataIndex: 'appName', label: '基础信息', align: 'center', width: 120, default: 2,
  18. render: (a: string) => (<WidthEllipsis value={a} />)
  19. },
  20. {
  21. title: '应用ID', dataIndex: 'appId', label: '基础信息', align: 'center', width: 80,
  22. render: (a: string) => (<WidthEllipsis value={a} />)
  23. },
  24. {
  25. title: '小程序名称', dataIndex: 'mpName', label: '基础信息', align: 'center', width: 85, default: 3,
  26. render: (a: string) => (<WidthEllipsis value={a} />)
  27. },
  28. {
  29. title: '小程序ID', dataIndex: 'mpId', label: '基础信息', align: 'center', width: 80,
  30. render: (a: string) => (<WidthEllipsis value={a} />)
  31. },
  32. {
  33. title: '业务类型', dataIndex: 'productType', label: '基础信息', align: 'center', width: 80, default: 4,
  34. render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
  35. },
  36. {
  37. title: '应用类型', dataIndex: 'appType', label: '基础信息', align: 'center', width: 80, default: 5,
  38. render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
  39. },
  40. {
  41. title: '每日真实消耗', dataIndex: 'cost', label: '基础信息', align: 'right', width: 95, default: 6, sorter: true,
  42. className: 'padding_0',
  43. render: (a: number) => <div style={{ height: 25.5, position: 'relative' }}>
  44. <Progress
  45. strokeColor={{
  46. from: '#10c1e9',
  47. to: '#6892d0',
  48. }}
  49. status="active"
  50. showInfo={false}
  51. percent={a ? a / 20000 * 100 : 0}
  52. />
  53. <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic style={{ fontWeight: 'bold' }} value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
  54. </div>
  55. },
  56. {
  57. title: '每日消耗', dataIndex: 'todayCost', label: '基础信息', align: 'right', width: 85, default: 7, sorter: true,
  58. className: 'padding_0',
  59. render: (a: number) => <div style={{ height: 25.5, position: 'relative' }}>
  60. <Progress
  61. strokeColor={{
  62. from: '#ff5900',
  63. to: '#ffd380',
  64. }}
  65. status="active"
  66. showInfo={false}
  67. percent={a ? a / 20000 * 100 : 0}
  68. />
  69. <span style={{ position: 'absolute', left: '50%', top: '50%', width: '100%', padding: '0 5px', transform: 'translate(-50%, -50%)' }}><Statistic value={a || 0} precision={2} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 'bold' } : { fontWeight: 'bold' }} /></span>
  70. </div>
  71. },
  72. {
  73. title: '赔付金', dataIndex: 'payout', label: '基础信息', align: 'right', width: 80, default: 8, sorter: true,
  74. render: (a: number) => <Statistic value={a || 0} precision={2} />
  75. },
  76. {
  77. title: '推广广告账号数量', dataIndex: 'acountCount', label: '基础信息', align: 'center', width: 80, default: 9, sorter: true,
  78. render: (a: string) => <Statistic value={a || 0} />
  79. },
  80. {
  81. title: '推广广告数量', dataIndex: 'adgroupCount', label: '基础信息', align: 'center', width: 80, default: 10, sorter: true,
  82. render: (a: string) => <Statistic value={a || 0} />
  83. }
  84. ]
  85. },
  86. {
  87. label: '广告曝光指标(媒体)',
  88. data: [
  89. {
  90. title: '点击量', dataIndex: 'clickCount', label: '广告曝光指标(媒体)', align: 'center', width: 80, default: 11, sorter: true,
  91. render: (a: number) => <Statistic value={a || 0} />
  92. },
  93. {
  94. title: '曝光量', dataIndex: 'viewCount', label: '广告曝光指标(媒体)', align: 'center', width: 80, default: 12, sorter: true,
  95. render: (a: number) => <Statistic value={a || 0} />
  96. },
  97. {
  98. title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告曝光指标(媒体)', align: 'right', width: 65, default: 13, sorter: true,
  99. render: (a: string) => <Statistic value={a || 0} precision={2} />
  100. },
  101. {
  102. title: '点击率', dataIndex: 'ctr', label: '广告曝光指标(媒体)', align: 'center', width: 70, default: 14, sorter: true,
  103. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  104. },
  105. {
  106. title: '点击均价', dataIndex: 'cpc', label: '广告曝光指标(媒体)', align: 'center', width: 65, default: 15, sorter: true,
  107. render: (a: string) => <Statistic value={a || 0} precision={2} />
  108. },
  109. {
  110. title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告曝光指标(媒体)', align: 'center', width: 65, default: 16, sorter: true,
  111. render: (a: string) => <Statistic value={a || 0} />
  112. },
  113. {
  114. title: '转化量', dataIndex: 'conversionsCount', label: '广告曝光指标(媒体)', align: 'center', width: 80, sorter: true, default: 17,
  115. render: (a: string) => <Statistic value={a || 0} />
  116. },
  117. {
  118. title: '转化成本', dataIndex: 'conversionsCost', label: '广告曝光指标(媒体)', align: 'right', width: 65, sorter: true, default: 18,
  119. render: (a: string) => <Statistic value={a || 0} precision={2} />
  120. },
  121. ]
  122. },
  123. {
  124. label: '广告转化指标(媒体)',
  125. data: [
  126. {
  127. title: '注册人数', dataIndex: 'regDedupPv', label: '广告转化指标(媒体)', width: 65, align: 'center', sorter: true, default: 19,
  128. render: (a: string) => <Statistic value={a || 0} />
  129. },
  130. {
  131. title: '注册次数', dataIndex: 'regPv', label: '广告转化指标(媒体)', align: 'center', width: 80, sorter: true, default: 20,
  132. render: (a: string) => <Statistic value={a || 0} />
  133. },
  134. {
  135. title: '注册成本(人数)', dataIndex: 'regDedupCost', label: '广告转化指标(媒体)', align: 'right', width: 70, sorter: true, default: 21,
  136. render: (a: string) => <Statistic value={a || 0} precision={2} />
  137. },
  138. {
  139. title: '注册成本(次数)', dataIndex: 'regCost', label: '广告转化指标(媒体)', align: 'right', width: 70, sorter: true, default: 22,
  140. render: (a: string) => <Statistic value={a || 0} precision={2} />
  141. },
  142. {
  143. title: '注册率', dataIndex: 'regRate', label: '广告转化指标(媒体)', align: 'center', width: 70, default: 23, sorter: true,
  144. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  145. },
  146. {
  147. title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '广告转化指标(媒体)', align: 'center', width: 110, sorter: true, default: 24,
  148. render: (a: string) => <Statistic value={a || 0} />
  149. },
  150. {
  151. title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '广告转化指标(媒体)', align: 'right', width: 110, sorter: true, default: 25,
  152. render: (a: string) => <Statistic value={a || 0} precision={2} />
  153. },
  154. {
  155. title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '广告转化指标(媒体)', align: 'center', width: 110, default: 26, sorter: true,
  156. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  157. },
  158. ]
  159. },
  160. {
  161. label: '广告变现指标(媒体)',
  162. data: [
  163. {
  164. title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '广告变现指标(媒体)', align: 'center', width: 85, sorter: true,
  165. render: (a: string) => <Statistic value={a || 0} />
  166. },
  167. {
  168. title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '广告变现指标(媒体)', align: 'right', width: 100, sorter: true,
  169. render: (a: string) => <Statistic value={a || 0} precision={2} />
  170. },
  171. {
  172. title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '广告变现指标(媒体)', align: 'right', width: 85, sorter: true,
  173. render: (a: string) => <Statistic value={a || 0} precision={2} />
  174. },
  175. {
  176. title: '激活首日广告变现ARPPU', dataIndex: 'incomeArppu1', label: '广告变现指标(媒体)', width: 90, align: 'center', sorter: true,
  177. render: (a: string) => <Statistic value={a || 0} precision={2} />
  178. },
  179. {
  180. title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '广告变现指标(媒体)', align: 'center', width: 85, sorter: true,
  181. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  182. },
  183. {
  184. title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '广告变现指标(媒体)', align: 'center', width: 85, sorter: true,
  185. render: (a: string) => <Statistic value={a || 0} />
  186. },
  187. {
  188. title: '激活首24小时广告变现成本(人数)', dataIndex: 'adPayingCost24h', label: '广告变现指标(媒体)', align: 'right', width: 100, sorter: true,
  189. render: (a: string) => <Statistic value={a || 0} precision={2} />
  190. },
  191. {
  192. title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '广告变现指标(媒体)', align: 'right', width: 85, sorter: true,
  193. render: (a: string) => <Statistic value={a || 0} precision={2} />
  194. },
  195. {
  196. title: '激活首24小时广告变现ARPPU', dataIndex: 'incomeArppu24h', label: '广告变现指标(媒体)', width: 98, align: 'center', sorter: true,
  197. render: (a: string) => <Statistic value={a || 0} precision={2} />
  198. },
  199. {
  200. title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi24h', label: '广告变现指标(媒体)', align: 'center', width: 90, sorter: true,
  201. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  202. },
  203. {
  204. title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  205. render: (a: string) => <Statistic value={a || 0} />
  206. },
  207. {
  208. title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  209. render: (a: string) => <Statistic value={a || 0} />
  210. },
  211. {
  212. title: '激活3日广告变现成本(人数)', dataIndex: 'adMonetizationDedupCost3', label: '广告变现指标(媒体)', align: 'right', width: 90, sorter: true,
  213. render: (a: string) => <Statistic value={a || 0} precision={2} />
  214. },
  215. {
  216. title: '激活3日广告变现成本(次数)', dataIndex: 'adMonetizationActiveCost3', label: '广告变现指标(媒体)', align: 'right', width: 90, sorter: true,
  217. render: (a: string) => <Statistic value={a || 0} precision={2} />
  218. },
  219. {
  220. title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '广告变现指标(媒体)', align: 'right', width: 75, sorter: true,
  221. render: (a: string) => <Statistic value={a || 0} precision={2} />
  222. },
  223. {
  224. title: '激活3日广告变现ARPPU', dataIndex: 'incomeArppu3', label: '广告变现指标(媒体)', width: 80, align: 'center', sorter: true,
  225. render: (a: string) => <Statistic value={a || 0} precision={2} />
  226. },
  227. {
  228. title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  229. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  230. },
  231. {
  232. title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  233. render: (a: string) => <Statistic value={a || 0} />
  234. },
  235. {
  236. title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  237. render: (a: string) => <Statistic value={a || 0} />
  238. },
  239. {
  240. title: '激活7日广告变现成本(人数)', dataIndex: 'adMonetizationDedupCost7', label: '广告变现指标(媒体)', align: 'right', width: 85, sorter: true,
  241. render: (a: string) => <Statistic value={a || 0} precision={2} />
  242. },
  243. {
  244. title: '激活7日广告变现成本(次数)', dataIndex: 'adMonetizationActiveCost7', label: '广告变现指标(媒体)', align: 'right', width: 85, sorter: true,
  245. render: (a: string) => <Statistic value={a || 0} precision={2} />
  246. },
  247. {
  248. title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '广告变现指标(媒体)', align: 'right', width: 75, sorter: true,
  249. render: (a: string) => <Statistic value={a || 0} precision={2} />
  250. },
  251. {
  252. title: '激活7日广告变现ARPPU', dataIndex: 'incomeArppu7', label: '广告变现指标(媒体)', width: 80, align: 'center', sorter: true,
  253. render: (a: string) => <Statistic value={a || 0} precision={2} />
  254. },
  255. {
  256. title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '广告变现指标(媒体)', align: 'center', width: 80, sorter: true,
  257. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  258. },
  259. {
  260. title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '广告变现指标(媒体)', align: 'right', width: 80, sorter: true,
  261. render: (a: string) => <Statistic value={a || 0} precision={2} />
  262. },
  263. {
  264. title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '广告变现指标(媒体)', align: 'center', width: 75, sorter: true,
  265. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  266. },
  267. {
  268. title: '广告变现人数', dataIndex: 'appAdPayingUsers', label: '广告变现指标(媒体)', align: 'right', width: 70, sorter: true, default: 27,
  269. render: (a: string) => <Statistic value={a || 0} />
  270. },
  271. {
  272. title: '广告变现成本', dataIndex: 'appAdPayingCost', label: '广告变现指标(媒体)', align: 'right', width: 70, sorter: true, default: 28,
  273. render: (a: string) => <Statistic value={a || 0} precision={2} />
  274. },
  275. {
  276. title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '广告变现指标(媒体)', align: 'right', width: 85, sorter: true, default: 29,
  277. render: (a: string) => <Statistic value={a || 0} precision={2} />
  278. },
  279. {
  280. title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '广告变现指标(媒体)', width: 70, align: 'center', sorter: true, default: 30,
  281. render: (a: string) => <Statistic value={a || 0} precision={2} />
  282. },
  283. {
  284. title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '广告变现指标(媒体)', align: 'center', width: 70, sorter: true, default: 31,
  285. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  286. }
  287. ]
  288. },
  289. {
  290. label: '广告数据',
  291. data: [
  292. {
  293. title: '累计消耗(广告端)', dataIndex: 'totalCost', label: '广告数据', align: 'right', width: 110, sorter: true,
  294. render: (a: string) => <Statistic value={a || 0} precision={2} />
  295. },
  296. {
  297. title: '广告端累计变现收入(广告端)', dataIndex: 'adTotalIncome', label: '广告数据', align: 'right', width: 95, sorter: true,
  298. render: (a: string) => <Statistic value={a || 0} precision={2} />
  299. },
  300. {
  301. title: '广告端累计回收(广告端)', dataIndex: 'adTotalRecycle', label: '广告数据', align: 'right', width: 90, sorter: true,
  302. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  303. },
  304. {
  305. title: '广告端变现累计利润(广告端)', dataIndex: 'adTotalRate', label: '广告数据', align: 'right', width: 95, sorter: true,
  306. render: (a: string) => <Statistic value={a || 0} precision={2} />
  307. },
  308. {
  309. title: '广告端变现利润率(广告端)', dataIndex: 'appTotalProfitRate', tips: '计算公式:(广告端累计变现收入-累计消耗)/累计消耗*100%', label: '广告数据', align: 'center', width: 110, sorter: true,
  310. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  311. },
  312. {
  313. title: '广告新增ARPU(广告端)', dataIndex: 'adNewArpu', tips: ' 计算公式:广告端变现收入/每日新增注册人数', label: '广告数据', align: 'center', width: 105, sorter: true,
  314. render: (a: number) => <Statistic value={a || 0} precision={2} />
  315. },
  316. {
  317. title: '广告总ARPU(广告端)', dataIndex: 'adTotalArpu', tips: '计算公式:广告端累计变现收入/累计注册人数', label: '广告数据', align: 'center', width: 105, sorter: true,
  318. render: (a: number) => <Statistic value={a || 0} precision={2} />
  319. }
  320. ]
  321. },
  322. {
  323. label: '应用数据(颜色:法式洋红)',
  324. bcColor: '#ffd6e7',
  325. data: [
  326. {
  327. title: '点击数(应用端)', dataIndex: 'appClickCount', label: '应用数据', align: 'center', width: 80, sorter: true, className: 'appColorClass',
  328. render: (a: number) => <Statistic value={a || 0} />
  329. },
  330. {
  331. title: '曝光次数(应用端)', dataIndex: 'appExposureCount', label: '应用数据', align: 'center', width: 80, sorter: true, className: 'appColorClass',
  332. render: (a: number) => <Statistic value={a || 0} />
  333. },
  334. {
  335. title: '拉取次数(应用端)', dataIndex: 'appReqSuccCount', label: '应用数据', align: 'center', width: 80, sorter: true, className: 'appColorClass',
  336. render: (a: number) => <Statistic value={a || 0} />
  337. },
  338. {
  339. title: '曝光率(应用端)', dataIndex: 'appExposureRate', label: '应用数据', align: 'center', width: 70, sorter: true, className: 'appColorClass',
  340. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  341. },
  342. {
  343. title: '点击率(应用端)', dataIndex: 'appClickRate', label: '应用数据', align: 'center', width: 70, sorter: true, className: 'appColorClass',
  344. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  345. },
  346. {
  347. title: 'eCPM(应用端)', tips: '计算公式:单日总广告收入/曝光次数*1000', dataIndex: 'appEcpm', label: '应用数据', align: 'center', width: 80, sorter: true, className: 'appColorClass',
  348. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  349. },
  350. {
  351. title: '应用端每日变现收入(应用端)', dataIndex: 'appIncome', label: '应用数据', align: 'right', width: 95, sorter: true, className: 'appColorClass',
  352. render: (a: string) => <Statistic value={a || 0} precision={2} />
  353. },
  354. {
  355. title: '应用端累计变现收入(应用端)', dataIndex: 'appTotalIncome', label: '应用数据', align: 'right', width: 95, sorter: true, className: 'appColorClass',
  356. render: (a: string) => <Statistic value={a || 0} precision={2} />
  357. },
  358. {
  359. title: '每日新增注册人数(应用端)', dataIndex: 'appNewRegUser', label: '应用数据', align: 'center', width: 95, sorter: true, className: 'appColorClass',
  360. render: (a: number) => <Statistic value={a || 0} />
  361. },
  362. {
  363. title: '新增注册成本(应用端)', dataIndex: 'appNewRegUserCost', label: '应用数据', align: 'right', width: 90, sorter: true, className: 'appColorClass',
  364. render: (a: string) => <Statistic value={a || 0} precision={2} />
  365. },
  366. {
  367. title: '每日活跃人数(DAU)(应用端)', dataIndex: 'appActiveUser', label: '应用数据', align: 'center', width: 95, sorter: true, className: 'appColorClass',
  368. render: (a: number) => <Statistic value={a || 0} />
  369. },
  370. {
  371. title: '活跃用户次日留存人数(应用端)', dataIndex: 'appNextActiveUser', label: '应用数据', align: 'center', width: 95, sorter: true, className: 'appColorClass',
  372. render: (a: number) => <Statistic value={a || 0} />
  373. },
  374. {
  375. title: '活跃用户次日留存率(应用端)', dataIndex: 'appNextActiveUserRate', tips: '计算公式:活跃用户次日留存人数/每日活跃人数DAU', label: '应用数据', align: 'center', width: 110, sorter: true, className: 'appColorClass',
  376. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  377. },
  378. {
  379. title: '人均活跃成本(应用端)', dataIndex: 'appAvgActiveCost', tips: '计算公式:累计消耗/每日活跃人数DAU', label: '应用数据', align: 'right', width: 100, sorter: true, className: 'appColorClass',
  380. render: (a: string) => <Statistic value={a || 0} precision={2} />
  381. },
  382. {
  383. title: '新增占比(应用端)', dataIndex: 'newProportion', tips: '计算公式:每日新增注册人数/每日活跃人数DAU', label: '应用数据', align: 'center', width: 85, sorter: true, className: 'appColorClass',
  384. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  385. },
  386. {
  387. title: '累计注册人数(应用端)', dataIndex: 'appTotalRegUser', label: '应用数据', align: 'center', width: 85, sorter: true, className: 'appColorClass',
  388. render: (a: number) => <Statistic value={a || 0} />
  389. },
  390. {
  391. title: '人均新增成本(应用端)', dataIndex: 'appUserAvgCost', label: '应用数据', align: 'right', width: 80, sorter: true, className: 'appColorClass',
  392. render: (a: string) => <Statistic value={a || 0} precision={2} />
  393. },
  394. {
  395. title: '应用端累计回收(应用端)', dataIndex: 'appTotalRecycle', label: '应用数据', align: 'right', width: 90, sorter: true, className: 'appColorClass',
  396. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  397. },
  398. {
  399. title: '人均广告曝光次数(应用端)', dataIndex: 'avgExposureCount', tips: '计算公式:曝光量/每日活跃人数DAU', label: '应用数据', align: 'center', width: 100, sorter: true, className: 'appColorClass',
  400. render: (a: number) => <Statistic value={a || 0} />
  401. },
  402. {
  403. title: '应用端广告ARPU(应用端)', dataIndex: 'appAdArpu', tips: '计算公式:应用端每日变现收入/每日活跃人数DAU', label: '应用数据', align: 'center', width: 100, sorter: true, className: 'appColorClass',
  404. render: (a: number) => <Statistic value={a || 0} precision={2} />
  405. },
  406. {
  407. title: '应用端广告总ARPU(应用端)', dataIndex: 'appAdTotalArpu', tips: '计算公式:应用端累计变现收入/累计注册人数', label: '应用数据', align: 'center', width: 110, sorter: true, className: 'appColorClass',
  408. render: (a: number) => <Statistic value={a || 0} precision={2} />
  409. },
  410. ]
  411. }
  412. ]
  413. }
  414. export default columns12