import { Button, Card, Form, Radio, Space } 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"; /** * 创意内容 * @returns */ const CreativeTemplateContent: React.FC<{ automaticSiteEnabled: boolean }> = ({ automaticSiteEnabled }) => { /******************************************/ 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 linkName = Form.useWatch(['textLink', 'value', 'linkName'], 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"] 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" !== item.value })) break } }) return <> {brand && 品牌形象跳转} rules={[{ required: true, message: '请选择品牌形象跳转!' }]} tooltip="品牌形象将在各流量版位下广告外层创意展示。此外,朋友圈广告在此基础上支持跳转,点击品牌形象可跳转到品牌简介页或搜一搜品牌主页"> {['PAGE_TYPE_H5_PROFILE'].includes(pageType) ?
: ["PAGE_TYPE_NOT_USED"].includes(pageType) &&
}
} 跳转类型({pageSpec?.length || 1}/{jumpInfoNumber})}> {(fields, { add, remove }) => ( <> {fields.map(({ key, name, ...restField }) => ( { form.setFieldsValue({ pageSpec: pageSpec.map((item: any) => ({ ...item, pageType })) }) if (Object.keys(creativeComponents).includes('text_link')) { let textLink = creativeComponents['text_link'] 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 + '_' + item.description })) form.setFieldsValue({ textLink: { value: { linkName: linkName || linkNameEnumeration?.[0]?.value, jump_info: { pageType: pageType } } } }) } }} /> {((siteSet?.some((name: string) => name === 'SITE_SET_MOMENTS') || automaticSiteEnabled) && pageSpec?.[key]?.pageType === 'PAGE_TYPE_WECHAT_CANVAS') &&
{deliveryMode === 'DELIVERY_MODE_CUSTOMIZE' && 不替换原生推广页顶部素材} 使用外层创意素材替换原生推广页顶部素材
}
{pageSpec?.length > 1 && remove(name)} />}
))} {pageSpec?.length < jumpInfoNumber && } )}
}, [creativeComponents, pageType, pageSpec, siteSet]) return 创意内容} className="cardResetCss" > {content} } export default React.memo(CreativeTemplateContent)