liuxiaona 1 year ago
parent
commit
f38e6e94fd
85 changed files with 174 additions and 280 deletions
  1. 1 0
      dist/assets/_dialog.5c0eecd7.css
  2. 0 1
      dist/assets/_dialog.8cd140fd.css
  3. 0 1
      dist/assets/_input.2f756a28.css
  4. 1 0
      dist/assets/_input.8be04cf3.css
  5. 0 1
      dist/assets/_select.2a9f1999.css
  6. 1 0
      dist/assets/_select.97e73788.css
  7. 0 1
      dist/assets/accountManage.0532d389.css
  8. 1 0
      dist/assets/accountManage.896650f8.css
  9. 0 1
      dist/assets/adqManage.694a1958.css
  10. 1 0
      dist/assets/adqManage.c4615848.css
  11. 1 0
      dist/assets/error.284bd084.css
  12. 0 1
      dist/assets/error.97c715ec.css
  13. 0 1
      dist/assets/home.1a33e614.css
  14. 1 0
      dist/assets/home.9f35d1d5.css
  15. 0 1
      dist/assets/index.28168f3c.css
  16. 0 1
      dist/assets/index.2b4782a6.css
  17. 0 1
      dist/assets/index.2bf49ec0.css
  18. 1 0
      dist/assets/index.30e21b1b.css
  19. 0 1
      dist/assets/index.3191aa97.css
  20. 1 0
      dist/assets/index.37b5a88f.css
  21. 1 1
      dist/assets/index.1588bb7e.js
  22. 0 1
      dist/assets/index.563e5dd5.css
  23. 0 1
      dist/assets/index.648b9e10.css
  24. 0 1
      dist/assets/index.69a03749.css
  25. 1 0
      dist/assets/index.887b6b4f.css
  26. 1 0
      dist/assets/index.9195889f.css
  27. 1 0
      dist/assets/index.9234b91e.css
  28. 1 1
      dist/assets/index.3ba3880e.css
  29. 0 1
      dist/assets/index.a956448f.css
  30. 1 0
      dist/assets/index.ca1fc3d5.css
  31. 1 0
      dist/assets/index.d52cf2c0.css
  32. 1 0
      dist/assets/index.eb07d23d.css
  33. 1 0
      dist/assets/index_head.bd849dfa.css
  34. 0 1
      dist/assets/index_head.fddecd4a.css
  35. 0 1
      dist/assets/login.1a99fd9e.css
  36. 1 0
      dist/assets/login.38e47126.css
  37. 1 0
      dist/assets/materialBlock.2584bccc.css
  38. 0 1
      dist/assets/materialBlock.2adf2181.css
  39. 0 1
      dist/assets/menuList.30c26da6.css
  40. 1 0
      dist/assets/menuList.45586ed7.css
  41. 0 1
      dist/assets/radioGroup.937a6c75.css
  42. 1 0
      dist/assets/radioGroup.aa4af5c1.css
  43. 0 1
      dist/assets/tableInfo.b66a93c1.css
  44. 1 0
      dist/assets/tableInfo.fc4a7715.css
  45. 1 0
      dist/assets/timeScreen.0ab73184.css
  46. 0 1
      dist/assets/timeScreen.9bc08e8b.css
  47. 1 1
      dist/index.html
  48. 1 1
      dist/js/_dialog/_dialog.027e3af1.js
  49. 1 1
      dist/js/_input/_input.c66bcd39.js
  50. 1 1
      dist/js/_select/_select.0e0ca76c.js
  51. 1 1
      dist/js/api/api.3d54f133.js
  52. 1 1
      dist/js/basisMoudle/accountManage.ebf025f7.js
  53. 1 1
      dist/js/basisMoudle/error.0f6f5ce0.js
  54. 1 1
      dist/js/basisMoudle/home.c2538fb1.js
  55. 1 1
      dist/js/basisMoudle/login.2b896cad.js
  56. 1 1
      dist/js/businessMoudle/adqManage.93104355.js
  57. 1 1
      dist/js/collectClip/index.6f5adc08.js
  58. 1 0
      dist/js/configArea/index.49d6c4f5.js
  59. 0 1
      dist/js/configArea/index.670d0b1b.js
  60. 0 1
      dist/js/gdtList/index.0fe5e157.js
  61. 1 0
      dist/js/gdtList/index.9b6d963e.js
  62. 1 1
      dist/js/index/index.e00af58e.js
  63. 1 1
      dist/js/index/index.f7ac6a31.js
  64. 1 0
      dist/js/layout/index.06a6707a.js
  65. 0 1
      dist/js/layout/index.a29ba306.js
  66. 1 1
      dist/js/layout/index_head.c63f1c19.js
  67. 1 1
      dist/js/materialBlock/materialBlock.4b2fe3f5.js
  68. 1 1
      dist/js/materialLibrary/index.24ca96f0.js
  69. 1 1
      dist/js/materialTs/materialTs.41744e1a.js
  70. 1 1
      dist/js/menuPermission/menuList.49be3fe4.js
  71. 1 1
      dist/js/miniprogram/index.22ea5860.js
  72. 1 1
      dist/js/radioGroup/radioGroup.d8d723f6.js
  73. 0 0
      dist/js/sortablejs/sortablejs.cbc4d4ad.js
  74. 1 1
      dist/js/tableInfo/tableInfo.dbbe4499.js
  75. 1 1
      dist/js/taskList/index.fc1adec9.js
  76. 1 1
      dist/js/timeScreen/timeScreen.f7a8d65f.js
  77. 0 0
      dist/js/vue/vue.051f0374.js
  78. 1 1
      dist/js/vuedraggable/vuedraggable.e4c47c81.js
  79. 1 1
      src/api/api.ts
  80. 1 1
      src/components/businessMoudle/batchGdt/configArea/basicInfo/ts/basicApi.ts
  81. 3 2
      src/components/businessMoudle/batchGdt/configArea/originalityBasic/index.vue
  82. 60 56
      src/components/businessMoudle/batchGdt/configArea/ts/material.ts
  83. 14 12
      src/components/businessMoudle/batchGdt/previewArea/dialog/SeeVideoImg.vue
  84. 6 3
      src/components/businessMoudle/batchGdt/previewArea/index.vue
  85. 38 154
      src/components/businessMoudle/gdtList/account.vue

