tablePlanListConfig.tsx 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413
  1. import { BidModeEnum, BidStrategyEnum, OptimizationGoalEnum } from '@/services/launchAdq/enum'
  2. import React from 'react'
  3. import { Badge, Dropdown, Menu, Space, Statistic } from 'antd'
  4. import { ReactComponent as RocketSvg } from '@/assets/rocket.svg'
  5. import '../../launchSystemNew/adq/index.less'
  6. import { copy } from '@/utils/utils'
  7. import { ColumnsType } from 'antd/lib/table'
  8. import StatisticNull from '@/components/StatisticNull'
  9. import { DownOutlined } from '@ant-design/icons'
  10. import TimeSeriesLook from '../../launchSystemNew/adq/ad/timeSeriesLook'
  11. import SwitchStatus from '../adqv3/ad/switchStatus'
  12. import CreativePreview from './CreativePreview'
  13. import { ADGROUP_STATUS } from '@/pages/adMonitor/adMonitorList/data'
  14. import { AdUnitType_Enum } from '@/pages/launchSystemNew/account/const'
  15. function tablePlanConfig(
  16. onChange: () => void,
  17. details: (data: any) => void,
  18. log: (data: any) => void,
  19. handleTag: (data: any) => void,
  20. delTag: (data: any) => void,
  21. ): ColumnsType<any> {
  22. let adArr: ColumnsType<any> = [
  23. {
  24. title: '启停',
  25. dataIndex: 'configured_status',
  26. key: 'configured_status',
  27. align: 'center',
  28. width: 40,
  29. fixed: 'left',
  30. render: (a: string, b: any) => {
  31. if (b?.account_id === '总计') {
  32. return '--'
  33. }
  34. return <SwitchStatus configuredStatus={a} isDeleted={b?.is_deleted} adgroupId={b?.adgroup_id} accountId={b?.account_id} onChange={onChange} />
  35. }
  36. },
  37. {
  38. title: '所属账号',
  39. dataIndex: 'account_id',
  40. key: 'account_id',
  41. align: 'center',
  42. width: 80,
  43. ellipsis: true,
  44. render: (a: string) => {
  45. return <Space>
  46. <a onClick={() => copy(a)} >{a}</a>
  47. </Space>
  48. }
  49. },
  50. {
  51. title: '腾讯备注',
  52. dataIndex: 'memo',
  53. key: 'memo',
  54. align: 'center',
  55. width: 80,
  56. ellipsis: true,
  57. render(value, record) {
  58. if (record?.account_id === '总计') {
  59. return '--'
  60. }
  61. return value
  62. },
  63. },
  64. {
  65. title: '本地备注',
  66. dataIndex: 'remark',
  67. key: 'remark',
  68. align: 'center',
  69. width: 80,
  70. ellipsis: true,
  71. render(value, record) {
  72. if (record?.account_id === '总计') {
  73. return '--'
  74. }
  75. return value
  76. },
  77. },
  78. {
  79. title: '广告ID',
  80. dataIndex: 'adgroup_id',
  81. key: 'adgroup_id',
  82. align: 'center',
  83. width: 100,
  84. ellipsis: true,
  85. render: (a: string, b: any) => {
  86. if (b?.account_id === '总计') {
  87. return '--'
  88. }
  89. return <Space>
  90. <a onClick={() => copy(a)} >{a}</a>
  91. </Space>
  92. }
  93. },
  94. {
  95. title: '投手',
  96. dataIndex: 'put_user_name',
  97. key: 'put_user_name',
  98. align: 'center',
  99. width: 70,
  100. ellipsis: true,
  101. render(value, record) {
  102. if (record?.account_id === '总计') return '--';
  103. return value
  104. },
  105. },
  106. {
  107. title: '广告名称',
  108. dataIndex: 'adgroup_name',
  109. key: 'adgroup_name',
  110. width: 280,
  111. ellipsis: true,
  112. render: (a: string, b: any) => {
  113. if (b?.account_id === '总计') return '--';
  114. return a
  115. }
  116. },
  117. {
  118. title: '投放日期',
  119. dataIndex: 'begin_date',
  120. key: 'begin_date',
  121. align: 'center',
  122. width: 150,
  123. ellipsis: true,
  124. sorter: true,
  125. render: (a: string, b: { end_date: string, account_id: any }) => {
  126. if (b?.account_id === '总计') return '--';
  127. return b?.end_date && b?.end_date !== '1970-01-01' ? a + '~' + b.end_date : a + '~' + '长期投放'
  128. }
  129. },
  130. {
  131. title: '投放时间',
  132. dataIndex: 'time_series',
  133. key: 'time_series',
  134. align: 'center',
  135. width: 55,
  136. render: (a: string, b: { endDate: string, account_id: string }) => {
  137. if (b?.account_id === '总计') return '--';
  138. return <TimeSeriesLook timeSeries={a} />
  139. }
  140. },
  141. {
  142. title: '首日开始投放时间',
  143. dataIndex: 'first_day_begin_time',
  144. key: 'first_day_begin_time',
  145. align: 'center',
  146. width: 70,
  147. render(value, record) {
  148. if (record?.account_id === '总计') return '--';
  149. return value
  150. },
  151. },
  152. {
  153. title: '出价',
  154. dataIndex: 'bid_amount',
  155. key: 'bid_amount',
  156. width: 140,
  157. ellipsis: true,
  158. sorter: true,
  159. render: (a: string, b: { bid_mode: string, optimization_goal: string, account_id: any }) => {
  160. if (b?.account_id === '总计') return '--';
  161. return `${b?.bid_mode ? BidModeEnum[b?.bid_mode as keyof typeof BidModeEnum] : ''} ${a}元/${b?.bid_mode === 'BID_MODE_CPM' ? '千次曝光' : b?.bid_mode === 'BID_MODE_CPC' ? '点击' : OptimizationGoalEnum[b?.optimization_goal as keyof typeof OptimizationGoalEnum]}`
  162. }
  163. },
  164. {
  165. title: '深度优化出价',
  166. dataIndex: 'deep_conversion_behavior_bid',
  167. key: 'deep_conversion_behavior_bid',
  168. width: 70,
  169. align: 'center',
  170. render: (a: string, b: { deep_conversion_spec_json: any, deep_conversion_worth_rate: number, account_id: any }) => {
  171. if (b?.account_id === '总计') return '--';
  172. if (b?.deep_conversion_spec_json) {
  173. return b?.deep_conversion_worth_rate
  174. } else {
  175. return '--'
  176. }
  177. }
  178. },
  179. {
  180. title: '出价类型',
  181. dataIndex: 'smart_bid_type',
  182. key: 'smart_bid_type',
  183. align: 'center',
  184. width: 80,
  185. ellipsis: true,
  186. render: (a: string, b) => {
  187. if (b?.account_id === '总计') return '--';
  188. return a === 'SMART_BID_TYPE_CUSTOM' ? '手动出价' : '自动出价'
  189. }
  190. },
  191. {
  192. title: '出价策略',
  193. dataIndex: 'bid_strategy',
  194. key: 'bid_strategy',
  195. align: 'center',
  196. width: 70,
  197. ellipsis: true,
  198. render: (a: string, b) => {
  199. if (b?.account_id === '总计') return '--';
  200. return BidStrategyEnum[a as keyof typeof BidStrategyEnum]
  201. }
  202. },
  203. {
  204. title: '广告组日预算(元)',
  205. dataIndex: 'daily_budget',
  206. key: 'daily_budget',
  207. align: 'center',
  208. width: 70,
  209. sorter: true,
  210. render: (a: string, b: any) => {
  211. if (b?.account_id === '总计') return '--';
  212. return a
  213. }
  214. },
  215. {
  216. title: '是否开启自动版位功能',
  217. dataIndex: 'automatic_site_enabled',
  218. key: 'automatic_site_enabled',
  219. align: 'center',
  220. width: 80,
  221. render: (a: any, b: any) => {
  222. if (b?.account_id === '总计') return '--';
  223. return a ? '开' : '关'
  224. }
  225. },
  226. {
  227. title: '定向条件描述',
  228. dataIndex: 'targeting_translation',
  229. key: 'targeting_translation',
  230. align: 'center',
  231. width: 80,
  232. ellipsis: true,
  233. render: (a: any) => {
  234. return a || '--'
  235. }
  236. },
  237. {
  238. title: '创建时间',
  239. dataIndex: 'created_time',
  240. key: 'created_time',
  241. align: 'center',
  242. width: 140,
  243. ellipsis: true,
  244. render(value, record) {
  245. if (record?.account_id === '总计') return '--';
  246. return value
  247. },
  248. },
  249. {
  250. title: '是否已删除',
  251. dataIndex: 'is_deleted',
  252. key: 'is_deleted',
  253. align: 'center',
  254. width: 60,
  255. render: (a: any, b: any) => {
  256. if (b?.account_id === '总计') return '--';
  257. return <Badge status={!a ? "processing" : "error"} text={a ? '是' : '否'} />
  258. }
  259. },
  260. {
  261. title: '广告状态',
  262. dataIndex: 'system_status',
  263. key: 'system_status',
  264. align: 'center',
  265. width: 100,
  266. ellipsis: true,
  267. render: (a: string) => {
  268. return ADGROUP_STATUS[a as keyof typeof ADGROUP_STATUS]
  269. }
  270. },
  271. {
  272. title: '标记备注',
  273. dataIndex: 'tag_remark',
  274. key: 'tag_remark',
  275. align: 'center',
  276. width: 100,
  277. ellipsis: true,
  278. render(value, b) {
  279. if (b?.account_id === '总计') return '--';
  280. return value || '--'
  281. },
  282. },
  283. {
  284. title: '业务单元类型',
  285. dataIndex: 'ad_unit_type',
  286. key: 'ad_unit_type',
  287. align: 'center',
  288. width: 75,
  289. render: (a: string) => {
  290. return AdUnitType_Enum[a as keyof typeof AdUnitType_Enum] || '--'
  291. }
  292. },
  293. {
  294. title: '广告详情',
  295. dataIndex: 'cost_speed',
  296. key: 'cost_speed',
  297. align: 'center',
  298. width: 80,
  299. className: 'padding2',
  300. render: (a: any, b: any) => {
  301. if (b?.account_id === '总计') return '--';
  302. return <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', lineHeight: 'normal', fontSize: 14 }}>
  303. <RocketSvg /> <a onClick={() => details(b)} style={{ marginLeft: 10 }}>详情</a>
  304. </div>
  305. }
  306. },
  307. {
  308. title: '创意预览',
  309. dataIndex: 'creative_ids',
  310. key: 'creative_ids',
  311. width: 140,
  312. ellipsis: true,
  313. render: (_: any, b: any) => {
  314. // return <BoxOther creativeComponents={b?.creative_preview?.[0] || {}} />
  315. return <CreativePreview creativePreview={b?.creative_preview || []} deliveryMode={b?.delivery_mode} />
  316. }
  317. },
  318. {
  319. title: '操作',
  320. dataIndex: 'cz',
  321. key: 'cz',
  322. width: 130,
  323. align: 'center',
  324. render: (a: any, b: any) => {
  325. if (b?.account_id === '总计') return '--';
  326. let items = [
  327. { label: <a style={{ fontSize: 12 }} onClick={() => log(b)}>告警日志</a>, key: '1' },
  328. { label: <a style={{ fontSize: 12 }} onClick={() => handleTag(b)}>打标记</a>, key: '2' }
  329. ]
  330. if (b?.tag_value) {
  331. items.push({ label: <a style={{ color: 'red', fontSize: 12 }} onClick={() => delTag(b)}>删除标记</a>, key: '3' })
  332. }
  333. return <Space>
  334. <Dropdown menu={{ items }}>
  335. <a><Space size={2}>更多 <DownOutlined /></Space></a>
  336. </Dropdown>
  337. <a style={{ color: '#1890ff' }} onClick={() => window.open(`https://ad.qq.com/atlas/${b?.account_id}/admanage/index?tab=adgroup&query={%22operation_status%22:[%22CALCULATE_STATUS_EXCLUDE_DEL%22],%22system_status%22:[],%22search_name%22:%22${b.adgroup_id}%22}`)} target="_blank">腾讯广告</a>
  338. </Space>
  339. }
  340. }
  341. ]
  342. let adDataArr: ColumnsType<any> = [
  343. {
  344. title: '消耗',
  345. dataIndex: 'cost_total',
  346. key: 'cost_total',
  347. align: 'center',
  348. width: 110,
  349. sorter: true,
  350. render: (a: any, b: any) => {
  351. return <StatisticNull data={b} field='cost_total' />
  352. }
  353. },
  354. {
  355. title: '曝光量',
  356. dataIndex: 'view_total',
  357. key: 'view_total',
  358. align: 'center',
  359. width: 100,
  360. sorter: true,
  361. render: (a: any, b: any) => {
  362. return <StatisticNull data={b} field='view_total' />
  363. }
  364. },
  365. {
  366. title: '千次曝光成本',
  367. dataIndex: 'thousand_display_price_total',
  368. key: 'thousand_display_price_total',
  369. align: 'center',
  370. width: 110,
  371. sorter: true,
  372. render: (a: any, b: any) => {
  373. return <StatisticNull data={b} field='thousand_display_price_total' precision={2} />
  374. }
  375. },
  376. {
  377. title: '点击量',
  378. dataIndex: 'click_total',
  379. key: 'click_total',
  380. align: 'center',
  381. width: 110,
  382. sorter: true,
  383. render: (a: any, b: any) => {
  384. return <StatisticNull data={b} field='click_total' />
  385. }
  386. },
  387. {
  388. title: '点击率',
  389. dataIndex: 'ctr_total',
  390. key: 'ctr_total',
  391. align: 'center',
  392. width: 110,
  393. sorter: true,
  394. render: (a: any, b: any) => {
  395. if (b?.ctr_total !== undefined && b?.ctr_total !== null) {
  396. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  397. } else {
  398. return '--'
  399. }
  400. }
  401. },
  402. {
  403. title: '点击均价',
  404. dataIndex: 'cpc_total',
  405. key: 'cpc_total',
  406. align: 'center',
  407. width: 110,
  408. sorter: true,
  409. render: (a: any, b: any) => {
  410. return <StatisticNull data={b} field='cpc_total' />
  411. }
  412. },
  413. {
  414. title: '不感兴趣点击次数',
  415. dataIndex: 'no_interest_count_total',
  416. key: 'no_interest_count_total',
  417. align: 'center',
  418. width: 110,
  419. sorter: true,
  420. render: (a: any, b: any) => {
  421. return <StatisticNull data={b} field='no_interest_count_total' />
  422. }
  423. },
  424. // {
  425. // title: '朋友圈视频播放次数',
  426. // dataIndex: 'video_play_count_total',
  427. // key: 'video_play_count_total',
  428. // align: 'center',
  429. // width: 110,
  430. // sorter: true,
  431. // render: (a: any, b: any) => {
  432. // return <StatisticNull data={b} field='video_play_count_total' />
  433. // }
  434. // },
  435. {
  436. title: '下载次数',
  437. dataIndex: 'download_count_total',
  438. key: 'download_count_total',
  439. align: 'center',
  440. width: 110,
  441. sorter: true,
  442. render: (a: any, b: any) => {
  443. return <StatisticNull data={b} field='download_count_total' />
  444. }
  445. },
  446. {
  447. title: '安装次数',
  448. dataIndex: 'install_count_total',
  449. key: 'install_count_total',
  450. align: 'center',
  451. width: 110,
  452. sorter: true,
  453. render: (a: any, b: any) => {
  454. return <StatisticNull data={b} field='install_count_total' />
  455. }
  456. },
  457. {
  458. title: '激活次数',
  459. dataIndex: 'activated_count_total',
  460. key: 'activated_count_total',
  461. align: 'center',
  462. width: 110,
  463. sorter: true,
  464. render: (a: any, b: any) => {
  465. return <StatisticNull data={b} field='activated_count_total' />
  466. }
  467. },
  468. {
  469. title: '公众号关注人数',
  470. dataIndex: 'mp_follow_uv_total',
  471. key: 'mp_follow_uv_total',
  472. align: 'center',
  473. width: 110,
  474. sorter: true,
  475. render: (a: any, b: any) => {
  476. return <StatisticNull data={b} field='mp_follow_uv_total' />
  477. }
  478. },
  479. {
  480. title: '公众号关注成本',
  481. dataIndex: 'mp_follow_cost_total',
  482. key: 'mp_follow_cost_total',
  483. align: 'center',
  484. width: 110,
  485. sorter: true,
  486. render: (a: any, b: any) => {
  487. return <StatisticNull data={b} field='mp_follow_cost_total' />
  488. }
  489. },
  490. {
  491. title: '公众号关注率',
  492. dataIndex: 'mp_follow_rate_total',
  493. key: 'mp_follow_rate_total',
  494. align: 'center',
  495. width: 110,
  496. sorter: true,
  497. render: (a: any, b: any) => {
  498. if (b?.mp_follow_rate_total !== undefined && b?.mp_follow_rate_total !== null) {
  499. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  500. } else {
  501. return '--'
  502. }
  503. }
  504. },
  505. {
  506. title: '公众号关注次数',
  507. dataIndex: 'mp_follow_pv_total',
  508. key: 'mp_follow_pv_total',
  509. align: 'center',
  510. width: 110,
  511. sorter: true,
  512. render: (a: any, b: any) => {
  513. return <StatisticNull data={b} field='mp_follow_pv_total' />
  514. }
  515. },
  516. {
  517. title: '公众号关注次数成本',
  518. dataIndex: 'mp_follow_pv_cost_total',
  519. key: 'mp_follow_pv_cost_total',
  520. align: 'center',
  521. width: 120,
  522. sorter: true,
  523. render: (a: any, b: any) => {
  524. return <StatisticNull data={b} field='mp_follow_pv_cost_total' precision={2} />
  525. }
  526. },
  527. {
  528. title: '快应用添加次数',
  529. dataIndex: 'add_quick_app_pv_total',
  530. key: 'add_quick_app_pv_total',
  531. align: 'center',
  532. width: 110,
  533. sorter: true,
  534. render: (a: any, b: any) => {
  535. return <StatisticNull data={b} field='add_quick_app_pv_total' />
  536. }
  537. },
  538. {
  539. title: '快应用添加成本',
  540. dataIndex: 'add_quick_app_cost_total',
  541. key: 'add_quick_app_cost_total',
  542. align: 'center',
  543. width: 110,
  544. sorter: true,
  545. render: (a: any, b: any) => {
  546. return <StatisticNull data={b} field='add_quick_app_cost_total' />
  547. }
  548. },
  549. {
  550. title: '快应用添加率',
  551. dataIndex: 'add_quick_app_rate_total',
  552. key: 'add_quick_app_rate_total',
  553. align: 'center',
  554. width: 110,
  555. sorter: true,
  556. render: (a: any, b: any) => {
  557. if (b?.add_quick_app_rate_total !== undefined && b?.add_quick_app_rate_total !== null) {
  558. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  559. } else {
  560. return '--'
  561. }
  562. }
  563. },
  564. {
  565. title: '加企业微信客服人数',
  566. dataIndex: 'scan_follow_uv_total',
  567. key: 'scan_follow_uv_total',
  568. align: 'center',
  569. width: 120,
  570. sorter: true,
  571. render: (a: any, b: any) => {
  572. return <StatisticNull data={b} field='scan_follow_uv_total' />
  573. }
  574. },
  575. {
  576. title: '加企业微信客服成本',
  577. dataIndex: 'scan_follow_cost_total',
  578. key: 'scan_follow_cost_total',
  579. align: 'center',
  580. width: 120,
  581. sorter: true,
  582. render: (a: any, b: any) => {
  583. return <StatisticNull data={b} field='scan_follow_cost_total' precision={2} />
  584. }
  585. },
  586. {
  587. title: '加企业微信客服率',
  588. dataIndex: 'scan_follow_rate_total',
  589. key: 'scan_follow_rate_total',
  590. align: 'center',
  591. width: 120,
  592. sorter: true,
  593. render: (a: any, b: any) => {
  594. if (b?.scan_follow_rate_total !== undefined && b?.scan_follow_rate_total !== null) {
  595. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  596. } else {
  597. return '--'
  598. }
  599. }
  600. },
  601. {
  602. title: '首日新增下单量',
  603. dataIndex: 'first_day_order_count_total',
  604. key: 'first_day_order_count_total',
  605. align: 'center',
  606. width: 110,
  607. sorter: true,
  608. render: (a: any, b: any) => {
  609. return <StatisticNull data={b} field='first_day_order_count_total' />
  610. }
  611. },
  612. {
  613. title: '首日新增下单金额',
  614. dataIndex: 'first_day_order_amount_total',
  615. key: 'first_day_order_amount_total',
  616. align: 'center',
  617. width: 110,
  618. sorter: true,
  619. render: (a: any, b: any) => {
  620. return <StatisticNull data={b} field='first_day_order_amount_total' />
  621. }
  622. },
  623. {
  624. title: '首日新增下单ROI',
  625. dataIndex: 'first_day_order_roi_total',
  626. key: 'first_day_order_roi_total',
  627. align: 'center',
  628. width: 110,
  629. sorter: true,
  630. render: (a: any, b: any) => {
  631. if (b?.first_day_order_roi_total !== undefined && b?.first_day_order_roi_total !== null) {
  632. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  633. } else {
  634. return '--'
  635. }
  636. }
  637. },
  638. {
  639. title: '订单量',
  640. dataIndex: 'order_count_total',
  641. key: 'order_count_total',
  642. align: 'center',
  643. width: 110,
  644. sorter: true,
  645. render: (a: any, b: any) => {
  646. return <StatisticNull data={b} field='order_count_total' />
  647. }
  648. },
  649. {
  650. title: '订单金额',
  651. dataIndex: 'order_amount_total',
  652. key: 'order_amount_total',
  653. align: 'center',
  654. width: 110,
  655. sorter: true,
  656. render: (a: any, b: any) => {
  657. return <StatisticNull data={b} field='order_amount_total' />
  658. }
  659. },
  660. {
  661. title: '下单成本',
  662. dataIndex: 'order_cost_total',
  663. key: 'order_cost_total',
  664. align: 'center',
  665. width: 110,
  666. sorter: true,
  667. render: (a: any, b: any) => {
  668. return <StatisticNull data={b} field='order_cost_total' precision={2} />
  669. }
  670. },
  671. {
  672. title: '下单率',
  673. dataIndex: 'order_rate_total',
  674. key: 'order_rate_total',
  675. align: 'center',
  676. width: 110,
  677. sorter: true,
  678. render: (a: any, b: any) => {
  679. if (b?.order_rate_total !== undefined && b?.order_rate_total !== null) {
  680. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  681. } else {
  682. return '--'
  683. }
  684. }
  685. },
  686. {
  687. title: '下单ROI',
  688. dataIndex: 'order_roi_total',
  689. key: 'order_roi_total',
  690. align: 'center',
  691. width: 110,
  692. sorter: true,
  693. render: (a: any, b: any) => {
  694. if (b?.order_roi_total !== undefined && b?.order_roi_total !== null) {
  695. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  696. } else {
  697. return '--'
  698. }
  699. }
  700. },
  701. {
  702. title: '客单价',
  703. dataIndex: 'atv_total',
  704. key: 'atv_total',
  705. align: 'center',
  706. width: 110,
  707. sorter: true,
  708. render: (a: any, b: any) => {
  709. return <StatisticNull data={b} field='atv_total' precision={2} />
  710. }
  711. },
  712. {
  713. title: '转化量',
  714. dataIndex: 'conversions_count_total',
  715. key: 'conversions_count_total',
  716. align: 'center',
  717. width: 110,
  718. sorter: true,
  719. render: (a: any, b: any) => {
  720. return <StatisticNull data={b} field='conversions_count_total' />
  721. }
  722. },
  723. {
  724. title: '转化成本',
  725. dataIndex: 'conversions_cost_total',
  726. key: 'conversions_cost_total',
  727. align: 'center',
  728. width: 110,
  729. sorter: true,
  730. render: (a: any, b: any) => {
  731. return <StatisticNull data={b} field='conversions_cost_total' precision={2} />
  732. }
  733. },
  734. {
  735. title: '深度转化',
  736. dataIndex: 'deep_conversions_count_total',
  737. key: 'deep_conversions_count_total',
  738. align: 'center',
  739. width: 110,
  740. sorter: true,
  741. render: (a: any, b: any) => {
  742. return <StatisticNull data={b} field='deep_conversions_count_total' />
  743. }
  744. },
  745. {
  746. title: '转化率',
  747. dataIndex: 'conversions_rate_total',
  748. key: 'conversions_rate_total',
  749. align: 'center',
  750. width: 110,
  751. sorter: true,
  752. render: (a: any, b: any) => {
  753. if (b?.conversions_rate_total !== undefined && b?.conversions_rate_total !== null) {
  754. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  755. } else {
  756. return '--'
  757. }
  758. }
  759. },
  760. {
  761. title: '加粉数',
  762. dataIndex: 'add_fans_count_total',
  763. key: 'add_fans_count_total',
  764. align: 'center',
  765. width: 110,
  766. sorter: true,
  767. render: (a: any, b: any) => {
  768. return <StatisticNull data={b} field='add_fans_count_total' />
  769. }
  770. },
  771. {
  772. title: '加粉成本',
  773. dataIndex: 'add_fans_cost_total',
  774. key: 'add_fans_cost_total',
  775. align: 'center',
  776. width: 110,
  777. sorter: true,
  778. render: (a: any, b: any) => {
  779. return <StatisticNull data={b} field='add_fans_cost_total' precision={2} />
  780. }
  781. },
  782. ]
  783. let iaaDataArr: ColumnsType<any> = [
  784. {
  785. title: '激活首24小时广告变现ARPPU(平台上报)',
  786. dataIndex: 'first_day_ad_pur_arppu_cost24h_pla_total',
  787. key: 'first_day_ad_pur_arppu_cost24h_pla_total',
  788. align: 'center',
  789. width: 110,
  790. sorter: true,
  791. render: (a: any, b: any) => {
  792. return <StatisticNull data={b} field='first_day_ad_pur_arppu_cost24h_pla_total' />
  793. }
  794. },
  795. {
  796. title: '激活首24小时广告变现ROI(平台上报)',
  797. dataIndex: 'income_roi124h_pla_total',
  798. key: 'income_roi124h_pla_total',
  799. align: 'center',
  800. width: 110,
  801. sorter: true,
  802. render: (a: any, b: any) => {
  803. if (b?.income_roi124h_pla_total !== undefined && b?.income_roi124h_pla_total !== null) {
  804. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  805. } else {
  806. return '--'
  807. }
  808. }
  809. },
  810. {
  811. title: '激活首24小时广告变现次数(平台上报)',
  812. dataIndex: 'income_pv24h_pla_total',
  813. key: 'income_pv24h_pla_total',
  814. align: 'center',
  815. width: 110,
  816. sorter: true,
  817. render: (a: any, b: any) => {
  818. return <StatisticNull data={b} field='income_pv24h_pla_total' />
  819. }
  820. },
  821. {
  822. title: '激活首日广告变现次数(平台上报)',
  823. dataIndex: 'income_pv1d_pla_total',
  824. key: 'income_pv1d_pla_total',
  825. align: 'center',
  826. width: 110,
  827. sorter: true,
  828. render: (a: any, b: any) => {
  829. return <StatisticNull data={b} field='income_pv1d_pla_total' />
  830. }
  831. },
  832. {
  833. title: '激活3日广告变现次数(平台上报)',
  834. dataIndex: 'ad_monetization_pla_dedup_active3d_pv_total',
  835. key: 'ad_monetization_pla_dedup_active3d_pv_total',
  836. align: 'center',
  837. width: 110,
  838. sorter: true,
  839. render: (a: any, b: any) => {
  840. return <StatisticNull data={b} field='ad_monetization_pla_dedup_active3d_pv_total' />
  841. }
  842. },
  843. {
  844. title: '激活7日广告变现次数(平台上报)',
  845. dataIndex: 'minigame7d_income_count_total',
  846. key: 'minigame7d_income_count_total',
  847. align: 'center',
  848. width: 110,
  849. sorter: true,
  850. render: (a: any, b: any) => {
  851. return <StatisticNull data={b} field='minigame_7d_income_count' />
  852. }
  853. },
  854. {
  855. title: '注册3日广告变现次数(平台上报)',
  856. dataIndex: 'minigame3d_income_count_total',
  857. key: 'minigame3d_income_count_total',
  858. align: 'center',
  859. width: 110,
  860. sorter: true,
  861. render: (a: any, b: any) => {
  862. return <StatisticNull data={b} field='minigame3d_income_count_total' />
  863. }
  864. },
  865. {
  866. title: '激活首24小时广告变现金额(平台上报)',
  867. dataIndex: 'income_val24h_pla_total',
  868. key: 'income_val24h_pla_total',
  869. align: 'center',
  870. width: 110,
  871. sorter: true,
  872. render: (a: any, b: any) => {
  873. return <StatisticNull data={b} field='income_val24h_pla_total' />
  874. }
  875. },
  876. {
  877. title: '注册首日广告变现金额(平台上报)',
  878. dataIndex: 'mini_game_first_day_ad_monetization_amount_total',
  879. key: 'mini_game_first_day_ad_monetization_amount_total',
  880. align: 'center',
  881. width: 110,
  882. sorter: true,
  883. render: (a: any, b: any) => {
  884. return <StatisticNull data={b} field='mini_game_first_day_ad_monetization_amount_total' />
  885. }
  886. },
  887. {
  888. title: '激活7日广告变现金额(平台上报)',
  889. dataIndex: 'mini_game_ad_monetization_amount_d7_total',
  890. key: 'mini_game_ad_monetization_amount_d7_total',
  891. align: 'center',
  892. width: 110,
  893. sorter: true,
  894. render: (a: any, b: any) => {
  895. return <StatisticNull data={b} field='mini_game_ad_monetization_amount_d7_total' />
  896. }
  897. },
  898. {
  899. title: '激活14日广告变现金额(平台上报)',
  900. dataIndex: 'mini_game_ad_monetization_amount_d14_total',
  901. key: 'mini_game_ad_monetization_amount_d14_total',
  902. align: 'center',
  903. width: 110,
  904. sorter: true,
  905. render: (a: any, b: any) => {
  906. return <StatisticNull data={b} field='mini_game_ad_monetization_amount_d14_total' />
  907. }
  908. },
  909. {
  910. title: '广告变现金额(平台上报)',
  911. dataIndex: 'mini_game_ad_monetization_amount_total',
  912. key: 'mini_game_ad_monetization_amount_total',
  913. align: 'center',
  914. width: 110,
  915. sorter: true,
  916. render: (a: any, b: any) => {
  917. return <StatisticNull data={b} field='mini_game_ad_monetization_amount_total' />
  918. }
  919. },
  920. {
  921. title: '激活首24小时广告变现人数(平台上报)',
  922. dataIndex: 'ad_paying_users24h_pla_total',
  923. key: 'ad_paying_users24h_pla_total',
  924. align: 'center',
  925. width: 110,
  926. sorter: true,
  927. render: (a: any, b: any) => {
  928. return <StatisticNull data={b} field='ad_paying_users24h_pla_total' />
  929. }
  930. },
  931. {
  932. title: '激活首日广告变现人数(平台上报)',
  933. dataIndex: 'ad_monetization_pla_dedup_active1d_pv_total',
  934. key: 'ad_monetization_pla_dedup_active1d_pv_total',
  935. align: 'center',
  936. width: 110,
  937. sorter: true,
  938. render: (a: any, b: any) => {
  939. return <StatisticNull data={b} field='ad_monetization_pla_dedup_active1d_pv_total' />
  940. }
  941. },
  942. {
  943. title: '激活7日变现人数(平台上报)',
  944. dataIndex: 'ad_monetization_pla_dedup_active7d_pv_total',
  945. key: 'ad_monetization_pla_dedup_active7d_pv_total',
  946. align: 'center',
  947. width: 110,
  948. sorter: true,
  949. render: (a: any, b: any) => {
  950. return <StatisticNull data={b} field='ad_monetization_pla_dedup_active7d_pv_total' />
  951. }
  952. },
  953. {
  954. title: '激活首24小时广告变现ARPPU',
  955. dataIndex: 'first_day_ad_pur_arppu_cost24h_total',
  956. key: 'first_day_ad_pur_arppu_cost24h_total',
  957. align: 'center',
  958. width: 110,
  959. sorter: true,
  960. render: (a: any, b: any) => {
  961. return <StatisticNull data={b} field='first_day_ad_pur_arppu_cost24h_total' />
  962. }
  963. },
  964. {
  965. title: '激活首日广告变现ARPPU',
  966. dataIndex: 'first_day_ad_pur_arppu_cost_total',
  967. key: 'first_day_ad_pur_arppu_cost_total',
  968. align: 'center',
  969. width: 110,
  970. sorter: true,
  971. render: (a: any, b: any) => {
  972. return <StatisticNull data={b} field='first_day_ad_pur_arppu_cost_total' />
  973. }
  974. },
  975. {
  976. title: '广告变现ARPPU',
  977. dataIndex: 'ad_monetization_arppu_total',
  978. key: 'ad_monetization_arppu_total',
  979. align: 'center',
  980. width: 110,
  981. sorter: true,
  982. render: (a: any, b: any) => {
  983. return <StatisticNull data={b} field='ad_monetization_arppu_total' />
  984. }
  985. },
  986. {
  987. title: '激活首24小时广告变现ROI',
  988. dataIndex: 'income_roi124h_total',
  989. key: 'income_roi124h_total',
  990. align: 'center',
  991. width: 110,
  992. sorter: true,
  993. render: (a: any, b: any) => {
  994. if (b?.income_roi124h_total !== undefined && b?.income_roi124h_total !== null) {
  995. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  996. } else {
  997. return '--'
  998. }
  999. }
  1000. },
  1001. {
  1002. title: '激活首日广告变现ROI',
  1003. dataIndex: 'income_roi1_total',
  1004. key: 'income_roi1_total',
  1005. align: 'center',
  1006. width: 110,
  1007. sorter: true,
  1008. render: (a: any, b: any) => {
  1009. if (b?.income_roi1_total !== undefined && b?.income_roi1_total !== null) {
  1010. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1011. } else {
  1012. return '--'
  1013. }
  1014. }
  1015. },
  1016. {
  1017. title: '激活3日广告变现ROI',
  1018. dataIndex: 'income_roi3_total',
  1019. key: 'income_roi3_total',
  1020. align: 'center',
  1021. width: 110,
  1022. sorter: true,
  1023. render: (a: any, b: any) => {
  1024. if (b?.income_roi3_total !== undefined && b?.income_roi3_total !== null) {
  1025. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1026. } else {
  1027. return '--'
  1028. }
  1029. }
  1030. },
  1031. {
  1032. title: '激活7日广告变现ROI',
  1033. dataIndex: 'income_roi7_total',
  1034. key: 'income_roi7_total',
  1035. align: 'center',
  1036. width: 110,
  1037. sorter: true,
  1038. render: (a: any, b: any) => {
  1039. if (b?.income_roi7_total !== undefined && b?.income_roi7_total !== null) {
  1040. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1041. } else {
  1042. return '--'
  1043. }
  1044. }
  1045. },
  1046. {
  1047. title: '激活14日广告变现ROI',
  1048. dataIndex: 'income_roi14_total',
  1049. key: 'income_roi14_total',
  1050. align: 'center',
  1051. width: 110,
  1052. sorter: true,
  1053. render: (a: any, b: any) => {
  1054. if (b?.income_roi14_total !== undefined && b?.income_roi14_total !== null) {
  1055. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1056. } else {
  1057. return '--'
  1058. }
  1059. }
  1060. },
  1061. {
  1062. title: '广告变现ROI',
  1063. dataIndex: 'ad_monetization_roi_total',
  1064. key: 'ad_monetization_roi_total',
  1065. align: 'center',
  1066. width: 110,
  1067. sorter: true,
  1068. render: (a: any, b: any) => {
  1069. if (b?.ad_monetization_roi_total !== undefined && b?.ad_monetization_roi_total !== null) {
  1070. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1071. } else {
  1072. return '--'
  1073. }
  1074. }
  1075. },
  1076. {
  1077. title: '激活首日广告变现成本(人数)',
  1078. dataIndex: 'ad_paying_cost_d1_total',
  1079. key: 'ad_paying_cost_d1_total',
  1080. align: 'center',
  1081. width: 110,
  1082. sorter: true,
  1083. render: (a: any, b: any) => {
  1084. return <StatisticNull data={b} field='ad_paying_cost_d1_total' />
  1085. }
  1086. },
  1087. {
  1088. title: '广告变现成本',
  1089. dataIndex: 'ad_monetization_cost_total',
  1090. key: 'ad_monetization_cost_total',
  1091. align: 'center',
  1092. width: 110,
  1093. sorter: true,
  1094. render: (a: any, b: any) => {
  1095. return <StatisticNull data={b} field='ad_monetization_cost_total' />
  1096. }
  1097. },
  1098. {
  1099. title: '激活3日广告变现次数',
  1100. dataIndex: 'ad_monetization_active3d_pv_total',
  1101. key: 'ad_monetization_active3d_pv_total',
  1102. align: 'center',
  1103. width: 110,
  1104. sorter: true,
  1105. render: (a: any, b: any) => {
  1106. return <StatisticNull data={b} field='ad_monetization_active3d_pv_total' />
  1107. }
  1108. },
  1109. {
  1110. title: '激活7日广告变现次数',
  1111. dataIndex: 'ad_monetization_active7d_pv_total',
  1112. key: 'ad_monetization_active7d_pv_total',
  1113. align: 'center',
  1114. width: 110,
  1115. sorter: true,
  1116. render: (a: any, b: any) => {
  1117. return <StatisticNull data={b} field='ad_monetization_active7d_pv_total' />
  1118. }
  1119. },
  1120. {
  1121. title: '广告变现次数(平台上报)',
  1122. dataIndex: 'income_pv_pla_total',
  1123. key: 'income_pv_pla_total',
  1124. align: 'center',
  1125. width: 110,
  1126. sorter: true,
  1127. render: (a: any, b: any) => {
  1128. return <StatisticNull data={b} field='income_pv_pla_total' />
  1129. }
  1130. },
  1131. {
  1132. title: '激活首24小时广告变现金额',
  1133. dataIndex: 'income_val24h_total',
  1134. key: 'income_val24h_total',
  1135. align: 'center',
  1136. width: 110,
  1137. sorter: true,
  1138. render: (a: any, b: any) => {
  1139. return <StatisticNull data={b} field='income_val24h_total' />
  1140. }
  1141. },
  1142. {
  1143. title: '激活首日广告变现金额',
  1144. dataIndex: 'income_val1_total',
  1145. key: 'income_val1_total',
  1146. align: 'center',
  1147. width: 110,
  1148. sorter: true,
  1149. render: (a: any, b: any) => {
  1150. return <StatisticNull data={b} field='income_val1_total' />
  1151. }
  1152. },
  1153. {
  1154. title: '激活3日广告变现金额',
  1155. dataIndex: 'income_val3_total',
  1156. key: 'income_val3_total',
  1157. align: 'center',
  1158. width: 110,
  1159. sorter: true,
  1160. render: (a: any, b: any) => {
  1161. return <StatisticNull data={b} field='income_val3_total' />
  1162. }
  1163. },
  1164. {
  1165. title: '激活7日广告变现金额',
  1166. dataIndex: 'income_val7_total',
  1167. key: 'income_val7_total',
  1168. align: 'center',
  1169. width: 110,
  1170. sorter: true,
  1171. render: (a: any, b: any) => {
  1172. return <StatisticNull data={b} field='income_val7_total' />
  1173. }
  1174. },
  1175. {
  1176. title: '激活14日广告变现金额',
  1177. dataIndex: 'income_val14_total',
  1178. key: 'income_val14_total',
  1179. align: 'center',
  1180. width: 110,
  1181. sorter: true,
  1182. render: (a: any, b: any) => {
  1183. return <StatisticNull data={b} field='income_val14_total' />
  1184. }
  1185. },
  1186. {
  1187. title: '广告变现金额',
  1188. dataIndex: 'ad_monetization_amount_total',
  1189. key: 'ad_monetization_amount_total',
  1190. align: 'center',
  1191. width: 110,
  1192. sorter: true,
  1193. render: (a: any, b: any) => {
  1194. return <StatisticNull data={b} field='ad_monetization_amount_total' />
  1195. }
  1196. },
  1197. {
  1198. title: '激活首24小时广告变现人数',
  1199. dataIndex: 'ad_paying_users24h_total',
  1200. key: 'ad_paying_users24h_total',
  1201. align: 'center',
  1202. width: 110,
  1203. sorter: true,
  1204. render: (a: any, b: any) => {
  1205. return <StatisticNull data={b} field='ad_paying_users24h_total' />
  1206. }
  1207. },
  1208. {
  1209. title: '激活首日广告变现人数',
  1210. dataIndex: 'ad_paying_users_d1_total',
  1211. key: 'ad_paying_users_d1_total',
  1212. align: 'center',
  1213. width: 110,
  1214. sorter: true,
  1215. render: (a: any, b: any) => {
  1216. return <StatisticNull data={b} field='ad_paying_users_d1_total' />
  1217. }
  1218. },
  1219. {
  1220. title: '激活3日广告变现人数',
  1221. dataIndex: 'ad_monetization_dedup_active3d_pv_total',
  1222. key: 'ad_monetization_dedup_active3d_pv_total',
  1223. align: 'center',
  1224. width: 110,
  1225. sorter: true,
  1226. render: (a: any, b: any) => {
  1227. return <StatisticNull data={b} field='ad_monetization_dedup_active3d_pv_total' />
  1228. }
  1229. },
  1230. {
  1231. title: '激活7日广告变现人数',
  1232. dataIndex: 'ad_monetization_dedup_active7d_pv_total',
  1233. key: 'ad_monetization_dedup_active7d_pv_total',
  1234. align: 'center',
  1235. width: 110,
  1236. sorter: true,
  1237. render: (a: any, b: any) => {
  1238. return <StatisticNull data={b} field='ad_monetization_dedup_active7d_pv_total' />
  1239. }
  1240. },
  1241. {
  1242. title: '小游戏注册首日广告变现ARPU(平台上报)',
  1243. dataIndex: 'mini_game_first_day_ad_paying_arpu_total',
  1244. key: 'mini_game_first_day_ad_paying_arpu_total',
  1245. align: 'center',
  1246. width: 110,
  1247. sorter: true,
  1248. render: (a: any, b: any) => {
  1249. return <StatisticNull data={b} field='mini_game_first_day_ad_paying_arpu_total' />
  1250. }
  1251. },
  1252. {
  1253. title: '小游戏广告变现ARPU(平台上报)',
  1254. dataIndex: 'mini_game_ad_monetization_arpu_total',
  1255. key: 'mini_game_ad_monetization_arpu_total',
  1256. align: 'center',
  1257. width: 110,
  1258. sorter: true,
  1259. render: (a: any, b: any) => {
  1260. return <StatisticNull data={b} field='mini_game_ad_monetization_arpu_total' />
  1261. }
  1262. },
  1263. {
  1264. title: '小游戏注册首日广告变现ROI(平台上报)',
  1265. dataIndex: 'mini_game_income_roi1_total',
  1266. key: 'mini_game_income_roi1_total',
  1267. align: 'center',
  1268. width: 110,
  1269. sorter: true,
  1270. render: (a: any, b: any) => {
  1271. if (b?.mini_game_income_roi1_total !== undefined && b?.mini_game_income_roi1_total !== null) {
  1272. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1273. } else {
  1274. return '--'
  1275. }
  1276. }
  1277. },
  1278. {
  1279. title: '小游戏注册3日广告变现ROI(平台上报)',
  1280. dataIndex: 'minigame3d_income_roi_total',
  1281. key: 'minigame3d_income_roi_total',
  1282. align: 'center',
  1283. width: 110,
  1284. sorter: true,
  1285. render: (a: any, b: any) => {
  1286. if (b?.minigame3d_income_roi_total !== undefined && b?.minigame3d_income_roi_total !== null) {
  1287. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1288. } else {
  1289. return '--'
  1290. }
  1291. }
  1292. },
  1293. {
  1294. title: '小游戏注册7日广告变现ROI(平台上报)',
  1295. dataIndex: 'minigame7d_income_roi_total',
  1296. key: 'minigame7d_income_roi_total',
  1297. align: 'center',
  1298. width: 110,
  1299. sorter: true,
  1300. render: (a: any, b: any) => {
  1301. if (b?.minigame7d_income_roi_total !== undefined && b?.minigame7d_income_roi_total !== null) {
  1302. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1303. } else {
  1304. return '--'
  1305. }
  1306. }
  1307. },
  1308. {
  1309. title: '小游戏广告变现ROI(平台上报)',
  1310. dataIndex: 'mini_game_ad_monetization_roi_total',
  1311. key: 'mini_game_ad_monetization_roi_total',
  1312. align: 'center',
  1313. width: 110,
  1314. sorter: true,
  1315. render: (a: any, b: any) => {
  1316. if (b?.mini_game_ad_monetization_roi_total !== undefined && b?.mini_game_ad_monetization_roi_total !== null) {
  1317. return <Statistic value={a ? (a * 100) : 0} precision={2} valueStyle={{ color: '#3f8600' }} suffix="%" />
  1318. } else {
  1319. return '--'
  1320. }
  1321. }
  1322. },
  1323. {
  1324. title: '小游戏注册首日广告变现成本(平台上报)',
  1325. dataIndex: 'mini_game_first_day_ad_paying_cost_total',
  1326. key: 'mini_game_first_day_ad_paying_cost_total',
  1327. align: 'center',
  1328. width: 110,
  1329. sorter: true,
  1330. render: (a: any, b: any) => {
  1331. return <StatisticNull data={b} field='mini_game_first_day_ad_paying_cost_total' />
  1332. }
  1333. },
  1334. {
  1335. title: '小游戏广告变现成本(平台上报)',
  1336. dataIndex: 'mini_game_ad_monetization_cost_total',
  1337. key: 'mini_game_ad_monetization_cost_total',
  1338. align: 'center',
  1339. width: 110,
  1340. sorter: true,
  1341. render: (a: any, b: any) => {
  1342. return <StatisticNull data={b} field='mini_game_ad_monetization_cost_total' />
  1343. }
  1344. },
  1345. {
  1346. title: '小游戏注册3日广告变现金额(平台上报)',
  1347. dataIndex: 'mini_game_ad_monetization_amount_d3_total',
  1348. key: 'mini_game_ad_monetization_amount_d3_total',
  1349. align: 'center',
  1350. width: 110,
  1351. sorter: true,
  1352. render: (a: any, b: any) => {
  1353. return <StatisticNull data={b} field='mini_game_ad_monetization_amount_d3_total' />
  1354. }
  1355. },
  1356. {
  1357. title: '小游戏注册首日广告变现人数(平台上报)',
  1358. dataIndex: 'mini_game_first_day_ad_monetization_users_total',
  1359. key: 'mini_game_first_day_ad_monetization_users_total',
  1360. align: 'center',
  1361. width: 110,
  1362. sorter: true,
  1363. render: (a: any, b: any) => {
  1364. return <StatisticNull data={b} field='mini_game_first_day_ad_monetization_users_total' />
  1365. }
  1366. },
  1367. {
  1368. title: '小游戏注册3日广告变现人数(平台上报)',
  1369. dataIndex: 'minigame3d_income_uv_total',
  1370. key: 'minigame3d_income_uv_total',
  1371. align: 'center',
  1372. width: 110,
  1373. sorter: true,
  1374. render: (a: any, b: any) => {
  1375. return <StatisticNull data={b} field='minigame3d_income_uv_total' />
  1376. }
  1377. },
  1378. {
  1379. title: '小游戏注册7日广告变现人数(平台上报)',
  1380. dataIndex: 'minigame7d_income_uv_total',
  1381. key: 'minigame7d_income_uv_total',
  1382. align: 'center',
  1383. width: 110,
  1384. sorter: true,
  1385. render: (a: any, b: any) => {
  1386. return <StatisticNull data={b} field='minigame7d_income_uv_total' />
  1387. }
  1388. },
  1389. {
  1390. title: '小游戏广告变现人数(平台上报)',
  1391. dataIndex: 'mini_game_ad_monetization_users_total',
  1392. key: 'mini_game_ad_monetization_users_total',
  1393. align: 'center',
  1394. width: 110,
  1395. sorter: true,
  1396. render: (a: any, b: any) => {
  1397. return <StatisticNull data={b} field='mini_game_ad_monetization_users_total' />
  1398. }
  1399. },
  1400. ]
  1401. return [
  1402. ...adArr,
  1403. ...adDataArr,
  1404. ...iaaDataArr
  1405. ]
  1406. }
  1407. export default tablePlanConfig