|
|
@@ -5,7 +5,7 @@ import { ADGROUP_STATUS, BID_MODE_ENUM, COST_GUARANTEE_STATUS_ENUM, MARKETING_GO
|
|
|
import SwitchStatus from "./switchStatus"
|
|
|
import CreativePreview from "../../../components/CreativePreview"
|
|
|
import TimeSeriesLook from "@/pages/iaaData/components/TimeSeriesLook"
|
|
|
-import { AUTO_ACQUISTION_STATUS } from "./const"
|
|
|
+import { AUTO_ACQUISTION_STATUS, SMART_DELIVERY_GOAL_ENUM } from "./const"
|
|
|
|
|
|
function columns12(dayHandle: (data: any) => void, onChange?: () => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[], bcColor?: string }[] {
|
|
|
|
|
|
@@ -15,23 +15,27 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
label: '广告基本信息',
|
|
|
data: [
|
|
|
{
|
|
|
- title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 2,
|
|
|
+ title: '是否智投', dataIndex: 'smartDeliveryPlatform', label: '广告基本信息', align: 'center', width: 40, default: 2,
|
|
|
+ render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <Badge status={a ? "processing" : "error"} text={a ? '是' : '否'} />)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 3,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} isCopy />)
|
|
|
},
|
|
|
{
|
|
|
- title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 3,
|
|
|
+ title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 4,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 4,
|
|
|
+ title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 5,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 5,
|
|
|
+ title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 6,
|
|
|
render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 6,
|
|
|
+ title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 7,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
@@ -39,7 +43,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 7,
|
|
|
+ title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 8,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} isCopy />)
|
|
|
},
|
|
|
{
|
|
|
@@ -51,39 +55,48 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 8,
|
|
|
+ title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 9,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 9,
|
|
|
+ title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 10,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 10,
|
|
|
- render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate}`} />)
|
|
|
+ title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 11,
|
|
|
+ render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate ? b?.endDate : '长期投放'}`} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 11,
|
|
|
+ title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 12,
|
|
|
render: (a: string, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return <TimeSeriesLook timeSeries={a} />
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 12,
|
|
|
+ title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 13,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 140, default: 13,
|
|
|
- render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any }) => {
|
|
|
+ title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 180, default: 14,
|
|
|
+ render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any, smartDeliveryPlatform: any, smartDeliverySceneSpec: any }) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
+ if (b?.smartDeliveryPlatform && b?.smartDeliverySceneSpec) {
|
|
|
+ const smartDeliverySceneSpec = JSON.parse(b.smartDeliverySceneSpec)
|
|
|
+ const goalDto = SMART_DELIVERY_GOAL_ENUM[smartDeliverySceneSpec?.smartDeliveryGoal as keyof typeof SMART_DELIVERY_GOAL_ENUM]
|
|
|
+ return <WidthEllipsis value={`${goalDto?.smartDeliveryGoalSpec?.map(item => {
|
|
|
+ const field_name = item.field_name
|
|
|
+ const data = smartDeliverySceneSpec?.smartDeliveryGoalSpec?.[goalDto?.smartDeliveryGoalSpecName]?.[item.field_name]
|
|
|
+ return `${item.title}: ${field_name?.includes('Roi') ? data : data / 100}${item?.unitTips || ''}`
|
|
|
+ })}`} />
|
|
|
+ }
|
|
|
return `${b?.bidMode ? BID_MODE_ENUM[b?.bidMode as keyof typeof BID_MODE_ENUM] : ''} ${a}元/${b?.bidMode === 'BID_MODE_CPM' ? '千次曝光' : b?.bidMode === 'BID_MODE_CPC' ? '点击' : OPTIMIZATIONGOAL_ENUM[b?.optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM]}`
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 14,
|
|
|
+ title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 15,
|
|
|
render: (a: boolean, b: any) => {
|
|
|
- if (b?.accountId === '总计') return '--';
|
|
|
+ if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
|
|
|
return <Space size={2}>
|
|
|
{a ? <>
|
|
|
<Tag color="success">开启</Tag>
|
|
|
@@ -94,28 +107,28 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 15,
|
|
|
- render: (a: string, b: { accountId: any }) => {
|
|
|
- if (b?.accountId === '总计') return '--';
|
|
|
+ title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 16,
|
|
|
+ render: (a: string, b: { accountId: any, smartDeliveryPlatform: any }) => {
|
|
|
+ if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
|
|
|
return <Statistic value={a || 0} precision={3} />
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 16,
|
|
|
+ title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 17,
|
|
|
render: (a: string, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return SMART_BID_TYPE_ENUM[a as keyof typeof SMART_BID_TYPE_ENUM]
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 17,
|
|
|
+ title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 18,
|
|
|
render: (a: string, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return <Statistic value={a || 0} precision={2} />
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 18,
|
|
|
+ title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 19,
|
|
|
render: (a: string, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return <WidthEllipsis value={a ? '是' : '否'} />
|
|
|
@@ -126,14 +139,14 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 19,
|
|
|
+ title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 20,
|
|
|
render: (a: any, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return <Badge status={!a ? "processing" : "error"} text={a ? '是' : '否'} />
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 100, default: 20,
|
|
|
+ title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 150, default: 21,
|
|
|
render: (a: string, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--';
|
|
|
return ADGROUP_STATUS[a as keyof typeof ADGROUP_STATUS]
|
|
|
@@ -144,15 +157,15 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
render: (a: string) => (a === 'SMART_TARGETING_NONE' ? <Tag color="success">关闭</Tag> : a === 'SMART_TARGETING_AUTO' ? <Tag color='error'>开启</Tag> : '--')
|
|
|
},
|
|
|
{
|
|
|
- title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 21,
|
|
|
+ title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 22,
|
|
|
render: (a: string) => (<WidthEllipsis value={MARKETING_GOAL_ENUM[a as keyof typeof MARKETING_GOAL_ENUM]} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 22,
|
|
|
+ title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 23,
|
|
|
render: (a: string) => (<WidthEllipsis value={MARKETING_TARGET_TYPE_ENUM[a as keyof typeof MARKETING_TARGET_TYPE_ENUM]} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 23,
|
|
|
+ title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 24,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
@@ -166,11 +179,11 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 24,
|
|
|
+ title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 25,
|
|
|
render: (a: string) => (<WidthEllipsis value={a} />)
|
|
|
},
|
|
|
{
|
|
|
- title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 33,
|
|
|
+ title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 34,
|
|
|
render: (a: any, b: any) => {
|
|
|
if (b?.accountId === '总计') {
|
|
|
return '--'
|
|
|
@@ -192,7 +205,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
label: '广告消耗信息',
|
|
|
data: [
|
|
|
{
|
|
|
- title: '消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 25, sorter: true,
|
|
|
+ title: '消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 26, sorter: true,
|
|
|
className: 'padding_0',
|
|
|
render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
|
|
|
<Progress
|
|
|
@@ -208,31 +221,31 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
</div>
|
|
|
},
|
|
|
{
|
|
|
- title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 26, sorter: true,
|
|
|
+ title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 27, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} />
|
|
|
},
|
|
|
{
|
|
|
- title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 27, sorter: true,
|
|
|
+ title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 28, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} precision={2} />
|
|
|
},
|
|
|
{
|
|
|
- title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 28, sorter: true,
|
|
|
+ title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} />
|
|
|
},
|
|
|
{
|
|
|
- title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
|
|
|
+ title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 30, sorter: true,
|
|
|
render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
|
|
|
},
|
|
|
{
|
|
|
- title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 30, sorter: true,
|
|
|
+ title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} precision={2} />
|
|
|
},
|
|
|
{
|
|
|
- title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
|
|
|
+ title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} />
|
|
|
},
|
|
|
{
|
|
|
- title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
|
|
|
+ title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 33, sorter: true,
|
|
|
render: (a: string) => <Statistic value={a || 0} />
|
|
|
},
|
|
|
]
|
|
|
@@ -958,7 +971,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
|
|
|
label: '操作',
|
|
|
data: [
|
|
|
{
|
|
|
- title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 34,
|
|
|
+ title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
|
|
|
render: (_: number, b: any) => {
|
|
|
if (b?.accountId === '总计') return '--'
|
|
|
return <Space>
|