|
@@ -8,6 +8,7 @@ import AddTextS from "./addTextS"
|
|
|
import style from '../index.less'
|
|
|
import styles from '../Material/index.less'
|
|
|
import VideoNews from "@/pages/launchSystemNew/components/newsModal/videoNews"
|
|
|
+import SelectCopyWriting from "@/pages/launchSystemV3/tencenTasset/copyWriting/selectCopyWriting"
|
|
|
|
|
|
interface Props {
|
|
|
textData: any,
|
|
@@ -126,6 +127,98 @@ const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData,
|
|
|
return null
|
|
|
}
|
|
|
|
|
|
+ const setText = (valList: string[]) => {
|
|
|
+ let fieldData = textList.find(item => item.label === addSTitle)
|
|
|
+ let count = dynamicMaterialDTos.dynamicGroup.length
|
|
|
+ if (type === 1 || type === 0) {
|
|
|
+ let len = 0
|
|
|
+ const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
+ if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
+ if (t) {
|
|
|
+ return t
|
|
|
+ } else {
|
|
|
+ return valList[len++]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ form.setFieldsValue({
|
|
|
+ textDto: newTextDto
|
|
|
+ })
|
|
|
+ } else if (type === 2) {
|
|
|
+ let len = 0
|
|
|
+ const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
+ if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
+ if (t) {
|
|
|
+ return t
|
|
|
+ } else {
|
|
|
+ return valList[len++]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ let diffTextDto: any[] = []
|
|
|
+ if (newTextDto.length < count && len < valList.length) {
|
|
|
+ let diffCount = count - newTextDto.length
|
|
|
+ let diffTextCount = valList.length - len
|
|
|
+ let diff = 0
|
|
|
+ if (diffCount >= diffTextCount) {
|
|
|
+ diff = diffTextCount
|
|
|
+ } else {
|
|
|
+ diff = diffCount
|
|
|
+ }
|
|
|
+ diffTextDto = Array(diff).fill('').map((item: { [x: string]: any }) => {
|
|
|
+ if (fieldData?.value) {
|
|
|
+ return { ...item, [fieldData.value]: [valList[len++]] }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ }
|
|
|
+ form.setFieldsValue({
|
|
|
+ textDto: [...newTextDto, ...diffTextDto]
|
|
|
+ })
|
|
|
+ } else if ([3, 4].includes(type)) {
|
|
|
+ let len = 0
|
|
|
+ const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
+ if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
+ return {
|
|
|
+ ...item, [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
+ if (t) {
|
|
|
+ return t
|
|
|
+ } else {
|
|
|
+ return valList[len++]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ let diffTextDto: any[] = []
|
|
|
+ if (len < valList.length) {
|
|
|
+ let diff = valList.length - len
|
|
|
+ diffTextDto = Array(diff).fill('').map((item: { [x: string]: any }) => {
|
|
|
+ if (fieldData?.value) {
|
|
|
+ return { ...item, [fieldData.value]: [valList[len++]] }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ }
|
|
|
+ form.setFieldsValue({
|
|
|
+ textDto: [...newTextDto, ...diffTextDto]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return <Modal
|
|
|
title={<Space>
|
|
|
<strong style={{ fontSize: 20 }}>创意文案</strong>
|
|
@@ -133,6 +226,14 @@ const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData,
|
|
|
{textList.some(item => item.value === "description") && <a style={{ fontSize: 12 }} onClick={() => { setDesVisible(true); setAddStitle(textList.find(item => item.value === "description")?.label) }}>批量添加{textList.find(item => item.value === "description")?.label}</a>}
|
|
|
{textList.some(item => item.value === "title") && <a style={{ fontSize: 12 }} onClick={() => { setDesVisible(true); setAddStitle(textList.find(item => item.value === "description")?.label) }}>批量添加{textList.find(item => item.value === "description")?.label}</a>}
|
|
|
</>}
|
|
|
+ {textList.some(item => item.value === "description") && <SelectCopyWriting
|
|
|
+ onClick={() => {
|
|
|
+ setAddStitle(textList.find(item => item.value === "description")?.label)
|
|
|
+ }}
|
|
|
+ onChange={(valList) => {
|
|
|
+ setText(valList)
|
|
|
+ }}
|
|
|
+ />}
|
|
|
</Space>}
|
|
|
open={visible}
|
|
|
onCancel={onClose}
|
|
@@ -285,95 +386,7 @@ const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData,
|
|
|
.split(/\r?\n/) // 按换行符分割字符串
|
|
|
.map(line => line.trim()) // 去除每行的首尾空白
|
|
|
.filter(line => line !== ''); // 过滤掉空行
|
|
|
- let fieldData = textList.find(item => item.label === addSTitle)
|
|
|
- let count = dynamicMaterialDTos.dynamicGroup.length
|
|
|
- if (type === 1) {
|
|
|
- let len = 0
|
|
|
- const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
- if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
- if (t) {
|
|
|
- return t
|
|
|
- } else {
|
|
|
- return valList[len++]
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
- form.setFieldsValue({
|
|
|
- textDto: newTextDto
|
|
|
- })
|
|
|
- } else if (type === 2) {
|
|
|
- let len = 0
|
|
|
- const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
- if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
- if (t) {
|
|
|
- return t
|
|
|
- } else {
|
|
|
- return valList[len++]
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
- let diffTextDto: any[] = []
|
|
|
- if (newTextDto.length < count && len < valList.length) {
|
|
|
- let diffCount = count - newTextDto.length
|
|
|
- let diffTextCount = valList.length - len
|
|
|
- let diff = 0
|
|
|
- if (diffCount >= diffTextCount) {
|
|
|
- diff = diffTextCount
|
|
|
- } else {
|
|
|
- diff = diffCount
|
|
|
- }
|
|
|
- diffTextDto = Array(diff).fill('').map((item: { [x: string]: any }) => {
|
|
|
- if (fieldData?.value) {
|
|
|
- return { ...item, [fieldData.value]: [valList[len++]] }
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
- }
|
|
|
- form.setFieldsValue({
|
|
|
- textDto: [...newTextDto, ...diffTextDto]
|
|
|
- })
|
|
|
- } else if ([3, 4].includes(type)) {
|
|
|
- let len = 0
|
|
|
- const newTextDto = textDto.map((item: { [x: string]: any }) => {
|
|
|
- if (fieldData?.value && (item?.[fieldData?.value]?.length === 0 || !item?.[fieldData?.value]?.every((t: string) => t)) && valList.length >= len + 1) {
|
|
|
- return {
|
|
|
- ...item, [fieldData.value]: (item?.[fieldData?.value]?.length === 0 ? [''] : item?.[fieldData?.value]).map((t: string) => {
|
|
|
- if (t) {
|
|
|
- return t
|
|
|
- } else {
|
|
|
- return valList[len++]
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
- let diffTextDto: any[] = []
|
|
|
- if (len < valList.length) {
|
|
|
- let diff = valList.length - len
|
|
|
- diffTextDto = Array(diff).fill('').map((item: { [x: string]: any }) => {
|
|
|
- if (fieldData?.value) {
|
|
|
- return { ...item, [fieldData.value]: [valList[len++]] }
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
- }
|
|
|
- form.setFieldsValue({
|
|
|
- textDto: [...newTextDto, ...diffTextDto]
|
|
|
- })
|
|
|
- }
|
|
|
+ setText(valList)
|
|
|
}
|
|
|
setDesVisible(false)
|
|
|
setAddStitle(undefined)
|