File diff suppressed because it is too large
+ 1 - 0
dist/assets/_dialog.5c0eecd7.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/_dialog.8cd140fd.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/_input.2f756a28.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/_input.8be04cf3.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/_select.2a9f1999.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/_select.97e73788.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/accountManage.0532d389.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/accountManage.896650f8.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/adqManage.694a1958.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/adqManage.c4615848.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/error.284bd084.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/error.97c715ec.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/home.1a33e614.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/home.9f35d1d5.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.28168f3c.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.2b4782a6.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.2bf49ec0.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index.30e21b1b.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.3191aa97.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index.37b5a88f.css


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


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.563e5dd5.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.648b9e10.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index.69a03749.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index.887b6b4f.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index.9195889f.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index.9234b91e.css


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


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


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


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


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


File diff suppressed because it is too large
+ 1 - 0
dist/assets/index_head.bd849dfa.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/index_head.fddecd4a.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/login.1a99fd9e.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/login.38e47126.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/materialBlock.2584bccc.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/materialBlock.2adf2181.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/menuList.30c26da6.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/menuList.45586ed7.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/radioGroup.937a6c75.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/radioGroup.aa4af5c1.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/tableInfo.b66a93c1.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/tableInfo.fc4a7715.css


File diff suppressed because it is too large
+ 1 - 0
dist/assets/timeScreen.0ab73184.css


File diff suppressed because it is too large
+ 0 - 1
dist/assets/timeScreen.9bc08e8b.css


+ 1 - 1
dist/index.html

@@ -6,7 +6,7 @@
6 6
     <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
7 7
     <title>广告系统</title>
8 8
       <script src="//open.thunderurl.com/thunder-link.js"></script>
9
-    <script type="module" crossorigin src="./assets/index.1588bb7e.js"></script>
9
+    <script type="module" crossorigin src="./assets/index.50118c75.js"></script>
10 10
     <link rel="modulepreload" href="./js/@vue/@vue.e7eafc10.js">
11 11
     <link rel="modulepreload" href="./js/vue-router/vue-router.647267ed.js">
12 12
     <link rel="modulepreload" href="./js/axios/axios.27022086.js">

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


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


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


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


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


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


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


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


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


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


File diff suppressed because it is too large
+ 1 - 0
dist/js/configArea/index.49d6c4f5.js


File diff suppressed because it is too large
+ 0 - 1
dist/js/configArea/index.670d0b1b.js


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


File diff suppressed because it is too large
+ 1 - 0
dist/js/gdtList/index.9b6d963e.js


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


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


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


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


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


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


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


File diff suppressed because it is too large
+ 1 - 1
dist/js/materialTs/materialTs.41744e1a.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/menuPermission/menuList.49be3fe4.js


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


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


dist/js/sortablejs/sortablejs.4f86162a.js → dist/js/sortablejs/sortablejs.cbc4d4ad.js


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


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


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


dist/js/vue/vue.86f330e1.js → dist/js/vue/vue.051f0374.js


File diff suppressed because it is too large
+ 1 - 1
dist/js/vuedraggable/vuedraggable.e4c47c81.js


+ 1 - 1
src/api/api.ts

