zhengxy 8 月之前
父節點
當前提交
efac311689
共有 57 個文件被更改,包括 224 次插入97 次删除
  1. 1 1
      dist/assets/index.4b90d536.css
  2. 1 1
      dist/assets/index.6a25e046.js
  3. 1 1
      dist/index.html
  4. 1 1
      dist/js/Home/index.ad47ecf7.js
  5. 1 1
      dist/js/_dialog/_dialog.98dbd75e.js
  6. 1 1
      dist/js/_input/_input.18995006.js
  7. 1 1
      dist/js/_inputAppend/_inputAppend.3baaab1b.js
  8. 1 1
      dist/js/_select/_select.354c813b.js
  9. 1 1
      dist/js/acStatement/index.f52d20ef.js
  10. 1 1
      dist/js/adTask/index.419aa24e.js
  11. 1 1
      dist/js/adTask3/index.3b29fcde.js
  12. 1 1
      dist/js/adqManage/index.f8a3f798.js
  13. 1 1
      dist/js/adqManage3/index.dfa51cc1.js
  14. 1 1
      dist/js/api/api.09cb2e0b.js
  15. 1 1
      dist/js/api/api.64b07713.js
  16. 1 1
      dist/js/basisMoudle/error.a3763c6c.js
  17. 0 1
      dist/js/basisMoudle/login.3cf5a56c.js
  18. 1 0
      dist/js/basisMoudle/login.b3daca89.js
  19. 1 1
      dist/js/checkboxDefault/checkboxDefault.1b15df73.js
  20. 1 1
      dist/js/collectClip/index.7be04617.js
  21. 0 7
      dist/js/configArea/index.41abc373.js
  22. 1 1
      dist/js/configArea/index.724377c7.js
  23. 7 0
      dist/js/configArea/index.ea56f8a3.js
  24. 1 1
      dist/js/define/define.73960a60.js
  25. 1 1
      dist/js/gdtList/index.2a99e0dd.js
  26. 1 1
      dist/js/gdtList3/index.f5087645.js
  27. 1 1
      dist/js/index/index.55799a68.js
  28. 1 1
      dist/js/index/index.96b14e2d.js
  29. 1 1
      dist/js/index/index.ba47f1df.js
  30. 1 1
      dist/js/index/index.3a744f68.js
  31. 1 1
      dist/js/layout/index.aaae6f36.js
  32. 1 1
      dist/js/layout/index_head.a7cd2d5b.js
  33. 1 1
      dist/js/limitManage/index.036f373d.js
  34. 1 1
      dist/js/materialBlock/materialBlock.7f261be1.js
  35. 1 1
      dist/js/materialData/index.78c45784.js
  36. 1 1
      dist/js/materialLibrary/index.191e1279.js
  37. 1 1
      dist/js/memberManage/index.2bf9a1a7.js
  38. 1 1
      dist/js/menu/index.a1e2a597.js
  39. 1 1
      dist/js/miniprogram/index.2dd9f731.js
  40. 1 1
      dist/js/projectManage/index.a420f18b.js
  41. 1 1
      dist/js/radioGroup/radioGroup.9d0006c6.js
  42. 1 1
      dist/js/tableInfo/tableInfo.b66411c0.js
  43. 1 1
      dist/js/tagBlock/tagBlock.dee9d9b4.js
  44. 1 1
      dist/js/taskList/index.beb0b5c6.js
  45. 1 1
      dist/js/teamManage/index.3142836f.js
  46. 1 1
      dist/js/timeScreen/timeScreen.b2441f04.js
  47. 1 1
      dist/js/warning/warning.56883772.js
  48. 1 1
      dist/js/wechatPage/index.9160013b.js
  49. 1 1
      dist/js/weekTime/weekTime.b635140e.js
  50. 1 1
      dist/js/weekTime/weekTime.d8daf701.js
  51. 1 1
      src/components/businessMoudle/batchGdt3/configArea/basicInfo/sellStrategy.vue
  52. 58 5
      src/components/businessMoudle/batchGdt3/configArea/creativeMaterial/index.vue
  53. 4 8
      src/components/businessMoudle/batchGdt3/configArea/index.vue
  54. 6 4
      src/components/businessMoudle/batchGdt3/configArea/landPage/landPageDialog.vue
  55. 12 7
      src/components/businessMoudle/batchGdt3/configArea/ts/material.ts
  56. 3 3
      src/components/businessMoudle/batchGdt3/configArea/ts/preview.ts
  57. 86 15
      src/components/businessMoudle/batchGdt3/previewArea/index.vue

