|  | @@ -7,7 +7,6 @@ import { chunkArray1, getVideoImgUrl } from "@/utils/utils"
 | 
	
		
			
				|  |  |  import VideoFrameSelect from "@/pages/launchSystemV3/components/VideoFrameSelect"
 | 
	
		
			
				|  |  |  import New1Radio from "@/pages/launchSystemV3/components/New1Radio"
 | 
	
		
			
				|  |  |  import SelectCloudNew from "@/pages/launchSystemV3/material/cloudNew/selectCloudNew"
 | 
	
		
			
				|  |  | -import ImageXXX from "@/pages/launchSystemV3/components/AdsComponent/ImageXXX"
 | 
	
		
			
				|  |  |  import ImageXXXC from "@/pages/launchSystemV3/components/AdsComponent/ImageXXXC"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface Props {
 | 
	
	
		
			
				|  | @@ -163,12 +162,28 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
 | 
	
		
			
				|  |  |          }, 100)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const selectGroupListImg = (num: number) => {
 | 
	
		
			
				|  |  | +        setSelectCloudData({ defaultParams: { sizeQueries: [{ width: 800, height: 800, relation: '=' }], fileSize: 400 * 1024, materialType: 'image' }, num })
 | 
	
		
			
				|  |  | +        setMaterialConfig({
 | 
	
		
			
				|  |  | +            ...materialConfig,
 | 
	
		
			
				|  |  | +            type: 'image',
 | 
	
		
			
				|  |  | +            max: num,
 | 
	
		
			
				|  |  | +            index: 20000,
 | 
	
		
			
				|  |  | +            adcreativeTemplateId: creativeTemplateId,
 | 
	
		
			
				|  |  | +            isGroup: true,
 | 
	
		
			
				|  |  | +            componentCount: 500
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +            setSelectVideoVisible(true)
 | 
	
		
			
				|  |  | +        }, 100)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // 获取组件化创意素材数量
 | 
	
		
			
				|  |  |      const getComponentCount = (list: any[]): string => {
 | 
	
		
			
				|  |  |          console.log('list', list)
 | 
	
		
			
				|  |  |          let arrayImgCount = 0, imageCount = 0, videoCount = 0
 | 
	
		
			
				|  |  |          list?.forEach((item: any) => {
 | 
	
		
			
				|  |  | -            if(item?.componentSubType?.includes('IMAGE_LIST')) {
 | 
	
		
			
				|  |  | +            if (item?.componentSubType?.includes('IMAGE_LIST')) {
 | 
	
		
			
				|  |  |                  arrayImgCount++
 | 
	
		
			
				|  |  |              } else if (Array.isArray(item)) {
 | 
	
		
			
				|  |  |                  arrayImgCount++
 | 
	
	
		
			
				|  | @@ -266,6 +281,20 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
 | 
	
		
			
				|  |  |                          setSelectVideoVisible(true)
 | 
	
		
			
				|  |  |                      }, 100)
 | 
	
		
			
				|  |  |                  }}>批量添加视频素材</Button>
 | 
	
		
			
				|  |  | +                {deliveryMode === 'DELIVERY_MODE_COMPONENT' && <Dropdown
 | 
	
		
			
				|  |  | +                    menu={{
 | 
	
		
			
				|  |  | +                        items: [
 | 
	
		
			
				|  |  | +                            { label: '1:1 九图', key: '4', onClick: () => { selectGroupListImg(9) } },
 | 
	
		
			
				|  |  | +                            { label: '1:1 六图', key: '1', onClick: () => { selectGroupListImg(6) } },
 | 
	
		
			
				|  |  | +                            { label: '1:1 三图', key: '2', onClick: () => { selectGroupListImg(3) } },
 | 
	
		
			
				|  |  | +                            { label: '1:1 四图', key: '3', onClick: () => { selectGroupListImg(4) } },
 | 
	
		
			
				|  |  | +                        ]
 | 
	
		
			
				|  |  | +                    }}
 | 
	
		
			
				|  |  | +                    placement="bottomLeft"
 | 
	
		
			
				|  |  | +                    arrow
 | 
	
		
			
				|  |  | +                >
 | 
	
		
			
				|  |  | +                    <Button type="link">批量添加业务单元组图</Button>
 | 
	
		
			
				|  |  | +                </Dropdown>}
 | 
	
		
			
				|  |  |              </>}
 | 
	
		
			
				|  |  |              {(dynamicGroup && dynamicGroup?.length > 1) && <Popconfirm
 | 
	
		
			
				|  |  |                  title="是否清空?"
 | 
	
	
		
			
				|  | @@ -578,7 +607,7 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
 | 
	
		
			
				|  |  |                                              {dynamicGroup?.[num]?.['list']?.map((item: any, index: number) => {
 | 
	
		
			
				|  |  |                                                  if (item?.componentSubType?.includes('IMAGE_LIST')) {
 | 
	
		
			
				|  |  |                                                      return <div className={styles.boxList_body_item} key={index}>
 | 
	
		
			
				|  |  | -                                                         <div className={styles.tag}>{item?.urlList?.length}图</div>
 | 
	
		
			
				|  |  | +                                                        <div className={styles.tag}>{item?.urlList?.length}图</div>
 | 
	
		
			
				|  |  |                                                          <div className={styles.content}>
 | 
	
		
			
				|  |  |                                                              <ImageXXXC imageList={item?.urlList} placement="top" style={{ width: '100%', height: '100%' }} />
 | 
	
		
			
				|  |  |                                                          </div>
 | 
	
	
		
			
				|  | @@ -652,40 +681,40 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
 | 
	
		
			
				|  |  |                  if (content.length > 0) {
 | 
	
		
			
				|  |  |                      if (deliveryMode === 'DELIVERY_MODE_COMPONENT' && !dynamicCreativeSwitch) { // 组件化创意
 | 
	
		
			
				|  |  |                          if (materialConfig.index === 20000) {
 | 
	
		
			
				|  |  | -                            if (materialConfig.isGroup) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            } else {
 | 
	
		
			
				|  |  | -                                const aContent = content.map((m: any) => {
 | 
	
		
			
				|  |  | -                                    if (m?.materialType === 4) { // 组件库
 | 
	
		
			
				|  |  | -                                        if (selectCloudData?.defaultParams?.materialType === 'video') {
 | 
	
		
			
				|  |  | -                                            return { id: m?.componentId, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: true, keyFrameImageUrl: m?.key_frame_image_url, accountId: m?.organizationId, componentSubType: m?.componentSubType }
 | 
	
		
			
				|  |  | -                                        } else {
 | 
	
		
			
				|  |  | -                                            return { id: m?.componentId, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: true, accountId: m?.organizationId, componentSubType: m?.componentSubType }
 | 
	
		
			
				|  |  | -                                        }
 | 
	
		
			
				|  |  | +                            const aContent = content.map((m: any) => {
 | 
	
		
			
				|  |  | +                                if (m?.materialType === 4) { // 组件库
 | 
	
		
			
				|  |  | +                                    if (materialConfig.isGroup) { // 业务单元组件
 | 
	
		
			
				|  |  | +                                        return { id: m?.componentId, urlList: m?.oss_url, materialType: m?.materialType || 0, isUnit: true, accountId: m?.organizationId, componentSubType: m?.componentSubType }
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  | -                                    if (selectCloudData?.defaultParams?.materialType === 'video' && m?.materialType === 1) {
 | 
	
		
			
				|  |  | -                                        return { id: m?.id, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: m?.isUnit || false, keyFrameImageUrl: m?.key_frame_image_url, accountId: m?.owner_account_id }
 | 
	
		
			
				|  |  | -                                    }
 | 
	
		
			
				|  |  | -                                    return { id: m?.id, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: m?.isUnit || false, accountId: m?.owner_account_id }
 | 
	
		
			
				|  |  | -                                })
 | 
	
		
			
				|  |  | -                                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))
 | 
	
		
			
				|  |  | +                                    if (selectCloudData?.defaultParams?.materialType === 'video') {
 | 
	
		
			
				|  |  | +                                        return { id: m?.componentId, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: true, keyFrameImageUrl: m?.key_frame_image_url, accountId: m?.organizationId, componentSubType: m?.componentSubType }
 | 
	
		
			
				|  |  | +                                    } else {
 | 
	
		
			
				|  |  | +                                        return { id: m?.componentId, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: true, accountId: m?.organizationId, componentSubType: m?.componentSubType }
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  | -                                    return { list: oldList }
 | 
	
		
			
				|  |  | -                                })
 | 
	
		
			
				|  |  | -                                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 })
 | 
	
		
			
				|  |  | +                                if (selectCloudData?.defaultParams?.materialType === 'video' && m?.materialType === 1) {
 | 
	
		
			
				|  |  | +                                    return { id: m?.id, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: m?.isUnit || false, keyFrameImageUrl: m?.key_frame_image_url, accountId: m?.owner_account_id }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                return { id: m?.id, url: m?.oss_url, materialType: m?.materialType || 0, isUnit: m?.isUnit || false, accountId: m?.owner_account_id }
 | 
	
		
			
				|  |  | +                            })
 | 
	
		
			
				|  |  | +                            let newDynamicGroup = dynamicGroup?.map((item: any) => {
 | 
	
		
			
				|  |  | +                                let oldList = item?.list || []
 | 
	
		
			
				|  |  | +                                if (oldList.length < mCount) {
 | 
	
		
			
				|  |  | +                                    const diffCount = mCount - oldList.length
 | 
	
		
			
				|  |  | +                                    const cLength = aContent.length
 | 
	
		
			
				|  |  | +                                    oldList = oldList.concat(aContent.splice(0, cLength > diffCount ? diffCount : cLength))
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                return { list: oldList }
 | 
	
		
			
				|  |  | +                            })
 | 
	
		
			
				|  |  | +                            if (aContent.length) {
 | 
	
		
			
				|  |  | +                                const newSc = chunkArray1(aContent, mCount)
 | 
	
		
			
				|  |  | +                                const newList: any[] = newSc.map((item: any) => {
 | 
	
		
			
				|  |  | +                                    return { list: item }
 | 
	
		
			
				|  |  | +                                })
 | 
	
		
			
				|  |  | +                                newDynamicGroup = (newDynamicGroup || []).concat(newList)
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                            console.log('newDynamicGroup-------->', newDynamicGroup)
 | 
	
		
			
				|  |  | +                            form.setFieldsValue({ dynamicGroup: newDynamicGroup })
 | 
	
		
			
				|  |  |                          } else {
 | 
	
		
			
				|  |  |                              const newDynamicGroup = dynamicGroup?.map((item: any, index: number) => {
 | 
	
		
			
				|  |  |                                  if (materialConfig.index === index) {
 | 
	
	
		
			
				|  | @@ -838,6 +867,14 @@ const AddMaterial: React.FC<Props> = ({ creativeTemplateId, materialData, delive
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  setSelectVideoVisible(false)
 | 
	
		
			
				|  |  |                  setSelectCloudData(undefined)
 | 
	
		
			
				|  |  | +                setMaterialConfig({
 | 
	
		
			
				|  |  | +                    type: '',//类型
 | 
	
		
			
				|  |  | +                    cloudSize: [],//素材搜索条件
 | 
	
		
			
				|  |  | +                    list: [],//素材
 | 
	
		
			
				|  |  | +                    index: 0, // 素材组下标
 | 
	
		
			
				|  |  | +                    max: 1,//素材数量
 | 
	
		
			
				|  |  | +                    sliderImgContent: undefined
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |          />}
 | 
	
		
			
				|  |  |      </Modal>
 |