Browse Source

素材问题

xiuli.gao 1 year ago
parent
commit
6a03058340

+ 11 - 133
src/components/businessMoudle/batchGdt/configArea/index.vue

@@ -159,6 +159,7 @@ import { FillBackData } from './basicInfo/ts/fillBack'
159 159
 import _ from "lodash";
160 160
 import { previewCompute } from './ts/preview'
161 161
 import { getDay } from '@/common/common'
162
+import handleMultiple from './ts/material'
162 163
 const { proxy } = getCurrentInstance() as any;
163 164
 // 全局方法定义
164 165
 const NumberHandle = proxy.$NumberHandle
@@ -446,110 +447,18 @@ const get_ruleConfig_info = async () => {
446 447
   }
447 448
 }
448 449
 
449
-//创意素材
450
-const CreativeMaterialRef = ref<{switchShow:(val:boolean,isEdit:boolean,arr:any)=>void,
451
-  clearAllEvent:()=>void,creatice_reuseEvent:()=>void,deleAcEvent:(arr:any,haveAssign:boolean)=>void}>()
452
-const cMaterial = reactive<reactiveTableAndAny>({
453
-  list:[],
454
-  list_copy:[],
455
-  key:1,
456
-  haveCoverOrVideo:1, // 1:视频和图片  2:视频  3:图片
457
-  video_tips:{},
458
-  image_tips:{},
459
-  resResult:[],//提审后台需要的值
460
-  haveShowVideoObj:{
461
-    show:false, // 是否展示视频号
462
-    name:'',
463
-    val:false,// 视频号是否开启
464
-  }
465
-})
466
-//处理素材返回来的值
467
-const handle_resResult = (resResult:any, val:any) => {
468
-  let str_imageorVideo:any = originalityBasicInfoData?.receiveForm?.originalityForm?.api_value?.originalityForm
469
-  let resArr:any = []
470
-  resResult.forEach(item=>{
471
-    if(item){
472
-      let obj:any = {}
473
-      obj.account_id = item.account_id
474
-      obj.list = []
475
-      for(let i in item){
476
-        let arr = val.filter((v)=>{
477
-          return v.itemId == i
478
-        })
479
-        if(str_imageorVideo == 'video' && item[i]?.material_res) {
480
-          let itemObj:any = {
481
-            self_info: arr.length > 0 ? arr[0] : {}
482
-          }
483
-          if (item[i]?.material_res?.video_id) {
484
-            itemObj.video = item[i].material_res.video_id
485
-          }else if(item[i]?.material_res?.cover?.image_id){
486
-            itemObj.image = item[i].material_res.cover.image_id
487
-          }
488
-          if(cMaterial.haveShowVideoObj.show && cMaterial.haveShowVideoObj.name){
489
-            itemObj[cMaterial.haveShowVideoObj.name] = cMaterial.haveShowVideoObj.val
490
-          }
491
-          obj.list.push(itemObj)
492
-        }else if(str_imageorVideo == 'img' && item[i]?.material_res){
493
-          if (item[i]?.material_res?.image_id) {
494
-            let imageArr:any = []
495
-            imageArr.push(item[i]?.material_res?.image_id)
496
-            obj.list.push({
497
-              image_list: imageArr,
498
-              self_info: arr.length > 0 ? arr[0] : {}
499
-            })
500
-          }
501
-        }
502
-      }
503
-      resArr.push(obj)
504
-    }
505
-  })
506
-  return resArr
507
-}
508
-//创意素材值回显
509
-const assignEvent_CreativeMaterial = async (val:any,videoOnPuse?:any) => {
510
-  cMaterial.list_copy = _.cloneDeep(val)
511
-  cMaterial.haveShowVideoObj.val = videoOnPuse
512 450
 
513
-  //所有素材列表,此时的素材个数已是正确的
514
-  let cMaterial_resResult_list:any = []
515
-  val.forEach(vItem=>{
516
-    cMaterial_resResult_list = cMaterial_resResult_list.concat(vItem.resResult)
517
-  })
518
-  console.log('cMaterial_resResult_list',cMaterial_resResult_list);
519 451
 
520
-  let arr_:any = []
521
-  let cloneRes:any = await handle_resResult(_.cloneDeep(cMaterial_resResult_list),_.cloneDeep(val))
522
-  //图片形式的originalityBasicInfoData.params格式需要给
523
-  console.log(originalityBasicInfoData,'assignEvent_CreativeMaterial');
524
-  console.log(cloneRes,'cloneRes');
525
-  await originalityBasicInfoData.params.forEach(item=>{
526
-    cloneRes.forEach(cItem=>{
527
-      if(item.account_id == cItem.account_id){
528
-        cItem.list.forEach(c=>{
529
-          let outerAdcreative = _.cloneDeep(item)
530
-          outerAdcreative.adcreative_elements = Object.assign(outerAdcreative.adcreative_elements,c)
531
-          arr_.push(outerAdcreative)
532
-        })
533
-      }
534
-    })
535
-  })
452
+// S 创意素材
453
+const {
454
+  CreativeMaterialRef,
455
+  cMaterial,
456
+  assignEvent_CreativeMaterial,
457
+  get_cover_info,
458
+  close_reuse_loading
459
+} = handleMultiple({originalityBasicInfoData, ResuseConfigRef, 'computeCount': () => { computeCount() }})
460
+// E 创意素材
536 461
 
537
-  cMaterial.key++
538
-  cMaterial.resResult = arr_
539
-  await computeCount()
540
-  console.log('cMaterial.resResult',cMaterial.resResult);
541
-  if(val&&val.length>0){
542
-    close_reuse_loading()
543
-  }
544
-}
545
-//关闭复用loading和弹框
546
-const close_reuse_loading = () => {
547
-  //复用回显成功后再关闭全屏loading
548
-  nextTick(()=>{
549
-    ResuseConfigRef.value?.switchShow(false)
550
-    ResuseConfigRef.value?.switchShow_loading(false)
551
-  })
552
-}
553 462
 
