|
@@ -162,7 +162,7 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
|
|
|
labelAlign='left'
|
|
|
layout="vertical"
|
|
|
colon={false}
|
|
|
- style={{ backgroundColor: '#f1f4fc', maxHeight: 650, overflow: 'hidden', overflowY: 'auto', padding: '0 10px 10px', borderRadius: '0 0 8px 8px' }}
|
|
|
+ style={{ backgroundColor: '#f1f4fc', maxHeight: 650, overflow: 'hidden', overflowY: 'auto', padding: 10, borderRadius: '0 0 8px 8px' }}
|
|
|
scrollToFirstError={{
|
|
|
behavior: 'smooth',
|
|
|
block: 'center'
|
|
@@ -177,108 +177,80 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
|
|
|
>
|
|
|
<Form.List name="dynamicGroup">
|
|
|
{(fields, { add, remove }) => (<>
|
|
|
- {fields.map((field, num) => (<Card
|
|
|
- title={<Space>
|
|
|
- <strong style={{ fontSize: 18 }}>创意组{num + 1}</strong>
|
|
|
- {deliveryMode === 'DELIVERY_MODE_COMPONENT' && <>
|
|
|
- <Dropdown
|
|
|
- overlay={<Menu>
|
|
|
- <Menu.Item onClick={() => { console.log('添加9:16视频') }}>添加9:16视频</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('添加16:9视频') }}>添加16:9视频</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('添加9:16(720*1280)图片') }}>添加9:16(720*1280)图片</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('添加16:9(1280*720)图片') }}>添加16:9(1280*720)图片</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('添加1:1(800*800)图片') }}>添加1:1(800*800)图片</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('添加20:7(960*334)图片') }}>添加20:7(960*334)图片</Menu.Item>
|
|
|
- <Menu.Item onClick={() => {
|
|
|
- init({ mediaType: 'IMG', num: 15, cloudSize: [[
|
|
|
- { relation: '=', width: 800, height: 800 },
|
|
|
- { relation: '=', width: 1280, height: 720 },
|
|
|
- { relation: '=', width: 720, height: 1280 },
|
|
|
- { relation: '=', width: 960, height: 334 },
|
|
|
- { relation: '=', width: 480, height: 320 },
|
|
|
- ]], maxSize: 400 * 1024 })
|
|
|
- setMaterialConfig({
|
|
|
- ...materialConfig,
|
|
|
- type: 'image',
|
|
|
- max: 15,
|
|
|
- index: 99999,
|
|
|
- adcreativeTemplateId: creativeTemplateId
|
|
|
- })
|
|
|
- setTimeout(() => {
|
|
|
- setSelectVideoVisible(true)
|
|
|
- }, 100)
|
|
|
- }}>添加3:2(480*320)图片</Menu.Item>
|
|
|
- </Menu>}
|
|
|
- placement="bottomLeft"
|
|
|
- arrow
|
|
|
- >
|
|
|
- <Button type="primary">添加图片/视频</Button>
|
|
|
- </Dropdown>
|
|
|
- <Dropdown
|
|
|
- overlay={<Menu>
|
|
|
- <Menu.Item onClick={() => { console.log('1:1 六图') }}>1:1 六图</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('1:1 三图') }}>1:1 三图</Menu.Item>
|
|
|
- <Menu.Item onClick={() => { console.log('1:1 四图') }}>1:1 四图</Menu.Item>
|
|
|
- </Menu>}
|
|
|
- placement="bottomLeft"
|
|
|
- arrow
|
|
|
- >
|
|
|
- <Button type="primary">上传组图</Button>
|
|
|
- </Dropdown>
|
|
|
- </>}
|
|
|
- </Space>}
|
|
|
- className="cardResetCss"
|
|
|
- key={field.key}
|
|
|
- style={{ marginTop: 10, marginBottom: 10 }}
|
|
|
- >
|
|
|
- <Space size={30} style={{ width: '100%' }} className={styles.space}>
|
|
|
- {deliveryMode === 'DELIVERY_MODE_CUSTOMIZE' ? Object.keys(materialData)?.map(key => {
|
|
|
- let m = materialData[key]
|
|
|
- let children = m.children
|
|
|
-
|
|
|
- return Object.keys(children).map(k => {
|
|
|
- let item = children[k]
|
|
|
- if (k === 'short_video1' || k === 'video_id') {
|
|
|
- return <Form.Item
|
|
|
- {...field}
|
|
|
- label={<strong>{item.description}</strong>}
|
|
|
- rules={[{ required: true, message: '请选择素材!' }]}
|
|
|
- name={[field.name, item.name]}
|
|
|
- key={k}
|
|
|
- >
|
|
|
- <div className={`${styles.box} ${styles.video}`} style={{ width: 300, height: 160 }} onClick={() => {
|
|
|
- init({ mediaType: 'VIDEO', cloudSize: creativeTemplateId === 1708 ? [[{ relation: '=', width: 1280, height: 720 }]] : [[{ relation: '=', width: item.restriction.videoRestriction.minWidth, height: item.restriction.videoRestriction.minHeight }]], maxSize: item.restriction.videoRestriction.fileSize * 1024 })
|
|
|
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: 10 }}>
|
|
|
+ {fields.map((field, num) => (<Card
|
|
|
+ title={<Space>
|
|
|
+ <strong style={{ fontSize: 18 }}>创意组{num + 1}</strong>
|
|
|
+ {deliveryMode === 'DELIVERY_MODE_COMPONENT' && <>
|
|
|
+ <Dropdown
|
|
|
+ overlay={<Menu>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加9:16视频') }}>添加9:16视频</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加16:9视频') }}>添加16:9视频</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加9:16(720*1280)图片') }}>添加9:16(720*1280)图片</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加16:9(1280*720)图片') }}>添加16:9(1280*720)图片</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加1:1(800*800)图片') }}>添加1:1(800*800)图片</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('添加20:7(960*334)图片') }}>添加20:7(960*334)图片</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => {
|
|
|
+ init({
|
|
|
+ mediaType: 'IMG', num: 15, cloudSize: [[
|
|
|
+ { relation: '=', width: 800, height: 800 },
|
|
|
+ { relation: '=', width: 1280, height: 720 },
|
|
|
+ { relation: '=', width: 720, height: 1280 },
|
|
|
+ { relation: '=', width: 960, height: 334 },
|
|
|
+ { relation: '=', width: 480, height: 320 },
|
|
|
+ ]], maxSize: 400 * 1024
|
|
|
+ })
|
|
|
setMaterialConfig({
|
|
|
...materialConfig,
|
|
|
- type: item.name,
|
|
|
- max: 1,
|
|
|
- index: num,
|
|
|
+ type: 'image',
|
|
|
+ max: 15,
|
|
|
+ index: 99999,
|
|
|
adcreativeTemplateId: creativeTemplateId
|
|
|
})
|
|
|
setTimeout(() => {
|
|
|
setSelectVideoVisible(true)
|
|
|
}, 100)
|
|
|
- }}>
|
|
|
- <div className={styles.p}>
|
|
|
- {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(item.name) ? <VideoNews src={dynamicGroup[num][item.name]['url']} style={{ display: 'block', width: 'auto', margin: 0, height: '100%' }} maskImgStyle={{ position: 'absolute', top: '50%', left: '50%', width: 40, height: 40, transform: 'translate(-50%, -50%)', zIndex: 10 }} /> : <>
|
|
|
- <span>{`推荐尺寸(${creativeTemplateId === 1708 ? 1280 : item.restriction.videoRestriction.minWidth} x ${creativeTemplateId === 1708 ? 720 : item.restriction.videoRestriction.minHeight})`}</span>
|
|
|
- <span>{`${item.restriction.videoRestriction.fileFormat?.map((str: any) => str?.replace('MEDIA_TYPE_', ''))};< ${item.restriction.videoRestriction.fileSize / 1024}M;时长 ≥ ${item.restriction.videoRestriction.minDuration}s,≤ ${item.restriction.videoRestriction.maxDuration}s,必须带有声音`}</span>
|
|
|
- </>}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </Form.Item>
|
|
|
- }
|
|
|
- if (item.name === 'image_id' || item.name === 'cover_id') {
|
|
|
- return <Form.Item
|
|
|
- {...field}
|
|
|
- label={<strong>{item.description}</strong>}
|
|
|
- rules={[{ required: true, message: '请选择素材!' }]}
|
|
|
- name={[field.name, item.name]}
|
|
|
- key={key}
|
|
|
- >
|
|
|
- <Space align="end">
|
|
|
- <div className={`${styles.box} ${styles.image}`} style={{ width: 300, height: 160 }} onClick={() => {
|
|
|
- init({ mediaType: 'IMG', cloudSize: [[{ relation: '=', width: item.restriction.imageRestriction.width, height: item.restriction.imageRestriction.height }]], maxSize: item.restriction.imageRestriction.fileSize * 1024 })
|
|
|
+ }}>添加3:2(480*320)图片</Menu.Item>
|
|
|
+ </Menu>}
|
|
|
+ placement="bottomLeft"
|
|
|
+ arrow
|
|
|
+ >
|
|
|
+ <Button type="primary">添加图片/视频</Button>
|
|
|
+ </Dropdown>
|
|
|
+ <Dropdown
|
|
|
+ overlay={<Menu>
|
|
|
+ <Menu.Item onClick={() => { console.log('1:1 六图') }}>1:1 六图</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('1:1 三图') }}>1:1 三图</Menu.Item>
|
|
|
+ <Menu.Item onClick={() => { console.log('1:1 四图') }}>1:1 四图</Menu.Item>
|
|
|
+ </Menu>}
|
|
|
+ placement="bottomLeft"
|
|
|
+ arrow
|
|
|
+ >
|
|
|
+ <Button type="primary">上传组图</Button>
|
|
|
+ </Dropdown>
|
|
|
+ </>}
|
|
|
+ </Space>}
|
|
|
+ className="cardResetCss"
|
|
|
+ key={field.key}
|
|
|
+ style={{ width: ([641, 642, 643, 720, 721, 722, 1529, 618].includes(creativeTemplateId) || dynamicGroup?.length === 1) ? '100%' : '49%' }}
|
|
|
+ >
|
|
|
+ <Space size={30} style={{ width: '100%' }} className={styles.space}>
|
|
|
+ {deliveryMode === 'DELIVERY_MODE_CUSTOMIZE' ? Object.keys(materialData)?.map(key => {
|
|
|
+ let m = materialData[key]
|
|
|
+ let children = m.children
|
|
|
+
|
|
|
+ return Object.keys(children).map(k => {
|
|
|
+ let item = children[k]
|
|
|
+ if (k === 'short_video1' || k === 'video_id') {
|
|
|
+ return <Form.Item
|
|
|
+ {...field}
|
|
|
+ label={<strong>{item.description}</strong>}
|
|
|
+ rules={[{ required: true, message: '请选择素材!' }]}
|
|
|
+ name={[field.name, item.name]}
|
|
|
+ key={k}
|
|
|
+ >
|
|
|
+ <div className={`${styles.box} ${styles.video}`} style={{ width: 300, height: 160 }} onClick={() => {
|
|
|
+ init({ mediaType: 'VIDEO', cloudSize: creativeTemplateId === 1708 ? [[{ relation: '=', width: 1280, height: 720 }]] : [[{ relation: '=', width: item.restriction.videoRestriction.minWidth, height: item.restriction.videoRestriction.minHeight }]], maxSize: item.restriction.videoRestriction.fileSize * 1024 })
|
|
|
setMaterialConfig({
|
|
|
...materialConfig,
|
|
|
type: item.name,
|
|
@@ -290,75 +262,107 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
|
|
|
setSelectVideoVisible(true)
|
|
|
}, 100)
|
|
|
}}>
|
|
|
- <p>
|
|
|
- {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(item.name) ? <img src={dynamicGroup[num][item.name]['url']} /> : <>
|
|
|
- <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>
|
|
|
+ <div className={styles.p}>
|
|
|
+ {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(item.name) ? <VideoNews src={dynamicGroup[num][item.name]['url']} style={{ display: 'block', width: 'auto', margin: 0, height: '100%' }} maskImgStyle={{ position: 'absolute', top: '50%', left: '50%', width: 40, height: 40, transform: 'translate(-50%, -50%)', zIndex: 10 }} /> : <>
|
|
|
+ <span>{`推荐尺寸(${creativeTemplateId === 1708 ? 1280 : item.restriction.videoRestriction.minWidth} x ${creativeTemplateId === 1708 ? 720 : item.restriction.videoRestriction.minHeight})`}</span>
|
|
|
+ <span>{`${item.restriction.videoRestriction.fileFormat?.map((str: any) => str?.replace('MEDIA_TYPE_', ''))};< ${item.restriction.videoRestriction.fileSize / 1024}M;时长 ≥ ${item.restriction.videoRestriction.minDuration}s,≤ ${item.restriction.videoRestriction.maxDuration}s,必须带有声音`}</span>
|
|
|
</>}
|
|
|
- </p>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- {videoUploads && Object.keys(videoUploads)?.length > 0 && <div style={{ width: 32 }}>
|
|
|
- {dynamicGroup?.length > 0 && dynamicGroup[num] && (Object.keys(dynamicGroup[num])?.includes('video_id') || Object.keys(dynamicGroup[num])?.includes('short_video1')) && <VideoFrameSelect onChange={(e) => setFrame(e, num, item.name)} url={dynamicGroup[num]?.['video_id']?.['url'] || dynamicGroup[num]?.['short_video1']?.['url']} />}
|
|
|
- </div>}
|
|
|
- </Space>
|
|
|
- </Form.Item>
|
|
|
- }
|
|
|
+ </Form.Item>
|
|
|
+ }
|
|
|
+ if (item.name === 'image_id' || item.name === 'cover_id') {
|
|
|
+ return <Form.Item
|
|
|
+ {...field}
|
|
|
+ label={<strong>{item.description}</strong>}
|
|
|
+ rules={[{ required: true, message: '请选择素材!' }]}
|
|
|
+ name={[field.name, item.name]}
|
|
|
+ key={key}
|
|
|
+ >
|
|
|
+ <Space align="end">
|
|
|
+ <div className={`${styles.box} ${styles.image}`} style={{ width: 300, height: 160 }} onClick={() => {
|
|
|
+ init({ mediaType: 'IMG', cloudSize: [[{ relation: '=', width: item.restriction.imageRestriction.width, height: item.restriction.imageRestriction.height }]], maxSize: item.restriction.imageRestriction.fileSize * 1024 })
|
|
|
+ setMaterialConfig({
|
|
|
+ ...materialConfig,
|
|
|
+ type: item.name,
|
|
|
+ max: 1,
|
|
|
+ index: num,
|
|
|
+ adcreativeTemplateId: creativeTemplateId
|
|
|
+ })
|
|
|
+ setTimeout(() => {
|
|
|
+ setSelectVideoVisible(true)
|
|
|
+ }, 100)
|
|
|
+ }}>
|
|
|
+ <p>
|
|
|
+ {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(item.name) ? <img src={dynamicGroup[num][item.name]['url']} /> : <>
|
|
|
+ <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>
|
|
|
+ {videoUploads && Object.keys(videoUploads)?.length > 0 && <div style={{ width: 32 }}>
|
|
|
+ {dynamicGroup?.length > 0 && dynamicGroup[num] && (Object.keys(dynamicGroup[num])?.includes('video_id') || Object.keys(dynamicGroup[num])?.includes('short_video1')) && <VideoFrameSelect onChange={(e) => setFrame(e, num, item.name)} url={dynamicGroup[num]?.['video_id']?.['url'] || dynamicGroup[num]?.['short_video1']?.['url']} />}
|
|
|
+ </div>}
|
|
|
+ </Space>
|
|
|
+ </Form.Item>
|
|
|
+ }
|
|
|
|
|
|
- if (item.name === 'list') {
|
|
|
- let name = ''
|
|
|
- let imageData: any = {}
|
|
|
- if (key === 'image_list') {
|
|
|
- imageData = item.children.image_id
|
|
|
- name = 'image_list';
|
|
|
- } else if (key === 'element_story') {
|
|
|
- imageData = item.children.image
|
|
|
- name = 'element_story'
|
|
|
+ if (item.name === 'list') {
|
|
|
+ let name = ''
|
|
|
+ let imageData: any = {}
|
|
|
+ if (key === 'image_list') {
|
|
|
+ imageData = item.children.image_id
|
|
|
+ name = 'image_list';
|
|
|
+ } else if (key === 'element_story') {
|
|
|
+ imageData = item.children.image
|
|
|
+ name = 'element_story'
|
|
|
+ }
|
|
|
+ return <Form.Item
|
|
|
+ {...field}
|
|
|
+ label={<strong>{imageData.description}</strong>}
|
|
|
+ rules={[
|
|
|
+ { required: true, type: 'array', len: minNumber || item.arrayProperty.maxNumber, message: '素材数量不对!' },
|
|
|
+ { required: true, message: '请选择素材!' },
|
|
|
+ ]}
|
|
|
+ name={[field.name, name]}
|
|
|
+ key={key}
|
|
|
+ >
|
|
|
+ <div className={`${styles.box} ${item.arrayProperty.maxNumber >= 3 ? styles.image_list : styles.imageMater}`} style={item.arrayProperty.maxNumber >= 3 ? { flexFlow: 'row', width: '100%', gap: 2 } : {}} onClick={() => {
|
|
|
+ init({ mediaType: 'IMG', num: item.arrayProperty.maxNumber, cloudSize: [[{ relation: '=', width: imageData.restriction.imageRestriction.width, height: imageData.restriction.imageRestriction.height }]], maxSize: imageData.restriction.imageRestriction.fileSize * 1024 })
|
|
|
+ setMaterialConfig({
|
|
|
+ ...materialConfig,
|
|
|
+ type: name,
|
|
|
+ max: item.arrayProperty.maxNumber,
|
|
|
+ index: num,
|
|
|
+ adcreativeTemplateId: creativeTemplateId
|
|
|
+ })
|
|
|
+ setTimeout(() => {
|
|
|
+ setSelectVideoVisible(true)
|
|
|
+ }, 100)
|
|
|
+ }}>
|
|
|
+ {Array(item.arrayProperty.maxNumber).fill('').map((arr, index1) => {
|
|
|
+ return <p key={index1} style={item.arrayProperty.maxNumber >= 3 ? { width: 130, height: 130 } : { justifyContent: 'center' }}>
|
|
|
+ {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(name) && dynamicGroup[num][name][index1] ? <img src={dynamicGroup[num][name][index1]['url']} /> : <>
|
|
|
+ <span>{`推荐尺寸(${imageData.restriction.imageRestriction.width} x ${imageData.restriction.imageRestriction.height})`}</span>
|
|
|
+ <span>{`${imageData.restriction.imageRestriction.fileFormat?.map((str: any) => str?.replace('IMAGE_TYPE_', ''))};小于 ${imageData.restriction.imageRestriction.fileSize}KB`}</span>
|
|
|
+ </>}
|
|
|
+ </p>
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </Form.Item>
|
|
|
}
|
|
|
- return <Form.Item
|
|
|
- {...field}
|
|
|
- label={<strong>{imageData.description}</strong>}
|
|
|
- rules={[
|
|
|
- { required: true, type: 'array', len: minNumber || item.arrayProperty.maxNumber, message: '素材数量不对!' },
|
|
|
- { required: true, message: '请选择素材!' },
|
|
|
- ]}
|
|
|
- name={[field.name, name]}
|
|
|
- key={key}
|
|
|
- >
|
|
|
- <div className={`${styles.box} ${item.arrayProperty.maxNumber >= 3 ? styles.image_list : styles.imageMater}`} style={item.arrayProperty.maxNumber >= 3 ? { flexFlow: 'row', width: '100%', gap: 2 } : {}} onClick={() => {
|
|
|
- init({ mediaType: 'IMG', num: item.arrayProperty.maxNumber, cloudSize: [[{ relation: '=', width: imageData.restriction.imageRestriction.width, height: imageData.restriction.imageRestriction.height }]], maxSize: imageData.restriction.imageRestriction.fileSize * 1024 })
|
|
|
- setMaterialConfig({
|
|
|
- ...materialConfig,
|
|
|
- type: name,
|
|
|
- max: item.arrayProperty.maxNumber,
|
|
|
- index: num,
|
|
|
- adcreativeTemplateId: creativeTemplateId
|
|
|
- })
|
|
|
- setTimeout(() => {
|
|
|
- setSelectVideoVisible(true)
|
|
|
- }, 100)
|
|
|
- }}>
|
|
|
- {Array(item.arrayProperty.maxNumber).fill('').map((arr, index1) => {
|
|
|
- return <p key={index1} style={item.arrayProperty.maxNumber >= 3 ? { width: 130, height: 130 } : { justifyContent: 'center' }}>
|
|
|
- {dynamicGroup?.length > 0 && dynamicGroup[num] && Object.keys(dynamicGroup[num])?.includes(name) && dynamicGroup[num][name][index1] ? <img src={dynamicGroup[num][name][index1]['url']} /> : <>
|
|
|
- <span>{`推荐尺寸(${imageData.restriction.imageRestriction.width} x ${imageData.restriction.imageRestriction.height})`}</span>
|
|
|
- <span>{`${imageData.restriction.imageRestriction.fileFormat?.map((str: any) => str?.replace('IMAGE_TYPE_', ''))};小于 ${imageData.restriction.imageRestriction.fileSize}KB`}</span>
|
|
|
- </>}
|
|
|
- </p>
|
|
|
- })}
|
|
|
- </div>
|
|
|
- </Form.Item>
|
|
|
- }
|
|
|
|
|
|
- return null
|
|
|
- })
|
|
|
- }) : <div>
|
|
|
- 11111111111111
|
|
|
- </div>}
|
|
|
- {fields?.length > 1 && <MinusCircleOutlined className={styles.clear} onClick={() => remove(field.name)} style={{ marginBottom: 24, color: 'red' }} />}
|
|
|
- </Space>
|
|
|
- </Card>))}
|
|
|
+ return null
|
|
|
+ })
|
|
|
+ }) : <div>
|
|
|
+ 11111111111111
|
|
|
+ </div>}
|
|
|
+ {fields?.length > 1 && <MinusCircleOutlined className={styles.clear} onClick={() => remove(field.name)} style={{ marginBottom: 24, color: 'red' }} />}
|
|
|
+ </Space>
|
|
|
+ </Card>))}
|
|
|
+ </div>
|
|
|
|
|
|
- <Form.Item style={{ marginBottom: 0 }}>
|
|
|
+ <Form.Item style={{ marginBottom: 0, marginTop: 10 }}>
|
|
|
<Button type="dashed" style={{ color: '#1890ff' }} onClick={() => add()} block icon={<PlusOutlined />}>添加创意组</Button>
|
|
|
</Form.Item>
|
|
|
</>)}
|