File diff suppressed because it is too large
+ 1 - 1
dist/assets/index.4b90d536.css


File diff suppressed because it is too large
+ 1 - 1
dist/assets/index.6a25e046.js


+ 1 - 1
dist/index.html

@@ -12,7 +12,7 @@
12 12
 			document.write('<script src="' + src + '"><\/script>');
13 13
 			})();
14 14
     </script>
15
-    <script type="module" crossorigin src="./assets/index.6a25e046.js"></script>
15
+    <script type="module" crossorigin src="./assets/index.be8d1c8e.js"></script>
16 16
     <link rel="modulepreload" href="./js/@vue/@vue.5bfcce30.js">
17 17
     <link rel="modulepreload" href="./js/vue-router/vue-router.ccba075e.js">
18 18
     <link rel="modulepreload" href="./js/vue-demi/vue-demi.4f3c4c97.js">

File diff suppressed because it is too large
+ 1 - 1
dist/js/Home/index.ad47ecf7.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/_dialog/_dialog.98dbd75e.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/_input/_input.18995006.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/_inputAppend/_inputAppend.3baaab1b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/_select/_select.354c813b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/acStatement/index.f52d20ef.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/adTask/index.419aa24e.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/adTask3/index.3b29fcde.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/adqManage/index.f8a3f798.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/adqManage3/index.dfa51cc1.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/api/api.09cb2e0b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/api/api.64b07713.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/basisMoudle/error.a3763c6c.js


File diff suppressed because it is too large
+ 0 - 1
dist/js/basisMoudle/login.3cf5a56c.js


File diff suppressed because it is too large
+ 1 - 0
dist/js/basisMoudle/login.b3daca89.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/checkboxDefault/checkboxDefault.1b15df73.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/collectClip/index.7be04617.js


File diff suppressed because it is too large
+ 0 - 7
dist/js/configArea/index.41abc373.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/configArea/index.724377c7.js


File diff suppressed because it is too large
+ 7 - 0
dist/js/configArea/index.ea56f8a3.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/define/define.73960a60.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/gdtList/index.2a99e0dd.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/gdtList3/index.f5087645.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/index/index.55799a68.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/index/index.96b14e2d.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/index/index.ba47f1df.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/index/index.3a744f68.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/layout/index.aaae6f36.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/layout/index_head.a7cd2d5b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/limitManage/index.036f373d.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/materialBlock/materialBlock.7f261be1.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/materialData/index.78c45784.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/materialLibrary/index.191e1279.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/memberManage/index.2bf9a1a7.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/menu/index.a1e2a597.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/miniprogram/index.2dd9f731.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/projectManage/index.a420f18b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/radioGroup/radioGroup.9d0006c6.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/tableInfo/tableInfo.b66411c0.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/tagBlock/tagBlock.dee9d9b4.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/taskList/index.beb0b5c6.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/teamManage/index.3142836f.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/timeScreen/timeScreen.b2441f04.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/warning/warning.56883772.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/wechatPage/index.9160013b.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/weekTime/weekTime.b635140e.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/weekTime/weekTime.d8daf701.js


+ 1 - 1
src/components/businessMoudle/batchGdt3/configArea/basicInfo/sellStrategy.vue

@@ -35,7 +35,7 @@
35 35
           <div class="listCon rMar10">
36 36
             <div class="flex_between operate">
37 37
               <div class="flex f13 c-333">
38
-                <span class="rMar15">计划数:{{ acc_plan_ad_count[accId]?.plan_count || 0 }}</span>
38
+                <!-- <span class="rMar15">计划数:{{ acc_plan_ad_count[accId]?.plan_count || 0 }}</span> -->
39 39
                 <!-- <span>广告数:{{ acc_plan_ad_count[accId]?.ad_count || 0 }}</span> -->
