tableConfigDay.tsx 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. import WidthEllipsis from "@/components/widthEllipsis"
  2. import { Progress, Statistic } from "antd"
  3. import React from "react"
  4. import { ADSTATUSEnum, LANDINGTYPE, PRICINGEnum, PRODUCT_TYPE_ENUM, PROJECTSTATUs } from "../../const"
  5. import { APPTYPE } from "@/pages/iaaSystem/manage/const"
  6. import './index.less'
  7. function columns12(): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[] }[] {
  8. return [
  9. {
  10. label: '账户信息',
  11. data: [
  12. {
  13. title: '推广账号名称', dataIndex: 'accountName', label: '账户信息', align: 'center', width: 100, default: 3,
  14. render: (a: string) => (<WidthEllipsis value={a} />)
  15. },
  16. {
  17. title: '推广账号ID', dataIndex: 'accountId', label: '账户信息', align: 'center', width: 100, default: 2,
  18. render: (a: string) => (<WidthEllipsis value={a} isCopy />)
  19. },
  20. {
  21. title: '备注', dataIndex: 'notes', label: '账户信息', align: 'center', width: 100, default: 4,
  22. render: (a: string) => (<WidthEllipsis value={a} />)
  23. },
  24. {
  25. title: '服务商', dataIndex: 'service', label: '账户信息', align: 'center', width: 100, default: 5,
  26. render: (a: string) => (<WidthEllipsis value={a} />)
  27. },
  28. {
  29. title: '渠道名称', dataIndex: 'agentName', label: '账户信息', align: 'center', width: 80, default: 16,
  30. render: (a: string) => (<WidthEllipsis value={a} />)
  31. },
  32. {
  33. title: '渠道ID', dataIndex: 'agentId', label: '账户信息', align: 'center', width: 80,
  34. render: (a: string) => (<WidthEllipsis value={a} />)
  35. },
  36. {
  37. title: '投手', dataIndex: 'zxPitcherName', label: '账户信息', align: 'center', width: 60, default: 15,
  38. render: (a: string) => (<WidthEllipsis value={a} />)
  39. },
  40. {
  41. title: '余额', dataIndex: 'balance', label: '账户信息', align: 'right', width: 75, sorter: true, default: 21,
  42. render: (a: string) => <Statistic value={a || 0} precision={2} />
  43. },
  44. {
  45. title: '业务类型', dataIndex: 'productType', label: '账户信息', align: 'center', width: 80, default: 11,
  46. render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
  47. },
  48. {
  49. title: '应用类型', dataIndex: 'appType', label: '账户信息', align: 'center', width: 80, default: 12,
  50. render: (a: string) => (<WidthEllipsis value={APPTYPE[a as keyof typeof APPTYPE]?.text} />)
  51. },
  52. {
  53. title: '应用', dataIndex: 'appName', label: '账户信息', align: 'center', width: 100, default: 13,
  54. render: (a: string) => (<WidthEllipsis value={a} />)
  55. },
  56. {
  57. title: '应用ID', dataIndex: 'appId', label: '账户信息', align: 'center', width: 100,
  58. render: (a: string) => (<WidthEllipsis value={a} />)
  59. },
  60. {
  61. title: '小程序名称', dataIndex: 'mpName', label: '账户信息', align: 'center', width: 100, default: 14,
  62. render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
  63. },
  64. {
  65. title: '小程序ID', dataIndex: 'mpId', label: '账户信息', align: 'center', width: 100,
  66. render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
  67. }
  68. ]
  69. },
  70. {
  71. label: '广告信息',
  72. data: [
  73. {
  74. title: '广告组', dataIndex: 'campaignId', label: '广告信息', align: 'center', width: 100, default: 7,
  75. render: (a: string) => (<WidthEllipsis value={a} />)
  76. },
  77. {
  78. title: '广告组名称', dataIndex: 'campaignName', label: '广告信息', align: 'center', width: 100, default: 8,
  79. render: (a: string) => (<WidthEllipsis value={a} />)
  80. },
  81. {
  82. title: '广告名称', dataIndex: 'adName', label: '广告信息', align: 'center', width: 100, default: 9,
  83. render: (a: string) => (<WidthEllipsis value={a} />)
  84. },
  85. {
  86. title: '广告ID', dataIndex: 'adId', label: '广告信息', align: 'center', width: 80, default: 6,
  87. render: (a: string) => (<WidthEllipsis value={a} isCopy />)
  88. },
  89. {
  90. title: '广告状态', dataIndex: 'adStatus', label: '广告信息', align: 'center', width: 95, default: 17,
  91. render: (a: string) => (<WidthEllipsis value={(ADSTATUSEnum as any)[a]} />)
  92. },
  93. {
  94. title: '项目名称', dataIndex: 'projectName', label: '广告信息', align: 'center', width: 75, default: 18,
  95. render: (a: string) => (<WidthEllipsis value={a} />)
  96. },
  97. {
  98. title: '项目ID', dataIndex: 'projectId', label: '广告信息', align: 'center', width: 75,
  99. render: (a: string) => (<WidthEllipsis value={a} />)
  100. },
  101. {
  102. title: '项目类型', dataIndex: 'adType', label: '广告信息', align: 'center', width: 75, default: 19,
  103. render: (a: string) => (<WidthEllipsis value={a === 'ALL' ? '所有广告' : a === 'SEARCH' ? '搜索广告' : '--'} />)
  104. },
  105. {
  106. title: '项目状态', dataIndex: 'proStatus', label: '广告信息', align: 'center', width: 75, default: 20,
  107. render: (a: string) => (<WidthEllipsis value={(PROJECTSTATUs as any)[a]} />)
  108. },
  109. {
  110. title: '推广目标', dataIndex: 'landingType', label: '广告信息', align: 'center', width: 100, default: 10,
  111. render: (a: string) => (<WidthEllipsis value={(LANDINGTYPE as any)[a]} />)
  112. },
  113. {
  114. title: '媒体平台', dataIndex: 'mediaPlatform', label: '广告信息', align: 'center', width: 80,
  115. render: (a: string) => (<WidthEllipsis value={a} />)
  116. },
  117. {
  118. title: '出价方式', dataIndex: 'pricing', label: '广告信息', align: 'center', width: 80, default: 22,
  119. render: (a: string) => (<WidthEllipsis value={(PRICINGEnum as any)[a]} />)
  120. },
  121. {
  122. title: '当前出价', dataIndex: 'cpaBid', label: '广告信息', align: 'center', width: 75, default: 23, sorter: true,
  123. render: (a: string) => <Statistic value={a || 0} />
  124. },
  125. {
  126. title: '广告日预算', dataIndex: 'dayBudget', label: '广告信息', align: 'right', width: 75, default: 24, sorter: true,
  127. render: (a: string) => <Statistic value={a || 0} />
  128. },
  129. {
  130. title: '投放时间', dataIndex: 'startTime', label: '广告信息', align: 'center', width: 180, default: 31,
  131. render: (a: string, b: any) => b?.accountId === '总计' ? '--' : <WidthEllipsis value={a + (b?.endTime ? '~' + b?.endTime : '')} />
  132. },
  133. {
  134. title: '广告创建时间', dataIndex: 'promotionCreateTime', label: '广告信息', align: 'center', width: 130, default: 32,
  135. render: (a: string, b: any) => <WidthEllipsis value={a} />
  136. },
  137. ]
  138. },
  139. {
  140. label: '消耗数据',
  141. data: [
  142. {
  143. title: '消耗时间', dataIndex: 'dt', label: '消耗数据', align: 'center', width: 100,
  144. render: (a: string) => <WidthEllipsis value={a} />
  145. },
  146. {
  147. title: '今日消耗', dataIndex: 'cost', label: '消耗数据', align: 'center', width: 85, default: 33, sorter: true,
  148. className: 'padding_0',
  149. render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
  150. <Progress
  151. strokeColor={{
  152. from: '#ff5900',
  153. to: '#ffd380',
  154. }}
  155. status="active"
  156. showInfo={false}
  157. percent={a ? a / 20000 * 100 : 0}
  158. />
  159. <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>
  160. </div>
  161. },
  162. {
  163. title: '广告总消耗', dataIndex: 'adTotalCost', label: '消耗数据', align: 'center', width: 85, default: 34, sorter: true,
  164. className: 'padding_0',
  165. render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
  166. <Progress
  167. strokeColor={{
  168. from: '#10c1e9',
  169. to: '#6892d0',
  170. }}
  171. status="active"
  172. showInfo={false}
  173. percent={a ? a / 20000 * 100 : 0}
  174. />
  175. <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>
  176. </div>
  177. }
  178. ]
  179. },
  180. {
  181. label: '广告媒体端展示数据指标',
  182. data: [
  183. {
  184. title: '曝光量', dataIndex: 'showCount', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 35, sorter: true,
  185. render: (a: string) => <Statistic value={a || 0} />
  186. },
  187. {
  188. title: '点击量', dataIndex: 'click', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 36, sorter: true,
  189. render: (a: string) => <Statistic value={a || 0} />
  190. },
  191. {
  192. title: '点击率', dataIndex: 'ctr', label: '广告媒体端展示数据指标', align: 'center', width: 70, default: 37, sorter: true,
  193. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  194. },
  195. {
  196. title: '点击均价', dataIndex: 'avgClickCost', label: '广告媒体端展示数据指标', align: 'center', width: 65, default: 38, sorter: true,
  197. render: (a: string) => <Statistic value={a || 0} precision={2} />
  198. },
  199. {
  200. title: '千次曝光成本', dataIndex: 'avgShowCost', label: '广告媒体端展示数据指标', align: 'right', width: 65, default: 39, sorter: true,
  201. render: (a: string) => <Statistic value={a || 0} precision={2} />
  202. },
  203. ]
  204. },
  205. {
  206. label: '广告媒体端转化数据指标',
  207. data: [
  208. {
  209. title: '转化目标', dataIndex: 'convertTarget', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 25, sorter: true, className: "adDataBackColorClass",
  210. render: (a: string) => <Statistic value={a} />
  211. },
  212. {
  213. title: '转化目标量', dataIndex: 'convertCount', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 40, sorter: true, className: "adDataBackColorClass",
  214. render: (a: string) => <Statistic value={a || 0} />
  215. },
  216. {
  217. title: '转化目标成本', dataIndex: 'convertCost', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 27, sorter: true, className: "adDataBackColorClass",
  218. render: (a: string) => <Statistic value={a || 0} precision={2} />
  219. },
  220. {
  221. title: '转化目标率', dataIndex: 'convertRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 26, sorter: true, className: "adDataBackColorClass",
  222. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  223. },
  224. {
  225. title: '激活数', dataIndex: 'active', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 41, sorter: true, className: "adDataBackColorClass",
  226. render: (a: string) => <Statistic value={a || 0} />
  227. },
  228. {
  229. title: '激活成本', dataIndex: 'activeCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 42, sorter: true, className: "adDataBackColorClass",
  230. render: (a: string) => <Statistic value={a || 0} />
  231. },
  232. {
  233. title: '激活率', dataIndex: 'activeRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 43, sorter: true, className: "adDataBackColorClass",
  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: '注册数', dataIndex: 'register', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 49, sorter: true, className: "adDataBackColorClass",
  238. render: (a: string) => <Statistic value={a || 0} />
  239. },
  240. {
  241. title: '注册成本(广告)', dataIndex: 'activeRegisterCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 50, sorter: true, className: "adDataBackColorClass",
  242. render: (a: string) => <Statistic value={a || 0} />
  243. },
  244. {
  245. title: '注册率', dataIndex: 'activeRegisterRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 51, sorter: true, className: "adDataBackColorClass",
  246. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  247. },
  248. {
  249. title: '关键行为数', dataIndex: 'gameAddiction', label: '广告媒体端转化数据指标', align: 'center', width: 65, default: 46, sorter: true, className: "adDataBackColorClass",
  250. render: (a: string) => <Statistic value={a || 0} />
  251. },
  252. {
  253. title: '关键行为成本', dataIndex: 'gameAddictionCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 44, sorter: true, className: "adDataBackColorClass",
  254. render: (a: string) => <Statistic value={a || 0} />
  255. },
  256. {
  257. title: '关键行为率', dataIndex: 'gameAddictionRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 45, sorter: true, className: "adDataBackColorClass",
  258. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  259. },
  260. {
  261. title: '次留成本', dataIndex: 'attributionNextDayOpenCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, default: 70, sorter: true, className: "adDataBackColorClass",
  262. render: (a: string) => <Statistic value={a || 0} />
  263. },
  264. {
  265. title: '次日留存数', dataIndex: 'attributionNextDayOpenCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  266. render: (a: string) => <Statistic value={a || 0} />
  267. },
  268. {
  269. title: '次留率(广告)', dataIndex: 'attributionNextDayOpenRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, default: 72, sorter: true, className: "adDataBackColorClass",
  270. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  271. },
  272. {
  273. title: '次留回传数', dataIndex: 'nextDayOpen', label: '广告媒体端转化数据指标', align: 'center', width: 75, sorter: true, className: "adDataBackColorClass",
  274. render: (a: string) => <Statistic value={a || 0} />
  275. },
  276. {
  277. title: '2日留存数', dataIndex: 'attributionRetention2dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  278. render: (a: string) => <Statistic value={a || 0} />
  279. },
  280. {
  281. title: '2日留存成本', dataIndex: 'attributionRetention2dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  282. render: (a: string) => <Statistic value={a || 0} />
  283. },
  284. {
  285. title: '2日留存率', dataIndex: 'attributionRetention2dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  286. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  287. },
  288. {
  289. title: '3日留存数', dataIndex: 'attributionRetention3dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  290. render: (a: string) => <Statistic value={a || 0} />
  291. },
  292. {
  293. title: '3日留存成本', dataIndex: 'attributionRetention3dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  294. render: (a: string) => <Statistic value={a || 0} />
  295. },
  296. {
  297. title: '3日留存率', dataIndex: 'attributionRetention3dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  298. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  299. },
  300. {
  301. title: '4日留存数', dataIndex: 'attributionRetention4dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  302. render: (a: string) => <Statistic value={a || 0} />
  303. },
  304. {
  305. title: '4日留存成本', dataIndex: 'attributionRetention4dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  306. render: (a: string) => <Statistic value={a || 0} />
  307. },
  308. {
  309. title: '4日留存率', dataIndex: 'attributionRetention4dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  310. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  311. },
  312. {
  313. title: '5日留存数', dataIndex: 'attributionRetention5dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  314. render: (a: string) => <Statistic value={a || 0} />
  315. },
  316. {
  317. title: '5日留存成本', dataIndex: 'attributionRetention5dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  318. render: (a: string) => <Statistic value={a || 0} />
  319. },
  320. {
  321. title: '5日留存率', dataIndex: 'attributionRetention5dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  322. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  323. },
  324. {
  325. title: '6日留存数', dataIndex: 'attributionRetention6dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  326. render: (a: string) => <Statistic value={a || 0} />
  327. },
  328. {
  329. title: '6日留存成本', dataIndex: 'attributionRetention6dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  330. render: (a: string) => <Statistic value={a || 0} />
  331. },
  332. {
  333. title: '6日留存率', dataIndex: 'attributionRetention6dRate', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  334. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  335. },
  336. {
  337. title: '7日留存数', dataIndex: 'attributionRetention7dCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, className: "adDataBackColorClass",
  338. render: (a: string) => <Statistic value={a || 0} />
  339. },
  340. {
  341. title: '7日留存成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, className: "adDataBackColorClass",
  342. render: (a: string) => <Statistic value={a || 0} />
  343. },
  344. {
  345. title: '7日留存总数', dataIndex: 'attributionRetention7dSumCnt', label: '广告媒体端转化数据指标', align: 'center', width: 65, sorter: true, default: 74, className: "adDataBackColorClass",
  346. render: (a: string) => <Statistic value={a || 0} />
  347. },
  348. {
  349. title: '7日留存率', dataIndex: 'attributionRetention7dTotalCost', label: '广告媒体端转化数据指标', align: 'center', width: 70, sorter: true, className: "adDataBackColorClass",
  350. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  351. },
  352. {
  353. title: '7日留存总成本', dataIndex: 'attributionRetention7dCost', label: '广告媒体端转化数据指标', align: 'right', width: 75, sorter: true, default: 73, className: "adDataBackColorClass",
  354. render: (a: string) => <Statistic value={a || 0} />
  355. },
  356. ]
  357. },
  358. {
  359. label: '小程序/小游戏变现指标',
  360. data: [
  361. {
  362. title: '小程序/小游戏当日LTV(首日)', dataIndex: 'attributionMicroGame0dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
  363. render: (a: string) => <Statistic value={a || 0} />
  364. },
  365. {
  366. title: '小程序/小游戏激活后三日LTV', dataIndex: 'attributionMicroGame3dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
  367. render: (a: string) => <Statistic value={a || 0} />
  368. },
  369. {
  370. title: '小程序/小游戏当日(首日)广告变现ROI', dataIndex: 'attributionMicroGame0dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, sorter: true,
  371. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  372. },
  373. {
  374. title: '小程序/小游戏激活后三日广告变现ROI', dataIndex: 'attributionMicroGame3dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, sorter: true,
  375. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  376. },
  377. {
  378. title: '小程序/小游戏激活后七日广告变现ROI', dataIndex: 'attributionMicroGame7dRoi', label: '小程序/小游戏变现指标', align: 'center', width: 95, sorter: true,
  379. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  380. },
  381. {
  382. title: '小程序/小游戏激活后七日LTV', dataIndex: 'attributionMicroGame7dLtv', label: '小程序/小游戏变现指标', align: 'center', width: 85,
  383. render: (a: string) => <Statistic value={a || 0} />
  384. },
  385. ]
  386. },
  387. {
  388. label: '应用端数据指标',
  389. data: [
  390. {
  391. title: '项目预算', dataIndex: 'proBudget', label: '应用端数据指标', align: 'right', width: 75, default: 28, sorter: true, className: 'payDataBackColorClass',
  392. render: (a: string) => <Statistic value={a || 0} />
  393. },
  394. {
  395. title: '预算类型', dataIndex: 'budgetMode', label: '应用端数据指标', align: 'center', width: 70, default: 29, className: 'payDataBackColorClass',
  396. render: (a: string) => (<WidthEllipsis value={a === 'BUDGET_MODE_DAY' ? '日预算' : a === 'BUDGET_MODE_TOTAL' ? '总预算' : '--'} />)
  397. },
  398. {
  399. title: '深度转化ROI系数', dataIndex: 'roiGoal', label: '应用端数据指标', align: 'center', width: 75, default: 30, className: 'payDataBackColorClass',
  400. render: (a: string) => <Statistic value={a || 0} />
  401. },
  402. {
  403. title: '今日注册人数', dataIndex: 'todayRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 47, sorter: true, className: 'payDataBackColorClass',
  404. render: (a: string) => <Statistic value={a || 0} />
  405. },
  406. {
  407. title: '广告总注册人数', dataIndex: 'totalRegUser', label: '应用端数据指标', align: 'center', width: 65, default: 48, sorter: true, className: 'payDataBackColorClass',
  408. render: (a: string) => <Statistic value={a || 0} />
  409. },
  410. {
  411. title: '注册成本(应用)', dataIndex: 'regCost', label: '应用端数据指标', align: 'right', width: 75, sorter: true, className: 'payDataBackColorClass',
  412. render: (a: string) => <Statistic value={a || 0} />
  413. },
  414. {
  415. title: '人均新增成本', dataIndex: 'totalRegCost', label: '应用端数据指标', align: 'right', width: 75, default: 52, sorter: true, className: 'payDataBackColorClass',
  416. render: (a: string) => <Statistic value={a || 0} />
  417. },
  418. {
  419. title: '注册首日广告变现人数', dataIndex: 'regFirstUser', label: '应用端数据指标', align: 'center', width: 85, default: 53, sorter: true, className: 'payDataBackColorClass',
  420. render: (a: string) => <Statistic value={a || 0} />
  421. },
  422. {
  423. title: '注册首日广告变现次数', dataIndex: 'regFirstCnt', label: '应用端数据指标', align: 'center', width: 85, default: 54, sorter: true, className: 'payDataBackColorClass',
  424. render: (a: string) => <Statistic value={a || 0} />
  425. },
  426. {
  427. title: '注册首日广告变现金额', dataIndex: 'regFirstAmount', label: '应用端数据指标', align: 'right', width: 85, default: 55, sorter: true, className: 'payDataBackColorClass',
  428. render: (a: string) => <Statistic value={a || 0} />
  429. },
  430. {
  431. title: '注册首日变现ROI', dataIndex: 'regFirstRoi', label: '应用端数据指标', align: 'center', width: 70, default: 56, sorter: true, className: 'payDataBackColorClass',
  432. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  433. },
  434. {
  435. title: '注册24小时广告变现人数', dataIndex: 'regTwentyFourUser', label: '应用端数据指标', align: 'center', width: 85, default: 57, sorter: true, className: 'payDataBackColorClass',
  436. render: (a: string) => <Statistic value={a || 0} />
  437. },
  438. {
  439. title: '注册24小时广告变现次数', dataIndex: 'regTwentyFourCnt', label: '应用端数据指标', align: 'center', width: 85, default: 58, sorter: true, className: 'payDataBackColorClass',
  440. render: (a: string) => <Statistic value={a || 0} />
  441. },
  442. {
  443. title: '注册24小时广告变现金额', dataIndex: 'regTwentyFourAmount', label: '应用端数据指标', align: 'right', width: 85, default: 59, sorter: true, className: 'payDataBackColorClass',
  444. render: (a: string) => <Statistic value={a || 0} />
  445. },
  446. {
  447. title: '注册24小时变现ROI', dataIndex: 'regTwentyFourRoi', label: '应用端数据指标', align: 'center', width: 70, default: 60, sorter: true, className: 'payDataBackColorClass',
  448. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  449. },
  450. {
  451. title: '注册3日广告变现人数', dataIndex: 'regThreeUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
  452. render: (a: string) => <Statistic value={a || 0} />
  453. },
  454. {
  455. title: '注册3日广告变现次数', dataIndex: 'regThreeCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
  456. render: (a: string) => <Statistic value={a || 0} />
  457. },
  458. {
  459. title: '注册3日广告变现金额', dataIndex: 'regThreeAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
  460. render: (a: string) => <Statistic value={a || 0} />
  461. },
  462. {
  463. title: '注册3日变现ROI', dataIndex: 'regThreeRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
  464. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  465. },
  466. {
  467. title: '注册7日广告变现人数', dataIndex: 'regSevenUser', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
  468. render: (a: string) => <Statistic value={a || 0} />
  469. },
  470. {
  471. title: '注册7日广告变现次数', dataIndex: 'regSevenCnt', label: '应用端数据指标', align: 'center', width: 85, sorter: true, className: 'payDataBackColorClass',
  472. render: (a: string) => <Statistic value={a || 0} />
  473. },
  474. {
  475. title: '注册7日广告变现金额', dataIndex: 'regSevenAmount', label: '应用端数据指标', align: 'right', width: 85, sorter: true, className: 'payDataBackColorClass',
  476. render: (a: string) => <Statistic value={a || 0} />
  477. },
  478. {
  479. title: '注册7日变现ROI', dataIndex: 'regSevenRoi', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
  480. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  481. },
  482. {
  483. title: '累计首日广告变现人数', dataIndex: 'regTotalUser', label: '应用端数据指标', align: 'center', width: 85, default: 61, sorter: true, className: 'payDataBackColorClass',
  484. render: (a: string) => <Statistic value={a || 0} />
  485. },
  486. {
  487. title: '累计广告变现次数', dataIndex: 'regTotalCnt', label: '应用端数据指标', align: 'center', width: 85, default: 62, sorter: true, className: 'payDataBackColorClass',
  488. render: (a: string) => <Statistic value={a || 0} />
  489. },
  490. {
  491. title: '累计广告变现金额', dataIndex: 'regTotalAmount', label: '应用端数据指标', align: 'right', width: 85, default: 63, sorter: true, className: 'payDataBackColorClass',
  492. render: (a: string) => <Statistic value={a || 0} />
  493. },
  494. {
  495. title: '累计广告变现ROI', dataIndex: 'regTotalRoi', label: '应用端数据指标', align: 'center', width: 70, default: 64, sorter: true, className: 'payDataBackColorClass',
  496. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  497. },
  498. {
  499. title: '首日新增ARPU', dataIndex: 'firstNewArpu', label: '应用端数据指标', align: 'center', width: 80, default: 65, sorter: true, className: 'payDataBackColorClass',
  500. render: (a: number) => <Statistic value={a || 0} precision={2} />
  501. },
  502. {
  503. title: '广告总ARPU', dataIndex: 'adTotalArpu', label: '应用端数据指标', align: 'center', width: 80, default: 66, sorter: true, className: 'payDataBackColorClass',
  504. render: (a: number) => <Statistic value={a || 0} precision={2} />
  505. },
  506. {
  507. title: '首日ecpm', dataIndex: 'firstEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 67, sorter: true, className: 'payDataBackColorClass',
  508. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  509. },
  510. {
  511. title: '总ecpm', dataIndex: 'totalEcpm', label: '应用端数据指标', align: 'center', width: 80, default: 68, sorter: true, className: 'payDataBackColorClass',
  512. render: (a: number, b: any) => <Statistic value={a || 0} precision={2} />
  513. },
  514. {
  515. title: '人均广告有效观看次数', dataIndex: 'userAvgLookCnt', label: '应用端数据指标', align: 'center', width: 85, default: 69, sorter: true, className: 'payDataBackColorClass',
  516. render: (a: string) => <Statistic value={a || 0} />
  517. },
  518. {
  519. title: '用户广告转化率', dataIndex: 'userAdConvertRate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
  520. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  521. },
  522. {
  523. title: '次日留存率(应用)', dataIndex: 'active2Rate', label: '应用端数据指标', align: 'center', width: 70, sorter: true, className: 'payDataBackColorClass',
  524. render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
  525. },
  526. {
  527. title: '次日留存人数', dataIndex: 'active2User', label: '应用端数据指标', align: 'center', width: 75, default: 71, sorter: true, className: 'payDataBackColorClass',
  528. render: (a: string) => <Statistic value={a || 0} />
  529. }
  530. ]
  531. }
  532. ]
  533. }
  534. export default columns12