import React, { useContext, useMemo, useState } from "react" import style from '../index.less' import NewCreateAd from "./newCreateAd" import { DispatchAddelivery } from ".."; import { Button, Modal, Typography } from "antd"; import { EditOutlined } from "@ant-design/icons"; import { AD_STATUS_ENUM, BID_ALL_OCATION_MODE, BID_MODE_ENUM, BID_SCENE_NORMAL_ENUM, DEEP_CONVERSION_ENUM, GOAL_ROAS_ENUM, MARKETING_CARRIER_TYPE_ENUM, MARKETING_GOAL_ENUM, MARKETING_SUB_GOAL_ENUM, MARKETING_TARGET_TYPE_ENUM, MARKETING_TARGET_TYPE_GAME_ENUM, OPTIMIZATIONGOAL_ENUM, ROI_ALL_OCATION_MODE, SITE_SET_ENUM, SMART_BID_TYPE_ENUM, SMART_DELIVERY_GOAL_ENUM, SMART_DELIVERY_PLATFORM_ENUM } from "../../const"; import TimeSeriesLook from "@/pages/launchSystemNew/adq/ad/timeSeriesLook"; import { arraysHaveSameValues } from "@/utils/utils"; import '../../index.less' import { ShowMiniProgramWechatDetail } from "@/pages/launchSystemV3/tencenTasset/miniProgramWechat"; import { ShowGameAppIdDetail } from "@/pages/launchSystemV3/tencenTasset/game"; import { ShowApplication } from "@/pages/launchSystemV3/tencenTasset/application"; /** * 广告信息 * @returns */ const Ad: React.FC = () => { /*****************************/ const { addelivery, setAddelivery, accountCreateLogs, clearData, setAccountCreateLogs, putInType, setIsDqSubmit } = useContext(DispatchAddelivery)!; const { adgroups } = addelivery const { deliveryMethod, marketingGoal, marketingSubGoal, marketingAssetOuterSpec, marketingCarrierType, automaticSiteEnabled, explorationStrategy, siteSet, prioritySiteSet, searchExpandTargetingSwitch, bidMode, smartBidType, bidScene, bidAmount, optimizationGoal, isConversion, depthConversionEnabled, deepConversionSpec, ecomPkamSwitch, autoAcquisitionEnabled, autoAcquisitionBudget, dailyBudget, endDate, beginDate, timeSeries, firstDayBeginTime, configuredStatus, adgroupName, sceneSpec, autoDerivedCreativeEnabled, sysWechatAppId, wxGameAppId, promoteApplicationId, rtaId, rtaTargetId, bidAllocationMode, bidAmountMin, bidAmountMax, smartDeliveryPlatform, smartDeliverySceneSpec } = adgroups const [newVisible, setNewVisible] = useState(false) /*****************************/ // 智能投放出价 const smartModel = useMemo(() => { if (deliveryMethod === 'SMART') { const goalDto = SMART_DELIVERY_GOAL_ENUM[smartDeliverySceneSpec?.smartDeliveryGoal as keyof typeof SMART_DELIVERY_GOAL_ENUM] if ([2, 3].includes(bidAllocationMode)) { const data = smartDeliverySceneSpec?.smartDeliveryGoalSpec?.[goalDto?.smartDeliveryGoalSpecName] return goalDto?.smartDeliveryGoalSpec?.map(item =>

{item.title}: {data?.[item.field_name + 'Min']}-{data?.[item.field_name + 'Max']}{item?.unitTips || ''}

) } else { return goalDto?.smartDeliveryGoalSpec?.map(item =>

{item.title}: {smartDeliverySceneSpec?.smartDeliveryGoalSpec?.[goalDto?.smartDeliveryGoalSpecName]?.[item.field_name]}{item?.unitTips || ''}

) } } return null }, [smartDeliverySceneSpec, deliveryMethod, bidAllocationMode]) return <>
广告信息
{(adgroups && Object.keys(adgroups).length > 0) ? <>

广告状态:{AD_STATUS_ENUM[configuredStatus as keyof typeof AD_STATUS_ENUM]}

投放方式:{deliveryMethod === 'SMART' ? '智能投放' : '常规投放'}

{deliveryMethod === 'NORMAL' ? <> {putInType === 'NOVEL' ? <>

营销目的:{MARKETING_GOAL_ENUM[marketingGoal as keyof typeof MARKETING_GOAL_ENUM]}

推广产品类型:{MARKETING_TARGET_TYPE_ENUM[marketingAssetOuterSpec?.marketingTargetType as keyof typeof MARKETING_TARGET_TYPE_ENUM]}

: <>

营销目的:{MARKETING_SUB_GOAL_ENUM[marketingSubGoal as keyof typeof MARKETING_SUB_GOAL_ENUM]}

推广产品类型:{MARKETING_TARGET_TYPE_GAME_ENUM[marketingAssetOuterSpec?.marketingTargetType as keyof typeof MARKETING_TARGET_TYPE_GAME_ENUM]}

} {marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_MINI_PROGRAM_WECHAT' ? : marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_WECHAT_MINI_GAME' ? : null }

营销载体类型:{MARKETING_CARRIER_TYPE_ENUM[marketingCarrierType as keyof typeof MARKETING_CARRIER_TYPE_ENUM]}

{['MARKETING_CARRIER_TYPE_APP_ANDROID', 'MARKETING_CARRIER_TYPE_APP_IOS'].includes(marketingCarrierType) && }

版位选择:{automaticSiteEnabled ? '智能版位' : '选择特定版位'}

{!automaticSiteEnabled && 广告版位:{siteSet.map((item: string | number) => SITE_SET_ENUM[item as keyof typeof SITE_SET_ENUM]).toString()}} {automaticSiteEnabled && <>

探索策略:{explorationStrategy === 'STEADY_EXPLORATION' ? '稳步探索' : '自动探索'}

{prioritySiteSet?.length > 0 && 优先探索版位:{prioritySiteSet.map((item: string | number) => SITE_SET_ENUM[item as keyof typeof SITE_SET_ENUM]).toString()}} }

搜索场景扩量:{searchExpandTargetingSwitch === 'SEARCH_EXPAND_TARGETING_SWITCH_OPEN' ? '开启' : '关闭'}

{rtaId &&

RTA ID:{rtaId}

} {rtaTargetId &&

策略 ID:{rtaTargetId}

}

计费方式:{BID_MODE_ENUM[bidMode as keyof typeof BID_MODE_ENUM]}

{putInType === 'GAME' ? <>

出价场景:{BID_SCENE_NORMAL_ENUM[bidScene as keyof typeof BID_SCENE_NORMAL_ENUM]}

:

出价类型:{SMART_BID_TYPE_ENUM[smartBidType as keyof typeof SMART_BID_TYPE_ENUM]}

}

出价分配方式:{BID_ALL_OCATION_MODE.find(item => item.value === bidAllocationMode)?.label}

{[2, 3].includes(bidAllocationMode) ?

出价:{bidAmountMin}-{bidAmountMax} 元/{optimizationGoal ? OPTIMIZATIONGOAL_ENUM[optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM] : ['BID_MODE_OCPM', 'BID_MODE_OCPC'].includes(bidMode) ? '千次曝光' : '点击'}

:

出价:{bidAmount} 元/{optimizationGoal ? OPTIMIZATIONGOAL_ENUM[optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM] : ['BID_MODE_OCPM', 'BID_MODE_OCPC'].includes(bidMode) ? '千次曝光' : '点击'}

} {isConversion &&

转化:新链路转化

} {optimizationGoal &&

优化目标:{OPTIMIZATIONGOAL_ENUM[optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM]}

} {deepConversionSpec && <>

深度转化优化:开启

深度优化类型:{DEEP_CONVERSION_ENUM[deepConversionSpec?.deepConversionType as keyof typeof DEEP_CONVERSION_ENUM]}

{deepConversionSpec.deepConversionType === 'DEEP_CONVERSION_BEHAVIOR' ? <>

深度优化目标:{OPTIMIZATIONGOAL_ENUM[deepConversionSpec.deepConversionBehaviorSpec.goal as keyof typeof OPTIMIZATIONGOAL_ENUM]}

深度目标出价:{deepConversionSpec.deepConversionBehaviorSpec.bidAmount}元/{OPTIMIZATIONGOAL_ENUM[deepConversionSpec.deepConversionBehaviorSpec.goal as keyof typeof OPTIMIZATIONGOAL_ENUM] || '优化目标'}

: <>

深度优化目标:{GOAL_ROAS_ENUM[deepConversionSpec.deepConversionWorthSpec.goal as keyof typeof GOAL_ROAS_ENUM]}

ROI分配方式:{ROI_ALL_OCATION_MODE.find(item => item.value === deepConversionSpec?.deepConversionWorthSpec?.roiAllocationMode)?.label}

{[2, 3].includes(deepConversionSpec?.deepConversionWorthSpec?.roiAllocationMode) ?

期望ROI:{deepConversionSpec.deepConversionWorthSpec.expectedRoiMin}-{deepConversionSpec.deepConversionWorthSpec.expectedRoiMax}

:

期望ROI:{deepConversionSpec.deepConversionWorthSpec.expectedRoi}

} } }

一方人群跑量加强:{ecomPkamSwitch === 'ECOM_PKAM_SWITCH_OPEN' ? '开启' : '关闭'}

一键起量:{autoAcquisitionEnabled ? '开启' : '关闭'}

{autoAcquisitionEnabled &&

起量预算:{autoAcquisitionBudget}元/天

}

广告日预算:{dailyBudget ? dailyBudget + '元/天' : '不限'}

投放日期:{beginDate} 至 {endDate || '长期投放'}

投放时段:{timeSeries.includes('0') ? : '全天'}

首日开始时间:{firstDayBeginTime ? firstDayBeginTime : '关闭'}

自动衍生创意:{autoDerivedCreativeEnabled ? '系统衍生' : '关闭衍生'}

广告名称:{adgroupName}

: <> {/* 智能投放 */}

投放场景:{SMART_DELIVERY_PLATFORM_ENUM[smartDeliveryPlatform as keyof typeof SMART_DELIVERY_PLATFORM_ENUM]}

{putInType === 'NOVEL' ? <>

营销目的:{MARKETING_GOAL_ENUM[marketingGoal as keyof typeof MARKETING_GOAL_ENUM]}

推广产品类型:{MARKETING_TARGET_TYPE_ENUM[marketingAssetOuterSpec?.marketingTargetType as keyof typeof MARKETING_TARGET_TYPE_ENUM]}

: <>

营销目的:{MARKETING_SUB_GOAL_ENUM[marketingSubGoal as keyof typeof MARKETING_SUB_GOAL_ENUM]}

推广产品类型:{MARKETING_TARGET_TYPE_GAME_ENUM[marketingAssetOuterSpec?.marketingTargetType as keyof typeof MARKETING_TARGET_TYPE_GAME_ENUM]}

} {marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_MINI_PROGRAM_WECHAT' ? : marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_WECHAT_MINI_GAME' ? : null }

营销载体类型:{MARKETING_CARRIER_TYPE_ENUM[marketingCarrierType as keyof typeof MARKETING_CARRIER_TYPE_ENUM]}

{['MARKETING_CARRIER_TYPE_APP_ANDROID', 'MARKETING_CARRIER_TYPE_APP_IOS'].includes(marketingCarrierType) && }

版位选择:{automaticSiteEnabled ? '智能版位' : '选择特定版位'}

{automaticSiteEnabled && <>

探索策略:{explorationStrategy === 'STEADY_EXPLORATION' ? '稳步探索' : '自动探索'}

}

搜索场景扩量:{searchExpandTargetingSwitch === 'SEARCH_EXPAND_TARGETING_SWITCH_OPEN' ? '开启' : '关闭'}

计费方式:{BID_MODE_ENUM[bidMode as keyof typeof BID_MODE_ENUM]}

{smartDeliverySceneSpec?.smartDeliveryGoal &&

投放目标:{SMART_DELIVERY_GOAL_ENUM[smartDeliverySceneSpec?.smartDeliveryGoal as keyof typeof SMART_DELIVERY_GOAL_ENUM]?.title}

}

出价分配方式:{BID_ALL_OCATION_MODE.find(item => item.value === bidAllocationMode)?.label}

{smartModel} {isConversion &&

转化:新链路转化

}

广告日预算:{dailyBudget ? dailyBudget + '元/天' : '不限'}

投放日期:{beginDate} 至 {endDate || '长期投放'}

投放时段:{timeSeries.includes('0') ? : '全天'}

首日开始时间:{firstDayBeginTime ? firstDayBeginTime : '关闭'}

广告名称:{adgroupName}

} :
{accountCreateLogs?.length > 0 ?
setNewVisible(true)}>新建广告
:
请完善媒体账户信息
}
}
{(adgroups && Object.keys(adgroups).length > 0) ? <> : <>}
{/* 新建广告 */} {newVisible && item.accountId)} putInType={putInType} value={addelivery.adgroups} visible={newVisible} onClose={() => { setNewVisible(false) }} onChange={(adgroups) => { setIsDqSubmit?.(false) if ( adgroups.marketingGoal === marketingGoal && // 营销内容 adgroups.marketingCarrierType === marketingCarrierType && // 营销载体 adgroups.marketingAssetOuterSpec.marketingTargetType === marketingAssetOuterSpec.marketingTargetType && // 推广产品 adgroups.automaticSiteEnabled === automaticSiteEnabled && // 版位选择 arraysHaveSameValues(adgroups?.siteSet || [], siteSet || []) && // 版位 arraysHaveSameValues(adgroups?.sceneSpec?.wechatPosition || [], sceneSpec?.wechatPosition || []) // 微信公众号与小程序定投 ) { if (adgroups?.isConversion !== isConversion || ((isConversion || adgroups?.isConversion) && adgroups?.depthConversionEnabled !== depthConversionEnabled)) { setAccountCreateLogs(accountCreateLogs.map(item => { delete item?.newConversionList delete item?.userActionSetsList return item })) } setNewVisible(false) setAddelivery({ ...addelivery, adgroups }) clearData() } else { setAccountCreateLogs(accountCreateLogs.map(item => ({ accountId: item.accountId }))) if ( addelivery?.adgroups && Object.keys(addelivery?.adgroups).length && ((addelivery?.dynamic && Object.keys(addelivery?.dynamic).length) || addelivery?.targeting?.length || (addelivery?.dynamicMaterialDTos && Object.keys(addelivery?.dynamicMaterialDTos).length) || (addelivery?.dynamicCreativesTextDTOS && Object.keys(addelivery?.dynamicCreativesTextDTOS).length) ) ) { Modal.confirm({ title: 注意, content: 当前改变了“营销内容”、“营销载体”、“推广产品”、“版位选择”、“版位”、“微信公众号与小程序定投”中的某些内容,不清空后面内容可能会导致当前“定向”、“创意”、“素材”等一些内容不匹配,是否清空内容, okText: '清空', cancelText: '不清空', keyboard: false, onOk() { // 清空 setNewVisible(false) setAddelivery({ adgroups, targeting: [], dynamic: {}, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {}, mediaType: 0 }) clearData() }, onCancel() { // 不清空 setNewVisible(false) setAddelivery({ ...addelivery, adgroups }) clearData() }, className: 'modalResetCss' }) } else { setNewVisible(false) setAddelivery({ adgroups, targeting: [], dynamic: {}, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {}, mediaType: 0 }) clearData() } } }} />} } export default React.memo(Ad)