40 40
               </div>
41 41
               <div class="f13 c-theme flex pointer" @click="getSync"><el-icon class="rMar5">

+ 58 - 5
src/components/businessMoudle/batchGdt3/configArea/creativeMaterial/index.vue

@@ -12,6 +12,21 @@
12 12
         :destroyOnCloseFlag="true"
13 13
         dialog-title="创意素材">
14 14
       <template v-slot:content>
15
+
16
+        <RadioGroup :id="pageInfo.radioId"
17
+                      :radioList="accountShareRuleRadioList.list"
18
+                      :echoVal="accountShareRuleRadioList.radioVal"
19
+                      :title="accountShareRuleRadioList.name"
20
+                      :haveNotes="accountShareRuleRadioList.haveNotes"
21
+                      @returnEvent="val=>{accountShareRuleRadioList.radioVal = val;}"></RadioGroup>
22
+
23
+        <RadioGroup :id="pageInfo.radioId"
24
+                      :radioList="creativeRuleRadioList.list"
25
+                      :echoVal="creativeRuleRadioList.radioVal"
26
+                      :title="creativeRuleRadioList.name"
27
+                      :haveNotes="creativeRuleRadioList.haveNotes"
28
+                      @returnEvent="val=>{creativeRuleRadioList.radioVal = val;}"></RadioGroup>
29
+
15 30
         <template v-if="haveCoverOrVideo == 1">
16 31
           <RadioGroup :id="pageInfo.radioId"
17 32
                       :radioList="coverRadioList.list"
@@ -126,7 +141,7 @@ const { proxy } = getCurrentInstance() as any;
126 141
 const NumberHandle = proxy.$NumberHandle
127 142
 
128 143
 const emit = defineEmits<{
129
-  (event: "assignEvent", val: any, videoOnPuse?:any): void; //赋值给父组件
144
+  (event: "assignEvent", val: any, videoOnPuse?:any, options?:any): void; //赋值给父组件
130 145
   (event: "closeLoading"): void; //赋值给父组件
131 146
 }>();
132 147
 