@@ -86,7 +86,7 @@ export enum Api{
86 86
     directPacket_add = '/api/ad/targetingsAdd',
87 87
     directPacket_list = '/api/ad/targetingGet',
88 88
     directPacket_edit = '/api/ad/targetingsUp',
89
-    directPacket_get_behavior_list = 'api/ad/moreOptimizationGoal',
89
+    directPacket_get_behavior_list = '/api/ad/moreOptimizationGoal',
90 90
     directPacket_get_customer_base_list = '/api/ad/customAudiencesGet',
91 91
     directPacket_user_os_list = '/api/ad/userOsList',
92 92
     directPacket_location_list = '/api/ad/targetingTagsGet',

+ 1 - 1
src/components/businessMoudle/batchGdt/configArea/basicInfo/ts/basicApi.ts

@@ -57,7 +57,7 @@ interface IMoreOptimizationGoal {
57 57
 }
58 58
 export function moreOptimizationGoal(params: IMoreOptimizationGoal) {
59 59
   return new Promise( async (resolve, reject)=>{
60
-    const res: any = await http.get('api/ad/moreOptimizationGoal', params)
60
+    const res: any = await http.get('/api/ad/moreOptimizationGoal', params)
61 61
     if (res.errNo == 0 && res.rst) {
62 62
       let arr:Array<{label:string, value: string}> = [];
63 63
       for(let key in res.rst){

+ 3 - 2
src/components/businessMoudle/batchGdt/configArea/originalityBasic/index.vue

@@ -207,7 +207,6 @@ const backhaul = (obj) => {
207 207
 }
208 208
 /**确认 isMultiplex是否复用 */
209 209
 const submitEvent = (isMultiplex?: boolean, multiplexApiForm:any[] = []) => {
210
-  console.log('2222', form)
211 210
   let promise_arr: any = []
212 211
   let multiplex_load_acc: any[] = [];//复用需要上传的账号
213 212
   for (let i in form) {//检索是否有未填写信息
@@ -296,6 +295,9 @@ const submitEvent = (isMultiplex?: boolean, multiplexApiForm:any[] = []) => {
296 295
     }else{
297 296
       fullscreenLoading.value = false
298 297
     }
298
+  }).catch((err)=>{
299
+    console.log(err)
300
+    fullscreenLoading.value = false
299 301
   })
300 302
 }
301 303
 const loadingPage_event = () => {//落地页
@@ -511,7 +513,6 @@ const elementFillBack = () => {
511 513
 const switchShow = async (val: boolean, obj: any) => {
512 514
   visible.value = val
513 515
   if (val) {
514
-    console.log('obj',obj)
515 516
     if (obj.fillback && JSON.stringify(obj.fillback) != '{}') { //回显状态下
516 517
       fillBackInfo.value = _.cloneDeep(obj.fillback)
517 518
       templateCurr.value = _.cloneDeep(obj?.apiResult?.templateCurr)

+ 60 - 56
src/components/businessMoudle/batchGdt/configArea/ts/material.ts

@@ -3,7 +3,7 @@ import { reactiveTableAndAny } from '@/api/ApiModel'
3 3
 import _ from 'lodash'
4 4
 
5 5
 //变量声明
6
-export function materialDeclare () {
6
+export function materialDeclare() {
7 7
   const CreativeMaterialRef = ref<{
8 8
     switchShow: (val: boolean, isEdit: boolean, arr: any) => void,
9 9
     clearAllEvent: () => void, creatice_reuseEvent: () => void, deleAcEvent: (arr: any, haveAssign: boolean) => void
@@ -38,78 +38,60 @@ export function handleMultiple({
38 38
   cMaterial
39 39
 }) {
40 40
   //处理素材返回来的值
41
-  const handle_resResult = (resResult: any, val: any) => {
42
-    // let str_imageorVideo: any = originalityBasicInfoData?.receiveForm?.originalityForm?.api_value?.originalityForm
41
+  const handle_resResult = (resResult: any) => {
43 42
     let resArr: any = []
44 43
     console.log('resResultresResult', resResult)
45
-    resResult.forEach(item => {
46
-      if (item) {
47
-        let obj: any = {}
48
-        obj.account_id = item.account_id
49
-        obj.list = []
44
+    resResult.forEach(main => {
45
+      if (!main) return;//跳出本次循环
46
+      let itemObj: any = _.cloneDeep(cMaterial.imgOrVideoInfo)
47
+      let imageArr: any = []
48
+      let self_info_arr:any = []
49
+      let obj: any = {}
50
+      obj.account_id = main.account_id
51
+      obj.list = []
52
+      main.list?.forEach((list_item) => {
53
+        let item = _.cloneDeep(list_item)
54
+        self_info_arr.push(item.self_info)
50 55
         for (let i in item) {
51
-          let arr = val.filter((v) => {
52
-            return v.itemId == i
53
-          })
54
-          if(item[i]?.material_res){
55
-            let itemObj: any = _.cloneDeep(cMaterial.imgOrVideoInfo)
56
-            itemObj = Object.assign(itemObj, {self_info: arr.length > 0 ? arr[0] : {}})
57
-            if(cMaterial.haveCoverOrVideo == 1) {//视频和图片
56
+          if (item[i]?.material_res) {
57
+            if (cMaterial.haveCoverOrVideo == 1) {//视频和图片
58 58
               if (item[i]?.material_res?.video_id) {
59 59
                 setValueInNestedObject(itemObj, 'video_id', item[i].material_res.video_id);
60
+                setValueInNestedObject(itemObj, 'self_video_count', 1);
60 61
               }
61 62
               if (item[i]?.material_res?.cover?.image_id) {
62 63
                 setValueInNestedObject(itemObj, 'image_id', item[i].material_res.cover.image_id);
64
+                setValueInNestedObject(itemObj, 'self_image_count', 1);
63 65
               }
64 66
               if (cMaterial.haveShowVideoObj.show && cMaterial.haveShowVideoObj.name) {
65 67
                 itemObj[cMaterial.haveShowVideoObj.name] = cMaterial.haveShowVideoObj.val
66 68
               }
67 69
             }
68
-            if(cMaterial.haveCoverOrVideo == 2) {//视频
70
+            if (cMaterial.haveCoverOrVideo == 2) {//视频
69 71
               if (item[i]?.material_res?.video_id) {
70 72
                 setValueInNestedObject(itemObj, 'video_id', item[i].material_res.video_id);
73
+                setValueInNestedObject(itemObj, 'self_video_count', 1);
71 74
               }
72 75
             }
73
-            if(cMaterial.haveCoverOrVideo == 3) {//图片
74
-              if(itemObj.image && item[i]?.material_res?.image_id) {
76
+            if (cMaterial.haveCoverOrVideo == 3) {//图片
77
+              if (itemObj.image && item[i]?.material_res?.image_id) {
75 78
                 setValueInNestedObject(itemObj, 'image_id', item[i].material_res.cover.image_id);
79
+                setValueInNestedObject(itemObj, 'self_image_count', 1);
76 80
               }
77
-              if(itemObj.image_list && item[i]?.material_res?.image_id) {
78
-                let imageArr: any = []
81
+              if (itemObj.image_list && item[i]?.material_res?.image_id) {
79 82
                 imageArr.push(item[i]?.material_res?.image_id)
80
-                setValueInNestedObject(itemObj, 'image_list', imageArr);
81 83
               }
82 84
             }
83
-            obj.list.push(itemObj)
84 85
           }
85
-
86
-
87
-          // if (str_imageorVideo == 'video' && item[i]?.material_res) {
88
-          //   let itemObj: any = {
89
-          //     self_info: arr.length > 0 ? arr[0] : {}
90
-          //   }
91
-          //   if (item[i]?.material_res?.video_id) {
92
-          //     itemObj.video = item[i].material_res.video_id
93
-          //   } else if (item[i]?.material_res?.cover?.image_id) {
94
-          //     itemObj.image = item[i].material_res.cover.image_id
95
-          //   }
96
-          //   if (cMaterial.haveShowVideoObj.show && cMaterial.haveShowVideoObj.name) {
97
-          //     itemObj[cMaterial.haveShowVideoObj.name] = cMaterial.haveShowVideoObj.val
98
-          //   }
99
-          //   obj.list.push(itemObj)
100
-          // } else if (str_imageorVideo == 'img' && item[i]?.material_res) {
101
-          //   if (item[i]?.material_res?.image_id) {
102
-          //     let imageArr: any = []
103
-          //     imageArr.push(item[i]?.material_res?.image_id)
104
-          //     obj.list.push({
105
-          //       image_list: imageArr,
106
-          //       self_info: arr.length > 0 ? arr[0] : {}
107
-          //     })
108
-          //   }
109
-          // }
110 86
         }
111
-        resArr.push(obj)
87
+      })
88
+      if(imageArr.length > 0) {//说明是多图片
89
+        setValueInNestedObject(itemObj, 'image_list', imageArr);
90
+        setValueInNestedObject(itemObj, 'self_image_count', imageArr.length);
112 91
       }
92
+      itemObj = Object.assign(itemObj, { self_info: self_info_arr})
93
+      obj.list.push(itemObj)
94
+      resArr.push(obj)
113 95
     })
114 96
     return resArr
115 97
   }
@@ -117,18 +99,38 @@ export function handleMultiple({
117 99
   const assignEvent_CreativeMaterial = async (val: any, videoOnPuse?: any) => {
118 100
     cMaterial.list_copy = _.cloneDeep(val)
119 101
     cMaterial.haveShowVideoObj.val = videoOnPuse
120
-    console.log('val',val)
102
+    console.log('val', val)
121 103
     //所有素材列表,此时的素材个数已是正确的
122 104
     let cMaterial_resResult_list: any = []
123 105
     val.forEach(vItem => {
124
-      vItem.list.forEach(sub=>{
125
-        cMaterial_resResult_list = cMaterial_resResult_list.concat(sub.resResult)
106
+      let arr = []
107
+      vItem.list.forEach(sub => {
108
+        let sub_resResult = _.cloneDeep(sub.resResult);
109
+        sub_resResult.forEach((v) => {
110
+          v['self_info'] = _.cloneDeep(sub)
111
+        });
112
+        arr = arr.concat(sub_resResult)
126 113
       })
114
+
115
+      let acc_arr: any[] = []
116
+      arr.forEach((item: any) => {
117
+        let acc_item_arr = acc_arr.filter((v) => v.account_id == item.account_id)
118
+        if (acc_item_arr.length > 0) {
119
+          acc_item_arr[0].list.push(item)
120
+        } else {
121
+          acc_arr.push({
122
+            account_id: item.account_id,
123
+            list: [item]
124
+          })
125
+        }
126
+      })
127
+
128
+      cMaterial_resResult_list = cMaterial_resResult_list.concat(acc_arr)
127 129
     })
128
-    console.log(cMaterial_resResult_list,'cMaterial_resResult_list');
130
+    console.log(cMaterial_resResult_list, 'cMaterial_resResult_list');
129 131
 
130 132
     let arr_: any = []
131
-    let cloneRes: any = await handle_resResult(_.cloneDeep(cMaterial_resResult_list), _.cloneDeep(val))
133
+    let cloneRes: any = await handle_resResult(_.cloneDeep(cMaterial_resResult_list))
132 134
     //图片形式的originalityBasicInfoData.params格式需要给
133 135
     console.log(cloneRes, 'cloneRes');
134 136
     await originalityBasicInfoData.params.forEach(item => {
@@ -215,12 +217,14 @@ export function handleMultiple({
215 217
       cMaterial.array_property = obj?.image_list?.array_property;
216 218
       cMaterial.imgOrVideoInfo['image_list'] = 'image_list'
217 219
     }
220
+    cMaterial.imgOrVideoInfo['self_image_count'] = 'self_image_count'
221
+    cMaterial.imgOrVideoInfo['self_video_count'] = 'self_video_count'
218 222
     // 留口子 现在逻辑是image video image_list不共存 暂未发现共存的情况
219
-    situationArr.forEach((item)=>{
220
-      if(item.type == 'video'){
223
+    situationArr.forEach((item) => {
224
+      if (item.type == 'video') {
221 225
         cMaterial.video_tips = item._tips
222 226
       }
223
-      if(item.type == 'image' || item.type == 'image_list'){
227
+      if (item.type == 'image' || item.type == 'image_list') {
224 228
         cMaterial.image_tips = item._tips
225 229
       }
226 230
     })

+ 14 - 12
src/components/businessMoudle/batchGdt/previewArea/dialog/SeeVideoImg.vue

@@ -39,18 +39,20 @@ const propInfo = ref<{url:string,type:number}[]>([])
39 39
 const switchShow = (val:boolean, imgList: any)=>{
40 40
   dialogShow.value = val
41 41
   propInfo.value = []
42
-  if(imgList.videoUrl){
43
-    propInfo.value.push({
44
-      type: 1,
45
-      url: imgList.videoUrl
46
-    })
47
-  }
48
-  if(imgList.picUrl){
49
-    propInfo.value.push({
50
-      type: 2,
51
-      url: imgList.picUrl
52
-    })
53
-  }
42
+  imgList.forEach((item)=>{
43
+    if(item.videoUrl){
44
+      propInfo.value.push({
45
+        type: 1,
46
+        url: item.videoUrl
47
+      })
48
+    }
49
+    if(item.picUrl){
50
+      propInfo.value.push({
51
+        type: 2,
52
+        url: item.picUrl
53
+      })
54
+    }
55
+  })
54 56
 }
55 57
 // 父组件共享值
56 58
 defineExpose({

+ 6 - 3
src/components/businessMoudle/batchGdt/previewArea/index.vue

@@ -91,9 +91,10 @@
91 91
                       <span>暂未配置</span>
92 92
                     </div>
93 93
                     <div class="cellDiv pointer" style="color:#3173FF;" v-else-if="item.column == 'a7'"
94
-                      @click="openSubDialogEvent(scope.row, 'seeVideoImg')">已选<span
95
-                        v-if="scope.row?.adcreatives_info.adcreative_elements.image">1张图片,</span><span
96
-                        v-if="scope.row?.adcreatives_info.adcreative_elements.video">1个视频</span></div>
94
+                      @click="openSubDialogEvent(scope.row, 'seeVideoImg')">已选
95
+                      <span>{{scope.row?.adcreatives_info.adcreative_elements.self_image_count != 'self_image_count' ? scope.row?.adcreatives_info.adcreative_elements.self_image_count : 0}}张图片,</span>
96
+                      <span>{{scope.row?.adcreatives_info.adcreative_elements.self_video_count != 'self_video_count' ? scope.row?.adcreatives_info.adcreative_elements.self_video_count : 0}}个视频</span>
97
+                    </div>
97 98
                     <div class="cellDiv" v-else-if="item.column == 'description'">
98 99
                       <el-tooltip placement="top"
99 100
                         :content="scope.row?.adcreatives_info.adcreative_elements.description"
@@ -312,6 +313,8 @@ const auditSubmitEvent = () => {
312 313
       let item = main.ad_list[i]
313 314
       delete item.adcreatives_info.page_spec.page_name;
314 315
       delete item.adcreatives_info.adcreative_elements.self_info;
316
+      delete item.adcreatives_info.adcreative_elements.self_image_count;
317
+      delete item.adcreatives_info.adcreative_elements.self_video_count;
315 318
       delete item.adcreatives_info.adcreative_elements.self_promoted_object_name;
316 319
     }
317 320
   })

+ 38 - 154
src/components/businessMoudle/gdtList/account.vue

@@ -10,6 +10,7 @@
10 10
     </div>
11 11
     <div>
12 12
       <div class="bMar10 flex">
13
+        <el-button plain @click="goAdq">+ 添加账户</el-button>
13 14
         <Dropdown title="批量操作" :list="tableInfo.moreList" @close="dropdownEvent" class="rMar10"
14 15
                   :disabledFlag="tableInfo.multipleSelection&&tableInfo.multipleSelection.length == 0"></Dropdown>
15 16
         <div>已选 : <span>{{tableInfo.multipleSelection&&tableInfo.multipleSelection.length}}</span></div>
@@ -27,64 +28,30 @@
27 28
                 max-height="calc(100vh - 294px)">
28 29
         <el-table-column type="selection" width="55" align="center" fixed="left"/>
29 30
         <template v-for="item in tableInfo.descol">
30
-          <el-table-column :fixed="item.isfixed" :min-width="item.label.length <= 4 ? '100px' : item.label.length <= 8 ? '150px' : '180px'">
31
+          <el-table-column :fixed="item.disabled == 1" :min-width="item.key_value != 'advertiser_status' && item.key_value != 'advertiser_nick' && item.label.length <= 4 ? '100px' : item.label.length <= 8 ? '150px' : '200px'">
31 32
             <template #header>
32 33
               <div class="flex"
33
-                   :style="{ justifyContent: item.alignSelf ? item.alignSelf : 'center' }"
34
-                   :class="[tableInfo.sortKey == item.key_value ? 'active_css' : '',item.isSort ? 'pointer' : '']"
35
-                   @click="item.isSort&&sortEvent(item.key_value)">
34
+                   :class="[tableInfo.sortKey == item.key_value ? 'active_css' : '',item.if_sort == 1 ? 'pointer' : '']"
35
+                   @click="item.if_sort == 1&&sortEvent(item.key_value)">
36 36
                 {{ item.label }}
37 37
                 <el-tooltip v-if="item.tooltip && item.tooltip != item.label" placement="top" effect="dark" :content="item.tooltip"><i-ep-QuestionFilled class="lMar5 c-999 f14 pointer" /></el-tooltip>
38
-                <div v-if="item.isSort">
39
-                  <div class="sortItem"><el-icon :color="tableInfo.sortKey == item.key_value ? '#3173FF' : ''"><i-ep-CaretBottom /></el-icon></div>
38
+                <div v-if="item.if_sort == 1">
39
+                  <div class="sortItem"><el-icon :color="tableInfo.sortKey == item.key_value ? '#3173FF' : '#a8abb2'"><i-ep-CaretBottom /></el-icon></div>
40 40
                 </div>
41 41
               </div>
42 42
             </template>
43 43
             <template #default="scope">
44
-              <div class="flex" :style="{ justifyContent: item.alignSelf ? item.alignSelf : 'center' }">
45
-
46
-              <!-- <div v-if="item.column == 'campaign_name'">
47
-                <span class="c-theme flex campaignName">
48
-                  <span class="pointer" @click="goAdvertEvent(scope.row.campaign_id)">{{scope.row[item.column]}}</span>
49
-                  <el-icon color="#3173FF" class="pointer lMarauto f16 icon" @click="edit_campaign_name_event(scope.row)"><i-ep-Edit /></el-icon>
50
-                </span>
51
-              </div>
52
-              <div v-else-if="item.column == 'configured_status'">
53
-                <span class="c-green" v-if="scope.row[item.column] == 'AD_STATUS_NORMAL'">正常</span>
54
-                <span class="c-red" v-else-if="scope.row[item.column] == 'AD_STATUS_SUSPEND'">暂停</span>
55
-                <span v-else>-</span>
44
+              <!-- 账户ID -->
45
+              <div v-if="item.key_value == 'advertiser_id'">
46
+                <span style="color: #3173FF" class="pointer">{{ scope.row[item.key_value] }}</span>
56 47
               </div>
57
-              <div v-else-if="item.column == 'speed_mode'">
58
-                <span v-if="scope.row[item.column] == 'SPEED_MODE_STANDARD'">标准投</span>
59
-                <span v-else-if="scope.row[item.column] == 'SPEED_MODE_FAST'">加速投放</span>
60
-                <span v-else>-</span>
48
+              <!-- 账户状态 -->
49
+              <div v-else-if="item.key_value == 'advertiser_status'" class="flex">
50
+                <div class="dot"></div>
51
+                <span>{{ scope.row[item.key_value] }}</span>
61 52
               </div>
62
-              <div v-else-if="item.column == 'operate'">
63
-                <div class="flex">
64
-                  <span class="c-theme pointer" @click="editPlanEvent(scope.row)">修改</span>
65
-                  <span class="lMar10"
66
-                        :class="scope.row.configured_status == 'AD_STATUS_NORMAL' ? 'pointer-drop c-green-opa' : 'pointer c-green'"
67
-                        @click="scope.row.configured_status == 'AD_STATUS_SUSPEND'&&batchPlanEvent(scope.row,1)">启用</span>
68
-                </div>
69
-                <div>
70
-                    <span :class="scope.row.configured_status == 'AD_STATUS_SUSPEND' ? 'pointer-drop c-red-opa' : 'pointer c-red'"
71
-                          @click="scope.row.configured_status == 'AD_STATUS_NORMAL'&&batchPlanEvent(scope.row,2)">暂停</span>
72
-                  <Popconfirm key="dele" @confirm="batchPlanEvent(scope.row,3)" :slotFlag="true">
73
-                    <template #con>
74
-                      <span class="pointer lMar10">删除</span>
75
-                    </template>
76
-                  </Popconfirm>
77
-
78
-                </div>
79
-
80
-
81
-              </div>
82
-              <div class="flex c-theme pointer" v-else-if="item.column == 'daily_budget'" @click="editPlanEvent(scope.row)">
83
-                {{scope.row[item.column] ? NumberHandle(scope.row[item.column]) : '不限'}}
84
-              </div> -->
85
-
86
-
87
-              <div class="cellDiv" :class="tableInfo.sortKey == item.key_value ? 'active_css' : ''">
53
+              <!-- 其他 -->
54
+              <div class="cellDiv" v-else :class="tableInfo.sortKey == item.key_value ? 'active_css' : ''">
88 55
                 <el-tooltip :disabled="!(scope.row[item.key_value] && scope.row[item.key_value].length >30)" effect="dark" :content="scope.row[item.key_value]+''">
89 56
                   <div class="clampTwo line21" style="flex: 1">
90 57
                     {{ scope.row[item.key_value] || scope.row[item.key_value]==0 ?
@@ -93,7 +60,6 @@
93 60
                   </div>
94 61
                 </el-tooltip>
95 62
               </div>
96
-              </div>
97 63
             </template>
98 64
           </el-table-column>
99 65
         </template>
@@ -101,25 +67,20 @@
101 67
 
102 68
     </div>
103 69
 
104
-    <EditIpt ref="planEditIptRef" title="推广计划" @confirm="planEditConfirm"></EditIpt>
105
-    <TargetEdit ref="TargetEditRef" title="计划设置" @confirm="init"></TargetEdit>
106 70
   </div>
107 71
 </template>
108 72
 <script setup lang="ts">
109 73
 import {getCurrentInstance, nextTick, onMounted, reactive, ref} from "vue";
110
-import Select from '@/components/capsulationMoudle/_select.vue'
111 74
 import TimeScreen from '@/components/capsulationMoudle/timeScreen.vue'
112 75
 import Input from '@/components/capsulationMoudle/_input.vue'
113
-import EditIpt from '@/components/businessMoudle/gdtList/dialog/editIpt.vue'
114
-import TargetEdit from '@/components/businessMoudle/gdtList/dialog/target.vue'
115 76
 import Dropdown from '@/components/capsulationMoudle/_dropdown.vue'
116
-import Popconfirm from '@/components/capsulationMoudle/_popconfirm.vue'
117
-import noData from '@/components/capsulationMoudle/noData.vue'
118 77
 import {listTs} from "@/components/businessMoudle/gdtList/ts/list";
119 78
 import {Api} from "@/api/api";
120 79
 import {ElMessage} from "element-plus";
121 80
 import {batchGdt_edit, batchAccount_list, reactiveTableAndAny} from "@/api/ApiModel";
122 81
 import Indicators from './indicators/index.vue'
82
+import { useRouter } from "vue-router";
83
+const router = useRouter();
123 84
 
124 85
 const { proxy } = getCurrentInstance() as any;
125 86
 // 全局方法定义
@@ -132,9 +93,6 @@ const emit = defineEmits<{
132 93
 const goNewPlanEvent = () => {
133 94
   emit('goNewPlan')
134 95
 }
135
-const goAdvertEvent = (campaign_id:any) => {
136
-  emit('goAdvert',campaign_id)
137
-}
138 96
 
139 97
 const loading = ref<boolean>(false)
140 98
 const tableInfo = reactive<reactiveTableAndAny>({
@@ -159,11 +117,6 @@ const tableInfo = reactive<reactiveTableAndAny>({
159 117
 
160 118
 
161 119
 
162
-//批量操作
163
-const batchEvent = () => {
164
-
165
-}
166
-
167 120
 // 启用 暂停 删除
168 121
 const batchPlanApi = async (arr?:any,val?:any) => {
169 122
   const paramsModel = reactive<batchGdt_edit>({
@@ -179,16 +132,6 @@ const batchPlanApi = async (arr?:any,val?:any) => {
179 132
     loading.value = false
180 133
   }
181 134
 }
182
-const batchPlanEvent = async (row?:any,val?:any) => {
183
-  loading.value = true
184
-  let arr:any = []
185
-  arr.push({
186
-    account_id:row.account_id,
187
-    campaign_id:row.campaign_id
188
-  })
189
-  batchPlanApi(arr,val)
190
-
191
-}
192 135
 const dropdownEvent = (val: string | number | object) => {
193 136
   loading.value = true
194 137
   let arr:any = []
@@ -201,37 +144,29 @@ const dropdownEvent = (val: string | number | object) => {
201 144
   batchPlanApi(arr,val)
202 145
 }
203 146
 
204
-//修改计划
205
-const editPlanEvent = (row:any) => {
206
-  nextTick(()=>{
207
-    TargetEditRef.value!.switchShow(true,row)
208
-  })
209
-}
210
-//修改计划名称
211
-const edit_campaign_name_event = (row:any) => {
212
-  nextTick(()=>{
213
-    planEditIptRef.value!.switchShow(true,row.campaign_name)
214
-  })
215
-}
216
-//推广计划 - 确定
217
-const planEditConfirm = () => {
218
-
219
-}
220
-
221 147
 
222 148
 //排序
223 149
 const sortEvent = (row:any) => {
224
-
150
+  if(row != tableInfo.sortKey){
151
+    tableInfo.sortKey = row
152
+    init()
153
+  }
154
+  console.log('tableInfo.sortKey',tableInfo.sortKey)
225 155
 }
226 156
 
227 157
 //列表
228 158
 const init = async () => {
229 159
   loading.value = true
230
-  const paramsModel = reactive<batchAccount_list>({
160
+  let params = {
231 161
     keyword:InputRef_text.value!.value,
232 162
     st_date:timeRef.value!.dateVal&&timeRef.value!.dateVal[0],
233 163
     en_date:timeRef.value!.dateVal&&timeRef.value!.dateVal[1],
234
-  })
164
+  }
165
+  if(tableInfo.sortKey){
166
+    params['field'] = tableInfo.sortKey
167
+    params['order'] = 'desc'
168
+  }
169
+  const paramsModel = reactive<batchAccount_list>(params)
235 170
   let res:any = await proxy.$http.get(Api.batchGdt_accountList_list,paramsModel)
236 171
   loading.value = false
237 172
   if(res&&res.errNo=='0'){
@@ -243,81 +178,30 @@ const init = async () => {
243 178
   }
244 179
 }
245 180
 
246
-
247
-//清空值
248
-const clearChooseVal = ()=>{
249
-  tableInfo.chooseAll = false
250
-  tableInfo.multipleSelection = []
251
-}
252
-//添加值
253
-const multipleSelection_add = (item?:any) => {
254
-  let idx:number = tableInfo.multipleSelection.findIndex(n=>n.campaign_id == item.campaign_id)
255
-  if(idx<0){
256
-    tableInfo.multipleSelection.push(item)
257
-  }
258
-}
259
-//删除值
260
-const multipleSelection_splice = (item?:any) => {
261
-  let idx:number = tableInfo.multipleSelection.findIndex(n=>n.campaign_id == item.campaign_id)
262
-  if(idx>=0){
263
-    tableInfo.multipleSelection.splice(idx,1)
264
-  }
181
+const goAdq = () => {
182
+  router.push({ path: '/adqManage' })
265 183
 }
266
-const handleCommandChoosePage = async (command: string | number | object)=>{
267
-  let arr:any = tableInfo.tableList
268
-  clearChooseVal()
269
-  tableInfo.chooseAll = true
270
-  if(command == 2){ // 全部
271
-    await init()
272
-    arr = tableInfo.tableList_all
273
-  }
274
-  arr.forEach(item=>{
275
-    multipleSelection_add(item)
276
-  })
277
-}
278
-//全选
279
-const allChooseCheckboxEvent = (val:string | number | boolean)=>{
280
-  tableInfo.tableList.forEach(item=>{
281
-    if(val){
282
-      multipleSelection_add(item)
283
-    }else{
284
-      tableInfo.multipleSelection = []
285
-    }
286
-  })
287
-}
288
-//单选
289
-const singleChooseCheckboxEvent = (idx:number,row:any)=>{
290
-  if(idx==-1){
291
-    tableInfo.multipleSelection.push(row)
292
-  }else{
293
-    tableInfo.multipleSelection.splice(idx,1)
294
-    tableInfo.chooseAll = false
295
-  }
296
-}
297
-
298 184
 
299 185
 const {
300
-  init_acList,
301
-  pageInfo,
302 186
   timeRef,
303
-  acRef,
304
-  statusRef,
305 187
   InputRef_text,
306
-  clearEvent,
307 188
   tableHeaderStyle,
308
-  planEditIptRef,
309
-  TargetEditRef,
310
-  customIndEvent
311 189
 } = listTs()
312 190
 
313 191
 onMounted(()=>{
314 192
   nextTick(async ()=>{
315
-    await init_acList()
316 193
     await init()
317 194
   })
318 195
 })
319 196
 </script>
320 197
 <style lang="scss" scoped>
198
+.dot{
199
+  width: 6px;
200
+  height: 6px;
201
+  border-radius: 50%;
202
+  background-color: rgb(35, 194, 63);
203
+  margin-right: 4px;
204
+}
321 205
 .el-table th div.cell {
322 206
   white-space: nowrap;
323 207
   text-overflow: ellipsis;