tableConfig.tsx 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. import WidthEllipsis from "@/components/widthEllipsis"
  2. import { Badge, Progress, Space, Statistic } from "antd"
  3. import React from "react"
  4. import { AD_STATUS_ENUM, BID_MODE_ENUM, PRODUCT_TYPE_ENUM } from "../../const"
  5. import SwitchStatus from "./switchStatus"
  6. import CreativePreview from "../../components/CreativePreview"
  7. import { DELIVERY_MODE_Enum } from "./const"
  8. function columns12(dayHandle: (data: any) => void, onChange?: () => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
  9. return [
  10. {
  11. label: '腾讯创意基本信息',
  12. data: [
  13. {
  14. title: '广告账号', dataIndex: 'accountId', label: '腾讯创意基本信息', align: 'center', width: 80, default: 2,
  15. render: (a: string) => (<WidthEllipsis value={a} />)
  16. },
  17. {
  18. title: '业务类型', dataIndex: 'productType', label: '腾讯创意基本信息', align: 'center', width: 80, default: 3,
  19. render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
  20. },
  21. {
  22. title: '应用', dataIndex: 'appName', label: '腾讯创意基本信息', align: 'center', width: 100, default: 4,
  23. render: (a: string) => (<WidthEllipsis value={a} />)
  24. },
  25. {
  26. title: '小程序ID', dataIndex: 'mpId', label: '腾讯创意基本信息', align: 'center', width: 100, default: 5,
  27. render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
  28. },
  29. {
  30. title: '投手', dataIndex: 'pitcherName', label: '腾讯创意基本信息', align: 'center', width: 60, default: 6,
  31. render: (a: string) => (<WidthEllipsis value={a} />)
  32. },
  33. {
  34. title: '创意名称', dataIndex: 'dynamicCreativeName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 7,
  35. render: (a: string) => (<WidthEllipsis value={a} />)
  36. },
  37. {
  38. title: '创意ID', dataIndex: 'dynamicCreativeId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 8,
  39. render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <WidthEllipsis value={a} isCopy />)
  40. },
  41. {
  42. title: '广告名称', dataIndex: 'promotionName', label: '腾讯创意基本信息', align: 'center', width: 120, default: 9,
  43. render: (a: string) => (<WidthEllipsis value={a} />)
  44. },
  45. {
  46. title: '广告ID', dataIndex: 'promotionId', label: '腾讯创意基本信息', align: 'center', width: 90, default: 10,
  47. render: (a: string) => (<WidthEllipsis value={a} isCopy/>)
  48. },
  49. {
  50. title: '广告状态', dataIndex: 'status', label: '腾讯创意基本信息', align: 'center', width: 75, default: 11,
  51. render: (a: string) => (<WidthEllipsis value={AD_STATUS_ENUM[a as keyof typeof AD_STATUS_ENUM]} />)
  52. },
  53. {
  54. title: '投放模式', dataIndex: 'deliveryMode', label: '腾讯创意基本信息', align: 'center', width: 75,
  55. render: (a: string) => (<WidthEllipsis value={DELIVERY_MODE_Enum[a as keyof typeof DELIVERY_MODE_Enum]} />)
  56. },
  57. {
  58. title: '服务商', dataIndex: 'service', label: '腾讯创意基本信息', align: 'center', width: 75,
  59. render: (a: string) => (<WidthEllipsis value={a} />)
  60. },
  61. {
  62. title: '余额', dataIndex: 'balance', label: '腾讯创意基本信息', align: 'right', width: 75, sorter: true, default: 12,
  63. render: (a: string) => <Statistic value={a || 0} precision={2} />
  64. },
  65. {
  66. title: '出价方式', dataIndex: 'pricing', label: '腾讯创意基本信息', align: 'center', width: 70, default: 13,
  67. render: (a: string) => (<WidthEllipsis value={BID_MODE_ENUM[a as keyof typeof BID_MODE_ENUM]} />)
  68. },
  69. {
  70. title: '当前出价', dataIndex: 'cpaBid', label: '腾讯创意基本信息', align: 'center', width: 75, default: 14, sorter: true,
  71. render: (a: string) => <Statistic value={a || 0} />
  72. },
  73. {
  74. title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '腾讯创意基本信息', align: 'right', width: 75, default: 15,
  75. render: (a: string) => <Statistic value={a || 0} />
  76. },
  77. {
  78. title: '广告日预算', dataIndex: 'budget', label: '腾讯创意基本信息', align: 'right', width: 75, default: 16, sorter: true,
  79. render: (a: string) => <Statistic value={a || 0} />
  80. },
  81. {
  82. title: '广告创建时间', dataIndex: 'adTime', label: '基本信息', align: 'center', width: 140,
  83. render: (a: string, b: any) => (<WidthEllipsis value={a} />)
  84. },
  85. {
  86. title: '广告已删除?', dataIndex: 'isDeleted', label: '基本信息', align: 'center', width: 50,
  87. render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a == 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
  88. },
  89. {
  90. title: '创意已删除?', dataIndex: 'dynamicCreativeIsDeleted', label: '基本信息', align: 'center', width: 50, default: 17,
  91. render: (a: number, b: any) => (b?.accountId === '总计' ? '--' : a == 1 ? <Badge status="error" text="是" /> : <Badge status="success" text="否" />)
  92. },
  93. {
  94. title: '创意创建时间', dataIndex: 'dynamicCreativeCreatedTime', label: '基本信息', align: 'center', width: 140,
  95. render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}`} />)
  96. },
  97. {
  98. title: '投放日期', dataIndex: 'startTime', label: '基本信息', align: 'center', width: 180, default: 18,
  99. render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endTime}`} />)
  100. },
  101. {
  102. title: '消耗时间', dataIndex: 'dt', label: '基本信息', align: 'center', width: 90, default: 19,
  103. render: (a: string, b: any) => (<WidthEllipsis value={a} />)
  104. },
  105. {
  106. title: '今日消耗', dataIndex: 'cost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 20, sorter: true,
  107. className: 'padding_0',
  108. render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
  109. <Progress
  110. strokeColor={{
  111. from: '#ff5900',
  112. to: '#ffd380',
  113. }}
  114. status="active"
  115. showInfo={false}
  116. percent={a ? a / 20000 * 100 : 0}
  117. />
  118. <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>
  119. </div>
  120. },
  121. {
  122. title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 21, sorter: true,
  123. className: 'padding_0',
  124. render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
  125. <Progress
  126. strokeColor={{
  127. from: '#10c1e9',
  128. to: '#6892d0',
  129. }}
  130. status="active"
  131. showInfo={false}
  132. percent={a ? a / 20000 * 100 : 0}
  133. />
  134. <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>
  135. </div>
  136. },
  137. {
  138. title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
  139. render: (a: string) => <Statistic value={a || 0} />
  140. },
  141. {
  142. title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, sorter: true,
  143. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  144. },
  145. {
  146. title: '曝光量', dataIndex: 'viewCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 24, sorter: true,
  147. render: (a: string) => <Statistic value={a || 0} />
  148. },
  149. {
  150. title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 25, sorter: true,
  151. render: (a: string) => <Statistic value={a || 0} precision={2} />
  152. },
  153. {
  154. title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
  155. render: (a: string) => <Statistic value={a || 0} precision={2} />
  156. },
  157. {
  158. title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
  159. render: (a: string) => (<WidthEllipsis value={a} />)
  160. },
  161. {
  162. title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
  163. render: (a: string) => <Statistic value={a || 0} />
  164. },
  165. {
  166. title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
  167. render: (a: string) => <Statistic value={a || 0} precision={2} />
  168. },
  169. {
  170. title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 30, sorter: true,
  171. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  172. },
  173. {
  174. title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '基本信息', align: 'center', width: 80, default: 31, sorter: true,
  175. render: (a: string) => <Statistic value={a || 0} />
  176. },
  177. {
  178. title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
  179. render: (a: string) => <Statistic value={a || 0} precision={2} />
  180. },
  181. {
  182. title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 33, sorter: true,
  183. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  184. },
  185. {
  186. title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯创意基本信息', width: 150, default: 34,
  187. render: (a: any, b: any) => {
  188. if (b?.accountId === '总计') {
  189. return '--'
  190. }
  191. if (a?.length) {
  192. let deliveryMode: string[] = []
  193. let creativePreview = a?.map((item: { creativeComponents: any, deliveryMode: string }) => {
  194. deliveryMode.push(item.deliveryMode)
  195. return { ...item?.creativeComponents }
  196. })
  197. return <CreativePreview creativePreview={creativePreview} deliveryMode={deliveryMode} />
  198. }
  199. return null
  200. }
  201. }
  202. ]
  203. },
  204. {
  205. label: 'IAA补充指标',
  206. data: [
  207. {
  208. title: '首日ROI', dataIndex: 'firstRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
  209. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  210. },
  211. {
  212. title: '24小时ROI', dataIndex: 'twentyFourHoursRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
  213. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  214. },
  215. {
  216. title: '总ROI', dataIndex: 'totalRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
  217. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  218. },
  219. {
  220. title: '广告总ROI', dataIndex: 'promotionTotalRoi', label: 'IAA补充指标', align: 'center', width: 80, sorter: true, className: 'redColorClass',
  221. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  222. }
  223. ]
  224. },
  225. {
  226. label: '其他业务(平台上报指标)',
  227. data: [
  228. {
  229. title: '激活首24小时广告变现ARPPU(平台上报)', dataIndex: 'firstDayAdPurArppuCost24hPla', label: '其他业务(平台上报指标)', width: 130, align: 'center', sorter: true, className: 'green2ColorClass',
  230. render: (a: string) => <Statistic value={a || 0} />
  231. },
  232. {
  233. title: '激活首24小时广告变现ROI(平台上报)', dataIndex: 'incomeRoi124hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  234. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  235. },
  236. {
  237. title: '激活首24小时广告变现次数(平台上报)', dataIndex: 'incomePv24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  238. render: (a: string) => <Statistic value={a || 0} />
  239. },
  240. {
  241. title: '激活首日广告变现次数(平台上报)', dataIndex: 'incomePv1dPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  242. render: (a: string) => <Statistic value={a || 0} />
  243. },
  244. {
  245. title: '激活3日广告变现次数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive3dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  246. render: (a: string) => <Statistic value={a || 0} />
  247. },
  248. {
  249. title: '激活7日广告变现次数(平台上报)', dataIndex: 'minigame7dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  250. render: (a: string) => <Statistic value={a || 0} />
  251. },
  252. {
  253. title: '注册3日广告变现次数(平台上报)', dataIndex: 'minigame3dIncomeCount', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  254. render: (a: string) => <Statistic value={a || 0} />
  255. },
  256. {
  257. title: '激活首24小时广告变现金额(平台上报)', dataIndex: 'incomeVal24hPla', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  258. render: (a: string) => <Statistic value={a || 0} precision={2} />
  259. },
  260. {
  261. title: '注册首日广告变现金额(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 120, align: 'center', sorter: true, className: 'green2ColorClass',
  262. render: (a: string) => <Statistic value={a || 0} precision={2} />
  263. },
  264. {
  265. title: '注册7日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD7', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  266. render: (a: string) => <Statistic value={a || 0} precision={2} />
  267. },
  268. {
  269. title: '激活14日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD14', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  270. render: (a: string) => <Statistic value={a || 0} precision={2} />
  271. },
  272. {
  273. title: '广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmount', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
  274. render: (a: string) => <Statistic value={a || 0} precision={2} />
  275. },
  276. {
  277. title: '激活首24小时广告变现人数(平台上报)', dataIndex: 'adPayingUsers24hPla', label: '其他业务(平台上报指标)', width: 115, align: 'center', sorter: true, className: 'green2ColorClass',
  278. render: (a: string) => <Statistic value={a || 0} />
  279. },
  280. {
  281. title: '激活首日广告变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive1dPv', label: '其他业务(平台上报指标)', width: 110, align: 'center', sorter: true, className: 'green2ColorClass',
  282. render: (a: string) => <Statistic value={a || 0} />
  283. },
  284. {
  285. title: '激活7日变现人数(平台上报)', dataIndex: 'adMonetizationPlaDedupActive7dPv', label: '其他业务(平台上报指标)', width: 100, align: 'center', sorter: true, className: 'green2ColorClass',
  286. render: (a: string) => <Statistic value={a || 0} />
  287. }
  288. ]
  289. },
  290. {
  291. label: '其他业务(其他指标)',
  292. data: [
  293. {
  294. title: '激活首24小时广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost24h', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
  295. render: (a: string) => <Statistic value={a || 0} />
  296. },
  297. {
  298. title: '激活首日广告变现ARPPU', dataIndex: 'firstDayAdPurArppuCost', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  299. render: (a: string) => <Statistic value={a || 0} />
  300. },
  301. {
  302. title: '广告变现ARPPU', dataIndex: 'adMonetizationArppu', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  303. render: (a: string) => <Statistic value={a || 0} />
  304. },
  305. {
  306. title: '激活首24小时广告变现ROI', dataIndex: 'incomeRoi124h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  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: '激活首日广告变现ROI', dataIndex: 'incomeRoi1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  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. title: '激活3日广告变现ROI', dataIndex: 'incomeRoi3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  315. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  316. },
  317. {
  318. title: '激活7日广告变现ROI', dataIndex: 'incomeRoi7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  319. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  320. },
  321. {
  322. title: '激活14日广告变现ROI', dataIndex: 'incomeRoi14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  323. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  324. },
  325. {
  326. title: '广告变现ROI', dataIndex: 'adMonetizationRoi', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  327. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  328. },
  329. {
  330. title: '激活首日广告变现成本(人数)', dataIndex: 'adPayingCostD1', label: '其他业务(其他指标)', width: 100, align: 'center', sorter: true, className: 'volcanoColorClass',
  331. render: (a: string) => <Statistic value={a || 0} precision={2} />
  332. },
  333. {
  334. title: '广告变现成本', dataIndex: 'adMonetizationCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  335. render: (a: string) => <Statistic value={a || 0} precision={2} />
  336. },
  337. {
  338. title: '激活3日广告变现次数', dataIndex: 'adMonetizationActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  339. render: (a: string) => <Statistic value={a || 0} />
  340. },
  341. {
  342. title: '激活7日广告变现次数', dataIndex: 'adMonetizationActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  343. render: (a: string) => <Statistic value={a || 0} />
  344. },
  345. {
  346. title: '广告变现次数(平台上报)', dataIndex: 'incomePvPla', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  347. render: (a: string) => <Statistic value={a || 0} />
  348. },
  349. {
  350. title: '激活首24小时广告变现金额', dataIndex: 'incomeVal24h', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  351. render: (a: string) => <Statistic value={a || 0} precision={2} />
  352. },
  353. {
  354. title: '激活首日广告变现金额', dataIndex: 'incomeVal1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  355. render: (a: string) => <Statistic value={a || 0} precision={2} />
  356. },
  357. {
  358. title: '激活3日广告变现金额', dataIndex: 'incomeVal3', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  359. render: (a: string) => <Statistic value={a || 0} precision={2} />
  360. },
  361. {
  362. title: '激活7日广告变现金额', dataIndex: 'incomeVal7', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  363. render: (a: string) => <Statistic value={a || 0} precision={2} />
  364. },
  365. {
  366. title: '激活14日广告变现金额', dataIndex: 'incomeVal14', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  367. render: (a: string) => <Statistic value={a || 0} precision={2} />
  368. },
  369. {
  370. title: '广告变现金额', dataIndex: 'adMonetizationAmount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  371. render: (a: string) => <Statistic value={a || 0} precision={2} />
  372. },
  373. {
  374. title: '激活首24小时广告变现人数', dataIndex: 'adPayingUsers24h', label: '其他业务(其他指标)', width: 90, align: 'center', sorter: true, className: 'volcanoColorClass',
  375. render: (a: string) => <Statistic value={a || 0} />
  376. },
  377. {
  378. title: '激活首日广告变现人数', dataIndex: 'adPayingUsersD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  379. render: (a: string) => <Statistic value={a || 0} />
  380. },
  381. {
  382. title: '激活3日广告变现人数', dataIndex: 'adMonetizationDedupActive3dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  383. render: (a: string) => <Statistic value={a || 0} />
  384. },
  385. {
  386. title: '激活7日广告变现人数', dataIndex: 'adMonetizationDedupActive7dPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  387. render: (a: string) => <Statistic value={a || 0} />
  388. },
  389. {
  390. title: '注册次数', dataIndex: 'regPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  391. render: (a: string) => <Statistic value={a || 0} />
  392. },
  393. {
  394. title: '注册人数', dataIndex: 'regDedupPv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  395. render: (a: string) => <Statistic value={a || 0} />
  396. },
  397. {
  398. title: '注册成本', dataIndex: 'regCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  399. render: (a: string) => <Statistic value={a || 0} precision={2} />
  400. },
  401. {
  402. title: 'APP激活次数', dataIndex: 'activatedCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  403. render: (a: string) => <Statistic value={a || 0} />
  404. },
  405. {
  406. title: 'APP点击激活率', dataIndex: 'clickActivatedRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  407. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  408. },
  409. {
  410. title: 'APP激活成本', dataIndex: 'activatedCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  411. render: (a: string) => <Statistic value={a || 0} precision={2} />
  412. },
  413. {
  414. title: '激活注册率', dataIndex: 'activateRegisterRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  415. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  416. },
  417. {
  418. title: '次日留存次数', dataIndex: 'retentionCount', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  419. render: (a: string) => <Statistic value={a || 0} />
  420. },
  421. {
  422. title: '次日留存人数', dataIndex: 'miniGameRetentionD1', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  423. render: (a: string) => <Statistic value={a || 0} />
  424. },
  425. {
  426. title: '次日留存率', dataIndex: 'retentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  427. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  428. },
  429. {
  430. title: '次日留存成本', dataIndex: 'retentionCost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  431. render: (a: string) => <Statistic value={a || 0} precision={2} />
  432. },
  433. {
  434. title: '关键页面次日留存率', dataIndex: 'appKeyPageRetentionRate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  435. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  436. },
  437. {
  438. title: '小游戏次日留存率', dataIndex: 'miniGameRetentionD1Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  439. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  440. },
  441. {
  442. title: '小游戏次日留存成本', dataIndex: 'miniGameRetentionD1Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  443. render: (a: string) => <Statistic value={a || 0} precision={2} />
  444. },
  445. {
  446. title: '3日留存人数', dataIndex: 'appRetentionD3Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  447. render: (a: string) => <Statistic value={a || 0} />
  448. },
  449. {
  450. title: '3日留存成本(人数)', dataIndex: 'appRetentionD3Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  451. render: (a: string) => <Statistic value={a || 0} precision={2} />
  452. },
  453. {
  454. title: '3日留存率(人数)', dataIndex: 'appRetentionD3Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  455. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  456. },
  457. {
  458. title: '5日留存人数', dataIndex: 'appRetentionD5Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  459. render: (a: string) => <Statistic value={a || 0} />
  460. },
  461. {
  462. title: '5日留存成本(人数)', dataIndex: 'appRetentionD5Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  463. render: (a: string) => <Statistic value={a || 0} precision={2} />
  464. },
  465. {
  466. title: '5日留存率(人数)', dataIndex: 'appRetentionD5Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  467. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  468. },
  469. {
  470. title: '7日留存人数', dataIndex: 'appRetentionD7Uv', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  471. render: (a: string) => <Statistic value={a || 0} />
  472. },
  473. {
  474. title: '7日留存成本(人数)', dataIndex: 'appRetentionD7Cost', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  475. render: (a: string) => <Statistic value={a || 0} precision={2} />
  476. },
  477. {
  478. title: '7日留存率(人数)', dataIndex: 'appRetentionD7Rate', label: '其他业务(其他指标)', width: 80, align: 'center', sorter: true, className: 'volcanoColorClass',
  479. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  480. },
  481. ]
  482. },
  483. {
  484. label: '小游戏(平台上报)',
  485. data: [
  486. {
  487. title: '小游戏注册首日广告变现ARPU(平台上报)', dataIndex: 'miniGameFirstDayAdPayingArpu', label: '小游戏(平台上报)', width: 130, align: 'center', sorter: true, className: 'purple1ColorClass',
  488. render: (a: string) => <Statistic value={a || 0} />
  489. },
  490. {
  491. title: '小游戏广告变现ARPU(平台上报)', dataIndex: 'miniGameAdMonetizationArpu', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  492. render: (a: string) => <Statistic value={a || 0} />
  493. },
  494. {
  495. title: '小游戏注册首日广告变现ROI(平台上报)', dataIndex: 'miniGameIncomeRoi1', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  496. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  497. },
  498. {
  499. title: '小游戏注册3日广告变现ROI(平台上报)', dataIndex: 'minigame3dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  500. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  501. },
  502. {
  503. title: '小游戏注册7日广告变现ROI(平台上报)', dataIndex: 'minigame7dIncomeRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  504. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  505. },
  506. {
  507. title: '小游戏广告变现ROI(平台上报)', dataIndex: 'miniGameAdMonetizationRoi', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  508. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  509. },
  510. {
  511. title: '小游戏注册首日广告变现成本(平台上报)', dataIndex: 'miniGameFirstDayAdPayingCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  512. render: (a: string) => <Statistic value={a || 0} precision={2} />
  513. },
  514. {
  515. title: '小游戏广告变现成本(平台上报)', dataIndex: 'miniGameAdMonetizationCost', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  516. render: (a: string) => <Statistic value={a || 0} precision={2} />
  517. },
  518. {
  519. title: '小游戏注册3日广告变现金额(平台上报)', dataIndex: 'miniGameAdMonetizationAmountD3', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  520. render: (a: string) => <Statistic value={a || 0} precision={2} />
  521. },
  522. {
  523. title: '小游戏注册首日广告变现人数(平台上报)', dataIndex: 'miniGameFirstDayAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  524. render: (a: string) => <Statistic value={a || 0} />
  525. },
  526. {
  527. title: '小游戏注册3日广告变现人数(平台上报)', dataIndex: 'minigame3dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  528. render: (a: string) => <Statistic value={a || 0} />
  529. },
  530. {
  531. title: '小游戏注册7日广告变现人数(平台上报)', dataIndex: 'minigame7dIncomeUv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  532. render: (a: string) => <Statistic value={a || 0} />
  533. },
  534. {
  535. title: '小游戏广告变现人数(平台上报)', dataIndex: 'miniGameAdMonetizationUsers', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  536. render: (a: string) => <Statistic value={a || 0} />
  537. },
  538. {
  539. title: '注册次数(平台上报)', dataIndex: 'regPlaPv', label: '小游戏(平台上报)', width: 90, align: 'center', sorter: true, className: 'purple1ColorClass',
  540. render: (a: string) => <Statistic value={a || 0} />
  541. },
  542. {
  543. title: '注册人数(平台上报+广告主上报)', dataIndex: 'regAllDedupPv', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  544. render: (a: string) => <Statistic value={a || 0} />
  545. },
  546. {
  547. title: '注册成本(平台上报+广告主上报)', dataIndex: 'regCostPla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  548. render: (a: string) => <Statistic value={a || 0} precision={2} />
  549. },
  550. {
  551. title: '注册率(平台上报+广告主上报)', dataIndex: 'regClickRatePla', label: '小游戏(平台上报)', width: 110, align: 'center', sorter: true, className: 'purple1ColorClass',
  552. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 0.5 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  553. },
  554. ]
  555. },
  556. {
  557. label: '操作',
  558. data: [
  559. {
  560. title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
  561. render: (_: number, b: any) => {
  562. if (b?.accountId === '总计') return '--'
  563. return <Space>
  564. <a onClick={() => dayHandle(b)}>创意每日监控</a>
  565. <a onClick={() => {
  566. 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.promotionId}%22}`)
  567. }}>腾讯广告</a>
  568. </Space>
  569. }
  570. },
  571. {
  572. title: '启停',
  573. dataIndex: 'configuredStatus',
  574. label: '操作',
  575. align: 'center',
  576. width: 45,
  577. default: 1,
  578. render: (a: string, b: any) => {
  579. if (b?.accountId === '总计') {
  580. return '--'
  581. }
  582. return <SwitchStatus configuredStatus={a} isDeleted={b?.dynamicCreativeIsDeleted == 1} accountId={b?.accountId} dynamicCreativeId={b?.dynamicCreativeId} onChange={onChange} />
  583. }
  584. }
  585. ]
  586. }
  587. ]
  588. }
  589. export default columns12