|
@@ -86,6 +86,9 @@ const Material: React.FC<Props> = (props) => {
|
|
|
case 'shortVideo1Url'://视频素材
|
|
|
data.short_video1 = item[key]
|
|
|
break;
|
|
|
+ case 'elementStory':
|
|
|
+ data.element_story = item[key].map((item: { imageUrl: string }) => item.imageUrl)
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
return data
|
|
@@ -99,10 +102,9 @@ const Material: React.FC<Props> = (props) => {
|
|
|
|
|
|
// 处理判断有哪些素材 展示按钮
|
|
|
useEffect(() => {
|
|
|
- console.log('material----->', material);
|
|
|
if (material?.length > 0) {
|
|
|
setVideoUploads(material?.find((item: { name: string }) => item.name === 'short_video1' || item.name === 'video'))
|
|
|
- setImgUploads(material?.find((item: { name: string }) => item.name === 'image' || item.name === 'image_list'))
|
|
|
+ setImgUploads(material?.find((item: { name: string }) => item.name === 'image' || item.name === 'image_list' || item.name === 'element_story'))
|
|
|
} else {
|
|
|
setVideoUploads({})
|
|
|
setImgUploads({})
|
|
@@ -128,6 +130,9 @@ const Material: React.FC<Props> = (props) => {
|
|
|
case 'short_video1'://视频素材
|
|
|
data.shortVideo1Url = item[key]
|
|
|
break;
|
|
|
+ case 'element_story':
|
|
|
+ data.elementStory = item[key].map((url: string) => ({ imageUrl: url }))
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
return data
|
|
@@ -145,7 +150,6 @@ const Material: React.FC<Props> = (props) => {
|
|
|
title={<>
|
|
|
<span>创意素材</span>
|
|
|
{videoUploads && Object.keys(videoUploads)?.length > 0 && <Button type="link" onClick={() => {
|
|
|
- console.log('videoUploads---->', videoUploads);
|
|
|
init({ mediaType: 'VIDEO', num: 100, cloudSize: adcreativeTemplateId === 1708 ? [[{ relation: '=', width: 1280, height: 720 }]] : [[{ relation: '=', width: videoUploads.restriction.videoRestriction.minWidth, height: videoUploads.restriction.videoRestriction.minHeight }]], maxSize: videoUploads.restriction.videoRestriction.fileSize * 1024 })
|
|
|
setMaterialConfig({
|
|
|
...materialConfig,
|
|
@@ -163,7 +167,7 @@ const Material: React.FC<Props> = (props) => {
|
|
|
setMaterialConfig({
|
|
|
...materialConfig,
|
|
|
type: imgUploads.name,
|
|
|
- max: imgUploads.name === 'image_list' ? imgUploads.arrayProperty.maxNumber : 1,
|
|
|
+ max: (imgUploads.name === 'image_list' || imgUploads.name === 'element_story') ? imgUploads.arrayProperty.maxNumber : 1,
|
|
|
index: 99999,
|
|
|
adcreativeTemplateId
|
|
|
})
|
|
@@ -273,6 +277,38 @@ const Material: React.FC<Props> = (props) => {
|
|
|
</div>
|
|
|
</Form.Item>
|
|
|
}
|
|
|
+ if (item.name === 'element_story') {
|
|
|
+ return <Form.Item
|
|
|
+ {...field}
|
|
|
+ label={<strong>{item.label}</strong>}
|
|
|
+ rules={[{ required: true, message: '请选择素材!' }]}
|
|
|
+ name={[field.name, item.name]}
|
|
|
+ key={index}
|
|
|
+ >
|
|
|
+ <div className={`${styles.box} ${item.arrayProperty.maxNumber >= 3 ? styles.image_list : styles.imageMater}`} style={item.arrayProperty.maxNumber >= 3 ? { flexFlow: 'row', width: '100%' } : {}} onClick={() => {
|
|
|
+ init({ mediaType: 'IMG', num: item.arrayProperty.maxNumber, cloudSize: [[{ relation: '=', width: item.restriction.imageRestriction.width, height: item.restriction.imageRestriction.height }]], maxSize: item.restriction.imageRestriction.fileSize * 1024 })
|
|
|
+ setMaterialConfig({
|
|
|
+ ...materialConfig,
|
|
|
+ type: item.name,
|
|
|
+ max: item.arrayProperty.maxNumber,
|
|
|
+ index: num,
|
|
|
+ adcreativeTemplateId
|
|
|
+ })
|
|
|
+ setTimeout(() => {
|
|
|
+ set_selectVideoVisible(true)
|
|
|
+ }, 100)
|
|
|
+ }}>
|
|
|
+ {Array(item.arrayProperty.maxNumber).fill('').map((arr, index1) => {
|
|
|
+ return <p key={index1} style={item.arrayProperty.maxNumber >= 3 ? { width: 130, height: 130 } : { width: 130, height: 130, justifyContent: 'center' }}>
|
|
|
+ {materials?.length > 0 && materials[num] && Object.keys(materials[num])?.includes(item.name) && materials[num][item.name][index1] ? <img style={item?.restriction.imageRestriction?.width > item?.restriction.imageRestriction?.height ? { width: '100%', height: 'auto' } : {}} src={materials[num][item.name][index1]} /> : <>
|
|
|
+ <span>{`推荐尺寸(${item.restriction.imageRestriction.width} x ${item.restriction.imageRestriction.height})`}</span>
|
|
|
+ <span>{`${item.restriction.imageRestriction.fileFormat?.map((str: any) => str?.replace('IMAGE_TYPE_', ''))};小于 ${item.restriction.imageRestriction.fileSize}KB`}</span>
|
|
|
+ </>}
|
|
|
+ </p>
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </Form.Item>
|
|
|
+ }
|
|
|
return null
|
|
|
|
|
|
})}
|
|
@@ -293,14 +329,15 @@ const Material: React.FC<Props> = (props) => {
|
|
|
{selectVideoVisible && <SelectCloud
|
|
|
visible={selectVideoVisible}
|
|
|
onClose={() => set_selectVideoVisible(false)}
|
|
|
- sliderImgContent={materialConfig.index === 99999 ? undefined : materialConfig.type === 'image_list'
|
|
|
- ? (materials[materialConfig.index] && Object.keys(materials[materialConfig.index])?.includes('image_list')) ? materials[materialConfig.index]['image_list']?.map((item: string) => ({ url: item })) : undefined
|
|
|
- : (materials[materialConfig.index] && Object.keys(materials[materialConfig.index])?.includes(materialConfig.type)) ? [{ url: materials[materialConfig.index][materialConfig.type] }] : undefined
|
|
|
+ sliderImgContent={materialConfig.index === 99999 ? undefined :
|
|
|
+ materialConfig.type === 'element_story' ? (materials[materialConfig.index] && Object.keys(materials[materialConfig.index])?.includes('element_story')) ? materials[materialConfig.index]['element_story']?.map((item: string) => ({ url: item })) : undefined :
|
|
|
+ materialConfig.type === 'image_list' ? (materials[materialConfig.index] && Object.keys(materials[materialConfig.index])?.includes('image_list')) ? materials[materialConfig.index]['image_list']?.map((item: string) => ({ url: item })) : undefined :
|
|
|
+ (materials[materialConfig.index] && Object.keys(materials[materialConfig.index])?.includes(materialConfig.type)) ? [{ url: materials[materialConfig.index][materialConfig.type] }] : undefined
|
|
|
}
|
|
|
onChange={(content: any) => {
|
|
|
if (content.length > 0) {
|
|
|
if (materialConfig.index === 99999) {
|
|
|
- if (materialConfig.type === 'image_list') {
|
|
|
+ if (materialConfig.type === 'image_list' || materialConfig.type === 'element_story') {
|
|
|
let urls = content?.map((item: any) => item?.url)
|
|
|
let max = materialConfig.max
|
|
|
let materialsNew = materials.map((item: any) => {
|
|
@@ -374,7 +411,7 @@ const Material: React.FC<Props> = (props) => {
|
|
|
} else {
|
|
|
materials = materials?.map((item: any, index: number) => {
|
|
|
if (materialConfig.index === index) {
|
|
|
- if (materialConfig.type === 'image_list') {
|
|
|
+ if (materialConfig.type === 'image_list' || materialConfig.type === 'element_story') {
|
|
|
if (item) {
|
|
|
item[materialConfig.type] = content?.map((item: any) => item?.url)
|
|
|
return { ...item }
|