@@ -137,6 +152,7 @@ const props = withDefaults(defineProps<{
137 152
   haveShowVideoObj?:any,
138 153
   minNum_imageList?:number,
139 154
   maxNum_imageList?:number,
155
+  directPacketChooseNum?:number,
140 156
 }>(), {
141 157
   haveCoverOrVideo:1,
142 158
   video_tips:{},
@@ -144,6 +160,7 @@ const props = withDefaults(defineProps<{
144 160
   haveShowVideoObj:{},
145 161
   minNum_imageList:1,
146 162
   maxNum_imageList:1,
163
+  directPacketChooseNum:0,
147 164
 })
148 165
 
149 166
 interface radioFace{
@@ -154,6 +171,28 @@ interface radioFace{
154 171
   haveNotes:boolean,
155 172
   list:any
156 173
 }
174
+const accountShareRuleRadioList = reactive<radioFace>({
175
+  value:'1',
176
+  name:'多账号分配规则',
177
+  EgName:'accountShareRule',
178
+  radioVal:'1',
179
+  haveNotes:true,
180
+  list:[
181
+    {name:'全账户复用',value:'1', notes: '所有账户都使用一样的素材'},
182
+    {name:'平均分配',value:'2', notes: '素材平均分到每个账户中'},
183
+  ]
184
+})
185
+const creativeRuleRadioList = reactive<radioFace>({
186
+  value:'1',
187
+  name:'创意组分配规则',
188
+  EgName:'creativeRule',
189
+  radioVal:'1',
190
+  haveNotes:false,
191
+  list:[
192
+    {name:'全部相同',value:'1', notes: ''},
193
+    {name:'平均分配',value:'2', notes: ''},
194
+  ]
195
+})
157 196
 const coverRadioList = reactive<radioFace>({
158 197
   value:1,
159 198
   name:'自动生成封面',
@@ -205,7 +244,7 @@ const pageInfo = reactive<reactiveTableAndAny>({
205 244
   CreativeTeam_subId:0,//创意组ID LIST下的subId
206 245
   resResult:[],//video_id和image_id在里边
207 246
   haveCoverOrVideoFlag:false,
208
-  testNew_text:''
247
+  testNew_text:'',
209 248
 })
210 249
 
211 250
 //删除创意组的视频或图片
@@ -669,10 +708,24 @@ const confirmEvent = () => {
669 708
     return
670 709
   }
671 710
 
711
+
712
+  console.log('props.directPacketChooseNum  => ', props.directPacketChooseNum )
713
+  console.log('pageInfo.creativeTeamList.length => ', pageInfo.creativeTeamList.length)
714
+  if (creativeRuleRadioList.radioVal == 2 && accountShareRuleRadioList.radioVal == 2 && props.directPacketChooseNum > pageInfo.creativeTeamList.length) {
715
+    ElMessage.error('平均分配且创意组平均分配下,创意组数量需要大于等于生成的总广告数量!')
716
+    return
717
+  }
718
+
672 719
   if(props.haveShowVideoObj.show){
673
-    emit('assignEvent',arr,videoRadioList.radioVal)
720
+    emit('assignEvent',arr,videoRadioList.radioVal, {
721
+      accountShareRule: accountShareRuleRadioList.radioVal,
722
+      creativeRule: creativeRuleRadioList.radioVal,
723
+    })
674 724
   }else{
675
-    emit('assignEvent',arr)
725
+    emit('assignEvent',arr,false,{
726
+      accountShareRule: accountShareRuleRadioList.radioVal,
727
+      creativeRule: creativeRuleRadioList.radioVal,
728
+    })
676 729
   }
677 730
   dialogShow.value = false
678 731
 }
@@ -784,7 +837,7 @@ const clearAllEvent = async () => {
784 837
                              switchShow,
785 838
                              clearAllEvent,
786 839
                              creatice_reuseEvent,
787
-                             deleAcEvent
840
+                             deleAcEvent,
788 841
                            });
789 842
 
790 843
 

+ 4 - 8
src/components/businessMoudle/batchGdt3/configArea/index.vue

@@ -151,7 +151,7 @@
151 151
   <RuleConfig ref="RuleConfigRef" @ExposeEvent="val => pageInfo.RuleConfigObj = val"></RuleConfig>
152 152
   <!--  创意素材-->
153 153
   <CreativeMaterial ref="CreativeMaterialRef" :haveCoverOrVideo="cMaterial.haveCoverOrVideo"
154
-    :haveShowVideoObj="cMaterial.haveShowVideoObj" :video_tips="cMaterial.video_tips" :image_tips="cMaterial.image_tips"
154
+    :haveShowVideoObj="cMaterial.haveShowVideoObj" :video_tips="cMaterial.video_tips" :image_tips="cMaterial.image_tips" :directPacketChooseNum="pageInfo.directPacketChooseNum"
155 155
     @closeLoading="close_reuse_loading" :maxNum_imageList="cMaterial.array_property?.max_number || 1"
156 156
     @assignEvent="assignEvent_CreativeMaterial"></CreativeMaterial>
157 157
 
@@ -324,6 +324,7 @@ const pageInfo = reactive<reactiveTableAndAny>({
324 324
   },
325 325
   acc_plan_ad_count: {}, //各账户对应的计划数、广告数;用于微信视频号的配置
326 326
   groupsConfig: {},//已选择的策略组
327
+  directPacketChooseNum: 0, // 已选择定向包数量(新版广告数量)
327 328
 })
328 329
 
329 330
 //创意基本信息
@@ -380,7 +381,6 @@ watch(() => resuse_complate_flag_creaBasicInfo.value, async (val) => {
380 381
   if (val) {
381 382
     // 创意素材 - 修改或者新增
382 383
     await CreativeMaterialRef.value?.deleAcEvent(pageInfo.accIdsList, false)
383
-    console.log('cMaterial => ', cMaterial)
384 384
     CreativeMaterialRef.value?.creatice_reuseEvent(_.cloneDeep(cMaterial))
385 385
   }
386 386
 })
@@ -519,13 +519,12 @@ const updateHaveContent = ({ id, chooseNum, minusFlag, clearFlag, type }: IUpdat
519 519
         computeCount()
520 520
 
521 521
         // 定向包变化 => 清空售卖策略配置
522
-        console.log('sellStrategyRef.value => ', sellStrategyRef.value)
523 522
         sellStrategyRef?.value?.handleClear()
524 523
         // 定向包变化 => 清空推广产品配置
525
-        console.log('marketingAssetRef.value => ', marketingAssetRef.value)
526 524
         marketingAssetRef?.value?.handleClear()
527 525
 
528
-
526
+        pageInfo.directPacketChooseNum = chooseNum
527
+        console.log('pageInfo.directPacketChooseNum => ', pageInfo.directPacketChooseNum)
529 528
       }
530 529
       pageInfo.adTitleList.forEach(i => {
531 530
         i.subList.forEach(s => {
@@ -551,8 +550,6 @@ const updateHaveContent = ({ id, chooseNum, minusFlag, clearFlag, type }: IUpdat
551 550
 }
552 551
 /**计算广告数、计划数、账号数 并获取计划列表信息 */
553 552
 const computeCount = (cb?) => {
554
-  console.log('computeCount => 1 ')
555
-
556 553
   if (isMock.value) {
557 554
     let { pageInfo_mock, cMaterial_mock, basicInfoData_mock } = mockEvent()
558 555
     for (let key in pageInfo_mock) {
@@ -567,7 +564,6 @@ const computeCount = (cb?) => {
567 564
   } else {
568 565
     if (!judgeEvent(7, true)) return; // 创意文案之前未填写,则不进行下面逻辑
569 566
   }
570
-  console.log('computeCount => 2 ')
571 567
   previewCompute(pageInfo, cMaterial, basicInfoData).then((res: any) => {
572 568
     pageInfo.num_total.accNum = res.num_total.accNum;
573 569
     pageInfo.num_total.planNum = res.num_total.planNum;

+ 6 - 4
src/components/businessMoudle/batchGdt3/configArea/landPage/landPageDialog.vue

@@ -26,7 +26,7 @@
26 26
         </el-tooltip>
27 27
         <div class="num_pre" v-if="multiCopyTesting == 0">
28 28
           <span>账户数:</span><span class="num">{{ count_info?.accNum || 0 }},</span>
29
-          <span>计划数:</span><span class="num">{{ count_info?.planNum || 0 }},</span>
29
+          <!-- <span>计划数:</span><span class="num">{{ count_info?.planNum || 0 }},</span> -->
30 30
           <span>广告数:</span><span class="num">{{ count_info?.adNum || 0 }};</span>
31 31
         </div>
32 32
       </div>
@@ -92,7 +92,7 @@ const loadPageRuleList = ref<any[]>([
92 92
   { id: 0, name: '全部相同' },
93 93
   { id: 1, name: '按账户分配' },
94 94
   // { id: 2, name: '分配到计划' },
95
-  { id: 3, name: '分配到广告' },
95
+  // { id: 3, name: '分配到广告' },
96 96
 ])
97 97
 const loadPageRule = ref(0)
98 98
 const ruleTooltip = ref<string>()
@@ -137,10 +137,12 @@ const handleClose = () => {
137 137
 const multiCopyTestingChange = (newValue) => {
138 138
   if(allocation.value = 1) {
139 139
     if (newValue == 0) {
140
-      ruleTooltip.value = `全部相同:全部广告使用同一个落地页;<br/>按账户分配:一个账户内广告使用同一个落地页;<br/>分配到计划:一个计划内广告使用同一个落地页;<br/>分配到广告:一个广告一个落地页;`
140
+      // ruleTooltip.value = `全部相同:全部广告使用同一个落地页;<br/>按账户分配:一个账户内广告使用同一个落地页;<br/>分配到计划:一个计划内广告使用同一个落地页;<br/>分配到广告:一个广告一个落地页;`
141
+      ruleTooltip.value = `全部相同:全部广告使用同一个落地页;<br/>按账户分配:一个账户内广告使用同一个落地页;`
141 142
     }
142 143
     if (newValue == 1) {
143
-      ruleTooltip.value = `全部相同:全部广告使用同一个落地页;<br/>分配到计划:一个计划内广告使用同一个落地页;<br/>分配到广告:一个广告一个落地页;`
144
+      // ruleTooltip.value = `全部相同:全部广告使用同一个落地页;<br/>分配到计划:一个计划内广告使用同一个落地页;<br/>分配到广告:一个广告一个落地页;`
145
+      ruleTooltip.value = `全部相同:全部广告使用同一个落地页;`
144 146
       if(AccMinprogramRef.value){
145 147
         AccMinprogramRef.value?.initFun(acc_select_count.value)
146 148
       }

+ 12 - 7
src/components/businessMoudle/batchGdt3/configArea/ts/material.ts

@@ -23,7 +23,10 @@ export function materialDeclare() {
23 23
       val: false,// 视频号是否开启
24 24
     },
25 25
     imgOrVideoInfo: {},//视频或者图片需要的数据详情
26
-    testNew_text:''
26
+    testNew_text:'',
27
+    CreativeMaterialRef,
28
+    accountShareRule: '1', // 多账号分配规则 1全账户复用 2平均分配
29
+    creativeRule: '1', // 创意组分配规则 1全部相同 2平均分配
27 30
   })
28 31
   return {
29 32
     CreativeMaterialRef,
@@ -42,7 +45,6 @@ export function handleMultiple({
42 45
   //处理素材返回来的值
43 46
   const handle_resResult = (resResult: any) => {
44 47
     let resArr: any = []
45
-    console.log('resResultresResult', resResult)
46 48
     resResult.forEach(main => {
47 49
       if (!main) return;//跳出本次循环
48 50
       let itemObj: any = _.cloneDeep(cMaterial.imgOrVideoInfo)
@@ -98,10 +100,16 @@ export function handleMultiple({
98 100
     return resArr
99 101
   }
100 102
   //创意素材值回显
101
-  const assignEvent_CreativeMaterial = async (val: any, videoOnPuse?: any) => {
103
+  const assignEvent_CreativeMaterial = async (val: any, videoOnPuse: any, options: any) => {
104
+    console.log('assignEvent_CreativeMaterial() val => ', JSON.parse(JSON.stringify(val)))
105
+    console.log('videoOnPuse() videoOnPuse => ', videoOnPuse)
106
+    console.log('videoOnPuse() options => ', options)
107
+    if (options) {
108
+      cMaterial.accountShareRule = options.accountShareRule
109
+      cMaterial.creativeRule = options.creativeRule
110
+    }
102 111
     cMaterial.list_copy = _.cloneDeep(val)
103 112
     cMaterial.haveShowVideoObj.val = videoOnPuse
104
-    console.log('val', val)
105 113
     //所有素材列表,此时的素材个数已是正确的
106 114
     let cMaterial_resResult_list: any = []
107 115
     val.forEach(vItem => {
@@ -129,12 +137,10 @@ export function handleMultiple({
129 137
 
130 138
       cMaterial_resResult_list = cMaterial_resResult_list.concat(acc_arr)
131 139
     })
132
-    console.log(cMaterial_resResult_list, 'cMaterial_resResult_list');
133 140
 
134 141
     let arr_: any = []
135 142
     let cloneRes: any = await handle_resResult(_.cloneDeep(cMaterial_resResult_list))
136 143
     //图片形式的originalityBasicInfoData.params格式需要给
137
-    console.log(cloneRes, 'cloneRes');
138 144
     await originalityBasicInfoData.params.forEach(item => {
139 145
       cloneRes.forEach(cItem => {
140 146
         if (item.account_id == cItem.account_id) {
@@ -149,7 +155,6 @@ export function handleMultiple({
149 155
 
150 156
     cMaterial.key++
151 157
     cMaterial.resResult = arr_
152
-    console.log('cMaterial.resResult', cMaterial.resResult);
153 158
     await computeCount()
154 159
     if (val && val.length > 0) {
155 160
       close_reuse_loading()

+ 3 - 3
src/components/businessMoudle/batchGdt3/configArea/ts/preview.ts

@@ -11,9 +11,9 @@ export const previewCompute = (pageInfo_cr, cMaterial_cr, basicInfoData_cr,) =>
11 11
     pageInfo = _.cloneDeep(pageInfo_cr)
12 12
     basicInfoData = _.cloneDeep(basicInfoData_cr)
13 13
 
14
-    console.log('pageInfo', pageInfo)
15
-    console.log('cMaterial', cMaterial)
16
-    console.log('basicInfoData', basicInfoData)
14
+    console.log('previewCompute() => pageInfo', pageInfo)
15
+    console.log('previewCompute() => cMaterial', cMaterial)
16
+    console.log('previewCompute() => basicInfoData', basicInfoData)
17 17
 
18 18
     let accNum = pageInfo.accIdsList.length;
19 19
 

+ 86 - 15
src/components/businessMoudle/batchGdt3/previewArea/index.vue

@@ -11,7 +11,7 @@
11 11
         预览区
12 12
         <div class="lMarauto flex f14" style="font-weight: initial">
13 13
           <!-- <span>推广计划总数 : {{ pageInfo.num_total?.planNum }}</span> -->
14
-          <span class="lMar8">广告总数 : {{ pageInfo.num_total?.adNum }}</span>
14
+          <!-- <span class="lMar8">广告总数 : {{ pageInfo.num_total?.adNum }}</span> -->
15 15
           <el-button type="primary" class="lMar20" @click="auditSubmitBtn"
16 16
             v-loading.fullscreen.lock="submitLoading">全部提交审核</el-button>
17 17
         </div>
@@ -621,7 +621,6 @@ const auditSubmitEvent = (dialogInfo) => {
621 621
   // console.log('ad_common => ', JSON.parse(JSON.stringify(ad_common)))
622 622
   // console.log('ad_outer => ', JSON.parse(JSON.stringify(ad_outer)))
623 623
   console.log('params => ', JSON.parse(JSON.stringify(params)))
624
-
625 624
   submitLoading.value = true
626 625
   adsCreate(params).then((res: any) => {
627 626
     submitLoading.value = false
@@ -788,19 +787,19 @@ const objectSpanMethod = ({
788 787
   rowIndex,
789 788
   columnIndex,
790 789
 }) => {
791
-  // if (columnIndex === 0) {
792
-  //   if (row.main_info?.ad_list && row.main_info?.ad_list.length > 0) {
793
-  //     return {
794
-  //       rowspan: row.main_info.ad_list.length,
795
-  //       colspan: 1,
796
-  //     }
797
-  //   } else {
798
-  //     return {
799
-  //       rowspan: 0,
800
-  //       colspan: 0,
801
-  //     }
802
-  //   }
803
-  // }
790
+  if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2 || columnIndex === 3) {
791
+    if (row.main_info?.ad_list && row.main_info?.ad_list.length > 0) {
792
+      return {
793
+        rowspan: row.main_info.ad_list.length,
794
+        colspan: 1,
795
+      }
796
+    } else {
797
+      return {
798
+        rowspan: 0,
799
+        colspan: 0,
800
+      }
801
+    }
802
+  }
804 803
 }
805 804
 const selectionChangeEvent = (val: any) => {
806 805
   pageInfo.chooseList = val
@@ -819,6 +818,9 @@ const tableHeaderStyle = ({ row, column, rowIndex, columnIndex }: never) => {
819 818
 /**点击预览广告 初始化 */
820 819
 const initEvent = (infoObj_c) => {
821 820
   let infoObj = _.cloneDeep(infoObj_c)
821
+
822
+  console.log('<批量预览广告> initEvent() infoObj => ', JSON.parse(JSON.stringify(infoObj)))
823
+
822 824
   nextTick(async () => {
823 825
     //复制要用的数据
824 826
     pageInfo.copyInfo = _.cloneDeep(infoObj.copyInfo)
@@ -835,6 +837,14 @@ const initEvent = (infoObj_c) => {
835 837
     pageInfo.basicInfoData = _.cloneDeep(infoObj.basicInfoData)
836 838
     //规则配置
837 839
     pageInfo.RuleConfigObj = _.cloneDeep(infoObj.RuleConfigObj)
840
+
841
+    //创意素材 多账号分配规则 & 创意组分配规则
842
+    handleSetMaterialRule({
843
+      accountShareRule: infoObj.copyInfo.cMaterial.accountShareRule || '1',
844
+      creativeRule: infoObj.copyInfo.cMaterial.creativeRule || '1',
845
+      materialItemIds: infoObj.copyInfo.cMaterial.list.map((l) => l.list[0].itemId),
846
+    })
847
+
838 848
     accItemEvent(pageInfo.accList[0].id)
839 849
   })
840 850
 }
@@ -852,6 +862,67 @@ defineExpose({
852 862
   resetEvent,
853 863
   initEvent
854 864
 });
865
+
866
+
867
+const handleSetMaterialRule = ({accountShareRule, creativeRule, materialItemIds = []}) => {
868
+  let _materialItemIds = []
869
+  for (let i = 0; i < 99; i++) {
870
+    _materialItemIds = [..._materialItemIds, ...materialItemIds]
871
+  }
872
+  // console.log('handleSetMaterialRule => accountShareRule ', accountShareRule)
873
+  console.log('handleSetMaterialRule => creativeRule ', creativeRule)
874
+  // console.log('handleSetMaterialRule => materialItemIds ', materialItemIds)
875
+  // console.log('handleSetMaterialRule => _materialItemIds ', _materialItemIds)
876
+  // console.log('handleSetMaterialRule => campaign_list ', JSON.parse(JSON.stringify(pageInfo.campaign_list)))
877
+
878
+  if (accountShareRule == 2) { // 所选素材按账号平均分配 删除重复素材
879
+    const _campaign_list = _.cloneDeep(pageInfo.campaign_list)
880
+    let total:any = materialItemIds.length
881
+    let count:any = _campaign_list.length;
882
+    let base:any = Math.floor(total / count);
883
+    let rest:any = total % count;
884
+    let arr:any = []; // 记录每个账号分多少个素材
885
+    for(let i=0; i<count; i++) {
886
+      let idx = base + (i<rest?1:0)
887
+      arr.push(idx)
888
+    }
889
+    console.log('arr => ', arr)
890
+
891
+    _campaign_list.forEach((account) => {
892
+      account.materialItemIds = []
893
+    })
894
+
895
+    let startIdx = 0
896
+    arr.forEach((length, idx) => {
897
+      let _length = length || 1
898
+      _campaign_list[idx].materialItemIds = _materialItemIds.slice(startIdx, startIdx+_length)
899
+      startIdx = startIdx + _length
900
+    })
901
+
902
+    _campaign_list.forEach((campaign) => {
903
+      campaign.chooseList.forEach((campaignItem) => {
904
+        campaignItem.ad_list.forEach((ad) => {
905
+          const itemId = ad.adcreatives_info.adcreative_elements.self_info[0].itemId
906
+          if (!campaign.materialItemIds.includes(itemId)) {
907
+            ad.delFlag = true
908
+          }
909
+        })
910
+        campaignItem.ad_list = campaignItem.ad_list.filter(ad => !ad.delFlag)
911
+      })
912
+    })
913
+
914
+    pageInfo.campaign_list = _.cloneDeep(_campaign_list)
915
+  }
916
+
917
+  // if (creativeRule == 2) { // 所选素材按广告(定向包)平均分配 删除重复素材
918
+  //   console.log('pageInfo.campaign_list => ', JSON.parse(JSON.stringify(pageInfo.campaign_list)))
919
+  // }
920
+}
921
+
922
+
923
+
924
+
925
+
855 926
 </script>
856 927
 <style lang="scss" scoped>
857 928
 @import "src/assets/style/batchGdt.scss";