import TextAideInput from "@/pages/launchSystemNew/components/textAideInput" import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons" import { Button, Collapse, Form, Modal, Space } from "antd" import React, { useEffect, useState } from "react" import styles from './index.less' interface Props { value?: any[] textData?: any[], model?: 'cross' | 'corres', material?: { label: string; name: string; restriction: any; arrayProperty?: any; }[], sysAdcreative: any onChange?: (data: any) => void } /** * 文案设置 * @returns */ const Copywriting: React.FC = (props) => { /******************************/ const { onChange, textData = [], sysAdcreative, value, model, material } = props const { adcreativeTemplateId, linkNameType } = sysAdcreative const [visible, setVisible] = useState(false) const [form] = Form.useForm(); /******************************/ // 回填 useEffect(() => { if (visible) { if (value && value?.length > 0) { form.setFieldsValue({ texts: value }) } else { form.setFieldsValue({ texts: [undefined] }) } } }, [value, visible]) const handleOk = () => { form.validateFields().then(values => { console.log('values=>1', values) onChange && onChange(values?.texts) setVisible(false) }) } return <> { setVisible(true) }}>{value && value?.length > 0 ? '编辑' : '添加'} {visible && setVisible(false)} title="创意文案" width={700} onOk={handleOk}>
{(fields, { add, remove }) => (<> field.name)} bordered={false}> {fields.map((field, num) => ( {`文案组${num + 1}`}
{material && material?.length >= num + 1 && model === 'corres' && [material[num]]?.map((item: any, index: number) => { let keys = Object.keys(item) if (keys?.includes('imageUrlList')) { return
{item?.imageUrlList?.map((url: string, index: number) =>
)}
} else if (keys?.includes('elementStory')) { return
{item?.elementStory?.map((item: { imageUrl: string }, index: number) =>
)}
} else { if (keys?.length > 1) { return
{keys?.includes('imageUrl') &&
} {keys?.includes('videoUrl') &&
} {keys?.includes('shortVideo1Url') &&
}
} else { if (keys?.includes('imageUrl')) { return
} else if (keys?.includes('videoUrl')) { return
} else if (keys?.includes('shortVideo1Url')) { return
} } return null } })}
} key={(field.name).toString()} extra={fields?.length > 1 && remove(field.name)} style={{ color: 'red' }} />} > {textData?.map((item, index) => { if (item.name === 'title') { return
{item.description}(选填)} name={[field.name, item.name]} rules={[{ pattern: RegExp(item.restriction.textRestriction.textPattern?.replace(/\+/ig, `{1,${item.restriction.textRestriction.maxLength}}`)), message: '请输入正确的' + item.description }]}>
} if (item.name === 'description') { let maxNum = (adcreativeTemplateId === 1708 || adcreativeTemplateId === 1707) && linkNameType ? 10 : item.restriction.textRestriction.maxLength return
{item.description}} name={[field.name, item.name]} rules={[{ required: true, pattern: RegExp(item.restriction.textRestriction.textPattern?.replace(/\+/ig, `{1,${maxNum}}`)), message: '请输入正确的' + item.description }]}>
} return null })}
))}
)}
} } export default React.memo(Copywriting)