tableConfig.tsx 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  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 { formatSecondsToTime } from "@/utils/utils"
  6. function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
  7. return [
  8. {
  9. label: '基本信息',
  10. data: [
  11. {
  12. title: '应用', dataIndex: 'appName', label: '基本信息', align: 'center', width: 120, default: 1,
  13. render: (a: string) => (<WidthEllipsis value={a} />)
  14. },
  15. {
  16. title: '应用ID', dataIndex: 'appId', label: '基本信息', align: 'center', width: 80,
  17. render: (a: string) => (<WidthEllipsis value={a} />)
  18. },
  19. {
  20. title: '小程序名称', dataIndex: 'mpName', label: '基本信息', align: 'center', width: 85, default: 2,
  21. render: (a: string) => (<WidthEllipsis value={a} />)
  22. },
  23. {
  24. title: '小程序ID', dataIndex: 'mpId', label: '基本信息', align: 'center', width: 80,
  25. render: (a: string) => (<WidthEllipsis value={a} />)
  26. },
  27. {
  28. title: '业务类型', dataIndex: 'productType', label: '基本信息', align: 'center', width: 80, default: 3,
  29. render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
  30. },
  31. {
  32. title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 80, default: 4,
  33. render: (a: string) => (<WidthEllipsis value={a} />)
  34. },
  35. {
  36. title: '累计消耗', dataIndex: 'costTotal', label: '基本信息', align: 'center', width: 95, default: 5, sorter: true,
  37. className: 'padding_0 redColorClass',
  38. render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
  39. <Progress
  40. strokeColor={{
  41. from: '#10c1e9',
  42. to: '#6892d0',
  43. }}
  44. status="active"
  45. showInfo={false}
  46. percent={a ? a / 20000 * 100 : 0}
  47. />
  48. <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>
  49. </div>
  50. },
  51. {
  52. title: '每日真实消耗', dataIndex: 'costDruth', label: '基本信息', align: 'center', width: 90, default: 6, sorter: true, className: 'redColorClass',
  53. render: (a: string) => <Statistic value={a || 0} precision={2} />
  54. },
  55. {
  56. title: '每日消耗', dataIndex: 'cost', label: '基本信息', align: 'center', width: 85, default: 7, sorter: true,
  57. className: 'padding_0 redColorClass',
  58. render: (a: number) => <div style={{ height: 26, position: 'relative' }}>
  59. <Progress
  60. strokeColor={{
  61. from: '#ff5900',
  62. to: '#ffd380',
  63. }}
  64. status="active"
  65. showInfo={false}
  66. percent={a ? a / 20000 * 100 : 0}
  67. />
  68. <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>
  69. </div>
  70. },
  71. {
  72. title: '每日赔付金', dataIndex: 'payout', label: '基本信息', align: 'right', width: 80, default: 8, sorter: true, className: 'redColorClass',
  73. render: (a: string) => <Statistic value={a || 0} precision={2} />
  74. },
  75. {
  76. title: '推广广告账号数量', tips: '消耗大于0', dataIndex: 'accountCount', label: '基本信息', align: 'center', width: 80, default: 9, sorter: true, className: 'redColorClass',
  77. render: (a: string) => <Statistic value={a || 0} />
  78. },
  79. {
  80. title: '推广广告数量', tips: '消耗大于0', dataIndex: 'adCount', label: '基本信息', align: 'center', width: 80, default: 10, sorter: true, className: 'redColorClass',
  81. render: (a: string) => <Statistic value={a || 0} />
  82. },
  83. ]
  84. },
  85. {
  86. label: '广告媒体端指标',
  87. data: [
  88. {
  89. title: '点击量(广告)', dataIndex: 'click', label: '广告媒体端指标', align: 'center', width: 65, default: 11, sorter: true, className: 'purple1ColorClass',
  90. render: (a: number) => <Statistic value={a || 0} />
  91. },
  92. {
  93. title: '曝光量(广告)', dataIndex: 'showCount', label: '广告媒体端指标', align: 'center', width: 65, default: 12, sorter: true, className: 'purple1ColorClass',
  94. render: (a: number) => <Statistic value={a || 0} />
  95. },
  96. {
  97. title: '千次曝光成本(广告)', dataIndex: 'avgShowCost', label: '广告媒体端指标', align: 'right', width: 80, default: 13, sorter: true, className: 'purple1ColorClass',
  98. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  99. },
  100. {
  101. title: '点击均价(广告)', dataIndex: 'avgClickCost', label: '广告媒体端指标', align: 'right', width: 65, default: 14, sorter: true, className: 'purple1ColorClass',
  102. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  103. },
  104. {
  105. title: '点击率(广告)', dataIndex: 'ctr', label: '广告媒体端指标', align: 'center', width: 80, default: 15, sorter: true, className: 'purple1ColorClass',
  106. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  107. },
  108. {
  109. title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端指标', align: 'center', width: 65, default: 16, sorter: true, className: 'purple1ColorClass',
  110. render: (a: number) => <Statistic value={a || 0} />
  111. },
  112. {
  113. title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端指标', align: 'right', width: 65, default: 17, sorter: true, className: 'purple1ColorClass',
  114. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  115. },
  116. {
  117. title: '转化目标率', dataIndex: 'convertRate', label: '广告媒体端指标', align: 'center', width: 80, default: 18, sorter: true, className: 'purple1ColorClass',
  118. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  119. },
  120. {
  121. title: '激活数(广告)', dataIndex: 'active', label: '广告媒体端指标', align: 'center', width: 65, default: 19, sorter: true, className: 'purple1ColorClass',
  122. render: (a: number) => <Statistic value={a || 0} />
  123. },
  124. {
  125. title: '激活成本(广告)', dataIndex: 'activeCost', label: '广告媒体端指标', align: 'right', width: 65, default: 20, sorter: true, className: 'purple1ColorClass',
  126. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  127. },
  128. {
  129. title: '激活率(广告)', dataIndex: 'activeRate', label: '广告媒体端指标', align: 'center', width: 80, default: 21, sorter: true, className: 'purple1ColorClass',
  130. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  131. },
  132. {
  133. title: '注册数(广告)', dataIndex: 'register', label: '广告媒体端指标', align: 'center', width: 65, default: 22, sorter: true, className: 'purple1ColorClass',
  134. render: (a: number) => <Statistic value={a || 0} />
  135. },
  136. {
  137. title: '注册成本(广告)', dataIndex: 'activeRegisterCost', label: '广告媒体端指标', align: 'right', width: 65, default: 23, sorter: true, className: 'purple1ColorClass',
  138. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  139. },
  140. {
  141. title: '注册率(广告)', dataIndex: 'activeRegisterRate', label: '广告媒体端指标', align: 'center', width: 80, default: 24, sorter: true, className: 'purple1ColorClass',
  142. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  143. },
  144. {
  145. title: '当日LTV(首日)', dataIndex: 'attributionMicroGame0dLtv', label: '广告媒体端指标', align: 'center', width: 75, default: 25, sorter: true, className: 'purple1ColorClass',
  146. render: (a: number) => <Statistic value={a || 0} />
  147. },
  148. {
  149. title: '激活后三日LTV', dataIndex: 'attributionMicroGame3dLtv', label: '广告媒体端指标', align: 'center', width: 65, default: 26, sorter: true, className: 'purple1ColorClass',
  150. render: (a: number) => <Statistic value={a || 0} />
  151. },
  152. {
  153. title: '激活后七日LTV', dataIndex: 'attributionMicroGame7dLtv', label: '广告媒体端指标', align: 'center', width: 65, default: 27, sorter: true, className: 'purple1ColorClass',
  154. render: (a: number) => <Statistic value={a || 0} />
  155. },
  156. {
  157. title: '当日(首日)广告变现ROI', dataIndex: 'attributionMicroGame0dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 28, sorter: true, className: 'purple1ColorClass',
  158. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  159. },
  160. {
  161. title: '激活后三日广告变现ROI', dataIndex: 'attributionMicroGame3dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 29, sorter: true, className: 'purple1ColorClass',
  162. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  163. },
  164. {
  165. title: '激活后七日广告变现ROI', dataIndex: 'attributionMicroGame7dRoi', label: '广告媒体端指标', align: 'center', width: 80, default: 30, sorter: true, className: 'purple1ColorClass',
  166. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  167. }
  168. ]
  169. },
  170. {
  171. label: '应用系统数据',
  172. data: [
  173. {
  174. title: '今日新增注册人数(系统)', dataIndex: 'todayRegUserSys', label: '应用系统数据', align: 'center', width: 80, default: 31, sorter: true, className: 'green2ColorClass',
  175. render: (a: number) => <Statistic value={a || 0} />
  176. },
  177. {
  178. title: '累计注册人数(系统)', dataIndex: 'totalRegUserSys', label: '应用系统数据', align: 'center', width: 80, default: 32, sorter: true, className: 'green2ColorClass',
  179. render: (a: number) => <Statistic value={a || 0} />
  180. },
  181. {
  182. title: 'DAU(系统)', dataIndex: 'dau', label: '应用系统数据', align: 'center', width: 80, default: 33, sorter: true, className: 'green2ColorClass',
  183. render: (a: number) => <Statistic value={a || 0} />
  184. },
  185. {
  186. title: '新增占比(系统)', dataIndex: 'newPro', label: '应用系统数据', align: 'center', width: 90, default: 34, sorter: true, className: 'green2ColorClass',
  187. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  188. },
  189. {
  190. title: '今日新增注册成本(系统)', dataIndex: 'newRegCost', label: '应用系统数据', align: 'right', width: 80, default: 35, sorter: true, className: 'green2ColorClass',
  191. render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
  192. },
  193. {
  194. title: '人均新增成本(系统)', dataIndex: 'avgNewRegCost', label: '应用系统数据', align: 'right', width: 80, default: 36, sorter: true, className: 'green2ColorClass',
  195. render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
  196. },
  197. {
  198. title: '人均活跃成本(系统)', dataIndex: 'avgActiveCost', label: '应用系统数据', align: 'right', width: 80, default: 37, sorter: true, className: 'green2ColorClass',
  199. render: (a: number) => <Statistic value={(a || 0) / 100} precision={2} />
  200. },
  201. {
  202. title: '注册首日广告变现人数', dataIndex: 'regFirstUser', label: '应用系统数据', align: 'center', width: 80, default: 38, sorter: true, className: 'green2ColorClass',
  203. render: (a: number) => <Statistic value={a || 0} />
  204. },
  205. {
  206. title: '注册首日广告变现次数', dataIndex: 'regFirstCnt', label: '应用系统数据', align: 'center', width: 80, default: 39, sorter: true, className: 'green2ColorClass',
  207. render: (a: number) => <Statistic value={a || 0} />
  208. },
  209. {
  210. title: '注册首日广告变现金额', dataIndex: 'regFirstAmount', label: '应用系统数据', align: 'right', width: 100, default: 40, sorter: true, className: 'green2ColorClass',
  211. render: (a: number) => <Statistic value={a || 0} precision={2} />
  212. },
  213. {
  214. title: '注册首日变现ROI', dataIndex: 'regFirstRoi', label: '应用系统数据', align: 'center', width: 80, default: 41, sorter: true, className: 'green2ColorClass',
  215. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  216. },
  217. {
  218. title: '注册24小时广告变现人数', dataIndex: 'regTwentyFourUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  219. render: (a: number) => <Statistic value={a || 0} />
  220. },
  221. {
  222. title: '注册24小时广告变现次数', dataIndex: 'regTwentyFourCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  223. render: (a: number) => <Statistic value={a || 0} />
  224. },
  225. {
  226. title: '注册24小时广告变现金额', dataIndex: 'regTwentyFourAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
  227. render: (a: number) => <Statistic value={a || 0} precision={2} />
  228. },
  229. {
  230. title: '注册24小时变现ROI', dataIndex: 'regTwentyFourRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  231. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  232. },
  233. {
  234. title: '注册3日广告变现人数', dataIndex: 'regThreeUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  235. render: (a: number) => <Statistic value={a || 0} />
  236. },
  237. {
  238. title: '注册3日广告变现次数', dataIndex: 'regThreeCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  239. render: (a: number) => <Statistic value={a || 0} />
  240. },
  241. {
  242. title: '注册3日广告变现金额', dataIndex: 'regThreeAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
  243. render: (a: number) => <Statistic value={a || 0} precision={2} />
  244. },
  245. {
  246. title: '注册3日变现ROI', dataIndex: 'regThreeRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  247. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  248. },
  249. {
  250. title: '注册7日广告变现人数', dataIndex: 'regSevenUser', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  251. render: (a: number) => <Statistic value={a || 0} />
  252. },
  253. {
  254. title: '注册7日广告变现次数', dataIndex: 'regSevenCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  255. render: (a: number) => <Statistic value={a || 0} />
  256. },
  257. {
  258. title: '注册7日广告变现金额', dataIndex: 'regSevenAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
  259. render: (a: number) => <Statistic value={a || 0} precision={2} />
  260. },
  261. {
  262. title: '注册7日变现ROI', dataIndex: 'regSevenRoi', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  263. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  264. },
  265. {
  266. title: '注册累计广告变现人数(系统)', dataIndex: 'regTotalUser', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
  267. render: (a: number) => <Statistic value={a || 0} />
  268. },
  269. {
  270. title: '注册累计广告变现次数(系统)', dataIndex: 'regTotalCnt', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
  271. render: (a: number) => <Statistic value={a || 0} />
  272. },
  273. {
  274. title: '注册累计广告变现金额(系统)', dataIndex: 'regTotalAmount', label: '应用系统数据', align: 'right', width: 100, sorter: true, className: 'green2ColorClass',
  275. render: (a: number) => <Statistic value={a || 0} precision={2} />
  276. },
  277. {
  278. title: '注册累计广告变现ROI(系统)', dataIndex: 'regTotalRoi', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
  279. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  280. },
  281. {
  282. title: '首日新增ARPU(系统)', dataIndex: 'firstNewArpu', label: '应用系统数据', align: 'center', width: 90, sorter: true, className: 'green2ColorClass',
  283. render: (a: number) => <Statistic value={a || 0} precision={2} />
  284. },
  285. {
  286. title: '广告总ARPU(系统)', dataIndex: 'adTotalArpu', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  287. render: (a: number) => <Statistic value={a || 0} precision={2} />
  288. },
  289. {
  290. title: '首日ecpm(系统)', dataIndex: 'firstEcpm', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  291. render: (a: number) => <Statistic value={a || 0} precision={2} />
  292. },
  293. {
  294. title: '总ecpm(系统)', dataIndex: 'totalEcpm', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  295. render: (a: number) => <Statistic value={a || 0} precision={2} />
  296. },
  297. {
  298. title: '人均广告有效观看次数', dataIndex: 'userAvgLookCnt', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  299. render: (a: number) => <Statistic value={a || 0} />
  300. },
  301. {
  302. title: '次日留存人数(系统)', dataIndex: 'active2User', label: '应用系统数据', align: 'center', width: 70, sorter: true, className: 'green2ColorClass',
  303. render: (a: number) => <Statistic value={a || 0} />
  304. },
  305. {
  306. title: '次日留存率(系统)', dataIndex: 'active2Rate', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  307. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  308. },
  309. {
  310. title: '用户广告转化率(系统)', dataIndex: 'userAdConvertRate', label: '应用系统数据', align: 'center', width: 80, sorter: true, className: 'green2ColorClass',
  311. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  312. },
  313. ]
  314. },
  315. {
  316. label: '应用媒体数据',
  317. data: [
  318. {
  319. title: '今日新增用户人数(应用)', dataIndex: 'newUser1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  320. render: (a: number) => <Statistic value={a || 0} />
  321. },
  322. {
  323. title: '累计新增用户人数(应用)', dataIndex: 'totalNewUser1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  324. render: (a: number) => <Statistic value={a || 0} />
  325. },
  326. {
  327. title: 'DAU(应用活跃用户人数)', dataIndex: 'dau1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  328. render: (a: number) => <Statistic value={a || 0} />
  329. },
  330. {
  331. title: '今日新增占比(应用)', dataIndex: 'newPro1', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  332. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  333. },
  334. {
  335. title: '今日新增用户成本(应用)', dataIndex: 'newUserCost', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
  336. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  337. },
  338. {
  339. title: '人均新增成本(应用)', dataIndex: 'avgNewCost', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
  340. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  341. },
  342. {
  343. title: '人均活跃成本(应用)', dataIndex: 'avgActiveCost1', label: '应用媒体数据', align: 'right', width: 80, sorter: true,
  344. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  345. },
  346. {
  347. title: '分享次数', dataIndex: 'shareTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
  348. render: (a: number) => <Statistic value={a || 0} />
  349. },
  350. {
  351. title: '打开次数', dataIndex: 'openTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
  352. render: (a: number) => <Statistic value={a || 0} />
  353. },
  354. {
  355. title: '人均打开次数', dataIndex: 'perUserOpenTime', label: '应用媒体数据', align: 'center', width: 70, sorter: true,
  356. render: (a: number) => <Statistic value={a || 0} />
  357. },
  358. {
  359. title: '用户总停留时长', dataIndex: 'totalUserStayTimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
  360. render: (a: number) => {
  361. return formatSecondsToTime(a ? Math.round(a) : 0)
  362. }
  363. },
  364. {
  365. title: '人均停留时长', dataIndex: 'perUserStayTimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
  366. render: (a: number) => {
  367. return formatSecondsToTime(a ? Math.round(a) : 0)
  368. }
  369. },
  370. {
  371. title: '次均停留时长', dataIndex: 'avgStaytimeStr', label: '应用媒体数据', align: 'center', width: 120, sorter: true,
  372. render: (a: number) => {
  373. return formatSecondsToTime(a ? Math.round(a) : 0)
  374. }
  375. },
  376. {
  377. title: '新增用户次日留存人数(应用)', dataIndex: 'newUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  378. render: (a: number) => <Statistic value={a || 0} />
  379. },
  380. {
  381. title: '新增用户次日留存率(应用)', dataIndex: 'newUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  382. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  383. },
  384. {
  385. title: '活跃用户次日留存人数(应用)', dataIndex: 'actUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  386. render: (a: number) => <Statistic value={a || 0} />
  387. },
  388. {
  389. title: '活跃用户次日留存率(应用)', dataIndex: 'actUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  390. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  391. },
  392. {
  393. title: '首日激活用户人数(应用)', dataIndex: 'firstUser', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  394. render: (a: number) => <Statistic value={a || 0} />
  395. },
  396. {
  397. title: '首日激活用户成本(应用)', dataIndex: 'costPerAction', label: '应用媒体数据', align: 'right', width: 85, sorter: true,
  398. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  399. },
  400. {
  401. title: '注册用户首日激活率(应用)', dataIndex: 'firstUserRate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  402. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  403. },
  404. {
  405. title: '激活首日新增广告收入(应用)', dataIndex: 'newAdIncome', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
  406. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  407. },
  408. {
  409. title: '激活首日新增广告ROI(应用)', dataIndex: 'newAdRoi', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  410. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  411. },
  412. {
  413. title: '首日激活用户变现人数(应用)', dataIndex: 'newAdUser', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  414. render: (a: number) => <Statistic value={a || 0} />
  415. },
  416. {
  417. title: '首日激活变现率(应用)', dataIndex: 'newAdRate', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
  418. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  419. },
  420. {
  421. title: '注册首日变现率(应用)', dataIndex: 'regAdFirstRate', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
  422. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  423. },
  424. {
  425. title: '激活用户首日新增ecpm', dataIndex: 'newEcpm', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
  426. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  427. },
  428. {
  429. title: '激活用户首日新增ARPU', dataIndex: 'newPayArpu', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
  430. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  431. },
  432. {
  433. title: '激活用户首日曝光pv(应用)', dataIndex: 'adShowPv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  434. render: (a: number) => <Statistic value={a || 0} />
  435. },
  436. {
  437. title: '激活用户首日点击数pv(应用)', dataIndex: 'adClickPv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  438. render: (a: number) => <Statistic value={a || 0} />
  439. },
  440. {
  441. title: '激活用户首日cpc', dataIndex: 'costPerClick', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  442. render: (a: number) => <Statistic value={a || 0} />
  443. },
  444. {
  445. title: '激活用户首日ctr', dataIndex: 'clickRate', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  446. render: (a: number) => <Statistic value={a || 0} />
  447. },
  448. {
  449. title: '激活用户次日留存人数(应用)', dataIndex: 'motivateUserD2', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  450. render: (a: number) => <Statistic value={a || 0} />
  451. },
  452. {
  453. title: '激活用户次日留存率(应用)', dataIndex: 'motivateUserD2Rate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  454. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  455. },
  456. {
  457. title: '激活用户首日LTV(应用)', dataIndex: 'motivateUserFirstLtv', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  458. render: (a: number) => <Statistic value={a || 0} />
  459. },
  460. {
  461. title: '累计广告变现收入(应用)', dataIndex: 'totalAdIncome', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
  462. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  463. },
  464. {
  465. title: '广告变现累计利润(应用)', dataIndex: 'totalAdProfit', label: '应用媒体数据', align: 'right', width: 90, sorter: true,
  466. render: (a: number) => <Statistic value={a || 0} precision={2}/>
  467. },
  468. {
  469. title: '广告变现成本利润率(应用)', dataIndex: 'totalAdProfitRate', label: '应用媒体数据', align: 'center', width: 90, sorter: true,
  470. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  471. },
  472. {
  473. title: '毛利率(应用)', dataIndex: 'grossMargin', label: '应用媒体数据', align: 'center', width: 80, sorter: true,
  474. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  475. },
  476. {
  477. title: '累计广告变现ROI(应用)', dataIndex: 'totalAdRoi', label: '应用媒体数据', align: 'center', width: 85, sorter: true,
  478. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  479. },
  480. {
  481. title: '广告位总数据(账面)', dataIndex: 'adZMTotal', label: '应用媒体数据', align: 'center',
  482. children: [
  483. {
  484. title: '广告请求PV',
  485. dataIndex: 'totalRequest',
  486. key: 'totalRequest',
  487. width: 70,
  488. align: 'center',
  489. render: (a: number) => <Statistic value={a || 0} />
  490. },
  491. {
  492. title: '曝光PV',
  493. dataIndex: 'totalShow',
  494. key: 'totalShow',
  495. width: 70,
  496. align: 'center',
  497. render: (a: number) => <Statistic value={a || 0} />
  498. },
  499. {
  500. title: '点击PV',
  501. dataIndex: 'totalClick',
  502. key: 'totalClick',
  503. width: 70,
  504. align: 'center',
  505. render: (a: number) => <Statistic value={a || 0} />
  506. },
  507. {
  508. title: '点击率',
  509. dataIndex: 'totalClickRate',
  510. key: 'totalClickRate',
  511. width: 80,
  512. align: 'center',
  513. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  514. },
  515. {
  516. title: 'ecpm',
  517. dataIndex: 'totalEcpm1',
  518. key: 'totalEcpm1',
  519. width: 70,
  520. align: 'center',
  521. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  522. },
  523. {
  524. title: '广告收入',
  525. dataIndex: 'totalRealCost',
  526. key: 'totalRealCost',
  527. width: 70,
  528. align: 'center',
  529. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  530. },
  531. ]
  532. },
  533. {
  534. title: '激励式视频(账面)', dataIndex: 'jlZMTotal', label: '应用媒体数据', align: 'center',
  535. children: [
  536. {
  537. title: '广告请求PV',
  538. dataIndex: 'videoRequest',
  539. key: 'videoRequest',
  540. width: 70,
  541. align: 'center',
  542. render: (a: number) => <Statistic value={a || 0} />
  543. },
  544. {
  545. title: '曝光PV',
  546. dataIndex: 'videoShow',
  547. key: 'videoShow',
  548. width: 70,
  549. align: 'center',
  550. render: (a: number) => <Statistic value={a || 0} />
  551. },
  552. {
  553. title: '点击PV',
  554. dataIndex: 'videoClick',
  555. key: 'videoClick',
  556. width: 70,
  557. align: 'center',
  558. render: (a: number) => <Statistic value={a || 0} />
  559. },
  560. {
  561. title: '点击率',
  562. dataIndex: 'videoClickRate',
  563. key: 'videoClickRate',
  564. width: 80,
  565. align: 'center',
  566. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  567. },
  568. {
  569. title: 'ecpm',
  570. dataIndex: 'videoEcpm',
  571. key: 'videoEcpm',
  572. width: 70,
  573. align: 'center',
  574. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  575. },
  576. {
  577. title: '广告收入',
  578. dataIndex: 'videoRealCost',
  579. key: 'videoRealCost',
  580. width: 70,
  581. align: 'center',
  582. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  583. },
  584. ]
  585. },
  586. {
  587. title: 'Banner广告(账面)', dataIndex: 'bannerZMTotal', label: '应用媒体数据', align: 'center',
  588. children: [
  589. {
  590. title: '广告请求PV',
  591. dataIndex: 'bannerRequest',
  592. key: 'bannerRequest',
  593. width: 70,
  594. align: 'center',
  595. render: (a: number) => <Statistic value={a || 0} />
  596. },
  597. {
  598. title: '曝光PV',
  599. dataIndex: 'bannerShow',
  600. key: 'bannerShow',
  601. width: 70,
  602. align: 'center',
  603. render: (a: number) => <Statistic value={a || 0} />
  604. },
  605. {
  606. title: '点击PV',
  607. dataIndex: 'bannerClick',
  608. key: 'bannerClick',
  609. width: 70,
  610. align: 'center',
  611. render: (a: number) => <Statistic value={a || 0} />
  612. },
  613. {
  614. title: '点击率',
  615. dataIndex: 'bannerClickRate',
  616. key: 'bannerClickRate',
  617. width: 80,
  618. align: 'center',
  619. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  620. },
  621. {
  622. title: 'ecpm',
  623. dataIndex: 'bannerEcpm',
  624. key: 'bannerEcpm',
  625. width: 70,
  626. align: 'center',
  627. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  628. },
  629. {
  630. title: '广告收入',
  631. dataIndex: 'bannerRealCost',
  632. key: 'bannerRealCost',
  633. width: 70,
  634. align: 'center',
  635. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  636. },
  637. ]
  638. },
  639. {
  640. title: '插屏广告(账面)', dataIndex: 'cpZMTotal', label: '应用媒体数据', align: 'center',
  641. children: [
  642. {
  643. title: '广告请求PV',
  644. dataIndex: 'plaqueRequest',
  645. key: 'plaqueRequest',
  646. width: 70,
  647. align: 'center',
  648. render: (a: number) => <Statistic value={a || 0} />
  649. },
  650. {
  651. title: '曝光PV',
  652. dataIndex: 'plaqueShow',
  653. key: 'plaqueShow',
  654. width: 70,
  655. align: 'center',
  656. render: (a: number) => <Statistic value={a || 0} />
  657. },
  658. {
  659. title: '点击PV',
  660. dataIndex: 'plaqueClick',
  661. key: 'plaqueClick',
  662. width: 70,
  663. align: 'center',
  664. render: (a: number) => <Statistic value={a || 0} />
  665. },
  666. {
  667. title: '点击率',
  668. dataIndex: 'plaqueClickRate',
  669. key: 'plaqueClickRate',
  670. width: 80,
  671. align: 'center',
  672. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  673. },
  674. {
  675. title: 'ecpm',
  676. dataIndex: 'plaqueEcpm',
  677. key: 'plaqueEcpm',
  678. width: 70,
  679. align: 'center',
  680. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  681. },
  682. {
  683. title: '广告收入',
  684. dataIndex: 'plaqueRealCost',
  685. key: 'plaqueRealCost',
  686. width: 70,
  687. align: 'center',
  688. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  689. },
  690. ]
  691. },
  692. ]
  693. }
  694. ]
  695. }
  696. export default columns12