tableConfig.tsx 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853
  1. import WidthEllipsis from "@/components/widthEllipsis"
  2. import { Badge, Progress, Space, Statistic, Tag } from "antd"
  3. import React from "react"
  4. import { ADGROUP_STATUS, BID_MODE_ENUM, MARKETING_GOAL_ENUM, MARKETING_TARGET_TYPE_ENUM, OPTIMIZATIONGOAL_ENUM, PRODUCT_TYPE_ENUM, SMART_BID_TYPE_ENUM } from "../../../const"
  5. import SwitchStatus from "./switchStatus"
  6. import CreativePreview from "../../../components/CreativePreview"
  7. import TimeSeriesLook from "@/pages/iaaData/components/TimeSeriesLook"
  8. import { AUTO_ACQUISTION_STATUS } from "./const"
  9. function columns12(dayHandle: (data: any) => void, onChange?: () => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[], bcColor?: string }[] {
  10. return [
  11. {
  12. label: '广告基本信息',
  13. data: [
  14. {
  15. title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 2,
  16. render: (a: string) => (<WidthEllipsis value={a} isCopy />)
  17. },
  18. {
  19. title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 3,
  20. render: (a: string) => (<WidthEllipsis value={a} />)
  21. },
  22. {
  23. title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 4,
  24. render: (a: string) => (<WidthEllipsis value={a} />)
  25. },
  26. {
  27. title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 5,
  28. render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
  29. },
  30. {
  31. title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 6,
  32. render: (a: string) => (<WidthEllipsis value={a} />)
  33. },
  34. {
  35. title: '小程序ID', dataIndex: 'mpId', label: '广告基本信息', align: 'center', width: 100,
  36. render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
  37. },
  38. {
  39. title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 7,
  40. render: (a: string) => (<WidthEllipsis value={a} isCopy />)
  41. },
  42. {
  43. title: '统计日', dataIndex: 'day', label: '广告基本信息', width: 100,
  44. render: (a: string) => (<WidthEllipsis value={a} />)
  45. },
  46. {
  47. title: '公司ID', dataIndex: 'companyId', label: '广告基本信息', width: 100,
  48. render: (a: string) => (<WidthEllipsis value={a} />)
  49. },
  50. {
  51. title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 8,
  52. render: (a: string) => (<WidthEllipsis value={a} />)
  53. },
  54. {
  55. title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 9,
  56. render: (a: string) => (<WidthEllipsis value={a} />)
  57. },
  58. {
  59. title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 10,
  60. render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate}`} />)
  61. },
  62. {
  63. title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 11,
  64. render: (a: string, b: any) => {
  65. if (b?.accountId === '总计') return '--';
  66. return <TimeSeriesLook timeSeries={a} />
  67. }
  68. },
  69. {
  70. title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 12,
  71. render: (a: string) => (<WidthEllipsis value={a} />)
  72. },
  73. {
  74. title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 140, default: 13,
  75. render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any }) => {
  76. if (b?.accountId === '总计') return '--';
  77. return `${b?.bidMode ? BID_MODE_ENUM[b?.bidMode as keyof typeof BID_MODE_ENUM] : ''} ${a}元/${b?.bidMode === 'BID_MODE_CPM' ? '千次曝光' : b?.bidMode === 'BID_MODE_CPC' ? '点击' : OPTIMIZATIONGOAL_ENUM[b?.optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM]}`
  78. }
  79. },
  80. {
  81. title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 14,
  82. render: (a: boolean, b: any) => {
  83. if (b?.accountId === '总计') return '--';
  84. return <Space size={2}>
  85. {a ? <>
  86. <Tag color="success">开启</Tag>
  87. <Statistic prefix={'¥'} value={b?.autoAcquisitionBudget || 0} precision={2} />
  88. </> : <Tag color="error">关闭</Tag>}
  89. {b?.autoAcquisitionStatus && <div style={{ width: 65, paddingLeft: 4 }}><WidthEllipsis value={AUTO_ACQUISTION_STATUS[b?.autoAcquisitionStatus as keyof typeof AUTO_ACQUISTION_STATUS]} /></div>}
  90. </Space>
  91. }
  92. },
  93. {
  94. title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 15,
  95. render: (a: string, b: { accountId: any }) => {
  96. if (b?.accountId === '总计') return '--';
  97. return <Statistic value={a || 0} precision={2} />
  98. }
  99. },
  100. {
  101. title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 16,
  102. render: (a: string, b: any) => {
  103. if (b?.accountId === '总计') return '--';
  104. return SMART_BID_TYPE_ENUM[a as keyof typeof SMART_BID_TYPE_ENUM]
  105. }
  106. },
  107. {
  108. title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 17,
  109. render: (a: string, b: any) => {
  110. if (b?.accountId === '总计') return '--';
  111. return <Statistic value={a || 0} precision={2} />
  112. }
  113. },
  114. {
  115. title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 18,
  116. render: (a: string, b: any) => {
  117. if (b?.accountId === '总计') return '--';
  118. return <WidthEllipsis value={a ? '是' : '否'} />
  119. }
  120. },
  121. {
  122. title: '定向条件描述', dataIndex: 'targetingTranslation', label: '广告基本信息', align: 'center', width: 120,
  123. render: (a: string) => (<WidthEllipsis value={a} />)
  124. },
  125. {
  126. title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 19,
  127. render: (a: any, b: any) => {
  128. if (b?.accountId === '总计') return '--';
  129. return <Badge status={!a ? "processing" : "error"} text={a ? '是' : '否'} />
  130. }
  131. },
  132. {
  133. title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 100, default: 20,
  134. render: (a: string, b: any) => {
  135. if (b?.accountId === '总计') return '--';
  136. return ADGROUP_STATUS[a as keyof typeof ADGROUP_STATUS]
  137. }
  138. },
  139. {
  140. title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 21,
  141. render: (a: string) => (<WidthEllipsis value={MARKETING_GOAL_ENUM[a as keyof typeof MARKETING_GOAL_ENUM]} />)
  142. },
  143. {
  144. title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 22,
  145. render: (a: string) => (<WidthEllipsis value={MARKETING_TARGET_TYPE_ENUM[a as keyof typeof MARKETING_TARGET_TYPE_ENUM]} />)
  146. },
  147. {
  148. title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 23,
  149. render: (a: string) => (<WidthEllipsis value={a} />)
  150. },
  151. {
  152. title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 24,
  153. render: (a: string) => (<WidthEllipsis value={a} />)
  154. },
  155. {
  156. title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 33,
  157. render: (a: any, b: any) => {
  158. if (b?.accountId === '总计') {
  159. return '--'
  160. }
  161. if (a?.length) {
  162. let deliveryMode: string[] = []
  163. let creativePreview = a?.map((item: { creativeComponents: any, deliveryMode: string }) => {
  164. deliveryMode.push(item.deliveryMode)
  165. return { ...item?.creativeComponents }
  166. })
  167. return <CreativePreview creativePreview={creativePreview} deliveryMode={deliveryMode} />
  168. }
  169. return null
  170. }
  171. }
  172. ]
  173. },
  174. {
  175. label: '广告消耗信息',
  176. data: [
  177. {
  178. title: '消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 25, sorter: true,
  179. className: 'padding_0',
  180. render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
  181. <Progress
  182. strokeColor={{
  183. from: '#ff5900',
  184. to: '#ffd380',
  185. }}
  186. status="active"
  187. showInfo={false}
  188. percent={a ? a / 20000 * 100 : 0}
  189. />
  190. <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
  191. </div>
  192. },
  193. {
  194. title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 26, sorter: true,
  195. render: (a: string) => <Statistic value={a || 0} />
  196. },
  197. {
  198. title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 27, sorter: true,
  199. render: (a: string) => <Statistic value={a || 0} precision={2} />
  200. },
  201. {
  202. title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 28, sorter: true,
  203. render: (a: string) => <Statistic value={a || 0} />
  204. },
  205. {
  206. title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
  207. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  208. },
  209. {
  210. title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 30, sorter: true,
  211. render: (a: string) => <Statistic value={a || 0} precision={2} />
  212. },
  213. {
  214. title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
  215. render: (a: string) => <Statistic value={a || 0} />
  216. },
  217. {
  218. title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
  219. render: (a: string) => <Statistic value={a || 0} />
  220. },
  221. ]
  222. },
  223. {
  224. label: '广告转化信息',
  225. data: [
  226. {
  227. title: '下载次数', dataIndex: 'downloadCount', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  228. render: (a: string) => <Statistic value={a || 0} />
  229. },
  230. {
  231. title: '安装次数', dataIndex: 'installCount', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  232. render: (a: string) => <Statistic value={a || 0} />
  233. },
  234. {
  235. title: '激活次数', dataIndex: 'activatedCount', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  236. render: (a: string) => <Statistic value={a || 0} />
  237. },
  238. {
  239. title: '公众号关注人数', dataIndex: 'followUv', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  240. render: (a: string) => <Statistic value={a || 0} />
  241. },
  242. {
  243. title: '公众号关注成本', dataIndex: 'followCost', label: '广告转化信息', align: 'right', width: 80, sorter: true,
  244. render: (a: string) => <Statistic value={a || 0} precision={2} />
  245. },
  246. {
  247. title: '公众号关注率', dataIndex: 'followRate', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  248. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  249. },
  250. {
  251. title: '公众号关注次数', dataIndex: 'bizFollowCount', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  252. render: (a: string) => <Statistic value={a || 0} />
  253. },
  254. {
  255. title: '公众号关注次数成本', dataIndex: 'bizFollowCost', label: '广告转化信息', align: 'right', width: 80, sorter: true,
  256. render: (a: string) => <Statistic value={a || 0} precision={2} />
  257. },
  258. {
  259. title: '快应用添加次数', dataIndex: 'addDesktopPv', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  260. render: (a: string) => <Statistic value={a || 0} />
  261. },
  262. {
  263. title: '快应用添加成本', dataIndex: 'addDesktopCost', label: '广告转化信息', align: 'right', width: 80, sorter: true,
  264. render: (a: string) => <Statistic value={a || 0} precision={2} />
  265. },
  266. {
  267. title: '快应用添加率', dataIndex: 'addDesktopRate', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  268. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  269. },
  270. {
  271. title: '加企业微信客服人数', dataIndex: 'scanFollowUserCount', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  272. render: (a: string) => <Statistic value={a || 0} />
  273. },
  274. {
  275. title: '加企业微信客服成本', dataIndex: 'scanFollowCost', label: '广告转化信息', align: 'right', width: 80, sorter: true,
  276. render: (a: string) => <Statistic value={a || 0} precision={2} />
  277. },
  278. {
  279. title: '加企业微信客服率', dataIndex: 'scanFollowRate', label: '广告转化信息', align: 'center', width: 80, sorter: true,
  280. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  281. },
  282. ]
  283. },
  284. {
  285. label: '商品转化',
  286. data: [
  287. {
  288. title: '首日新增下单量', dataIndex: 'firstDayOrderCount', label: '商品转化', align: 'center', width: 80, sorter: true,
  289. render: (a: string) => <Statistic value={a || 0} />
  290. },
  291. {
  292. title: '首日新增下单金额', dataIndex: 'firstDayOrderAmount', label: '商品转化', align: 'right', width: 80, sorter: true,
  293. render: (a: string) => <Statistic value={a || 0} precision={2} />
  294. },
  295. {
  296. title: '首日新增下单ROI', dataIndex: 'firstDayOrderRoi', label: '商品转化', align: 'center', width: 80, sorter: true,
  297. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  298. },
  299. {
  300. title: '订单量', dataIndex: 'orderCount', label: '商品转化', align: 'center', width: 80, sorter: true,
  301. render: (a: string) => <Statistic value={a || 0} />
  302. },
  303. {
  304. title: '订单金额', dataIndex: 'orderAmount', label: '商品转化', align: 'right', width: 80, sorter: true,
  305. render: (a: string) => <Statistic value={a || 0} precision={2} />
  306. },
  307. {
  308. title: '下单成本', dataIndex: 'orderCost', label: '商品转化', align: 'right', width: 80, sorter: true,
  309. render: (a: string) => <Statistic value={a || 0} precision={2} />
  310. },
  311. {
  312. title: '下单率', dataIndex: 'orderRate', label: '商品转化', align: 'center', width: 80, sorter: true,
  313. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  314. },
  315. {
  316. title: '下单ROI', dataIndex: 'orderRoi', label: '商品转化', align: 'center', width: 80, sorter: true,
  317. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  318. },
  319. {
  320. title: '客单价', dataIndex: 'atv', label: '商品转化', align: 'right', width: 80, sorter: true,
  321. render: (a: string) => <Statistic value={a || 0} precision={2} />
  322. },
  323. {
  324. title: '转化量', dataIndex: 'conversionsCount', label: '商品转化', align: 'center', width: 80, sorter: true,
  325. render: (a: string) => <Statistic value={a || 0} />
  326. },
  327. {
  328. title: '转化成本', dataIndex: 'conversionsCost', label: '商品转化', align: 'right', width: 80, sorter: true,
  329. render: (a: string) => <Statistic value={a || 0} precision={2} />
  330. },
  331. {
  332. title: '深度转化', dataIndex: 'deepConversionsCount', label: '商品转化', align: 'center', width: 80, sorter: true,
  333. render: (a: string) => <Statistic value={a || 0} />
  334. },
  335. {
  336. title: '转化率', dataIndex: 'conversionsRate', label: '商品转化', align: 'center', width: 80, sorter: true,
  337. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  338. },
  339. {
  340. title: '加粉数', dataIndex: 'addFansCount', label: '商品转化', align: 'center', width: 80, sorter: true,
  341. render: (a: string) => <Statistic value={a || 0} />
  342. },
  343. {
  344. title: '加粉成本', dataIndex: 'addFansCost', label: '商品转化', align: 'right', width: 80, sorter: true,
  345. render: (a: string) => <Statistic value={a || 0} precision={2} />
  346. },
  347. ]
  348. },
  349. {
  350. label: '其他业务(平台上报指标)',
  351. bcColor: '#f6ffed',
  352. data: [
  353. {
  354. title: '激活首24小时广告变现ARPPU(平台上报)', dataIndex: 'firstDayAdPurArppuCost24hPla', label: '其他业务(平台上报指标)', width: 130, align: 'center', sorter: true, className: 'green2ColorClass',
  355. render: (a: string) => <Statistic value={a || 0} precision={2} />
  356. },
  357. {
  358. title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  359. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  360. },
  361. {
  362. title: '激活首24小时广告变现次数(平台上报)', dataIndex: 'incomePv24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  363. render: (a: string) => <Statistic value={a || 0} />
  364. },
  365. {
  366. title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  367. render: (a: string) => <Statistic value={a || 0} />
  368. },
  369. {
  370. title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  371. render: (a: string) => <Statistic value={a || 0} />
  372. },
  373. {
  374. title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  375. render: (a: string) => <Statistic value={a || 0} />
  376. },
  377. {
  378. title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  379. render: (a: string) => <Statistic value={a || 0} />
  380. },
  381. {
  382. title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  383. render: (a: string) => <Statistic value={a || 0} precision={2} />
  384. },
  385. {
  386. title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true, className: 'green2ColorClass',
  387. render: (a: string) => <Statistic value={a || 0} precision={2} />
  388. },
  389. {
  390. title: '注册7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  391. render: (a: string) => <Statistic value={a || 0} precision={2} />
  392. },
  393. {
  394. title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  395. render: (a: string) => <Statistic value={a || 0} precision={2} />
  396. },
  397. {
  398. title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
  399. render: (a: string) => <Statistic value={a || 0} precision={2} />
  400. },
  401. {
  402. title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true, className: 'green2ColorClass',
  403. render: (a: string) => <Statistic value={a || 0} />
  404. },
  405. {
  406. title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  407. render: (a: string) => <Statistic value={a || 0} />
  408. },
  409. {
  410. title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
  411. render: (a: string) => <Statistic value={a || 0} />
  412. }
  413. ]
  414. },
  415. {
  416. label: '其他业务(其他指标)',
  417. bcColor: '#fff2e8',
  418. data: [
  419. {
  420. title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
  421. render: (a: string) => <Statistic value={a || 0} precision={2} />
  422. },
  423. {
  424. title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  425. render: (a: string) => <Statistic value={a || 0} precision={2} />
  426. },
  427. {
  428. title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  429. render: (a: string) => <Statistic value={a || 0} precision={2} />
  430. },
  431. {
  432. title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  433. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.8 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  434. },
  435. {
  436. title: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  437. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.75 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  438. },
  439. {
  440. title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  441. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.84 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  442. },
  443. {
  444. title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  445. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  446. },
  447. {
  448. title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  449. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  450. },
  451. {
  452. title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  453. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  454. },
  455. {
  456. title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
  457. render: (a: string) => <Statistic value={a || 0} precision={2} />
  458. },
  459. {
  460. title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  461. render: (a: string) => <Statistic value={a || 0} precision={2} />
  462. },
  463. {
  464. title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  465. render: (a: string) => <Statistic value={a || 0} />
  466. },
  467. {
  468. title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  469. render: (a: string) => <Statistic value={a || 0} />
  470. },
  471. {
  472. title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  473. render: (a: string) => <Statistic value={a || 0} />
  474. },
  475. {
  476. title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  477. render: (a: string) => <Statistic value={a || 0} precision={2} />
  478. },
  479. {
  480. title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  481. render: (a: string) => <Statistic value={a || 0} precision={2} />
  482. },
  483. {
  484. title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  485. render: (a: string) => <Statistic value={a || 0} precision={2} />
  486. },
  487. {
  488. title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  489. render: (a: string) => <Statistic value={a || 0} precision={2} />
  490. },
  491. {
  492. title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  493. render: (a: string) => <Statistic value={a || 0} precision={2} />
  494. },
  495. {
  496. title: '广告变现人数', dataIndex: 'appAdPayingUsers', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  497. render: (a: string) => <Statistic value={a || 0} />
  498. },
  499. {
  500. title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  501. render: (a: string) => <Statistic value={a || 0} precision={2} />
  502. },
  503. {
  504. title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  505. render: (a: string) => <Statistic value={a || 0} />
  506. },
  507. {
  508. title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  509. render: (a: string) => <Statistic value={a || 0} />
  510. },
  511. {
  512. title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  513. render: (a: string) => <Statistic value={a || 0} />
  514. },
  515. {
  516. title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  517. render: (a: string) => <Statistic value={a || 0} />
  518. },
  519. {
  520. title: '注册次数', dataIndex: 'regPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  521. render: (a: string) => <Statistic value={a || 0} />
  522. },
  523. {
  524. title: '注册人数', dataIndex: 'regDedupPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  525. render: (a: string) => <Statistic value={a || 0} />
  526. },
  527. {
  528. title: '注册成本', dataIndex: 'regCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  529. render: (a: string) => <Statistic value={a || 0} precision={2} />
  530. },
  531. {
  532. title: '注册次数成本', dataIndex: 'regPvCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  533. render: (a: string) => <Statistic value={a || 0} precision={2} />
  534. },
  535. {
  536. title: '注册率', dataIndex: 'regRate', label: '其他业务(其他指标)', width: 110, align: 'center', sorter: true, className: 'volcanoColorClass',
  537. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  538. },
  539. {
  540. title: '激活注册率', dataIndex: 'activateRegisterRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  541. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  542. },
  543. {
  544. title: '次日留存次数', dataIndex: 'retentionCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  545. render: (a: string) => <Statistic value={a || 0} />
  546. },
  547. {
  548. title: '次日留存人数', dataIndex: 'miniGameRetentionD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  549. render: (a: string) => <Statistic value={a || 0} />
  550. },
  551. {
  552. title: '次日留存率', dataIndex: 'retentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  553. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  554. },
  555. {
  556. title: '次日留存成本', dataIndex: 'retentionCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  557. render: (a: string) => <Statistic value={a || 0} precision={2} />
  558. },
  559. {
  560. title: '关键页面次日留存率', dataIndex: 'appKeyPageRetentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  561. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  562. },
  563. {
  564. title: '小游戏次日留存率', dataIndex: 'miniGameRetentionD1Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  565. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  566. },
  567. {
  568. title: '小游戏次日留存成本', dataIndex: 'miniGameRetentionD1Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  569. render: (a: string) => <Statistic value={a || 0} precision={2} />
  570. }
  571. ]
  572. },
  573. {
  574. label: '小游戏(平台上报)',
  575. bcColor: '#f9f0ff',
  576. data: [
  577. {
  578. title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true, className: 'purple1ColorClass',
  579. render: (a: string) => <Statistic value={a || 0} />
  580. },
  581. {
  582. title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  583. render: (a: string) => <Statistic value={a || 0} />
  584. },
  585. {
  586. title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGame1dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  587. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  588. },
  589. {
  590. title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  591. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  592. },
  593. {
  594. title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  595. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  596. },
  597. {
  598. title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  599. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  600. },
  601. {
  602. title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  603. render: (a: string) => <Statistic value={a || 0} precision={2} />
  604. },
  605. {
  606. title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  607. render: (a: string) => <Statistic value={a || 0} precision={2} />
  608. },
  609. {
  610. title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  611. render: (a: string) => <Statistic value={a || 0} precision={2} />
  612. },
  613. {
  614. title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  615. render: (a: string) => <Statistic value={a || 0} />
  616. },
  617. {
  618. title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  619. render: (a: string) => <Statistic value={a || 0} />
  620. },
  621. {
  622. title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  623. render: (a: string) => <Statistic value={a || 0} />
  624. },
  625. {
  626. title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  627. render: (a: string) => <Statistic value={a || 0} />
  628. },
  629. {
  630. title: '注册次数(平台上报)', dataIndex: 'regPlaPv', label: '小游戏(平台上报)', width: 90, align: 'center', sorter: true, className: 'purple1ColorClass',
  631. render: (a: string) => <Statistic value={a || 0} />
  632. },
  633. {
  634. title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  635. render: (a: string) => <Statistic value={a || 0} />
  636. },
  637. {
  638. title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  639. render: (a: string) => <Statistic value={a || 0} precision={2} />
  640. },
  641. {
  642. title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  643. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  644. },
  645. ]
  646. },
  647. {
  648. label: 'App相关字段',
  649. data: [
  650. {
  651. title: '回流率', dataIndex: 'miniGameRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  652. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  653. },
  654. {
  655. title: '回流次日留存人数', dataIndex: 'retentionPlaDedupPv', label: 'App相关字段', width: 80, align: 'center', sorter: true,
  656. render: (a: string) => <Statistic value={a || 0} />
  657. },
  658. {
  659. title: '回流次日留存率', dataIndex: 'retentionPlaDedupRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  660. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  661. },
  662. {
  663. title: '回流人数(平台上报)', dataIndex: 'miniGameBfUv', label: 'App相关字段', width: 80, align: 'center', sorter: true,
  664. render: (a: string) => <Statistic value={a || 0} />
  665. },
  666. {
  667. title: '回流成本(平台上报)', dataIndex: 'miniGameBfCost', label: 'App相关字段', width: 80, align: 'center', sorter: true,
  668. render: (a: string) => <Statistic value={a || 0} precision={2} />
  669. },
  670. {
  671. title: '广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupPv', label: 'App相关字段', width: 90, align: 'center', sorter: true,
  672. render: (a: string) => <Statistic value={a || 0} />
  673. },
  674. {
  675. title: '回流广告变现金额(平台上报)', dataIndex: 'miniGameBfIncomeAmount', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  676. render: (a: string) => <Statistic value={a || 0} precision={2} />
  677. },
  678. {
  679. title: '回流首日广告变现金额(平台上报)', dataIndex: 'miniGameBfIncomeD1Amount', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  680. render: (a: string) => <Statistic value={a || 0} precision={2} />
  681. },
  682. {
  683. title: '回流广告变现人数(平台上报)', dataIndex: 'adMonetizationBkPlaDedupPv', label: 'App相关字段', width: 90, align: 'center', sorter: true,
  684. render: (a: string) => <Statistic value={a || 0} />
  685. },
  686. {
  687. title: '回流广告变现ROI(平台上报)', dataIndex: 'miniGameBfIncomePlaRoi', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  688. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  689. },
  690. {
  691. title: '回流广告变现ARPU(平台上报)', dataIndex: 'miniGameBfIncomePlaArpu', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  692. render: (a: string) => <Statistic value={a || 0} />
  693. },
  694. {
  695. title: '回流广告变现成本(平台上报)', dataIndex: 'adMonetizationBkPlaCost', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  696. render: (a: string) => <Statistic value={a || 0} precision={2} />
  697. },
  698. {
  699. title: '回流首日广告变现人数(平台上报)', dataIndex: 'adMonetizationBkPlaDedupActive1dPv', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  700. render: (a: string) => <Statistic value={a || 0} />
  701. },
  702. {
  703. title: '回流首24小时广告变现金额(平台上报)', dataIndex: 'adMonetizationBkPlaActive24hAmount', label: 'App相关字段', width: 110, align: 'center', sorter: true,
  704. render: (a: string) => <Statistic value={a || 0} precision={2} />
  705. },
  706. {
  707. title: '回流首24小时广告变现人数(平台上报)', dataIndex: 'adMonetizationBkPlaDedupActive24hPv', label: 'App相关字段', width: 110, align: 'center', sorter: true,
  708. render: (a: string) => <Statistic value={a || 0} />
  709. },
  710. {
  711. title: '回流首24小时广告变现ROI(平台上报)', dataIndex: 'adMonetizationBkPlaDedupActive24hRoi', label: 'App相关字段', width: 110, align: 'center', sorter: true,
  712. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  713. },
  714. {
  715. title: '回流首24小时广告变现ARPU(平台上报)', dataIndex: 'adMonetizationBkPlaDedupActive24hArpu', label: 'App相关字段', width: 120, align: 'center', sorter: true,
  716. render: (a: string) => <Statistic value={a || 0} />
  717. },
  718. {
  719. title: '回流首24小时广告变现成本(平台上报)', dataIndex: 'adMonetizationBkPlaDedupActive24hCost', label: 'App相关字段', width: 110, align: 'center', sorter: true,
  720. render: (a: string) => <Statistic value={a || 0} precision={2} />
  721. },
  722. {
  723. title: '回流3日广告变现金额(平台上报)', dataIndex: 'adMonetizationBkPlaActive3dAmount', label: 'App相关字段', width: 95, align: 'center', sorter: true,
  724. render: (a: string) => <Statistic value={a || 0} precision={2} />
  725. },
  726. {
  727. title: '回流3日广告变现ROI(平台上报)', dataIndex: 'adMonetizationBkPlaActive3dRoi', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  728. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  729. },
  730. {
  731. title: '回流7日广告变现金额(平台上报)', dataIndex: 'adMonetizationBkPlaActive7dAmount', label: 'App相关字段', width: 95, align: 'center', sorter: true,
  732. render: (a: string) => <Statistic value={a || 0} precision={2} />
  733. },
  734. {
  735. title: '回流7日广告变现ROI(平台上报)', dataIndex: 'adMonetizationBkPlaActive7dRoi', label: 'App相关字段', width: 100, align: 'center', sorter: true,
  736. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  737. },
  738. {
  739. title: '回流14日广告变现金额(平台上报)', dataIndex: 'adMonetizationBkPlaActive14dAmount', label: 'App相关字段', width: 95, align: 'center', sorter: true,
  740. render: (a: string) => <Statistic value={a || 0} precision={2} />
  741. },
  742. {
  743. title: '回流14日广告变现ROI(平台上报)', dataIndex: 'adMonetizationBkPlaActive14dRoi', label: 'App相关字段', width: 110, align: 'center', sorter: true,
  744. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  745. },
  746. {
  747. title: 'APP下载激活率', dataIndex: 'activatedRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  748. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  749. },
  750. {
  751. title: 'APP下载率', dataIndex: 'downloadRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  752. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  753. },
  754. {
  755. title: 'APP下载成本', dataIndex: 'downloadCost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  756. render: (a: string) => <Statistic value={a || 0} precision={2} />
  757. },
  758. {
  759. title: 'APP安装率', dataIndex: 'installRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  760. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  761. },
  762. {
  763. title: 'APP安装成本', dataIndex: 'installCost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  764. render: (a: string) => <Statistic value={a || 0} precision={2} />
  765. },
  766. {
  767. title: 'APP激活成本', dataIndex: 'activatedCost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  768. render: (a: string) => <Statistic value={a || 0} precision={2} />
  769. },
  770. {
  771. title: 'APP点击激活率', dataIndex: 'clickActivatedRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  772. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  773. },
  774. {
  775. title: '次日留存率', dataIndex: 'retentionRate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  776. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  777. },
  778. {
  779. title: '3日留存人数', dataIndex: 'appRetentionD3Uv', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  780. render: (a: string) => <Statistic value={a || 0} />
  781. },
  782. {
  783. title: '3日留存成本(人数)', dataIndex: 'appRetentionD3Cost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  784. render: (a: string) => <Statistic value={a || 0} precision={2} />
  785. },
  786. {
  787. title: '3日留存率(人数)', dataIndex: 'appRetentionD3Rate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  788. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  789. },
  790. {
  791. title: '5日留存人数', dataIndex: 'appRetentionD5Uv', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  792. render: (a: string) => <Statistic value={a || 0} />
  793. },
  794. {
  795. title: '5日留存成本(人数)', dataIndex: 'appRetentionD5Cost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  796. render: (a: string) => <Statistic value={a || 0} precision={2} />
  797. },
  798. {
  799. title: '5日留存率(人数)', dataIndex: 'appRetentionD5Rate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  800. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  801. },
  802. {
  803. title: '7日留存人数', dataIndex: 'appRetentionD7Uv', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  804. render: (a: string) => <Statistic value={a || 0} />
  805. },
  806. {
  807. title: '7日留存成本(人数)', dataIndex: 'appRetentionD7Cost', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  808. render: (a: string) => <Statistic value={a || 0} precision={2} />
  809. },
  810. {
  811. title: '7日留存率(人数)', dataIndex: 'appRetentionD7Rate', label: 'App相关字段', width: 70, align: 'center', sorter: true,
  812. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  813. }
  814. ]
  815. },
  816. {
  817. label: '操作',
  818. data: [
  819. {
  820. title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 34,
  821. render: (_: number, b: any) => {
  822. if (b?.accountId === '总计') return '--'
  823. return <Space>
  824. <a onClick={() => dayHandle(b)} style={{ fontSize: 12 }}>广告每日监控</a>
  825. <a onClick={() => {
  826. window.open(`https://ad.qq.com/atlas/${b?.accountId}/admanage/adgroup?tab=adgroup&query={%22operation_status%22:[%22CALCULATE_STATUS_EXCLUDE_DEL%22],%22system_status%22:[],%22search_name%22:%22${b.adgroupId}%22}`)
  827. }} style={{ fontSize: 12 }}>腾讯广告</a>
  828. </Space>
  829. }
  830. },
  831. {
  832. title: '启停',
  833. dataIndex: 'configuredStatus',
  834. label: '操作',
  835. align: 'center',
  836. width: 45,
  837. default: 1,
  838. render: (a: string, b: any) => {
  839. if (b?.accountId === '总计') {
  840. return '--'
  841. }
  842. return <SwitchStatus configuredStatus={a} isDeleted={b?.isDeleted} adgroupId={b?.adgroupId} accountId={b?.accountId} onChange={onChange} />
  843. }
  844. }
  845. ]
  846. }
  847. ]
  848. }
  849. export default columns12