wjx 9 maanden geleden
bovenliggende
commit
044eed8f14
1 gewijzigde bestanden met toevoegingen van 33 en 6 verwijderingen
  1. 33 6
      src/pages/launchSystemV3/tencentAdPutIn/create/Material/addMaterial.tsx

+ 33 - 6
src/pages/launchSystemV3/tencentAdPutIn/create/Material/addMaterial.tsx

@@ -154,6 +154,21 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
         }, 100)
     }
 
+    // 获取组件化创意素材数量
+    const getComponentCount = (list: any[]): string => {
+        let arrayImgCount = 0, imageCount = 0, videoCount = 0
+        list?.forEach((item: any) => {
+            if (Array.isArray(item)) {
+                arrayImgCount++
+            } else if (item?.url?.includes('mp4')) {
+                videoCount++
+            } else {
+                imageCount++
+            }
+        })
+        return `${imageCount}张图片,${videoCount}个视频,${arrayImgCount}个组图`
+    }
+
     return <Modal
         title={<Space>
             <strong style={{ fontSize: 20 }}>创意素材</strong>
@@ -185,7 +200,7 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
                     }, 100)
                 }}>批量添加图片素材</Button>}
             </> : <>
-                <InputNumber placeholder="分配数量" value={mCount} max={15} onChange={(e) => setMCount(e)} />
+                <InputNumber size="small" min={1} style={{ width: 50 }} value={mCount} max={15} onChange={(e) => setMCount(e)} />
                 <Button type="link" onClick={() => {
                     init({
                         mediaType: 'IMG', num: 100, cloudSize: [[
@@ -481,7 +496,7 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
                                 <div className={`${styles.box} ${styles.video}`} style={{ width: '100%', height: 'auto', backgroundColor: 'rgb(247, 249, 252)' }}>
                                     {dynamicGroup?.length && dynamicGroup?.[num]?.['list']?.length > 0 ? <div className={styles.boxList}>
                                         <div className={styles.boxList_title}>
-                                            <span>上传素材</span>
+                                            <span>上传素材 <span style={{ marginLeft: 5, color: '#999', fontWeight: 'normal' }}>已选:{getComponentCount(dynamicGroup?.[num]?.['list'])}</span></span>
                                             <a onClick={() => {
                                                 let newDynamicGroup = dynamicGroup?.map((item: any, i: number) => {
                                                     if (i === num) {
@@ -558,11 +573,23 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
                             if (materialConfig.isGroup) {
 
                             } else {
-                                let newSc = chunkArray1(content.map((m: any) => ({ id: m?.id, url: m?.url, materialType: 0 })), mCount)
-                                let newList: any[] = newSc.map((item: any) => {
-                                    return { list: item }
+                                const aContent = content.map((m: any) => ({ id: m?.id, url: m?.url, materialType: 0 }))
+                                let newDynamicGroup = dynamicGroup?.map((item: any) => {
+                                    let oldList = item?.list || []
+                                    if (oldList.length < mCount) {
+                                        let diffCount = mCount - oldList.length
+                                        let cLength = aContent.length
+                                        oldList = oldList.concat(aContent.splice(0, cLength > diffCount ? diffCount : cLength))
+                                    }
+                                    return { list: oldList }
                                 })
-                                let newDynamicGroup = (dynamicGroup || []).concat(newList)
+                                if (aContent.length) {
+                                    let newSc = chunkArray1(aContent, mCount)
+                                    let newList: any[] = newSc.map((item: any) => {
+                                        return { list: item }
+                                    })
+                                    newDynamicGroup = (newDynamicGroup || []).concat(newList)
+                                }
                                 form.setFieldsValue({ dynamicGroup: newDynamicGroup })
                             }
                         } else {