|
@@ -1,12 +1,10 @@
|
|
-import { Button, Card, Checkbox, Divider, Empty, Modal, Popconfirm, Radio, Select, Space, Spin, Table, Tabs, Tag, Tooltip, message, notification } from "antd"
|
|
|
|
|
|
+import { Button, Card, Empty, Modal, Popconfirm, Radio, Space, Spin, Table, Tabs, Tag, message, notification } from "antd"
|
|
import React, { useEffect, useState } from "react"
|
|
import React, { useEffect, useState } from "react"
|
|
import style from './index.less'
|
|
import style from './index.less'
|
|
import '../index.less'
|
|
import '../index.less'
|
|
-import Selector from "@/pages/launchSystemNew/launchManage/createAd/selector"
|
|
|
|
import { CheckOutlined, SearchOutlined } from "@ant-design/icons"
|
|
import { CheckOutlined, SearchOutlined } from "@ant-design/icons"
|
|
import Ad from "./Ad"
|
|
import Ad from "./Ad"
|
|
import Target from "./Target"
|
|
import Target from "./Target"
|
|
-import { getAccountListApi, getGroupListApi } from "@/services/launchAdq/subgroup"
|
|
|
|
import { useAjax } from "@/Hook/useAjax"
|
|
import { useAjax } from "@/Hook/useAjax"
|
|
import { useModel } from "umi"
|
|
import { useModel } from "umi"
|
|
import GoodsModal from "../../components/GoodsModal"
|
|
import GoodsModal from "../../components/GoodsModal"
|
|
@@ -27,6 +25,7 @@ import ConversionSelect from "../../components/ConversionSelect"
|
|
import VideoChannel from "../../components/VideoChannel"
|
|
import VideoChannel from "../../components/VideoChannel"
|
|
import Save from "./Save"
|
|
import Save from "./Save"
|
|
import { useLocalStorageState } from "ahooks"
|
|
import { useLocalStorageState } from "ahooks"
|
|
|
|
+import SelectAccount from "./SelectAccount"
|
|
|
|
|
|
export const DispatchAddelivery = React.createContext<PULLIN.DispatchAddelivery | null>(null);
|
|
export const DispatchAddelivery = React.createContext<PULLIN.DispatchAddelivery | null>(null);
|
|
|
|
|
|
@@ -38,12 +37,10 @@ const Create: React.FC = () => {
|
|
|
|
|
|
/*******************************************/
|
|
/*******************************************/
|
|
const { initialState } = useModel('@@initialState');
|
|
const { initialState } = useModel('@@initialState');
|
|
- const { getAllUserAccount } = useModel('useLaunchAdq.useAdAuthorize')
|
|
|
|
const { initTargeting } = useModel('useLaunchV3.useTargeting')
|
|
const { initTargeting } = useModel('useLaunchV3.useTargeting')
|
|
const [addelivery, setAddelivery] = useState<PULLIN.AddeliveryProps>({ adgroups: {}, targeting: [], dynamic: {}, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {}, mediaType: 0 })
|
|
const [addelivery, setAddelivery] = useState<PULLIN.AddeliveryProps>({ adgroups: {}, targeting: [], dynamic: {}, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {}, mediaType: 0 })
|
|
const { marketingAssetOuterSpec, marketingCarrierType, marketingGoal, marketingSubGoal, siteSet, automaticSiteEnabled, sceneSpec, isConversion } = addelivery.adgroups
|
|
const { marketingAssetOuterSpec, marketingCarrierType, marketingGoal, marketingSubGoal, siteSet, automaticSiteEnabled, sceneSpec, isConversion } = addelivery.adgroups
|
|
const { deliveryMode, creativeTemplateId, creativeComponents } = addelivery.dynamic
|
|
const { deliveryMode, creativeTemplateId, creativeComponents } = addelivery.dynamic
|
|
- const [accSearch, setAccSearch] = useState<string>()
|
|
|
|
const [accountCreateLogs, setAccountCreateLogs] = useState<PULLIN.AccountCreateLogsProps[]>([]) // 账户
|
|
const [accountCreateLogs, setAccountCreateLogs] = useState<PULLIN.AccountCreateLogsProps[]>([]) // 账户
|
|
const [goodsVisible, setGoodsVisible] = useState<boolean>(false) // 选择小说弹窗控制
|
|
const [goodsVisible, setGoodsVisible] = useState<boolean>(false) // 选择小说弹窗控制
|
|
const [wechatVisible, setWechatVisible] = useState<boolean>(false) // 选择微信公众号弹窗控制
|
|
const [wechatVisible, setWechatVisible] = useState<boolean>(false) // 选择微信公众号弹窗控制
|
|
@@ -62,8 +59,8 @@ const Create: React.FC = () => {
|
|
const [putInTypeList, setPutInTypeList] = useState<{ label: string, value: string }[]>([])
|
|
const [putInTypeList, setPutInTypeList] = useState<{ label: string, value: string }[]>([])
|
|
const [putInType, setPutInType] = useLocalStorageState<'NOVEL' | 'GAME'>('PUTINTYPE');
|
|
const [putInType, setPutInType] = useLocalStorageState<'NOVEL' | 'GAME'>('PUTINTYPE');
|
|
const [copyTask, setCopyTask] = useState<{ copyTaskId?: number, uuid?: string }>({})
|
|
const [copyTask, setCopyTask] = useState<{ copyTaskId?: number, uuid?: string }>({})
|
|
|
|
+ const [ownerAccountId, setOwnerAccountId] = useState<number>()
|
|
|
|
|
|
- const getGroupList = useAjax(() => getGroupListApi())
|
|
|
|
const createAdgroupTask = useAjax((params) => createAdgroupTaskApi(params))
|
|
const createAdgroupTask = useAjax((params) => createAdgroupTaskApi(params))
|
|
const getSelectTaskDetail = useAjax((params) => getSelectTaskDetailApi(params))
|
|
const getSelectTaskDetail = useAjax((params) => getSelectTaskDetailApi(params))
|
|
const getCreativeDetails = useAjax((params) => getCreativeDetailsApi(params))
|
|
const getCreativeDetails = useAjax((params) => getCreativeDetailsApi(params))
|
|
@@ -90,10 +87,6 @@ const Create: React.FC = () => {
|
|
}, [initialState?.menu])
|
|
}, [initialState?.menu])
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
- // 获取账户组
|
|
|
|
- getGroupList.run()
|
|
|
|
- // 获取账户列表
|
|
|
|
- getAllUserAccount.run()
|
|
|
|
initTargeting()
|
|
initTargeting()
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
@@ -145,33 +138,6 @@ const Create: React.FC = () => {
|
|
}
|
|
}
|
|
}, [creativeTemplateId, deliveryMode, marketingGoal, marketingAssetOuterSpec, marketingCarrierType, siteSet, sceneSpec?.wechatPosition, automaticSiteEnabled, putInType])
|
|
}, [creativeTemplateId, deliveryMode, marketingGoal, marketingAssetOuterSpec, marketingCarrierType, siteSet, sceneSpec?.wechatPosition, automaticSiteEnabled, putInType])
|
|
|
|
|
|
- /** 获取分组里账号 */
|
|
|
|
- const getGroupAccountList = (ids: number[]) => {
|
|
|
|
- if (ids.length > 0) {
|
|
|
|
- let data = ids.map(id => getAccountListApi(id))
|
|
|
|
- Promise.all(data).then(res => {
|
|
|
|
- if (res?.length > 0 && res.every((item: { code: number }) => item.code === 200)) {
|
|
|
|
- let userArr: any[] = []
|
|
|
|
- res.forEach((item: { data: { adAccountList: { accountId: number, id: number }[] } }) => {
|
|
|
|
- item.data.adAccountList.forEach(acc => {
|
|
|
|
- let obj = userArr.find((item: { accountId: number }) => item.accountId === acc.accountId)
|
|
|
|
- if (!obj) {
|
|
|
|
- userArr.push(acc)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- })
|
|
|
|
- setAccountCreateLogs(userArr?.filter((item: any) => putInType === 'NOVEL' ? ['NOVEL', 'NOVEL_IAA'].includes(item.adUnitType) : putInType === 'GAME' ? ['GAME', 'GAME_IAA'].includes(item.adUnitType) : false)?.map((item) => ({ accountId: item?.accountId })))
|
|
|
|
- clearData()
|
|
|
|
- setAddelivery({ adgroups: {}, targeting: [], dynamic: {}, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {}, mediaType: 0 })
|
|
|
|
- } else {
|
|
|
|
- message.error('操作异常')
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- } else {
|
|
|
|
- setAccountCreateLogs([])
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/** 存为预设 */
|
|
/** 存为预设 */
|
|
const severBd = () => {
|
|
const severBd = () => {
|
|
if (putInType) {
|
|
if (putInType) {
|
|
@@ -236,15 +202,15 @@ const Create: React.FC = () => {
|
|
let { type, valueJson } = item[0]
|
|
let { type, valueJson } = item[0]
|
|
let value = JSON.parse(valueJson).value
|
|
let value = JSON.parse(valueJson).value
|
|
if (type === 'image') {
|
|
if (type === 'image') {
|
|
- return { image_id: { id: value.imageId, url: value.imageUrl, materialType: value.materialType } }
|
|
|
|
|
|
+ return { image_id: { id: value.imageId, url: value.imageUrl, materialType: value.materialType, accountId: value?.accountId } }
|
|
} else if (type === 'image_list' || type === 'element_story') {
|
|
} else if (type === 'image_list' || type === 'element_story') {
|
|
- return { [type]: value.list.map((l: { imageUrl: any; imageId: any; materialType: any }) => ({ url: l.imageUrl, id: l.imageId, materialType: l.materialType })) }
|
|
|
|
|
|
+ return { [type]: value.list.map((l: { imageUrl: any; imageId: any; materialType: any, accountId: any }) => ({ url: l.imageUrl, id: l.imageId, materialType: l.materialType, accountId: l?.accountId })) }
|
|
} else if (type === 'short_video' || type === 'video') {
|
|
} else if (type === 'short_video' || type === 'video') {
|
|
let field = type === 'video' ? 'video_id' : 'short_video1'
|
|
let field = type === 'video' ? 'video_id' : 'short_video1'
|
|
let videoData: any = {}
|
|
let videoData: any = {}
|
|
- videoData[field] = { materialType: value.materialType, url: value.videoUrl, id: value.videoId }
|
|
|
|
|
|
+ videoData[field] = { materialType: value.materialType, url: value.videoUrl, id: value.videoId, keyFrameImageUrl: value?.keyFrameImageUrl, accountId: value?.accountId }
|
|
if (value.imageUrl) {
|
|
if (value.imageUrl) {
|
|
- videoData['cover_id'] = { materialType: value.materialCoverType, url: value.imageUrl, id: value.iamgeId }
|
|
|
|
|
|
+ videoData['cover_id'] = { materialType: value.materialCoverType, url: value.imageUrl, id: value.iamgeId, accountId: value?.accountId }
|
|
}
|
|
}
|
|
return videoData
|
|
return videoData
|
|
} else {
|
|
} else {
|
|
@@ -258,11 +224,11 @@ const Create: React.FC = () => {
|
|
let { type, valueJson } = i
|
|
let { type, valueJson } = i
|
|
let value = JSON.parse(valueJson).value
|
|
let value = JSON.parse(valueJson).value
|
|
if (type === 'image') {
|
|
if (type === 'image') {
|
|
- return { id: value.imageId, url: value.imageUrl, materialType: value.materialType }
|
|
|
|
|
|
+ return { id: value.imageId, url: value.imageUrl, materialType: value.materialType, accountId: value?.accountId }
|
|
} else if (type === 'image_list') {
|
|
} else if (type === 'image_list') {
|
|
- return value.list.map((l: { imageUrl: any; imageId: any; materialType: any }) => ({ url: l.imageUrl, id: l.imageId, materialType: l.materialType }))
|
|
|
|
|
|
+ return value.list.map((l: { imageUrl: any; imageId: any; materialType: any, accountId: any }) => ({ url: l.imageUrl, id: l.imageId, materialType: l.materialType, accountId: l?.accountId }))
|
|
} else if (type === 'video') {
|
|
} else if (type === 'video') {
|
|
- return { materialType: value.materialType, url: value.videoUrl, id: value.videoId }
|
|
|
|
|
|
+ return { materialType: value.materialType, url: value.videoUrl, id: value.videoId, keyFrameImageUrl: value?.keyFrameImageUrl, accountId: value?.accountId }
|
|
} else {
|
|
} else {
|
|
return {}
|
|
return {}
|
|
}
|
|
}
|
|
@@ -702,7 +668,8 @@ const Create: React.FC = () => {
|
|
value: {
|
|
value: {
|
|
imageUrl: item?.image_id?.url,
|
|
imageUrl: item?.image_id?.url,
|
|
imageId: item?.image_id?.id,
|
|
imageId: item?.image_id?.id,
|
|
- materialType: item?.image_id?.materialType
|
|
|
|
|
|
+ materialType: item?.image_id?.materialType,
|
|
|
|
+ accountId: item?.image_id?.accountId
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}]
|
|
}]
|
|
@@ -715,7 +682,8 @@ const Create: React.FC = () => {
|
|
return {
|
|
return {
|
|
imageUrl: l?.url,
|
|
imageUrl: l?.url,
|
|
imageId: l?.id,
|
|
imageId: l?.id,
|
|
- materialType: l?.materialType
|
|
|
|
|
|
+ materialType: l?.materialType,
|
|
|
|
+ accountId: l?.accountId
|
|
}
|
|
}
|
|
})
|
|
})
|
|
return [{
|
|
return [{
|
|
@@ -730,12 +698,15 @@ const Create: React.FC = () => {
|
|
let value: any = {
|
|
let value: any = {
|
|
materialType: item?.video_id?.materialType || item?.short_video1?.materialType || 0,
|
|
materialType: item?.video_id?.materialType || item?.short_video1?.materialType || 0,
|
|
videoUrl: item?.video_id?.url || item?.short_video1?.url,
|
|
videoUrl: item?.video_id?.url || item?.short_video1?.url,
|
|
- videoId: item?.video_id?.id || item?.short_video1?.id
|
|
|
|
|
|
+ videoId: item?.video_id?.id || item?.short_video1?.id,
|
|
|
|
+ keyFrameImageUrl: item?.video_id?.keyFrameImageUrl || item?.short_video1?.keyFrameImageUrl,
|
|
|
|
+ accountId: item?.video_id?.accountId || item?.short_video1?.accountId,
|
|
}
|
|
}
|
|
if (item?.cover_id?.url) {
|
|
if (item?.cover_id?.url) {
|
|
value.imageUrl = item?.cover_id?.url
|
|
value.imageUrl = item?.cover_id?.url
|
|
value.imageId = item?.cover_id?.id
|
|
value.imageId = item?.cover_id?.id
|
|
value.materialCoverType = item?.cover_id?.materialType
|
|
value.materialCoverType = item?.cover_id?.materialType
|
|
|
|
+ value.accountId = item?.cover_id?.accountId
|
|
}
|
|
}
|
|
return [{
|
|
return [{
|
|
type: mType,
|
|
type: mType,
|
|
@@ -763,20 +734,23 @@ const Create: React.FC = () => {
|
|
return {
|
|
return {
|
|
imageUrl: i?.url,
|
|
imageUrl: i?.url,
|
|
imageId: i?.id,
|
|
imageId: i?.id,
|
|
- materialType: i?.materialType
|
|
|
|
|
|
+ materialType: i?.materialType,
|
|
|
|
+ accountId: i?.accountId
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
- } else if (l?.url?.includes('mp4')) {
|
|
|
|
|
|
+ } else if (l?.url?.includes('mp4') || l?.keyFrameImageUrl) {
|
|
return {
|
|
return {
|
|
type: 'video',
|
|
type: 'video',
|
|
valueJson: JSON.stringify({
|
|
valueJson: JSON.stringify({
|
|
value: {
|
|
value: {
|
|
materialType: l?.materialType,
|
|
materialType: l?.materialType,
|
|
videoUrl: l?.url,
|
|
videoUrl: l?.url,
|
|
- videoId: l?.id
|
|
|
|
|
|
+ videoId: l?.id,
|
|
|
|
+ keyFrameImageUrl: l?.keyFrameImageUrl,
|
|
|
|
+ accountId: l?.accountId
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -787,7 +761,8 @@ const Create: React.FC = () => {
|
|
value: {
|
|
value: {
|
|
imageUrl: l?.url,
|
|
imageUrl: l?.url,
|
|
imageId: l?.id,
|
|
imageId: l?.id,
|
|
- materialType: l?.materialType
|
|
|
|
|
|
+ materialType: l?.materialType,
|
|
|
|
+ accountId: l?.accountId
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -885,83 +860,23 @@ const Create: React.FC = () => {
|
|
className={style.createAd}
|
|
className={style.createAd}
|
|
>
|
|
>
|
|
<Space wrap>
|
|
<Space wrap>
|
|
- <Selector label="媒体账户组">
|
|
|
|
- <Select
|
|
|
|
- mode="multiple"
|
|
|
|
- style={{ minWidth: 200 }}
|
|
|
|
- placeholder="快捷选择媒体账户组"
|
|
|
|
- maxTagCount={1}
|
|
|
|
- allowClear
|
|
|
|
- bordered={false}
|
|
|
|
- filterOption={(input: any, option: any) => {
|
|
|
|
- return option!.children?.toString().toLowerCase().includes(input.toLowerCase())
|
|
|
|
- }}
|
|
|
|
- onChange={(e) => { getGroupAccountList(e) }}
|
|
|
|
- >
|
|
|
|
- {getGroupList?.data && getGroupList?.data?.map((item: any) => <Select.Option value={item.groupId} key={item.groupId}>{item.groupName}</Select.Option>)}
|
|
|
|
- </Select>
|
|
|
|
- </Selector>
|
|
|
|
- <Selector label="媒体账户">
|
|
|
|
- <Select
|
|
|
|
- mode="multiple"
|
|
|
|
- style={{ minWidth: 200, maxWidth: 500 }}
|
|
|
|
- placeholder="媒体账户(多个,,空格换行)"
|
|
|
|
- maxTagCount={1}
|
|
|
|
- allowClear
|
|
|
|
- bordered={false}
|
|
|
|
- maxTagPlaceholder={
|
|
|
|
- <Tooltip
|
|
|
|
- color="#FFF"
|
|
|
|
- title={<span style={{ color: '#000' }}>
|
|
|
|
- {accountCreateLogs?.filter((item, index) => index !== 0)
|
|
|
|
- ?.map((item, index) => <Tag
|
|
|
|
- key={index}
|
|
|
|
- closable
|
|
|
|
- onClose={() => {
|
|
|
|
- setAccountCreateLogs(accountCreateLogs?.filter(item1 => item1.accountId !== item.accountId))
|
|
|
|
- }}
|
|
|
|
- >{item.accountId}</Tag>)}</span>
|
|
|
|
- }
|
|
|
|
- >
|
|
|
|
- <span>+{accountCreateLogs?.length > 1 ? accountCreateLogs.length - 1 : 0}</span>
|
|
|
|
- </Tooltip>
|
|
|
|
|
|
+ <SelectAccount
|
|
|
|
+ setAccountCreateLogs={setAccountCreateLogs}
|
|
|
|
+ accountCreateLogs={accountCreateLogs}
|
|
|
|
+ setOwnerAccountId={setOwnerAccountId}
|
|
|
|
+ ownerAccountId={ownerAccountId}
|
|
|
|
+ putInType={putInType}
|
|
|
|
+ onChange={(e, isClear) => {
|
|
|
|
+ clearData()
|
|
|
|
+ setAccountCreateLogs(e?.map((item: any) => ({ accountId: item.accountId })) || [])
|
|
|
|
+ if (isClear) {
|
|
|
|
+ setAddelivery({ ...addelivery, dynamicMaterialDTos: {} })
|
|
}
|
|
}
|
|
- autoClearSearchValue={false}
|
|
|
|
- filterOption={(input: any, option: any) => {
|
|
|
|
- let newInput: string[] = input ? input?.split(/[,,\n\s]+/ig).filter((item: any) => item) : []
|
|
|
|
- return newInput?.some(val => option!.children?.toString().toLowerCase()?.includes(val))
|
|
|
|
- }}
|
|
|
|
- value={accountCreateLogs?.map(item => item?.accountId)}
|
|
|
|
- onChange={(e) => {
|
|
|
|
- setAccountCreateLogs(e?.map((item: any) => ({ accountId: item })))
|
|
|
|
- }}
|
|
|
|
- searchValue={accSearch}
|
|
|
|
- onSearch={(val) => {
|
|
|
|
- setAccSearch(val)
|
|
|
|
- }}
|
|
|
|
- dropdownRender={menu => (
|
|
|
|
- <>
|
|
|
|
- {menu}
|
|
|
|
- <Divider style={{ margin: '8px 0' }} />
|
|
|
|
- <Space style={{ padding: '0 8px 4px' }}>
|
|
|
|
- <Checkbox onChange={(e) => {
|
|
|
|
- let data = []
|
|
|
|
- if (e.target.checked) {
|
|
|
|
- data = JSON.parse(JSON.stringify(getAllUserAccount?.data?.data?.filter((item: any) => putInType === 'NOVEL' ? ['NOVEL', 'NOVEL_IAA'].includes(item.adUnitType) : putInType === 'GAME' ? ['GAME', 'GAME_IAA'].includes(item.adUnitType) : false)))
|
|
|
|
- if (accSearch) {
|
|
|
|
- let newAccSearch = accSearch?.split(/[,,\n\s]+/ig).filter((item: any) => item)
|
|
|
|
- data = data?.filter((item: any) => newAccSearch?.some(val => item!.accountId?.toString().toLowerCase()?.includes(val)))
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- setAccountCreateLogs(data?.map((item: any) => ({ accountId: item?.accountId })))
|
|
|
|
- }}>全选</Checkbox>
|
|
|
|
- </Space>
|
|
|
|
- </>
|
|
|
|
- )}
|
|
|
|
- >
|
|
|
|
- {getAllUserAccount?.data?.data?.filter((item: any) => putInType === 'NOVEL' ? ['NOVEL', 'NOVEL_IAA'].includes(item.adUnitType) : putInType === 'GAME' ? ['GAME', 'GAME_IAA'].includes(item.adUnitType) : false)?.map((item: any) => <Select.Option value={item.accountId} key={item.id}>{item.remark ? item.accountId + '_' + item.remark : item.accountId}</Select.Option>)}
|
|
|
|
- </Select>
|
|
|
|
- </Selector>
|
|
|
|
|
|
+ }}
|
|
|
|
+ dynamicGroup={addelivery?.dynamicMaterialDTos?.dynamicGroup}
|
|
|
|
+ deliveryMode={deliveryMode}
|
|
|
|
+ mType={Object.keys(materialData)[0]}
|
|
|
|
+ />
|
|
|
|
|
|
{accountCreateLogs?.length > 0 && <>
|
|
{accountCreateLogs?.length > 0 && <>
|
|
{['MARKETING_TARGET_TYPE_FICTION', 'MARKETING_TARGET_TYPE_SHORT_DRAMA'].includes(marketingAssetOuterSpec?.marketingTargetType) && <Button type="primary" danger={!accountCreateLogs?.some(item => item?.productList?.length)} onClick={() => { setGoodsVisible(true) }}>{accountCreateLogs?.some(item => item?.productList?.length) ? <>重新选择{marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_FICTION' ? '小说' : '短剧'} <CheckOutlined style={{ color: '#FFFFFF' }} /></> : `请选择${marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_FICTION' ? '小说' : '短剧'}`}</Button>}
|
|
{['MARKETING_TARGET_TYPE_FICTION', 'MARKETING_TARGET_TYPE_SHORT_DRAMA'].includes(marketingAssetOuterSpec?.marketingTargetType) && <Button type="primary" danger={!accountCreateLogs?.some(item => item?.productList?.length)} onClick={() => { setGoodsVisible(true) }}>{accountCreateLogs?.some(item => item?.productList?.length) ? <>重新选择{marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_FICTION' ? '小说' : '短剧'} <CheckOutlined style={{ color: '#FFFFFF' }} /></> : `请选择${marketingAssetOuterSpec?.marketingTargetType === 'MARKETING_TARGET_TYPE_FICTION' ? '小说' : '短剧'}`}</Button>}
|
|
@@ -988,7 +903,7 @@ const Create: React.FC = () => {
|
|
textData,
|
|
textData,
|
|
setTextData,
|
|
setTextData,
|
|
clearData,
|
|
clearData,
|
|
- putInType
|
|
|
|
|
|
+ putInType,
|
|
}}>
|
|
}}>
|
|
<div className={style.settingsBody_content_right}>
|
|
<div className={style.settingsBody_content_right}>
|
|
{/* 广告信息 */}
|
|
{/* 广告信息 */}
|