import { Button, Card, Form, Radio, Space, Tooltip } from "antd"
import React, { useContext, useMemo } from "react"
import { DispatchDynamic } from "./newDynamic";
import New1Radio from "@/pages/launchSystemV3/components/New1Radio";
import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons";
import BrandImage from "@/pages/launchSystemV3/components/BrandImage";
import { SelectProfiles } from "@/pages/launchSystemV3/tencenTasset/profiles";
import { PAGE_TYPE_ENUM } from "../../const";
/**
* 创意内容
* @returns
*/
const CreativeTemplateContent: React.FC<{ automaticSiteEnabled: boolean, putInType?: 'NOVEL' | 'GAME' }> = ({ automaticSiteEnabled, putInType }) => {
/******************************************/
const { creativeComponents, form, adgroups: { siteSet } } = useContext(DispatchDynamic)!;
const pageType = Form.useWatch(['jumpInfo', 'pageType'], form)
const pageSpec = Form.useWatch('pageSpec', form)
const deliveryMode = Form.useWatch('deliveryMode', form)
const creativeTemplateId = Form.useWatch('creativeTemplateId', form)
const linkNameTypeOld = Form.useWatch(['textLink', 'value', 'linkNameType'], form)
const buttonTextOld = Form.useWatch(['actionButton', 'value', 'buttonText'], form)
/******************************************/
const content = useMemo(() => {
let brand;
let enumeration: PULLIN.DataType[] = []
let pageTypeList: PULLIN.DataType[] = []
let jumpInfoNumber = 1
Object.keys(creativeComponents).forEach(key => {
switch (key) {
case 'brand':
brand = creativeComponents[key]
let page_type = brand.children.page_type
let typeList = ["PAGE_TYPE_WECHAT_OFFICIAL_ACCOUNT_DETAIL", "PAGE_TYPE_H5_PROFILE", "PAGE_TYPE_NOT_USED", "PAGE_TYPE_WECHAT_CHANNELS_PROFILE"]
enumeration = (page_type.enumProperty.enumeration as { value: string, description: string }[]).filter((item: { value: string; }) => typeList.includes(item.value)).map(item => ({ label: item.value === 'PAGE_TYPE_NOT_USED' ? '品牌形象' : item.description, value: item.value }))
break
case 'jump_info':
let jump_info = creativeComponents[key]
jumpInfoNumber = jump_info?.arrayProperty?.maxNumber || 1
let jumpInfoPageType = jump_info.children.page_type
pageTypeList = (jumpInfoPageType.enumProperty.enumeration as { value: string, description: string }[]).filter(item => !["PAGE_TYPE_WECHAT_CANVAS_MINI_PROGRAM", "PAGE_TYPE_H5", "PAGE_TYPE_WECHAT_SIMPLE_CANVAS", "PAGE_TYPE_APP_DEEP_LINK"].includes(item.value)).map(item => ({ label: item.description, value: item.value, disabled: !["PAGE_TYPE_WECHAT_CANVAS", "PAGE_TYPE_OFFICIAL", "PAGE_TYPE_WECHAT_MINI_PROGRAM", "PAGE_TYPE_WECHAT_MINI_GAME"].includes(item.value) }))
break
}
})
if (!pageTypeList.some(item => item.value === "PAGE_TYPE_OFFICIAL") && creativeTemplateId !== 910 && putInType !== 'GAME') {
pageTypeList.push({ label: "灵鹊落地页", value: "PAGE_TYPE_OFFICIAL", disabled: false })
}
return <>
{brand &&
品牌形象跳转} rules={[{ required: true, message: '请选择品牌形象跳转!' }]} tooltip="品牌形象将在各流量版位下广告外层创意展示。此外,朋友圈广告在此基础上支持跳转,点击品牌形象可跳转到品牌简介页或搜一搜品牌主页">
form.setFieldsValue({ brand: undefined, creativeFirstReplyDTO: undefined })} />
{['PAGE_TYPE_H5_PROFILE'].includes(pageType) ?
: ["PAGE_TYPE_NOT_USED"].includes(pageType) &&
}
}
跳转类型({pageSpec?.length || 1}/{jumpInfoNumber})}>
{(fields, { add, remove }) => (
<>
{fields.map(({ key, name, ...restField }, index) => (
{
let pageSpecNew: any = []
if (pageType === 'PAGE_TYPE_WECHAT_CANVAS') {
pageSpecNew = pageSpec.map(() => ({ pageType, overrideCanvasHeadOption: 'OPTION_CREATIVE_OVERRIDE_CANVAS' }))
} else {
pageSpecNew = pageSpec.map(() => ({ pageType }))
}
form.setFieldsValue({ pageSpec: pageSpecNew })
let values: any = {}
Object.keys(creativeComponents).forEach(key => {
switch (key) {
case 'text_link':// 朋友圈文字链
let textLink = creativeComponents[key]
let linkNameType = textLink?.children?.link_name_type
let linkNameEnumeration = (linkNameType?.enumProperty?.enumeration as { value: string, description: string }[]).map(item => ({ label: item.description, value: item.value }))
values.textLink = {
value: {
linkNameType: linkNameTypeOld || linkNameEnumeration?.[0]?.value,
jumpInfo: {
pageType: pageType
}
}
}
break
case 'action_button':
let actionButton = creativeComponents[key]
let buttonText = actionButton.children.button_text
let butttonTextEnumeration = (buttonText.enumProperty.enumeration as { value: string }[]).map(item => ({ label: item.value, value: item.value }))
let enumeration = actionButton.children?.page_type?.enumProperty?.enumeration
let jumpInfo: any = {}
if (enumeration) {
if (enumeration.some((item: { value: any; }) => item.value === pageType)) {
jumpInfo = {
pageType: pageType
}
} else {
jumpInfo = {
pageType: 'PAGE_TYPE_WECHAT_FOCUS_DAILOG'
}
}
}
values.actionButton = {
value: {
buttonText: buttonTextOld || butttonTextEnumeration?.[0]?.value,
jumpInfo
}
}
if (actionButton.required) {
values.actionButtonShow = true
}
break
}
})
form.setFieldsValue(values)
}}
/>
{(((deliveryMode === 'DELIVERY_MODE_CUSTOMIZE' ? siteSet?.some((name: string) => name === 'SITE_SET_MOMENTS') : true) || automaticSiteEnabled) && pageSpec?.[index]?.pageType === 'PAGE_TYPE_WECHAT_CANVAS') &&
{/* {deliveryMode === 'DELIVERY_MODE_CUSTOMIZE' && 不替换原生推广页顶部素材}
使用外层创意素材替换原生推广页顶部素材 */}
不替换原生推广页顶部素材
使用外层创意素材替换原生推广页顶部素材
}
{pageSpec?.length > 1 && remove(name)} />}
))}
{pageSpec?.length < jumpInfoNumber &&
{pageSpec?.[0]?.pageType === "PAGE_TYPE_WECHAT_MINI_GAME" ?
}>
还可以添加 {jumpInfoNumber - pageSpec?.length} 组
: }
}
>
)}
>
}, [creativeComponents, pageType, pageSpec, siteSet, creativeTemplateId, putInType])
return 创意内容}
className="cardResetCss"
>
{content}
}
export default React.memo(CreativeTemplateContent)