|
@@ -2,13 +2,13 @@ import Tables from "@/components/Tables"
|
|
|
import { useAjax } from "@/Hook/useAjax"
|
|
|
import { createAdBatchApi, CreateAdProps } from "@/services/launchAdq/createAd"
|
|
|
import { getSysAdcreativeInfo } from "@/services/launchAdq/creative"
|
|
|
-import { BidModeEnum, BidStrategyEnum, OptimizationGoalEnum, PromotedObjectType, SiteSetEnum } from "@/services/launchAdq/enum"
|
|
|
+import { PromotedObjectType } from "@/services/launchAdq/enum"
|
|
|
import { getTagsList } from "@/services/launchAdq/global"
|
|
|
import { getSysAdgroupsInfo } from "@/services/launchAdq/localAd"
|
|
|
import { getsysTargetingInfo } from "@/services/launchAdq/targeting"
|
|
|
-import { CloseOutlined, SearchOutlined } from "@ant-design/icons"
|
|
|
+import { CloseOutlined, EditOutlined, QuestionCircleOutlined, SearchOutlined } from "@ant-design/icons"
|
|
|
import { Button, Card, Col, Empty, Row, Select, Space, Spin, Tooltip, Image, message, Popover } from "antd"
|
|
|
-import React, { useEffect, useState } from "react"
|
|
|
+import React, { useEffect, useRef, useState } from "react"
|
|
|
import { useModel } from "umi"
|
|
|
import AdModal from "../../components/adModal"
|
|
|
import CreativeModal from "../../components/creativeModal"
|
|
@@ -17,11 +17,13 @@ import DataSourceModal from "../../components/dataSourceModal"
|
|
|
import GoodsModal from "../../components/goodsModal"
|
|
|
import IdModal from "../../components/idModal"
|
|
|
import LookLanding from "../../components/lookLanding"
|
|
|
+import PageModal from "../../components/pageModal"
|
|
|
import SelectCloud from "../../components/selectCloud"
|
|
|
import TargetingModal from "../../components/targetingModal"
|
|
|
import TargetingTooltip from "../../components/targetingTooltip"
|
|
|
import { WxAutoButton } from "../../req"
|
|
|
import AdcreativeCol from "./adcreativeCol"
|
|
|
+import AdgroupsCol from "./adgroupsCol"
|
|
|
import style from './index.less'
|
|
|
import Selector from "./selector"
|
|
|
import SubmitModal from "./submitModal"
|
|
@@ -38,12 +40,12 @@ const CreateAd: React.FC = () => {
|
|
|
speedMode: 'SPEED_MODE_STANDARD', // 投放速度模式
|
|
|
sysAdgroupId: undefined, // 广告组内容
|
|
|
sysTargetingId: undefined, // 定向包 id
|
|
|
- adName: undefined, // 广告名称
|
|
|
+ adgroupName: undefined, // 广告名称
|
|
|
configuredStatus: 'AD_STATUS_SUSPEND', // 广告状态
|
|
|
sysAdcreativeId: undefined, // 创意ID
|
|
|
sysPageId: undefined, // 落地页Id
|
|
|
})
|
|
|
- const [accountCreateLogs, setAccountCreateLogs] = useState<{ adAccountId: number, id: number, userActionSetsList?: number, productList?: any, conversionList?: any, customAudienceList?: any, excludedCustomAudienceList?: any }[]>([]) // 账户
|
|
|
+ const [accountCreateLogs, setAccountCreateLogs] = useState<{ adAccountId: number, id: number, userActionSetsList?: number, productList?: any, conversionList?: any, customAudienceList?: any, excludedCustomAudienceList?: any, pageList?: any }[]>([]) // 账户
|
|
|
|
|
|
const [adVisible, setAdVisible] = useState<boolean>(false) // 选择广告弹窗控制
|
|
|
const [dxVisible, setDxVisible] = useState<boolean>(false) // 选择定向弹窗控制
|
|
@@ -55,6 +57,7 @@ const CreateAd: React.FC = () => {
|
|
|
const [lookVisible, setLookVisible] = useState<boolean>(false) // 选择转化ID弹窗控制
|
|
|
const [subVisible, setSubVisible] = useState<boolean>(false) // 选择设置名称弹窗控制
|
|
|
const [cpVisible, setCpVisible] = useState<boolean>(false) // 选择设置名称弹窗控制
|
|
|
+ const [pageVisible, setPageVisible] = useState<boolean>(false) // 选择云端落地页控制
|
|
|
const [wxButtonList, setWxButtonList] = useState<WxAutoButton[]>([])
|
|
|
const [tableData, setTableData] = useState<any[]>([]) // 预览表格
|
|
|
const [tableSelect, setTableSelect] = useState<any[]>([])
|
|
@@ -62,6 +65,7 @@ const CreateAd: React.FC = () => {
|
|
|
const [modelList, setModelList] = useState<any>({}) // 所有品牌手机
|
|
|
const [adcreativeTemplateAppellation, setAdcreativeTemplateAppellation] = useState<string>('') // 创意形式
|
|
|
const { init, get } = useModel('useLaunchAdq.useBdMediaPup')
|
|
|
+ let refA: { current: { editHandle: () => void } } | any = useRef()
|
|
|
|
|
|
|
|
|
const tagsList_REGION = useAjax((params) => getTagsList(params))
|
|
@@ -115,6 +119,18 @@ const CreateAd: React.FC = () => {
|
|
|
}
|
|
|
}, [queryForm?.sysAdgroupId])
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ if (getSysAdgroups?.data?.bidMode !== 'BID_MODE_CPM' && accountCreateLogs?.length > 0) {
|
|
|
+ let newAccountCreateLogs = accountCreateLogs?.map((item: any) => {
|
|
|
+ if (item?.customAudienceList) {
|
|
|
+ delete item?.customAudienceList
|
|
|
+ }
|
|
|
+ return { ...item }
|
|
|
+ })
|
|
|
+ setAccountCreateLogs([...newAccountCreateLogs])
|
|
|
+ }
|
|
|
+ }, [getSysAdgroups?.data?.bidMode])
|
|
|
+
|
|
|
/** 获取创意详情 */
|
|
|
useEffect(() => {
|
|
|
if (queryForm?.sysAdcreativeId) {
|
|
@@ -147,6 +163,13 @@ const CreateAd: React.FC = () => {
|
|
|
setAccountCreateLogs(newArr)
|
|
|
}
|
|
|
|
|
|
+ /** 删除云端内容 */
|
|
|
+ const pageDel = (index: number) => {
|
|
|
+ let newArr = JSON.parse(JSON.stringify(accountCreateLogs))
|
|
|
+ delete newArr[index].pageList
|
|
|
+ setAccountCreateLogs(newArr)
|
|
|
+ }
|
|
|
+
|
|
|
/** 删除数据源 */
|
|
|
const sourceDel = (index: number, num: number) => {
|
|
|
let newArr = JSON.parse(JSON.stringify(accountCreateLogs))
|
|
@@ -200,7 +223,7 @@ const CreateAd: React.FC = () => {
|
|
|
setTableData(data)
|
|
|
}
|
|
|
|
|
|
- const submit = (data: { adName: string, campaignName: string }) => {
|
|
|
+ const submit = (data: { adgroupName: string, campaignName: string }) => {
|
|
|
console.log(111111, tableSelect);
|
|
|
let params = { ...queryForm, ...data }
|
|
|
let accountLogs = tableSelect.map((item: any) => {
|
|
@@ -219,6 +242,9 @@ const CreateAd: React.FC = () => {
|
|
|
if (item?.excludedCustomAudienceList?.length > 0) {
|
|
|
data.excludedCustomAudience = item?.excludedCustomAudienceList?.map((item: any) => item.id)
|
|
|
}
|
|
|
+ if (item?.pageList) {
|
|
|
+ data.pageId = item?.pageList[0].id
|
|
|
+ }
|
|
|
return data
|
|
|
})
|
|
|
params.accountCreateLogs = accountLogs
|
|
@@ -258,7 +284,7 @@ const CreateAd: React.FC = () => {
|
|
|
speedMode: 'SPEED_MODE_STANDARD', // 投放速度模式
|
|
|
sysAdgroupId: undefined, // 广告组内容
|
|
|
sysTargetingId: undefined, // 定向包 id
|
|
|
- adName: undefined, // 广告名称
|
|
|
+ adgroupName: undefined, // 广告名称
|
|
|
configuredStatus: 'AD_STATUS_SUSPEND', // 广告状态
|
|
|
sysAdcreativeId: undefined, // 创意ID
|
|
|
sysPageId: undefined, // 落地页Id
|
|
@@ -310,22 +336,14 @@ const CreateAd: React.FC = () => {
|
|
|
<Row className={style.items}>
|
|
|
{/* =============广告基本信息=========== */}
|
|
|
<Col className={style.conRightBorder}>
|
|
|
- <div className={style.top}>广告基本信息</div>
|
|
|
+ <div className={style.top}>
|
|
|
+ 广告基本信息
|
|
|
+ {(queryForm?.promotedObjectType && getSysAdgroups?.data) && <a style={{ fontSize: 12 }} onClick={() => refA?.current?.editHandle()}><EditOutlined /></a>}
|
|
|
+ </div>
|
|
|
<div className={style.center}>
|
|
|
<Spin spinning={getSysAdgroups.loading}>
|
|
|
<div className={style.centerContent}>
|
|
|
- {getSysAdgroups?.data ? <>
|
|
|
- <div>广告名称: <span>{getSysAdgroups?.data?.adgroupName}</span></div>
|
|
|
- <div>推广目标: <span>{PromotedObjectType[getSysAdgroups?.data?.promotedObjectType]}</span></div>
|
|
|
- <div>广告版位: <span>{getSysAdgroups?.data?.siteSet?.map((item: string) => SiteSetEnum[item]).toString()}</span></div>
|
|
|
- <div>投放日期: <span>{getSysAdgroups?.data?.endDate ? getSysAdgroups?.data?.beginDate + '~' + getSysAdgroups?.data?.endDate : getSysAdgroups?.data?.beginDate + '~' + '长期投放'}</span></div>
|
|
|
- <div>出价方式: <span>{BidModeEnum[getSysAdgroups?.data?.bidMode]}</span></div>
|
|
|
- <div>优化目标: <span>{OptimizationGoalEnum[getSysAdgroups?.data?.optimizationGoal]}</span></div>
|
|
|
- <div>出价类型: <span>{getSysAdgroups?.data?.smartBidType === 'SMART_BID_TYPE_CUSTOM' ? '手动出价' : '自动出价'}</span></div>
|
|
|
- <div>出价策略: <span>{BidStrategyEnum[getSysAdgroups?.data?.bidStrategy]}</span></div>
|
|
|
- <div>广告出价: <span>{getSysAdgroups?.data?.bidAmount}</span></div>
|
|
|
- <div>广告日预算: <span>{getSysAdgroups?.data?.dailyBudget || '不限'}</span></div>
|
|
|
- </> : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />}
|
|
|
+ {getSysAdgroups?.data ? <AdgroupsCol data={getSysAdgroups?.data} /> : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />}
|
|
|
</div>
|
|
|
</Spin>
|
|
|
</div>
|
|
@@ -339,56 +357,62 @@ const CreateAd: React.FC = () => {
|
|
|
<Col className={style.conRightBorder}>
|
|
|
<div className={style.top}>
|
|
|
定向
|
|
|
- {accountCreateLogs?.length > 0 && queryForm?.sysTargetingId ? <Button type="link" style={{ fontSize: 12, padding: 0 }} onClick={() => setCpVisible(true)}>选择定向包</Button> : <Tooltip title={accountCreateLogs?.length > 0 ? `请先添加定向` : `请先选择媒体账户`}>
|
|
|
+ {getSysAdgroups?.data?.bidMode === 'BID_MODE_CPM' && <>{accountCreateLogs?.length > 0 && queryForm?.sysTargetingId ? <Button type="link" style={{ fontSize: 12, padding: 0 }} onClick={() => setCpVisible(true)}>选择定向包</Button> : <Tooltip title={accountCreateLogs?.length > 0 ? `请先添加定向` : `请先选择媒体账户`}>
|
|
|
<Button type="link" style={{ fontSize: 12, padding: 0 }}>选择定向包</Button>
|
|
|
- </Tooltip>}
|
|
|
+ </Tooltip>}</>}
|
|
|
</div>
|
|
|
<div className={style.center}>
|
|
|
<Spin spinning={getsysTargeting.loading}>
|
|
|
<div className={style.centerContent}>
|
|
|
{queryForm?.sysTargetingId ? <>
|
|
|
- {getsysTargeting?.data && <Popover
|
|
|
- content={<div className={style.popover}>
|
|
|
- <TargetingTooltip data={getsysTargeting?.data} geoLocationList={geoLocationList} modelList={modelList} />
|
|
|
- </div>}
|
|
|
- trigger="hover"
|
|
|
- placement="right"
|
|
|
- >
|
|
|
- <div className={style.popoverContent}>
|
|
|
- <div>定向名称: <span>{getsysTargeting?.data?.targetingName}</span></div>
|
|
|
- <div>定向描述: <span>{getsysTargeting?.data?.description || '<空>'}</span></div>
|
|
|
- </div>
|
|
|
- </Popover>}
|
|
|
-
|
|
|
- {accountCreateLogs?.map((item: any, index: number) => {
|
|
|
- if (item?.customAudienceList) {
|
|
|
- return <div className={style.acc} key={index}>
|
|
|
- <div className={style.accName} style={{ fontWeight: 800 }}>{item.adAccountId}</div>
|
|
|
- {item?.customAudienceList?.length > 0 && <>
|
|
|
- <div className={style.accName}>定向用户群</div>
|
|
|
- {
|
|
|
- item?.customAudienceList?.map((pack: { name: string, id: number }, index1: number) => {
|
|
|
- return <div className={style.accCon} key={pack.id}>{pack.name}<CloseOutlined className={style.close} onClick={() => {
|
|
|
- cpDel(index, index1, 'customAudienceList')
|
|
|
- }} /></div>
|
|
|
- })
|
|
|
- }
|
|
|
- </>}
|
|
|
- {item?.excludedCustomAudienceList?.length > 0 && <>
|
|
|
- <div className={style.accName} style={{ marginTop: 5 }}>排除用户群</div>
|
|
|
- {
|
|
|
- item?.excludedCustomAudienceList?.map((pack: { name: string, id: number }, index1: number) => {
|
|
|
- return <div className={style.accCon} key={pack.id}>{pack.name}<CloseOutlined className={style.close} onClick={() => {
|
|
|
- cpDel(index, index1, 'excludedCustomAudienceList')
|
|
|
- }} /></div>
|
|
|
- })
|
|
|
- }
|
|
|
- </>}
|
|
|
+ {accountCreateLogs?.some((item: any) => item?.customAudienceList?.length > 0) ? <>
|
|
|
+ {getsysTargeting?.data && <Popover
|
|
|
+ content={<div className={style.popover}>
|
|
|
+ <TargetingTooltip data={getsysTargeting?.data} geoLocationList={geoLocationList} modelList={modelList} />
|
|
|
+ </div>}
|
|
|
+ trigger="hover"
|
|
|
+ placement="right"
|
|
|
+ >
|
|
|
+ <div className={style.popoverContent}>
|
|
|
+ <div>定向名称: <span>{getsysTargeting?.data?.targetingName}</span></div>
|
|
|
+ <div>定向描述: <span>{getsysTargeting?.data?.description || '<空>'}</span></div>
|
|
|
</div>
|
|
|
- } else {
|
|
|
- return null
|
|
|
- }
|
|
|
- })}
|
|
|
+ </Popover>}
|
|
|
+ {accountCreateLogs?.map((item: any, index: number) => {
|
|
|
+ if (item?.customAudienceList) {
|
|
|
+ return <div className={style.acc} key={index}>
|
|
|
+ <div className={style.accName} style={{ fontWeight: 800 }}>{item.adAccountId}</div>
|
|
|
+ {item?.customAudienceList?.length > 0 && <>
|
|
|
+ <div className={style.accName}>定向用户群</div>
|
|
|
+ {
|
|
|
+ item?.customAudienceList?.map((pack: { name: string, id: number }, index1: number) => {
|
|
|
+ return <div className={style.accCon} key={pack.id}>{pack.name}<CloseOutlined className={style.close} onClick={() => {
|
|
|
+ cpDel(index, index1, 'customAudienceList')
|
|
|
+ }} /></div>
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </>}
|
|
|
+ {item?.excludedCustomAudienceList?.length > 0 && <>
|
|
|
+ <div className={style.accName} style={{ marginTop: 5 }}>排除用户群</div>
|
|
|
+ {
|
|
|
+ item?.excludedCustomAudienceList?.map((pack: { name: string, id: number }, index1: number) => {
|
|
|
+ return <div className={style.accCon} key={pack.id}>{pack.name}<CloseOutlined className={style.close} onClick={() => {
|
|
|
+ cpDel(index, index1, 'excludedCustomAudienceList')
|
|
|
+ }} /></div>
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </>}
|
|
|
+ </div>
|
|
|
+ } else {
|
|
|
+ return null
|
|
|
+ }
|
|
|
+ })}
|
|
|
+ </> : <>
|
|
|
+ <div>定向名称: <span>{getsysTargeting?.data?.targetingName}</span></div>
|
|
|
+ <div>定向描述: <span>{getsysTargeting?.data?.description || '<空>'}</span></div>
|
|
|
+ <TargetingTooltip data={getsysTargeting?.data} geoLocationList={geoLocationList} modelList={modelList} />
|
|
|
+ </>}
|
|
|
+
|
|
|
|
|
|
</> : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />}
|
|
|
</div>
|
|
@@ -485,30 +509,50 @@ const CreateAd: React.FC = () => {
|
|
|
{/* 落地页 */}
|
|
|
<Col span={12} >
|
|
|
<div className={style.top}>
|
|
|
- 落地页
|
|
|
+ <span>落地页 <Tooltip title="云端落地页优先于本地落地页">
|
|
|
+ <QuestionCircleOutlined />
|
|
|
+ </Tooltip></span>
|
|
|
{wxButtonList?.length > 0 && <Button type="link" size="small">配置客服</Button>}
|
|
|
</div>
|
|
|
<div className={style.center}>
|
|
|
<Spin spinning={get.loading}>
|
|
|
<div className={style.centerContent}>
|
|
|
- {queryForm?.sysPageId ? <>
|
|
|
- <div>落地页名称:{get?.data?.pageName || ''}</div>
|
|
|
- <div>分享名称:{get?.data?.shareContentSpec?.shareTitle || ''}</div>
|
|
|
- <div>分享描述:{get?.data?.shareContentSpec?.shareDescription || ''}</div>
|
|
|
- <div>原生推广页顶部素材预览:
|
|
|
- <div>{get?.data?.pageSpecsList[0]?.pageElementsSpecList?.filter((item: any, index: number) => index === 0)?.map((item: { elementType: 'TOP_IMAGE' | 'TOP_VIDEO' | 'TOP_SLIDER', topImageSpec: any, topSliderSpec: any, topVideoSpec: any }, index: number) => {
|
|
|
- switch (item?.elementType) {
|
|
|
- case 'TOP_IMAGE':
|
|
|
- return <Image width={80} src={item.topImageSpec.imageUrl} style={{ borderRadius: 8, overflow: 'hidden' }} key={index} />
|
|
|
- case 'TOP_SLIDER':
|
|
|
- return <Space wrap key={index}>
|
|
|
- {item?.topSliderSpec?.imageUrlList?.map((url: string, index: number) => <Image width={70} src={url} style={{ borderRadius: 8 }} key={'TOP_SLIDER' + index} />)}
|
|
|
- </Space>
|
|
|
- case 'TOP_VIDEO':
|
|
|
- return <video src={item.topVideoSpec.videoUrl} width={150} controls key={index}></video>
|
|
|
- }
|
|
|
- })}</div>
|
|
|
- </div>
|
|
|
+ {queryForm?.sysPageId || accountCreateLogs?.some((item: any) => item.pageList?.length > 0) ? <>
|
|
|
+ {(queryForm?.sysPageId && !accountCreateLogs?.every((item: any) => item.pageList?.length > 0)) && <>
|
|
|
+ <div>落地页名称:{get?.data?.pageName || ''}</div>
|
|
|
+ <div>分享名称:{get?.data?.shareContentSpec?.shareTitle || ''}</div>
|
|
|
+ <div>分享描述:{get?.data?.shareContentSpec?.shareDescription || ''}</div>
|
|
|
+ <div style={{ marginBottom: 10 }}>原生推广页顶部素材预览:
|
|
|
+ <div>{get?.data?.pageSpecsList[0]?.pageElementsSpecList?.filter((item: any, index: number) => index === 0)?.map((item: { elementType: 'TOP_IMAGE' | 'TOP_VIDEO' | 'TOP_SLIDER', topImageSpec: any, topSliderSpec: any, topVideoSpec: any }, index: number) => {
|
|
|
+ switch (item?.elementType) {
|
|
|
+ case 'TOP_IMAGE':
|
|
|
+ return <Image width={80} src={item.topImageSpec.imageUrl} style={{ borderRadius: 8, overflow: 'hidden' }} key={index} />
|
|
|
+ case 'TOP_SLIDER':
|
|
|
+ return <Space wrap key={index}>
|
|
|
+ {item?.topSliderSpec?.imageUrlList?.map((url: string, index: number) => <Image width={70} src={url} style={{ borderRadius: 8 }} key={'TOP_SLIDER' + index} />)}
|
|
|
+ </Space>
|
|
|
+ case 'TOP_VIDEO':
|
|
|
+ return <video src={item.topVideoSpec.videoUrl} width={150} controls key={index}></video>
|
|
|
+ }
|
|
|
+ })}</div>
|
|
|
+ </div>
|
|
|
+ </>}
|
|
|
+ {accountCreateLogs?.map((item: any, index: number) => {
|
|
|
+ if (item?.pageList && item?.pageList?.length > 0) {
|
|
|
+ return <div className={style.acc} key={index}>
|
|
|
+ <div className={style.accName} style={{ fontWeight: 800 }}>{item.adAccountId}</div>
|
|
|
+ {
|
|
|
+ item?.pageList?.map((pack: { pageName: string, type: string, id: number }, index1: number) => {
|
|
|
+ return <div className={style.accCon} key={pack.id}> <span className={style.title}>{pack.pageName}</span> <CloseOutlined className={style.close} onClick={() => {
|
|
|
+ pageDel(index)
|
|
|
+ }} /></div>
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ } else {
|
|
|
+ return null
|
|
|
+ }
|
|
|
+ })}
|
|
|
</> : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />}
|
|
|
</div>
|
|
|
</Spin>
|
|
@@ -516,6 +560,9 @@ const CreateAd: React.FC = () => {
|
|
|
<div className={style.bottom}>{queryForm?.sysAdcreativeId ? <>
|
|
|
{queryForm?.sysPageId && <Button type="link" onClick={() => { setLookVisible(true) }}>查看</Button>}
|
|
|
<Button type="link" onClick={() => { setSelectImgVisible(true) }}>{queryForm?.sysPageId ? '修改' : '选择落地页'}</Button>
|
|
|
+ {accountCreateLogs?.length > 0 ? <Button type="link" onClick={() => { setPageVisible(true) }}>云端落地页</Button> : <Tooltip title="请先选择媒体账户">
|
|
|
+ <Button type="link">云端落地页</Button>
|
|
|
+ </Tooltip>}
|
|
|
</> : <Tooltip title="请先设置创意">
|
|
|
<Button type="link"><span>选择落地页</span></Button>
|
|
|
</Tooltip>}
|
|
@@ -589,12 +636,14 @@ const CreateAd: React.FC = () => {
|
|
|
{idVisible && <IdModal visible={idVisible} data={accountCreateLogs} onClose={() => setIdVisible(false)} onChange={(e) => { setAccountCreateLogs(e); setSourceVisible(false); clearData() }} />}
|
|
|
{/* 选择定向包 */}
|
|
|
{cpVisible && <CrowdPackModal visible={cpVisible} data={accountCreateLogs} onClose={() => setCpVisible(false)} onChange={(e) => { setAccountCreateLogs(e); setCpVisible(false); clearData() }} />}
|
|
|
+ {/* 选择ADQ落地页 */}
|
|
|
+ {pageVisible && <PageModal visible={pageVisible} data={accountCreateLogs} onClose={() => setPageVisible(false)} onChange={(e) => { setAccountCreateLogs(e); setPageVisible(false); clearData() }} />}
|
|
|
{/* 选择素材 */}
|
|
|
{selectImgVisible && <SelectCloud visible={selectImgVisible} onClose={() => setSelectImgVisible(false)} onChange={setPage} isBack={false} />}
|
|
|
{/* 查看落地页 */}
|
|
|
{lookVisible && <LookLanding visible={lookVisible} onClose={() => setLookVisible(false)} id={queryForm?.sysPageId as any} />}
|
|
|
{/* 设置名称 */}
|
|
|
- {subVisible && <SubmitModal visible={subVisible} onClose={() => setSubVisible(false)} onChange={submit} ajax={createAdBatch} />}
|
|
|
+ {subVisible && <SubmitModal data={getSysAdgroups?.data} visible={subVisible} onClose={() => setSubVisible(false)} onChange={submit} ajax={createAdBatch} />}
|
|
|
</Space>
|
|
|
}
|
|
|
|