554 463
 //监听创意素材点击了确定
555 464
 watch(()=>cMaterial.key,()=>{
@@ -557,38 +466,7 @@ watch(()=>cMaterial.key,()=>{
557 466
   let num = cMaterial.list&&cMaterial.list.length
558 467
   updateHaveContent(6,num)
559 468
 })
560
-//得到是否有封面 , 以及视频和图片尺寸  / 获取是否展示-开启视频号
561
-const get_cover_info = () => {
562
-  console.log('创意基本信息originalityBasicInfoData',originalityBasicInfoData)
563
-  let obj:any = originalityBasicInfoData?.apiResult?.adTemplateItem?.adcreative_elements
564
-  if(obj?.finder_object_visibility?.name){ // 是否展示视频号
565
-    cMaterial.haveShowVideoObj.show = true
566
-    cMaterial.haveShowVideoObj.name = obj.finder_object_visibility.name
567
-  }else{
568
-    cMaterial.haveShowVideoObj.show = false
569
-  }
570
-  let str_imageorVideo:any = originalityBasicInfoData?.receiveForm?.originalityForm?.api_value?.originalityForm
571
-  if(str_imageorVideo == 'video'){
572
-    if(obj.video){
573
-      cMaterial.haveCoverOrVideo = 2
574
-      cMaterial.video_tips = obj?.video?.restriction?.video_restriction
575
-    }
576
-    if(obj.image){
577
-      cMaterial.haveCoverOrVideo = 3
578
-      cMaterial.image_tips = obj?.image?.restriction?.image_restriction
579
-    }
580
-    if(obj.video && obj.image){
581
-      cMaterial.haveCoverOrVideo = 1
582
-    }
583
-  }else if(str_imageorVideo == 'img'){
584
-    cMaterial.haveCoverOrVideo = 3
585
-    if(obj?.image_list){
586
-      cMaterial.image_tips = obj?.image_list?.restriction?.image_restriction
587
-    }else if(obj?.image){
588
-      cMaterial.image_tips = obj?.image?.restriction?.image_restriction
589
-    }
590
-  }
591
-}
469
+
592 470
 
593 471
 
594 472
 // 定向包

+ 112 - 88
src/components/businessMoudle/batchGdt/configArea/originalityBasic/ts/originalityApi.ts

@@ -8,13 +8,15 @@ interface IAdcreativeTemplateList {
8 8
   site_set: string[],
9 9
   is_automatic_site: number
10 10
 }
11
-export async function getAdcreativeTemplateList(params: IAdcreativeTemplateList) {
12
-  const res: any = await http.get('/api/adcreatives/adcreativeTemplateList', params)
13
-  if (res.errNo == 0 && res.rst && Array.isArray(res.rst.list)) {
14
-    return res.rst.list
15
-  } else {
16
-    return []
17
-  }
11
+export function getAdcreativeTemplateList(params: IAdcreativeTemplateList) {
12
+  return new Promise( async (resolve, reject) => {
13
+    const res: any = await http.get('/api/adcreatives/adcreativeTemplateList', params)
14
+    if (res.errNo == 0 && res.rst && Array.isArray(res.rst.list)) {
15
+      resolve(res.rst.list)
16
+    } else {
17
+      reject()
18
+    }
19
+  })
18 20
 }
19 21
 
20 22
 /**创意形式详情 */
@@ -26,13 +28,15 @@ interface IAdcreativeTemplate {
26 28
   is_dynamic_creative: boolean,
27 29
   automatic_site_enabled?: boolean
28 30
 }
29
-export async function getAdcreativeTemplate(params: IAdcreativeTemplate) {
30
-  const res: any = await http.get('/api/adcreatives/adcreativeTemplate', params)
31
-  if (res.errNo == 0 && res.rst) {
32
-    return res.rst
33
-  } else {
34
-    return
35
-  }
31
+export function getAdcreativeTemplate(params: IAdcreativeTemplate) {
32
+  return new Promise( async (resolve, reject) => {
33
+    const res: any = await http.get('/api/adcreatives/adcreativeTemplate', params)
34
+    if (res.errNo == 0 && res.rst) {
35
+      resolve(res.rst)
36
+    } else {
37
+      reject()
38
+    }
39
+  })
36 40
 }
37 41
 
38 42
 /**页面列表 */
@@ -42,13 +46,15 @@ interface IListPage {
42 46
   page_size: number,
43 47
   keyword?:string
44 48
 }
45
-export async function getListPage(params: IListPage) {
46
-  const res: any = await http.get('/api/adcreatives/listPage', params)
47
-  if (res.errNo == 0 && res.rst) {
48
-    return res.rst
49
-  } else {
50
-    return 
51
-  }
49
+export function getListPage(params: IListPage) {
50
+  return new Promise( async (resolve, reject) => {
51
+    const res: any = await http.get('/api/adcreatives/listPage', params)
52
+    if (res.errNo == 0 && res.rst) {
53
+      resolve(res.rst)
54
+    } else {
55
+      reject()
56
+    }
57
+  })
52 58
 }
53 59
 
54 60
 /**删除页面 */
@@ -56,13 +62,15 @@ interface IDelPage {
56 62
   type: string,
57 63
   target_id: string,
58 64
 }
59
-export async function getDelPage(params: IDelPage) {
60
-  const res: any = await http.post('/api/adcreatives/delPage', params)
61
-  if (res.errNo == 0 && res.rst) {
62
-    return res.rst
63
-  } else {
64
-    return 
65
-  }
65
+export function getDelPage(params: IDelPage) {
66
+  return new Promise( async (resolve, reject) => {
67
+    const res: any = await http.post('/api/adcreatives/delPage', params)
68
+    if (res.errNo == 0 && res.rst) {
69
+      resolve(res.rst)
70
+    } else {
71
+      reject()
72
+    }
73
+  })
66 74
 }
67 75
 /**上传文件 */
68 76
 interface IAdcreativesUpload {
@@ -71,13 +79,15 @@ interface IAdcreativesUpload {
71 79
   local_file: string,
72 80
   type: string
73 81
 }
74
-export async function adcreativesUpload(params: IAdcreativesUpload) {
75
-  const res: any = await http.post('/api/adcreatives/upload', params)
76
-  if (res.errNo == 0 && res.rst) {
77
-    return res.rst
78
-  } else {
79
-    return 
80
-  }
82
+export function adcreativesUpload(params: IAdcreativesUpload) {
83
+  return new Promise( async (resolve, reject) => {
84
+    const res: any = await http.post('/api/adcreatives/upload', params)
85
+    if (res.errNo == 0 && res.rst) {
86
+      resolve(res.rst)
87
+    } else {
88
+      reject()
89
+    }
90
+  })
81 91
 }
82 92
 
83 93
 /**文件保存 */
@@ -88,13 +98,15 @@ interface IAdcreativesSave {
88 98
   oss_url: string,
89 99
   type: string
90 100
 }
91
-export async function adcreativesSave(params: IAdcreativesSave) {
92
-  const res: any = await http.post('/api/adcreatives/save', params)
93
-  if (res.errNo == 0 && res.rst) {
94
-    return res.rst
95
-  } else {
96
-    return 
97
-  }
101
+export function adcreativesSave(params: IAdcreativesSave) {
102
+  return new Promise( async (resolve, reject) => {
103
+    const res: any = await http.post('/api/adcreatives/save', params)
104
+    if (res.errNo == 0 && res.rst) {
105
+      resolve(res.rst)
106
+    } else {
107
+      reject()
108
+    }
109
+  })
98 110
 }
99 111
 
100 112
 /**添加上传任务(创意素材上传视频) */
@@ -104,28 +116,32 @@ interface IAdcreativesAddUpload {
104 116
   is_generate_cover?: number,
105 117
   type: 'profiles' | 'brand' | 'material'
106 118
 }
107
-export async function adcreativesAddUpload(params: IAdcreativesAddUpload) {
108
-  const res: any = await http.post('/api/adcreatives/addUpload', params)
109
-  if (res.errNo == 0 && res.rst) {
110
-    return res.rst
111
-  } else {
112
-    ElMessage.error(res.errMsg)
113
-    return 
114
-  }
119
+export function adcreativesAddUpload(params: IAdcreativesAddUpload) {
120
+  return new Promise( async (resolve, reject) => {
121
+    const res: any = await http.post('/api/adcreatives/addUpload', params)
122
+    if (res.errNo == 0 && res.rst) {
123
+      resolve(res.rst)
124
+    } else {
125
+      ElMessage.error(res.errMsg)
126
+      reject()
127
+    }
128
+  })
115 129
 }
116 130
 
117 131
 /**获取上传结果 */
118 132
 interface IAdcreativesGetUploadRes {
119 133
   up_record_id: string,
120 134
 }
121
-export async function adcreativesGetUploadRes(params: IAdcreativesGetUploadRes) {
122
-  const res: any = await http.get('/api/adcreatives/getUploadRes', params)
123
-  if (res.errNo == 0 && res.rst) {
124
-    return res.rst
125
-  } else {
126
-    ElMessage.error(res.errMsg)
127
-    return 
128
-  }
135
+export function adcreativesGetUploadRes(params: IAdcreativesGetUploadRes) {
136
+  return new Promise( async (resolve, reject) => {
137
+    const res: any = await http.get('/api/adcreatives/getUploadRes', params)
138
+    if (res.errNo == 0 && res.rst) {
139
+      resolve(res.rst)
140
+    } else {
141
+      ElMessage.error(res.errMsg)
142
+      reject()
143
+    }
144
+  })
129 145
 }
130 146
 
131 147
 /**落地页用例 */
@@ -133,14 +149,16 @@ interface IAdcreativesLandingPageExample {
133 149
   page_type: string,
134 150
   link_page_type?: string
135 151
 }
136
-export async function adcreativesLandingPageExample(params: IAdcreativesLandingPageExample) {
137
-  const res: any = await http.get('/api/adcreatives/landingPageExample', params)
138
-  if (res.errNo == 0 && res.rst) {
139
-    return res.rst
140
-  } else {
141
-    ElMessage.error(res.errMsg)
142
-    return 
143
-  }
152
+export function adcreativesLandingPageExample(params: IAdcreativesLandingPageExample) {
153
+  return new Promise( async (resolve, reject) => {
154
+    const res: any = await http.get('/api/adcreatives/landingPageExample', params)
155
+    if (res.errNo == 0 && res.rst) {
156
+      resolve(res.rst)
157
+    } else {
158
+      ElMessage.error(res.errMsg)
159
+      reject()
160
+    }
161
+  })
144 162
 }
145 163
 
146 164
 /**媒体头像管理 - 获取朋友圈昵称跳转页 */
@@ -148,37 +166,43 @@ interface IAdcreativesGetProfiles {
148 166
   account_id: string,
149 167
   profile_type: 'PROFILE_TYPE_DEFINITION'
150 168
 }
151
-export async function adcreativesGetProfiles(params: IAdcreativesGetProfiles) {
152
-  const res: any = await http.get('/api/adcreatives/getProfiles', params)
153
-  if (res.errNo == 0 && res.rst) {
154
-    return res.rst
155
-  } else {
156
-    ElMessage.error(res.errMsg)
157
-    return 
158
-  }
169
+export function adcreativesGetProfiles(params: IAdcreativesGetProfiles) {
170
+  return new Promise( async (resolve, reject) => {
171
+    const res: any = await http.get('/api/adcreatives/getProfiles', params)
172
+    if (res.errNo == 0 && res.rst) {
173
+      resolve(res.rst)
174
+    } else {
175
+      ElMessage.error(res.errMsg)
176
+      reject()
177
+    }
178
+  })
159 179
 }
160 180
 /**媒体头像管理 - 删除朋友圈昵称跳转页 */
161 181
 interface IAdcreativesDelProfiles {
162 182
   account_id: string,
163 183
   profile_id: string
164 184
 }
165
-export async function adcreativesDelProfiles(params: IAdcreativesDelProfiles) {
166
-  const res: any = await http.post('/api/adcreatives/delProfiles', params)
167
-  if (res.errNo == 0 && res.rst) {
168
-    return res.rst
169
-  } else {
170
-    return 
171
-  }
185
+export function adcreativesDelProfiles(params: IAdcreativesDelProfiles) {
186
+  return new Promise( async (resolve, reject) => {
187
+    const res: any = await http.post('/api/adcreatives/delProfiles', params)
188
+    if (res.errNo == 0 && res.rst) {
189
+      resolve(res.rst)
190
+    } else {
191
+      reject()
192
+    }
193
+  })
172 194
 }
173 195
 /**获取广告标签 */
174 196
 interface IAdcreativesGetAdLabel {
175 197
   account_id: string
176 198
 }
177
-export async function adcreativesGetAdLabel(params: IAdcreativesGetAdLabel) {
178
-  const res: any = await http.get('/api/adcreatives/getAdLabel', params)
179
-  if (res.errNo == 0 && res.rst && Array.isArray(res.rst)) {
180
-    return res.rst
181
-  } else {
182
-    return []
183
-  }
199
+export function adcreativesGetAdLabel(params: IAdcreativesGetAdLabel) {
200
+  return new Promise( async (resolve, reject) => {
201
+    const res: any = await http.get('/api/adcreatives/getAdLabel', params)
202
+    if (res.errNo == 0 && res.rst && Array.isArray(res.rst)) {
203
+      resolve(res.rst)
204
+    } else {
205
+      reject()
206
+    }
207
+  })
184 208
 }

+ 263 - 0
src/components/businessMoudle/batchGdt/configArea/ts/material.ts

@@ -0,0 +1,263 @@
1
+import { ref, computed, reactive, nextTick } from 'vue'
2
+import { reactiveTableAndAny } from '@/api/ApiModel'
3
+import _ from 'lodash'
4
+
5
+//创意素材
6
+function handleMultiple({
7
+  originalityBasicInfoData,
8
+  computeCount,
9
+  ResuseConfigRef
10
+}) {
11
+  const CreativeMaterialRef = ref<{
12
+    switchShow: (val: boolean, isEdit: boolean, arr: any) => void,
13
+    clearAllEvent: () => void, creatice_reuseEvent: () => void, deleAcEvent: (arr: any, haveAssign: boolean) => void
14
+  }>()
15
+  const cMaterial = reactive<reactiveTableAndAny>({
16
+    list: [],
17
+    list_copy: [],
18
+    key: 1,
19
+    haveCoverOrVideo: 1, // 1:视频和图片  2:视频  3:图片
20
+    video_tips: {},
21
+    image_tips: {},
22
+    array_property: [],//image_list 时图片个数限制 max_number min_number
23
+    resResult: [],//提审后台需要的值
24
+    haveShowVideoObj: {
25
+      show: false, // 是否展示视频号
26
+      name: '',
27
+      val: false,// 视频号是否开启
28
+    },
29
+    imgOrVideoInfo: {},//视频或者图片需要的数据详情
30
+  })
31
+
32
+  //处理素材返回来的值
33
+  const handle_resResult = (resResult: any, val: any) => {
34
+    // let str_imageorVideo: any = originalityBasicInfoData?.receiveForm?.originalityForm?.api_value?.originalityForm
35
+    let resArr: any = []
36
+    console.log('resResultresResult', resResult)
37
+    resResult.forEach(item => {
38
+      if (item) {
39
+        let obj: any = {}
40
+        obj.account_id = item.account_id
41
+        obj.list = []
42
+        for (let i in item) {
43
+          let arr = val.filter((v) => {
44
+            return v.itemId == i
45
+          })
46
+          if(item[i]?.material_res){
47
+            let itemObj: any = _.cloneDeep(cMaterial.imgOrVideoInfo)
48
+            itemObj = Object.assign(itemObj, {self_info: arr.length > 0 ? arr[0] : {}})
49
+            if(cMaterial.haveCoverOrVideo == 1) {//视频和图片
50
+              if (item[i]?.material_res?.video_id) {
51
+                setValueInNestedObject(itemObj, 'video_id', item[i].material_res.video_id);
52
+              } else if (item[i]?.material_res?.cover?.image_id) {
53
+                setValueInNestedObject(itemObj, 'image_id', item[i].material_res.cover.image_id);
54
+              }
55
+              if (cMaterial.haveShowVideoObj.show && cMaterial.haveShowVideoObj.name) {
56
+                itemObj[cMaterial.haveShowVideoObj.name] = cMaterial.haveShowVideoObj.val
57
+              }
58
+            }
59
+            if(cMaterial.haveCoverOrVideo == 2) {//视频
60
+              if (item[i]?.material_res?.video_id) {
61
+                setValueInNestedObject(itemObj, 'video_id', item[i].material_res.video_id);
62
+              }
63
+            }
64
+            if(cMaterial.haveCoverOrVideo == 3) {//图片
65
+              if(itemObj.image && item[i]?.material_res?.image_id) {
66
+                setValueInNestedObject(itemObj, 'image_id', item[i].material_res.cover.image_id);
67
+              }
68
+              if(itemObj.image_list && item[i]?.material_res?.image_id) {
69
+                let imageArr: any = []
70
+                imageArr.push(item[i]?.material_res?.image_id)
71
+                setValueInNestedObject(itemObj, 'image_list', imageArr);
72
+              }
73
+            }
74
+            obj.list.push(itemObj)
75
+          }
76
+          
77
+          
78
+          // if (str_imageorVideo == 'video' && item[i]?.material_res) {
79
+          //   let itemObj: any = {
80
+          //     self_info: arr.length > 0 ? arr[0] : {}
81
+          //   }
82
+          //   if (item[i]?.material_res?.video_id) {
83
+          //     itemObj.video = item[i].material_res.video_id
84
+          //   } else if (item[i]?.material_res?.cover?.image_id) {
85
+          //     itemObj.image = item[i].material_res.cover.image_id
86
+          //   }
87
+          //   if (cMaterial.haveShowVideoObj.show && cMaterial.haveShowVideoObj.name) {
88
+          //     itemObj[cMaterial.haveShowVideoObj.name] = cMaterial.haveShowVideoObj.val
89
+          //   }
90
+          //   obj.list.push(itemObj)
91
+          // } else if (str_imageorVideo == 'img' && item[i]?.material_res) {
92
+          //   if (item[i]?.material_res?.image_id) {
93
+          //     let imageArr: any = []
94
+          //     imageArr.push(item[i]?.material_res?.image_id)
95
+          //     obj.list.push({
96
+          //       image_list: imageArr,
97
+          //       self_info: arr.length > 0 ? arr[0] : {}
98
+          //     })
99
+          //   }
100
+          // }
101
+        }
102
+        resArr.push(obj)
103
+      }
104
+    })
105
+    return resArr
106
+  }
107
+  //创意素材值回显
108
+  const assignEvent_CreativeMaterial = async (val: any, videoOnPuse?: any) => {
109
+    cMaterial.list_copy = _.cloneDeep(val)
110
+    cMaterial.haveShowVideoObj.val = videoOnPuse
111
+    console.log('val',val)
112
+    //所有素材列表,此时的素材个数已是正确的
113
+    let cMaterial_resResult_list: any = []
114
+    val.forEach(vItem => {
115
+      cMaterial_resResult_list = cMaterial_resResult_list.concat(vItem.resResult)
116
+    })
117
+    console.log('cMaterial_resResult_list', cMaterial_resResult_list);
118
+
119
+    let arr_: any = []
120
+    let cloneRes: any = await handle_resResult(_.cloneDeep(cMaterial_resResult_list), _.cloneDeep(val))
121
+    //图片形式的originalityBasicInfoData.params格式需要给
122
+    console.log(originalityBasicInfoData, 'assignEvent_CreativeMaterial');
123
+    console.log(cloneRes, 'cloneRes');
124
+    await originalityBasicInfoData.params.forEach(item => {
125
+      cloneRes.forEach(cItem => {
126
+        if (item.account_id == cItem.account_id) {
127
+          cItem.list.forEach(c => {
128
+            let outerAdcreative = _.cloneDeep(item)
129
+            outerAdcreative.adcreative_elements = Object.assign(outerAdcreative.adcreative_elements, c)
130
+            arr_.push(outerAdcreative)
131
+          })
132
+        }
133
+      })
134
+    })
135
+
136
+    cMaterial.key++
137
+    cMaterial.resResult = arr_
138
+    await computeCount()
139
+    console.log('cMaterial.resResult', cMaterial.resResult);
140
+    if (val && val.length > 0) {
141
+      close_reuse_loading()
142
+    }
143
+  }
144
+
145
+  //得到是否有封面 , 以及视频和图片尺寸  / 获取是否展示-开启视频号
146
+  const get_cover_info = () => {
147
+    console.log('创意基本信息originalityBasicInfoData', originalityBasicInfoData)
148
+    let obj: any = originalityBasicInfoData?.apiResult?.adTemplateItem?.adcreative_elements
149
+    if (obj?.finder_object_visibility?.name) { // 是否展示视频号
150
+      cMaterial.haveShowVideoObj.show = true
151
+      cMaterial.haveShowVideoObj.name = obj.finder_object_visibility.name
152
+    } else {
153
+      cMaterial.haveShowVideoObj.show = false
154
+    }
155
+
156
+    for (let key in cMaterial.imgOrVideoInfo) {//清空数据
157
+      delete cMaterial.imgOrVideoInfo[key]
158
+    }
159
+    //获取数据
160
+    let situationArr: { type: string, _tips: any }[] = []
161
+    if (obj.video) {
162
+      situationArr.push({
163
+        type: 'video',
164
+        _tips: obj?.video?.restriction?.video_restriction
165
+      })
166
+      cMaterial.imgOrVideoInfo['video'] = 'video_id'
167
+    }
168
+    if (obj.image) {
169
+      situationArr.push({
170
+        type: 'image',
171
+        _tips: obj?.image?.restriction?.image_restriction
172
+      })
173
+      cMaterial.imgOrVideoInfo['image'] = 'image_id'
174
+    }
175
+    if (obj.short_video_struct && obj.short_video_struct.child) {
176
+      cMaterial.imgOrVideoInfo['short_video_struct'] = {}
177
+      if (obj.short_video_struct.child.short_video1) {
178
+        situationArr.push({
179
+          type: 'video',
180
+          _tips: obj?.short_video_struct?.child?.short_video1?.restriction?.video_restriction
181
+        })
182
+        cMaterial.imgOrVideoInfo['short_video_struct']['short_video1'] = 'video_id'
183
+      }
184
+      if (obj.short_video_struct.child.short_video2) {
185
+        situationArr.push({
186
+          type: 'video',
187
+          _tips: obj?.short_video_struct?.child?.short_video2?.restriction?.video_restriction
188
+        })
189
+        cMaterial.imgOrVideoInfo['short_video_struct']['short_video2'] = 'video_id'
190
+      }
191
+      if (obj.short_video_struct.child.video_cover_img_id) {
192
+        situationArr.push({
193
+          type: 'image',
194
+          _tips: obj?.short_video_struct?.child?.video_cover_img_id?.restriction?.image_restriction
195
+        })
196
+        cMaterial.imgOrVideoInfo['short_video_struct']['video_cover_img_id'] = 'image_id'
197
+      }
198
+    }
199
+    if (obj.image_list) {
200
+      situationArr.push({
201
+        type: 'image_list',
202
+        _tips: obj?.image_list?.restriction?.image_restriction
203
+      })
204
+      cMaterial.array_property = obj?.image_list?.array_property;
205
+      cMaterial.imgOrVideoInfo['image_list'] = 'image_list'
206
+    }
207
+    console.log('situationArr', situationArr)
208
+    // 留口子 现在逻辑是image video image_list不共存 暂未发现共存的情况
209
+    situationArr.forEach((item)=>{
210
+      if(item.type == 'video'){
211
+        cMaterial.video_tips = item._tips
212
+      }
213
+      if(item.type == 'image' || item.type == 'image_list'){
214
+        cMaterial.image_tips = item._tips
215
+      }
216
+    })
217
+    let transit_arr = situationArr.map((v) => v.type)
218
+    if (transit_arr.includes('image') && transit_arr.includes('video')) {
219
+      cMaterial.haveCoverOrVideo = 1
220
+    } else if (transit_arr.includes('video')) {
221
+      cMaterial.haveCoverOrVideo = 2
222
+    } else if (transit_arr.includes('image')) {
223
+      cMaterial.haveCoverOrVideo = 3
224
+    } else if (transit_arr.includes('image_list')) {
225
+      cMaterial.haveCoverOrVideo = 3
226
+    }
227
+  }
228
+
229
+  //关闭复用loading和弹框
230
+  const close_reuse_loading = () => {
231
+    //复用回显成功后再关闭全屏loading
232
+    nextTick(() => {
233
+      ResuseConfigRef.value?.switchShow(false)
234
+      ResuseConfigRef.value?.switchShow_loading(false)
235
+    })
236
+  }
237
+
238
+  //递归赋值
239
+  const setValueInNestedObject = (obj, targetValue, newValue) => {
240
+    for (const key in obj) {
241
+      if (obj[key] === targetValue) {
242
+        obj[key] = newValue;
243
+        return true; // 找到并赋值,返回 true 表示成功
244
+      } else if (typeof obj[key] === 'object') {
245
+        // 递归搜索下一层
246
+        if (setValueInNestedObject(obj[key], targetValue, newValue)) {
247
+          return true; // 如果找到并赋值,返回 true
248
+        }
249
+      }
250
+    }
251
+    return false; // 没有找到目标值,返回 false 表示失败
252
+  }
253
+
254
+  return {
255
+    CreativeMaterialRef,
256
+    cMaterial,
257
+    assignEvent_CreativeMaterial,
258
+    get_cover_info,
259
+    close_reuse_loading
260
+  }
261
+}
262
+
263
+export default handleMultiple